mirror of
https://github.com/ElvishArtisan/rivendell.git
synced 2025-05-24 08:31:41 +02:00
2016-04-29 Fred Gleason <fredg@paravelsystems.com>
* Added a pointer offset argument to the 'RDWaveFile::createWave()' method in 'lib/rdwavefile.cpp' and 'lib/rdwavefile.h'.
This commit is contained in:
parent
f8e6fc0629
commit
e5b25668c0
@ -15113,3 +15113,6 @@
|
||||
2016-04-29 Fred Gleason <fredg@paravelsystems.com>
|
||||
* Fixed a regression in 'rdlibrary/audio_cart.cpp' that caused
|
||||
marker data to be deleted when exporting a cut.
|
||||
2016-04-29 Fred Gleason <fredg@paravelsystems.com>
|
||||
* Added a pointer offset argument to the 'RDWaveFile::createWave()'
|
||||
method in 'lib/rdwavefile.cpp' and 'lib/rdwavefile.h'.
|
||||
|
@ -1604,7 +1604,7 @@ RDAudioConvert::ErrorCode RDAudioConvert::Stage3Layer2Wav(SNDFILE *src_sf,
|
||||
wave->setCartChunk(conv_dst_wavedata!=NULL);
|
||||
wave->setLevlChunk(true);
|
||||
unlink(dstfile);
|
||||
if(!wave->createWave(conv_dst_wavedata)) {
|
||||
if(!wave->createWave(conv_dst_wavedata,conv_start_point)) {
|
||||
return RDAudioConvert::ErrorNoDestination;
|
||||
}
|
||||
|
||||
@ -1797,7 +1797,7 @@ RDAudioConvert::ErrorCode RDAudioConvert::Stage3Pcm16(SNDFILE *src_sf,
|
||||
wave->setLevlChunk(true);
|
||||
sf_buffer=new int16_t[2048*src_sf_info->channels];
|
||||
unlink(dstfile);
|
||||
if(!wave->createWave(conv_dst_wavedata)) {
|
||||
if(!wave->createWave(conv_dst_wavedata,conv_start_point)) {
|
||||
return RDAudioConvert::ErrorNoDestination;
|
||||
}
|
||||
while((n=sf_readf_short(src_sf,sf_buffer,2048))>0) {
|
||||
@ -1840,7 +1840,7 @@ RDAudioConvert::ErrorCode RDAudioConvert::Stage3Pcm24(SNDFILE *src_sf,
|
||||
sf_buffer=new int[2048*src_sf_info->channels];
|
||||
pcm24=new uint8_t[2048*src_sf_info->channels*sizeof(int)];
|
||||
unlink(dstfile);
|
||||
if(!wave->createWave(conv_dst_wavedata)) {
|
||||
if(!wave->createWave(conv_dst_wavedata,conv_start_point)) {
|
||||
return RDAudioConvert::ErrorNoDestination;
|
||||
}
|
||||
while((n=sf_readf_int(src_sf,sf_buffer,2048))>0) {
|
||||
|
@ -556,7 +556,7 @@ void RDImportAudio::Import()
|
||||
settings.setAutotrimLevel(import_autotrim_spin->value());
|
||||
}
|
||||
import_import_conv->setDestinationSettings(&settings);
|
||||
import_import_conv->setUseMetadata(false);
|
||||
import_import_conv->setUseMetadata(import_in_metadata_box->isChecked());
|
||||
*import_running=true;
|
||||
import_import_aborted=false;
|
||||
conv_err=import_import_conv->runImport(import_user->name(),import_user->password(),&audio_conv_err);
|
||||
|
@ -172,6 +172,7 @@ RDWaveFile::RDWaveFile(QString file_name)
|
||||
atx_offset=0;
|
||||
scot_chunk=false;
|
||||
av10_chunk=false;
|
||||
ptr_offset_msecs=0;
|
||||
}
|
||||
|
||||
|
||||
@ -492,11 +493,12 @@ bool RDWaveFile::openWave(RDWaveData *data)
|
||||
}
|
||||
|
||||
|
||||
bool RDWaveFile::createWave(RDWaveData *data)
|
||||
bool RDWaveFile::createWave(RDWaveData *data,unsigned ptr_offset)
|
||||
{
|
||||
mode_t prev_mask;
|
||||
bool rc;
|
||||
wave_data=data;
|
||||
ptr_offset_msecs=ptr_offset;
|
||||
if(wave_data!=NULL) {
|
||||
cart_title=wave_data->title();
|
||||
cart_artist=wave_data->artist();
|
||||
@ -545,7 +547,7 @@ bool RDWaveFile::createWave(RDWaveData *data)
|
||||
write(wave_file.handle(),"fact\4\0\0\0\0\0\0\0",12);
|
||||
}
|
||||
if(cart_chunk) {
|
||||
MakeCart();
|
||||
MakeCart(ptr_offset);
|
||||
WriteChunk(wave_file.handle(),"cart",cart_chunk_data,
|
||||
CART_CHUNK_SIZE);
|
||||
}
|
||||
@ -709,7 +711,7 @@ void RDWaveFile::closeWave(int samples)
|
||||
// Update Cart Chunk
|
||||
//
|
||||
if(cart_chunk) {
|
||||
MakeCart();
|
||||
MakeCart(ptr_offset_msecs);
|
||||
WriteChunk(wave_file.handle(),"cart",cart_chunk_data,CART_CHUNK_SIZE);
|
||||
}
|
||||
|
||||
@ -4075,7 +4077,7 @@ bool RDWaveFile::MakeFmt()
|
||||
}
|
||||
|
||||
|
||||
bool RDWaveFile::MakeCart()
|
||||
bool RDWaveFile::MakeCart(unsigned ptr_offset)
|
||||
{
|
||||
for(int i=0;i<CART_CHUNK_SIZE;i++) {
|
||||
cart_chunk_data[i]=0;
|
||||
@ -4141,33 +4143,33 @@ bool RDWaveFile::MakeCart()
|
||||
(wave_data->segueEndPos()>wave_data->segueStartPos())) {
|
||||
sprintf((char *)cart_chunk_data+684+timer*MAX_TIMERS,"SEGs");
|
||||
WriteDword(cart_chunk_data,688+timer*MAX_TIMERS,
|
||||
FrameOffset(wave_data->segueStartPos()));
|
||||
FrameOffset(wave_data->segueStartPos()-ptr_offset_msecs));
|
||||
timer++;
|
||||
sprintf((char *)cart_chunk_data+684+timer*MAX_TIMERS,"SEGe");
|
||||
WriteDword(cart_chunk_data,688+timer*MAX_TIMERS,
|
||||
FrameOffset(wave_data->segueEndPos()));
|
||||
FrameOffset(wave_data->segueEndPos()-ptr_offset_msecs));
|
||||
timer++;
|
||||
}
|
||||
if((wave_data->introStartPos()>=0)&&
|
||||
(wave_data->introEndPos()>wave_data->introStartPos())) {
|
||||
sprintf((char *)cart_chunk_data+684+timer*MAX_TIMERS,"INTs");
|
||||
WriteDword(cart_chunk_data,688+timer*MAX_TIMERS,
|
||||
FrameOffset(wave_data->introStartPos()));
|
||||
FrameOffset(wave_data->introStartPos()-ptr_offset_msecs));
|
||||
timer++;
|
||||
sprintf((char *)cart_chunk_data+684+timer*MAX_TIMERS,"INTe");
|
||||
WriteDword(cart_chunk_data,688+timer*MAX_TIMERS,
|
||||
FrameOffset(wave_data->introEndPos()));
|
||||
FrameOffset(wave_data->introEndPos()-ptr_offset_msecs));
|
||||
timer++;
|
||||
}
|
||||
if((wave_data->startPos()>=0)&&
|
||||
(wave_data->endPos()>wave_data->startPos())) {
|
||||
sprintf((char *)cart_chunk_data+684+timer*MAX_TIMERS,"AUDs");
|
||||
WriteDword(cart_chunk_data,688+timer*MAX_TIMERS,
|
||||
FrameOffset(wave_data->startPos()));
|
||||
FrameOffset(wave_data->startPos()-ptr_offset_msecs));
|
||||
timer++;
|
||||
sprintf((char *)cart_chunk_data+684+timer*MAX_TIMERS,"AUDe");
|
||||
WriteDword(cart_chunk_data,688+timer*MAX_TIMERS,
|
||||
FrameOffset(wave_data->endPos()));
|
||||
FrameOffset(wave_data->endPos()-ptr_offset_msecs));
|
||||
timer++;
|
||||
}
|
||||
}
|
||||
|
@ -157,7 +157,7 @@ class RDWaveFile
|
||||
*
|
||||
* Returns true if WAV file was created successfully, otherwise false.
|
||||
**/
|
||||
bool createWave(RDWaveData *data=NULL);
|
||||
bool createWave(RDWaveData *data=NULL,unsigned ptr_offset=0);
|
||||
|
||||
/**
|
||||
* Open the WAV file for playback. A WAV file name must first have
|
||||
@ -1050,7 +1050,7 @@ class RDWaveFile
|
||||
bool GetFlacStreamInfo();
|
||||
void ReadFlacMetadata();
|
||||
bool MakeFmt();
|
||||
bool MakeCart();
|
||||
bool MakeCart(unsigned ptr_offset);
|
||||
bool MakeBext();
|
||||
bool MakeMext();
|
||||
bool MakeLevl();
|
||||
@ -1091,6 +1091,7 @@ class RDWaveFile
|
||||
unsigned head_emphasis; // De-emphasis
|
||||
unsigned short head_flags; // MPEG header flags
|
||||
unsigned long pts; // The MPEG PTS
|
||||
unsigned ptr_offset_msecs;
|
||||
RDWaveFile::MpegID mpeg_id;
|
||||
int mpeg_frame_size;
|
||||
bool id3v1_tag;
|
||||
|
Loading…
x
Reference in New Issue
Block a user