summaryrefslogtreecommitdiff
path: root/src/flac/encode.c
diff options
context:
space:
mode:
authorErik de Castro Lopo <erikd@mega-nerd.com>2014-06-28 09:32:57 +1000
committerErik de Castro Lopo <erikd@mega-nerd.com>2014-06-28 09:33:02 +1000
commita3b35e7fc81d3a963e1c18460a79113a7f967f66 (patch)
treefd3fa58a43c0027dc4741eaa03403268c15263a0 /src/flac/encode.c
parent6ccef14727a2257736782d9094c5d7708dae1d8d (diff)
downloadflac-a3b35e7fc81d3a963e1c18460a79113a7f967f66.tar.gz
flac: Fix padding for --replay-gain option.
Patches ported from the flac 1.2.1 maintenance branch. http://flac.cvs.sourceforge.net/viewvc/flac/flac/src/flac/encode.c? r1=1.194&r2=1.194.2.1&pathrev=FLAC_RELEASE_1_2_1_MAINTENANCE_BRANCH http://flac.cvs.sourceforge.net/viewvc/flac/flac/src/flac/main.c? r1=1.169&r2=1.169.2.1&pathrev=FLAC_RELEASE_1_2_1_MAINTENANCE_BRANCH Patch-from: lvqcl <lvqcl.mail@gmail.com>
Diffstat (limited to 'src/flac/encode.c')
-rw-r--r--src/flac/encode.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/flac/encode.c b/src/flac/encode.c
index 10357b41..dc7cbe09 100644
--- a/src/flac/encode.c
+++ b/src/flac/encode.c
@@ -1987,6 +1987,8 @@ FLAC__bool EncoderSession_init_encoder(EncoderSession *e, encode_options_t optio
p = options.padding;
if(p < 0)
p = e->total_samples_to_encode / sample_rate < 20*60? FLAC_ENCODE__DEFAULT_PADDING : FLAC_ENCODE__DEFAULT_PADDING*8;
+ if(p > 0)
+ p += (e->replay_gain ? GRABBAG__REPLAYGAIN_MAX_TAG_SPACE_REQUIRED : 0);
if(options.padding != 0) {
if(p > 0 && flac_decoder_data->num_metadata_blocks < sizeof(flac_decoder_data->metadata_blocks)/sizeof(flac_decoder_data->metadata_blocks[0])) {
flac_decoder_data->metadata_blocks[flac_decoder_data->num_metadata_blocks] = FLAC__metadata_object_new(FLAC__METADATA_TYPE_PADDING);
@@ -2043,7 +2045,7 @@ FLAC__bool EncoderSession_init_encoder(EncoderSession *e, encode_options_t optio
if(options.padding != 0) {
padding.is_last = false; /* the encoder will set this for us */
padding.type = FLAC__METADATA_TYPE_PADDING;
- padding.length = (unsigned)(options.padding>0? options.padding : (e->total_samples_to_encode / sample_rate < 20*60? FLAC_ENCODE__DEFAULT_PADDING : FLAC_ENCODE__DEFAULT_PADDING*8));
+ padding.length = (unsigned)(options.padding>0? options.padding : (e->total_samples_to_encode / sample_rate < 20*60? FLAC_ENCODE__DEFAULT_PADDING : FLAC_ENCODE__DEFAULT_PADDING*8)) + (e->replay_gain ? GRABBAG__REPLAYGAIN_MAX_TAG_SPACE_REQUIRED : 0);
static_metadata_append(&static_metadata, &padding, /*needs_delete=*/false);
}
metadata = static_metadata.metadata;