try andy dv test file, render only audio as Big Endian, Signed, 16 bits.

Load it back and watch too loud audio.

note: wav file not tested
From 656fb474f6150d6a6ac05228060d7b74273972a4 Mon Sep 17 00:00:00 2001
From: Andrew Randrianasulu <[email protected]>
Date: Fri, 19 Jan 2024 18:28:03 +0300
Subject: [PATCH] Attempt at fixing libsndfile writing - volume was too high!

---
 cinelerra-5.1/cinelerra/filesndfile.C | 12 +++++++-----
 1 file changed, 7 insertions(+), 5 deletions(-)

diff --git a/cinelerra-5.1/cinelerra/filesndfile.C b/cinelerra-5.1/cinelerra/filesndfile.C
index a215080d..f4b15386 100644
--- a/cinelerra-5.1/cinelerra/filesndfile.C
+++ b/cinelerra-5.1/cinelerra/filesndfile.C
@@ -88,7 +88,6 @@ void FileSndFile::asset_to_format()
 		case BITSLINEAR16:
 // Only signed is supported
 			fd_config.format |= SF_FORMAT_PCM_16;
-
 			if(asset->byte_order || asset->format == FILE_WAV)
 				fd_config.format |= SF_ENDIAN_LITTLE;
 			else
@@ -97,7 +96,6 @@ void FileSndFile::asset_to_format()
 
 		case BITSLINEAR24:
 			fd_config.format |= SF_FORMAT_PCM_24;
-
 			if(asset->byte_order || asset->format == FILE_WAV)
 				fd_config.format |= SF_ENDIAN_LITTLE;
 			else
@@ -128,12 +126,14 @@ void FileSndFile::asset_to_format()
 				fd_config.format |= SF_FORMAT_IMA_ADPCM;
 			fd_config.format |= SF_FORMAT_PCM_16;
 			break;
+		default:
+			printf("Unknown bits! \n");
 	}
 
 	fd_config.seekable = 1;
 	fd_config.samplerate = asset->sample_rate;
 	fd_config.channels  = asset->channels;
-//printf("FileSndFile::asset_to_format %x %d %d\n", fd_config.format, fd_config.pcmbitwidth, fd_config.channels);
+//printf("FileSndFile::asset_to_format Format: %x channels: %d\n", fd_config.format, fd_config.channels);
 }
 
 void FileSndFile::format_to_asset()
@@ -211,7 +211,7 @@ void FileSndFile::format_to_asset()
 	asset->audio_length = fd_config.frames;
 	if(!asset->sample_rate)
 		asset->sample_rate = fd_config.samplerate;
-//printf("FileSndFile::format_to_asset %x %d %d %x\n", fd_config.format & SF_FORMAT_TYPEMASK, fd_config.pcmbitwidth, fd_config.samples, fd_config.format & SF_FORMAT_SUBMASK);
+//printf("FileSndFile::format_to_asset  %x, %d %x\n", fd_config.format & SF_FORMAT_TYPEMASK, fd_config.samples, fd_config.format & SF_FORMAT_SUBMASK);
 //asset->dump();
 }
 
@@ -346,7 +346,7 @@ int FileSndFile::write_samples(double **buffer, int64_t len)
 //if(sample > 1.0 || sample < -1.0) printf("FileSndFile::write_samples %f\n", sample);
 //printf("FileSndFile::write_samples %d %d\n", asset->bits, BITSFLOAT);
 			if(asset->bits != BITSFLOAT) CLAMP(sample, -1.0, (32767.0 / 32768.0));
-			temp_double[j * asset->channels + i] = sample;
+			temp_double[j * asset->channels + i] = sample/1024;
 		}
 	}
 
@@ -442,6 +442,7 @@ SndFileHILO::SndFileHILO(SndFileConfig *gui, int x, int y)
  : BC_Radial(x, y, gui->asset->byte_order == 0, _("Hi Lo"))
 {
 	this->gui = gui;
+	set_tooltip("Little Endian \n");
 }
 int SndFileHILO::handle_event()
 {
@@ -457,6 +458,7 @@ SndFileLOHI::SndFileLOHI(SndFileConfig *gui, int x, int y)
  : BC_Radial(x, y, gui->asset->byte_order == 1, _("Lo Hi"))
 {
 	this->gui = gui;
+	set_tooltip("Big Endian \n");
 }
 int SndFileLOHI::handle_event()
 {
-- 
2.35.8

-- 
Cin mailing list
[email protected]
https://lists.cinelerra-gg.org/mailman/listinfo/cin

Reply via email to