applemedia: vtdec: Enable hardware accelerated decoding on 10.9
authorDavide Bertola <dade@dadeb.it>
Tue, 17 Dec 2013 09:01:42 +0000 (10:01 +0100)
committerAlessandro Decina <alessandro.d@gmail.com>
Wed, 18 Dec 2013 09:28:17 +0000 (10:28 +0100)
sys/applemedia/vtdec.c

index 7ba1625..c785419 100644 (file)
@@ -96,6 +96,13 @@ static GstStaticPadTemplate gst_vtdec_sink_template =
 #define GST_VTDEC_CV_VIDEO_FORMAT kCVPixelFormatType_422YpCbCr8
 #endif
 
+/* define EnableHardwareAcceleratedVideoDecoder in < 10.9 */
+#if MAC_OS_X_VERSION_MAX_ALLOWED < 1090
+const CFStringRef
+    kVTVideoDecoderSpecification_EnableHardwareAcceleratedVideoDecoder =
+CFSTR ("EnableHardwareAcceleratedVideoDecoder");
+#endif
+
 #define VIDEO_SRC_CAPS \
     GST_VIDEO_CAPS_MAKE("{" GST_VTDEC_VIDEO_FORMAT_STR "}")
 
@@ -309,8 +316,15 @@ gst_vtdec_create_session (GstVtdec * vtdec)
 {
   CFMutableDictionaryRef output_image_buffer_attrs;
   VTDecompressionOutputCallbackRecord callback;
+  CFMutableDictionaryRef videoDecoderSpecification;
   OSStatus status;
 
+  videoDecoderSpecification =
+      CFDictionaryCreateMutable (NULL, 0, &kCFTypeDictionaryKeyCallBacks,
+      &kCFTypeDictionaryValueCallBacks);
+  gst_vtutil_dict_set_boolean (videoDecoderSpecification,
+      kVTVideoDecoderSpecification_EnableHardwareAcceleratedVideoDecoder, TRUE);
+
   output_image_buffer_attrs =
       CFDictionaryCreateMutable (NULL, 0, &kCFTypeDictionaryKeyCallBacks,
       &kCFTypeDictionaryValueCallBacks);
@@ -327,7 +341,8 @@ gst_vtdec_create_session (GstVtdec * vtdec)
   callback.decompressionOutputRefCon = vtdec;
 
   status = VTDecompressionSessionCreate (NULL, vtdec->format_description,
-      NULL, output_image_buffer_attrs, &callback, &vtdec->session);
+      videoDecoderSpecification, output_image_buffer_attrs, &callback,
+      &vtdec->session);
 
   CFRelease (output_image_buffer_attrs);