summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>2009-03-30 21:57:12 +0200
committerMark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>2009-03-30 22:06:55 +0200
commitd2f954636997b16343b40dfefd3ffb0fb00895a1 (patch)
tree12d960c82648dcc81c2cec4c804c1c7ebf276cd4
parent95b792f9114686c3039ebca97a124766465bb5bc (diff)
mpeg2enc: fix bitrate property settings
Align bitrate property interpretation with usual mpeg2enc behaviour. Fixes #575736.
-rw-r--r--ext/mpeg2enc/gstmpeg2encoptions.cc23
1 files changed, 15 insertions, 8 deletions
diff --git a/ext/mpeg2enc/gstmpeg2encoptions.cc b/ext/mpeg2enc/gstmpeg2encoptions.cc
index aca974cca..7891bc843 100644
--- a/ext/mpeg2enc/gstmpeg2encoptions.cc
+++ b/ext/mpeg2enc/gstmpeg2encoptions.cc
@@ -25,6 +25,8 @@
25 25
26#include "gstmpeg2encoptions.hh" 26#include "gstmpeg2encoptions.hh"
27 27
28#include <gst/gst.h>
29
28/* 30/*
29 * Property enumeration. 31 * Property enumeration.
30 */ 32 */
@@ -290,7 +292,7 @@ MPEG2EncOptions ()
290 num_cpus = 32; 292 num_cpus = 32;
291 293
292 /* set some default(s) not set in base class */ 294 /* set some default(s) not set in base class */
293 bitrate = DEFAULT_BITRATE * 1024; 295 bitrate = DEFAULT_BITRATE * 1000;
294} 296}
295 297
296/* 298/*
@@ -321,11 +323,11 @@ GstMpeg2EncOptions::initProperties (GObjectClass * klass)
321 /* general encoding stream options */ 323 /* general encoding stream options */
322 g_object_class_install_property (klass, ARG_BITRATE, 324 g_object_class_install_property (klass, ARG_BITRATE,
323 g_param_spec_int ("bitrate", "Bitrate", "Compressed video bitrate (kbps)", 325 g_param_spec_int ("bitrate", "Bitrate", "Compressed video bitrate (kbps)",
324 0, 10 * 1024, DEFAULT_BITRATE, (GParamFlags) G_PARAM_READWRITE)); 326 0, 10 * 1000, DEFAULT_BITRATE, (GParamFlags) G_PARAM_READWRITE));
325 g_object_class_install_property (klass, ARG_NONVIDEO_BITRATE, 327 g_object_class_install_property (klass, ARG_NONVIDEO_BITRATE,
326 g_param_spec_int ("non-video-bitrate", "Non-video bitrate", 328 g_param_spec_int ("non-video-bitrate", "Non-video bitrate",
327 "Assumed bitrate of non-video for sequence splitting (kbps)", 329 "Assumed bitrate of non-video for sequence splitting (kbps)",
328 0, 10 * 1024, 0, (GParamFlags) G_PARAM_READWRITE)); 330 0, 10 * 1000, 0, (GParamFlags) G_PARAM_READWRITE));
329 g_object_class_install_property (klass, ARG_QUANTISATION, 331 g_object_class_install_property (klass, ARG_QUANTISATION,
330 g_param_spec_int ("quantisation", "Quantisation", 332 g_param_spec_int ("quantisation", "Quantisation",
331 "Quantisation factor (-1=cbr, 0=default, 1=best, 31=worst)", 333 "Quantisation factor (-1=cbr, 0=default, 1=best, 31=worst)",
@@ -334,7 +336,7 @@ GstMpeg2EncOptions::initProperties (GObjectClass * klass)
334 /* stills options */ 336 /* stills options */
335 g_object_class_install_property (klass, ARG_VCD_STILL_SIZE, 337 g_object_class_install_property (klass, ARG_VCD_STILL_SIZE,
336 g_param_spec_int ("vcd-still-size", "VCD stills size", 338 g_param_spec_int ("vcd-still-size", "VCD stills size",
337 "Size of VCD stills (in kB)", 339 "Size of VCD stills (in KB)",
338 0, 512, 0, (GParamFlags) G_PARAM_READWRITE)); 340 0, 512, 0, (GParamFlags) G_PARAM_READWRITE));
339 341
340 /* motion estimation options */ 342 /* motion estimation options */
@@ -485,10 +487,10 @@ GstMpeg2EncOptions::getProperty (guint prop_id, GValue * value)
485 g_value_set_enum (value, fieldenc); 487 g_value_set_enum (value, fieldenc);
486 break; 488 break;
487 case ARG_BITRATE: 489 case ARG_BITRATE:
488 g_value_set_int (value, bitrate / 1024); 490 g_value_set_int (value, bitrate / 1000);
489 break; 491 break;
490 case ARG_NONVIDEO_BITRATE: 492 case ARG_NONVIDEO_BITRATE:
491 g_value_set_int (value, nonvid_bitrate / 1024); 493 g_value_set_int (value, nonvid_bitrate);
492 break; 494 break;
493 case ARG_QUANTISATION: 495 case ARG_QUANTISATION:
494 g_value_set_int (value, force_cbr ? -1 : quant); 496 g_value_set_int (value, force_cbr ? -1 : quant);
@@ -611,10 +613,15 @@ GstMpeg2EncOptions::setProperty (guint prop_id, const GValue * value)
611 fieldenc = g_value_get_enum (value); 613 fieldenc = g_value_get_enum (value);
612 break; 614 break;
613 case ARG_BITRATE: 615 case ARG_BITRATE:
614 bitrate = g_value_get_int (value) * 1024; 616 bitrate = g_value_get_int (value) * 1000;
617 if (bitrate % 400 != 0) {
618 bitrate = (bitrate / 400 + 1) * 400;
619 GST_INFO ("MPEG bitrate must be a multiple of 400",
620 " - rounded up to bitrate %d", bitrate / 1000);
621 }
615 break; 622 break;
616 case ARG_NONVIDEO_BITRATE: 623 case ARG_NONVIDEO_BITRATE:
617 nonvid_bitrate = g_value_get_int (value) * 1024; 624 nonvid_bitrate = g_value_get_int (value);
618 break; 625 break;
619 case ARG_QUANTISATION: 626 case ARG_QUANTISATION:
620 quant = g_value_get_int (value); 627 quant = g_value_get_int (value);