summaryrefslogtreecommitdiff
path: root/ext
diff options
context:
space:
mode:
authorDavid Schleef <ds@schleef.org>2011-06-18 15:56:49 -0700
committerDavid Schleef <ds@schleef.org>2011-07-04 16:34:48 -0700
commit2a1d4c9b4a8653b019bc853c1e71efc93b3c9385 (patch)
tree6652085fca9fa35f14c817856c60128c1a766b5e /ext
parent3de8284efd475bfd7f5f0d4d26716ffa022c3fb2 (diff)
vp8enc: update for new libvpx api
Diffstat (limited to 'ext')
-rw-r--r--ext/vp8/gstvp8enc.c17
1 files changed, 8 insertions, 9 deletions
diff --git a/ext/vp8/gstvp8enc.c b/ext/vp8/gstvp8enc.c
index 6f65d955e..29f07f73b 100644
--- a/ext/vp8/gstvp8enc.c
+++ b/ext/vp8/gstvp8enc.c
@@ -283,7 +283,7 @@ gst_vp8_enc_class_init (GstVP8EncClass * klass)
g_object_class_install_property (gobject_class, PROP_SPEED,
g_param_spec_int ("speed", "Speed",
"Speed",
- 0, 2, DEFAULT_SPEED,
+ 0, 7, DEFAULT_SPEED,
(GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)));
g_object_class_install_property (gobject_class, PROP_THREADS,
@@ -586,7 +586,9 @@ gst_vp8_enc_set_format (GstBaseVideoEncoder * base_video_encoder,
return FALSE;
}
- status = vpx_codec_control (&encoder->encoder, VP8E_SET_CPUUSED, 0);
+ /* FIXME move this to a set_speed() function */
+ status = vpx_codec_control (&encoder->encoder, VP8E_SET_CPUUSED,
+ (encoder->speed == 0) ? 0 : (encoder->speed - 1));
if (status != VPX_CODEC_OK) {
GST_WARNING_OBJECT (encoder, "Failed to set VP8E_SET_CPUUSED to 0: %s",
gst_vpx_error_name (status));
@@ -837,12 +839,6 @@ gst_vp8_enc_buffer_to_image (GstVP8Enc * enc, GstBuffer * buffer)
return image;
}
-static const int speed_table[] = {
- VPX_DL_BEST_QUALITY,
- VPX_DL_GOOD_QUALITY,
- VPX_DL_REALTIME,
-};
-
static GstFlowReturn
gst_vp8_enc_handle_frame (GstBaseVideoEncoder * base_video_encoder,
GstVideoFrame * frame)
@@ -853,6 +849,7 @@ gst_vp8_enc_handle_frame (GstBaseVideoEncoder * base_video_encoder,
int flags = 0;
vpx_image_t *image;
GstVP8EncCoderHook *hook;
+ int quality;
GST_DEBUG_OBJECT (base_video_encoder, "handle_frame");
@@ -874,8 +871,10 @@ gst_vp8_enc_handle_frame (GstBaseVideoEncoder * base_video_encoder,
flags |= VPX_EFLAG_FORCE_KF;
}
+ quality = (encoder->speed == 0) ? VPX_DL_BEST_QUALITY : VPX_DL_GOOD_QUALITY;
+
status = vpx_codec_encode (&encoder->encoder, image,
- encoder->n_frames, 1, flags, speed_table[encoder->speed]);
+ encoder->n_frames, 1, flags, quality);
if (status != 0) {
GST_ELEMENT_ERROR (encoder, LIBRARY, ENCODE,
("Failed to encode frame"), ("%s", gst_vpx_error_name (status)));