diff options
author | Ole André Vadla Ravnås <oravnas@cisco.com> | 2010-11-08 13:49:04 +0100 |
---|---|---|
committer | Ole André Vadla Ravnås <oravnas@cisco.com> | 2010-11-08 14:02:50 +0100 |
commit | c2672f71cd4bfb73ef56185961cf9bfaa7bef14e (patch) | |
tree | f7c297af5043c042f9836fb27e82d243e81acccd /sys | |
parent | fe22a3ab5a1ad65bb8e3ad8a530cdef7b554585a (diff) | |
download | gstreamer-plugins-bad-c2672f71cd4bfb73ef56185961cf9bfaa7bef14e.tar.gz |
applemedia: improve vtenc/vtdec performance
Profiling of H.264 encode and decode revealed that conversions
between packed and planar were happening behind the scenes.
Hence we now choose I420 instead of YUY2.
Diffstat (limited to 'sys')
-rw-r--r-- | sys/applemedia/cvapi.h | 5 | ||||
-rw-r--r-- | sys/applemedia/vtdec.c | 4 | ||||
-rw-r--r-- | sys/applemedia/vtenc.c | 6 | ||||
-rw-r--r-- | sys/applemedia/vth264decbin.c | 2 | ||||
-rw-r--r-- | sys/applemedia/vth264encbin.c | 2 |
5 files changed, 9 insertions, 10 deletions
diff --git a/sys/applemedia/cvapi.h b/sys/applemedia/cvapi.h index 9c792b9b8..3d99e38ef 100644 --- a/sys/applemedia/cvapi.h +++ b/sys/applemedia/cvapi.h @@ -47,8 +47,9 @@ enum _CVReturn enum _CVPixelFormatType { - kCVPixelFormatType_422YpCbCr8Deprecated = 'yuvs', - kCVPixelFormatType_422YpCbCr8 = '2vuy' + kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange = '420v', + kCVPixelFormatType_422YpCbCr8Deprecated = 'yuvs', + kCVPixelFormatType_422YpCbCr8 = '2vuy' }; struct _GstCVApi diff --git a/sys/applemedia/vtdec.c b/sys/applemedia/vtdec.c index cca78ebf4..24b40ca61 100644 --- a/sys/applemedia/vtdec.c +++ b/sys/applemedia/vtdec.c @@ -94,7 +94,7 @@ gst_vtdec_base_init (GstVTDecClass * klass) GST_PAD_SRC, GST_PAD_ALWAYS, gst_caps_new_simple ("video/x-raw-yuv", - "format", GST_TYPE_FOURCC, GST_MAKE_FOURCC ('Y', 'U', 'Y', '2'), + "format", GST_TYPE_FOURCC, GST_MAKE_FOURCC ('I', '4', '2', '0'), "width", GST_TYPE_INT_RANGE, min_width, max_width, "height", GST_TYPE_INT_RANGE, min_height, max_height, "framerate", GST_TYPE_FRACTION_RANGE, @@ -345,7 +345,7 @@ gst_vtdec_create_session (GstVTDec * self, CMFormatDescriptionRef fmt_desc) pb_attrs = CFDictionaryCreateMutable (NULL, 0, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks); gst_vtutil_dict_set_i32 (pb_attrs, *(cv->kCVPixelBufferPixelFormatTypeKey), - kCVPixelFormatType_422YpCbCr8Deprecated); + kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange); gst_vtutil_dict_set_i32 (pb_attrs, *(cv->kCVPixelBufferWidthKey), self->negotiated_width); gst_vtutil_dict_set_i32 (pb_attrs, *(cv->kCVPixelBufferHeightKey), diff --git a/sys/applemedia/vtenc.c b/sys/applemedia/vtenc.c index 932944a69..45e0efff7 100644 --- a/sys/applemedia/vtenc.c +++ b/sys/applemedia/vtenc.c @@ -112,7 +112,7 @@ gst_vtenc_base_init (GstVTEncClass * klass) GST_PAD_SINK, GST_PAD_ALWAYS, gst_caps_new_simple ("video/x-raw-yuv", - "format", GST_TYPE_FOURCC, GST_MAKE_FOURCC ('Y', 'U', 'Y', '2'), + "format", GST_TYPE_FOURCC, GST_MAKE_FOURCC ('I', '4', '2', '0'), "width", GST_TYPE_INT_RANGE, min_width, max_width, "height", GST_TYPE_INT_RANGE, min_height, max_height, "framerate", GST_TYPE_FRACTION_RANGE, @@ -491,13 +491,11 @@ gst_vtenc_create_session (GstVTEnc * self) pb_attrs = CFDictionaryCreateMutable (NULL, 0, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks); gst_vtutil_dict_set_i32 (pb_attrs, *(cv->kCVPixelBufferPixelFormatTypeKey), - kCVPixelFormatType_422YpCbCr8Deprecated); + kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange); gst_vtutil_dict_set_i32 (pb_attrs, *(cv->kCVPixelBufferWidthKey), self->negotiated_width); gst_vtutil_dict_set_i32 (pb_attrs, *(cv->kCVPixelBufferHeightKey), self->negotiated_height); - gst_vtutil_dict_set_i32 (pb_attrs, - *(cv->kCVPixelBufferBytesPerRowAlignmentKey), 2 * self->negotiated_width); callback.func = gst_vtenc_output_buffer; callback.data = self; diff --git a/sys/applemedia/vth264decbin.c b/sys/applemedia/vth264decbin.c index e78c71d09..d2c248d47 100644 --- a/sys/applemedia/vth264decbin.c +++ b/sys/applemedia/vth264decbin.c @@ -57,7 +57,7 @@ static GstStaticPadTemplate vth264decbin_src_template = GST_STATIC_PAD_TEMPLATE ("src", GST_PAD_SRC, GST_PAD_ALWAYS, - GST_STATIC_CAPS (GST_VIDEO_CAPS_YUV ("YUY2")) + GST_STATIC_CAPS (GST_VIDEO_CAPS_YUV ("I420")) ); #define TAA_VT_H264_DEC_BIN_GET_PRIVATE(obj) \ diff --git a/sys/applemedia/vth264encbin.c b/sys/applemedia/vth264encbin.c index 30f8817c3..54026bca1 100644 --- a/sys/applemedia/vth264encbin.c +++ b/sys/applemedia/vth264encbin.c @@ -48,7 +48,7 @@ static GstStaticPadTemplate vth264encbin_sink_template = GST_STATIC_PAD_TEMPLATE ("sink", GST_PAD_SINK, GST_PAD_ALWAYS, - GST_STATIC_CAPS (GST_VIDEO_CAPS_YUV ("YUY2")) + GST_STATIC_CAPS (GST_VIDEO_CAPS_YUV ("I420")) ); static GstStaticPadTemplate vth264encbin_src_template = |