summaryrefslogtreecommitdiffstats
path: root/ext/dv
diff options
context:
space:
mode:
authorAndy Wingo <wingo@pobox.com>2006-04-21 15:50:28 +0000
committerAndy Wingo <wingo@pobox.com>2006-04-21 15:50:28 +0000
commit48892690e6f9e09c278569d9efb98f4a9a2313eb (patch)
treec040d6e4f6d19dccb37e33064a32182e0dcc3a47 /ext/dv
parenta945c1582d7d6fd39d6e30b2febaa4ef08c7fc4e (diff)
ext/dv/gstdv.c (plugin_init): libdv is a marginal decoder, at best, on big endian systems. Drop its rank in that case...
Original commit message from CVS: 2006-04-21 Andy Wingo <wingo@pobox.com> * ext/dv/gstdv.c (plugin_init): libdv is a marginal decoder, at best, on big endian systems. Drop its rank in that case. OTOH on x86 it's quite fine. See changes from today in gst-ffmpeg as well.
Diffstat (limited to 'ext/dv')
-rw-r--r--ext/dv/gstdv.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/ext/dv/gstdv.c b/ext/dv/gstdv.c
index 55d5cf07..90947f46 100644
--- a/ext/dv/gstdv.c
+++ b/ext/dv/gstdv.c
@@ -28,12 +28,21 @@
static gboolean
plugin_init (GstPlugin * plugin)
{
+ GstRank dvdec_rank;
+
if (!gst_element_register (plugin, "dvdemux", GST_RANK_PRIMARY,
gst_dvdemux_get_type ()))
return FALSE;
- if (!gst_element_register (plugin, "dvdec", GST_RANK_SECONDARY,
- gst_dvdec_get_type ()))
+ /* libdv does not correctly play back videos on big-endian machines. also it's
+ only optimized properly on x86-32 and x86-64. */
+#if G_BYTE_ORDER == G_LITTLE_ENDIAN
+ rank = GST_RANK_PRIMARY;
+#else
+ rank = GST_RANK_MARGINAL;
+#endif
+
+ if (!gst_element_register (plugin, "dvdec", rank, gst_dvdec_get_type ()))
return FALSE;
return TRUE;