qtmux: simplify video/x-h264 caps handling

'stream-format' and 'alignment' are defined in pad template caps so
there is no need to check them again here. Also remove bitrate parsing from
caps as bitrate in caps doesn't make sense but from tags, which is
actually the case.

https://bugzilla.gnome.org/show_bug.cgi?id=777181
This commit is contained in:
Aurélien Zanelli 2017-01-12 17:45:35 +01:00 committed by Sebastian Dröge
parent 4c6a69fdff
commit 52d1355d87

View file

@ -4190,36 +4190,13 @@ gst_qt_mux_video_sink_set_caps (GstQTPad * qtpad, GstCaps * caps)
"output might not play in Apple QuickTime (try global-headers?)"); "output might not play in Apple QuickTime (try global-headers?)");
} }
} else if (strcmp (mimetype, "video/x-h264") == 0) { } else if (strcmp (mimetype, "video/x-h264") == 0) {
/* check if we accept these caps */
if (gst_structure_has_field (structure, "stream-format")) {
const gchar *format;
const gchar *alignment;
format = gst_structure_get_string (structure, "stream-format");
alignment = gst_structure_get_string (structure, "alignment");
if (strcmp (format, "avc") != 0 || alignment == NULL ||
strcmp (alignment, "au") != 0) {
GST_WARNING_OBJECT (qtmux, "Rejecting h264 caps, qtmux only accepts "
"avc format with AU aligned samples");
goto refuse_caps;
}
} else {
GST_WARNING_OBJECT (qtmux, "no stream-format field in h264 caps");
goto refuse_caps;
}
if (!codec_data) { if (!codec_data) {
GST_WARNING_OBJECT (qtmux, "no codec_data in h264 caps"); GST_WARNING_OBJECT (qtmux, "no codec_data in h264 caps");
goto refuse_caps; goto refuse_caps;
} }
entry.fourcc = FOURCC_avc1; entry.fourcc = FOURCC_avc1;
if (qtpad->avg_bitrate == 0) {
gint avg_bitrate = 0;
gst_structure_get_int (structure, "bitrate", &avg_bitrate);
qtpad->avg_bitrate = avg_bitrate;
}
ext_atom = build_btrt_extension (0, qtpad->avg_bitrate, qtpad->max_bitrate); ext_atom = build_btrt_extension (0, qtpad->avg_bitrate, qtpad->max_bitrate);
if (ext_atom != NULL) if (ext_atom != NULL)
ext_atom_list = g_list_prepend (ext_atom_list, ext_atom); ext_atom_list = g_list_prepend (ext_atom_list, ext_atom);