summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatej Knopp <matej.knopp@gmail.com>2016-02-06 14:39:05 +0100
committerTim-Philipp Müller <tim@centricular.com>2016-04-06 11:16:27 +0100
commit59d3424100c787d5e8b16e18fd948ca253b0a404 (patch)
tree51a30c5ee36a9a6c19c905e9e26646904c145d91
parentcfd00244a910d7fcdde844937f562e62aff562d1 (diff)
downloadgstreamer-plugins-good-59d3424100c787d5e8b16e18fd948ca253b0a404.tar.gz
qtdemux: workaround for files with wrong color_table_id value
Instead of erroring out, just use the default color table. https://bugzilla.gnome.org/show_bug.cgi?id=761637
-rw-r--r--gst/isomp4/qtdemux.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/gst/isomp4/qtdemux.c b/gst/isomp4/qtdemux.c
index 2c510625e..6bf31f7d3 100644
--- a/gst/isomp4/qtdemux.c
+++ b/gst/isomp4/qtdemux.c
@@ -8729,6 +8729,14 @@ qtdemux_parse_trak (GstQTDemux * qtdemux, GNode * trak)
stream->bits_per_sample = QT_UINT16 (stsd_data + offset + 82);
stream->color_table_id = QT_UINT16 (stsd_data + offset + 84);
+ /* if color_table_id is 0, ctab atom must follow; however some files
+ * produced by TMPEGEnc have color_table_id = 0 and no ctab atom, so
+ * if color table is not present we'll correct the value */
+ if (stream->color_table_id == 0 &&
+ (len < 90 || QT_FOURCC (stsd_data + offset + 86) != FOURCC_ctab)) {
+ stream->color_table_id = -1;
+ }
+
GST_LOG_OBJECT (qtdemux, "width %d, height %d, bps %d, color table id %d",
stream->width, stream->height, stream->bits_per_sample,
stream->color_table_id);