diff -crB gst-plugins-bad-0.10.14-orig/ext/directfb/dfbvideosink.c gst-plugins-bad-0.10.14/ext/directfb/dfbvideosink.c
*** gst-plugins-bad-0.10.14-orig/ext/directfb/dfbvideosink.c	2010-10-05 10:51:06.000000000 +0200
--- gst-plugins-bad-0.10.14/ext/directfb/dfbvideosink.c	2010-10-05 10:57:03.000000000 +0200
***************
*** 1005,1011 ****
  
  static gboolean
  gst_dfbvideosink_can_blit_from_format (GstDfbVideoSink * dfbvideosink,
!     DFBSurfacePixelFormat format)
  {
    gboolean res = FALSE;
    DFBResult ret;
--- 1005,1011 ----
  
  static gboolean
  gst_dfbvideosink_can_blit_from_format (GstDfbVideoSink * dfbvideosink,
!     DFBSurfacePixelFormat format, gboolean accelerated)
  {
    gboolean res = FALSE;
    DFBResult ret;
***************
*** 1065,1078 ****
    }
  
    /* Blitting from this format to our primary is accelerated */
!   if (mask & DFXL_BLIT) {
      GST_DEBUG_OBJECT (dfbvideosink, "blitting from format %s to our primary "
          "is accelerated", gst_dfbvideosink_get_format_name (format));
      res = TRUE;
!   } else {
      GST_DEBUG_OBJECT (dfbvideosink, "blitting from format %s to our primary "
          "is not accelerated", gst_dfbvideosink_get_format_name (format));
!     res = FALSE;
    }
  
    /* Restore original layer configuration */
--- 1065,1078 ----
    }
  
    /* Blitting from this format to our primary is accelerated */
!   if ((mask & DFXL_BLIT) && accelerated) {
      GST_DEBUG_OBJECT (dfbvideosink, "blitting from format %s to our primary "
          "is accelerated", gst_dfbvideosink_get_format_name (format));
      res = TRUE;
!   } else if (!accelerated) {
      GST_DEBUG_OBJECT (dfbvideosink, "blitting from format %s to our primary "
          "is not accelerated", gst_dfbvideosink_get_format_name (format));
!     res = TRUE;
    }
  
    /* Restore original layer configuration */
***************
*** 1172,1212 ****
        caps = gst_dfbvideosink_get_caps_from_format (dfbvideosink->pixel_format);
      } else {
        /* Try some formats */
        caps = gst_caps_new_empty ();
  
!       if (gst_dfbvideosink_can_blit_from_format (dfbvideosink, DSPF_RGB16)) {
!         gst_caps_append (caps,
!             gst_dfbvideosink_get_caps_from_format (DSPF_RGB16));
!       }
!       if (gst_dfbvideosink_can_blit_from_format (dfbvideosink, DSPF_RGB24)) {
!         gst_caps_append (caps,
!             gst_dfbvideosink_get_caps_from_format (DSPF_RGB24));
!       }
!       /* There's something wrong with RGB32, ffmpegcolorspace ?
!          if (gst_dfbvideosink_can_blit_from_format (dfbvideosink, DSPF_RGB32)) {
!          gst_caps_append (caps,
!          gst_dfbvideosink_get_caps_from_format (DSPF_RGB32));
!          } */
!       if (gst_dfbvideosink_can_blit_from_format (dfbvideosink, DSPF_ARGB)) {
!         gst_caps_append (caps,
!             gst_dfbvideosink_get_caps_from_format (DSPF_ARGB));
!       }
!       if (gst_dfbvideosink_can_blit_from_format (dfbvideosink, DSPF_YUY2)) {
!         gst_caps_append (caps,
!             gst_dfbvideosink_get_caps_from_format (DSPF_YUY2));
!       }
!       if (gst_dfbvideosink_can_blit_from_format (dfbvideosink, DSPF_UYVY)) {
!         gst_caps_append (caps,
!             gst_dfbvideosink_get_caps_from_format (DSPF_UYVY));
!       }
!       if (gst_dfbvideosink_can_blit_from_format (dfbvideosink, DSPF_I420)) {
!         gst_caps_append (caps,
!             gst_dfbvideosink_get_caps_from_format (DSPF_I420));
!       }
!       if (gst_dfbvideosink_can_blit_from_format (dfbvideosink, DSPF_YV12)) {
!         gst_caps_append (caps,
!             gst_dfbvideosink_get_caps_from_format (DSPF_YV12));
!       }
      }
    }
  
--- 1172,1216 ----
        caps = gst_dfbvideosink_get_caps_from_format (dfbvideosink->pixel_format);
      } else {
        /* Try some formats */
+       gboolean accelerated = TRUE;
        caps = gst_caps_new_empty ();
  
!       do
!       {
!         if (gst_dfbvideosink_can_blit_from_format (dfbvideosink, DSPF_RGB16, accelerated)) {
!           gst_caps_append (caps,
!               gst_dfbvideosink_get_caps_from_format (DSPF_RGB16));
!         }
!         if (gst_dfbvideosink_can_blit_from_format (dfbvideosink, DSPF_RGB24, accelerated)) {
!           gst_caps_append (caps,
!               gst_dfbvideosink_get_caps_from_format (DSPF_RGB24));
!         }
!         if (gst_dfbvideosink_can_blit_from_format (dfbvideosink, DSPF_RGB32, accelerated)) {
!            gst_caps_append (caps,
!               gst_dfbvideosink_get_caps_from_format (DSPF_RGB32));
!         }
!         if (gst_dfbvideosink_can_blit_from_format (dfbvideosink, DSPF_ARGB, accelerated)) {
!           gst_caps_append (caps,
!               gst_dfbvideosink_get_caps_from_format (DSPF_ARGB));
!         }
!         if (gst_dfbvideosink_can_blit_from_format (dfbvideosink, DSPF_YUY2, accelerated)) {
!           gst_caps_append (caps,
!               gst_dfbvideosink_get_caps_from_format (DSPF_YUY2));
!         }
!         if (gst_dfbvideosink_can_blit_from_format (dfbvideosink, DSPF_UYVY, accelerated)) {
!           gst_caps_append (caps,
!               gst_dfbvideosink_get_caps_from_format (DSPF_UYVY));
!         }
!         if (gst_dfbvideosink_can_blit_from_format (dfbvideosink, DSPF_I420, accelerated)) {
!           gst_caps_append (caps,
!               gst_dfbvideosink_get_caps_from_format (DSPF_I420));
!         }
!         if (gst_dfbvideosink_can_blit_from_format (dfbvideosink, DSPF_YV12, accelerated)) {
!           gst_caps_append (caps,
!               gst_dfbvideosink_get_caps_from_format (DSPF_YV12));
!         }
!         accelerated = !accelerated;
!       } while (accelerated == FALSE);
      }
    }
  
