summaryrefslogtreecommitdiff
path: root/sys
diff options
context:
space:
mode:
authorOle André Vadla Ravnås <oravnas@cisco.com>2010-11-08 13:49:04 +0100
committerOle André Vadla Ravnås <oravnas@cisco.com>2010-11-08 14:02:50 +0100
commitc2672f71cd4bfb73ef56185961cf9bfaa7bef14e (patch)
treef7c297af5043c042f9836fb27e82d243e81acccd /sys
parentfe22a3ab5a1ad65bb8e3ad8a530cdef7b554585a (diff)
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.h5
-rw-r--r--sys/applemedia/vtdec.c4
-rw-r--r--sys/applemedia/vtenc.c6
-rw-r--r--sys/applemedia/vth264decbin.c2
-rw-r--r--sys/applemedia/vth264encbin.c2
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 =