summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVincent Penquerc'h <vincent.penquerch@collabora.co.uk>2012-05-18 12:46:55 +0100
committerVincent Penquerc'h <vincent.penquerch@collabora.co.uk>2012-05-22 10:10:14 +0100
commit04909e2c50e6802ea5dec6d0085d60d5c57f671c (patch)
tree1348968609c29170905e1168ee5bb49be65fc02f
parent4f06313c3a435a8048a020d3c080a25c48ca428c (diff)
vp8enc: fix target bitrate config with libvpx 1.1.0
libvpx 1.1.0 disallows a bitrate of 0, which was used by vp8enc as a default value. Instead, we use the default libvpx bitrate, scaled to our video size, if no bitrate was specified. This fixes encoding VP8 video with libvpx 1.1.0. https://bugzilla.gnome.org/show_bug.cgi?id=676245
-rw-r--r--ext/vp8/gstvp8enc.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/ext/vp8/gstvp8enc.c b/ext/vp8/gstvp8enc.c
index 9b0c4fe3e..631602177 100644
--- a/ext/vp8/gstvp8enc.c
+++ b/ext/vp8/gstvp8enc.c
@@ -734,6 +734,11 @@ gst_vp8_enc_set_format (GstVideoEncoder * video_encoder,
return FALSE;
}
+ /* Scale default bitrate to our size */
+ cfg.rc_target_bitrate = gst_util_uint64_scale (cfg.rc_target_bitrate,
+ GST_VIDEO_INFO_WIDTH (info) * GST_VIDEO_INFO_HEIGHT (info),
+ cfg.g_w * cfg.g_h);
+
cfg.g_w = GST_VIDEO_INFO_WIDTH (info);
cfg.g_h = GST_VIDEO_INFO_HEIGHT (info);
cfg.g_timebase.num = GST_VIDEO_INFO_FPS_D (info);
@@ -757,7 +762,6 @@ gst_vp8_enc_set_format (GstVideoEncoder * video_encoder,
} else {
cfg.rc_min_quantizer = (gint) (63 - encoder->quality * 6.2);
cfg.rc_max_quantizer = (gint) (63 - encoder->quality * 6.2);
- cfg.rc_target_bitrate = encoder->bitrate;
}
cfg.rc_dropframe_thresh = encoder->drop_frame;
cfg.rc_resize_allowed = encoder->resize_allowed;