diff options
author | Mark Nauwelaerts <mark.nauwelaerts@collabora.co.uk> | 2009-03-30 21:57:12 +0200 |
---|---|---|
committer | Mark Nauwelaerts <mark.nauwelaerts@collabora.co.uk> | 2009-03-30 22:06:55 +0200 |
commit | d2f954636997b16343b40dfefd3ffb0fb00895a1 (patch) | |
tree | 12d960c82648dcc81c2cec4c804c1c7ebf276cd4 | |
parent | 95b792f9114686c3039ebca97a124766465bb5bc (diff) |
mpeg2enc: fix bitrate property settings
Align bitrate property interpretation with usual mpeg2enc behaviour.
Fixes #575736.
-rw-r--r-- | ext/mpeg2enc/gstmpeg2encoptions.cc | 23 |
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); |