MCPcopy Create free account
hub / github.com/LMMS/lmms / loadFromBase64

Method loadFromBase64

src/core/SampleBuffer.cpp:1336–1395  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1334
1335
1336void SampleBuffer::loadFromBase64( const QString & _data )
1337{
1338 char * dst = NULL;
1339 int dsize = 0;
1340 base64::decode( _data, &dst, &dsize );
1341
1342#ifdef LMMS_HAVE_FLAC_STREAM_DECODER_H
1343
1344 QByteArray orig_data = QByteArray::fromRawData( dst, dsize );
1345 QBuffer ba_reader( &orig_data );
1346 ba_reader.open( QBuffer::ReadOnly );
1347
1348 QBuffer ba_writer;
1349 ba_writer.open( QBuffer::WriteOnly );
1350
1351 flacStreamDecoderClientData cdata = { &ba_reader, &ba_writer } ;
1352
1353 FLAC__StreamDecoder * flac_dec = FLAC__stream_decoder_new();
1354
1355 FLAC__stream_decoder_set_read_callback( flac_dec,
1356 flacStreamDecoderReadCallback );
1357 FLAC__stream_decoder_set_write_callback( flac_dec,
1358 flacStreamDecoderWriteCallback );
1359 FLAC__stream_decoder_set_error_callback( flac_dec,
1360 flacStreamDecoderErrorCallback );
1361 FLAC__stream_decoder_set_metadata_callback( flac_dec,
1362 flacStreamDecoderMetadataCallback );
1363 FLAC__stream_decoder_set_client_data( flac_dec, &cdata );
1364
1365 FLAC__stream_decoder_init( flac_dec );
1366
1367 FLAC__stream_decoder_process_until_end_of_stream( flac_dec );
1368
1369 FLAC__stream_decoder_finish( flac_dec );
1370 FLAC__stream_decoder_delete( flac_dec );
1371
1372 ba_reader.close();
1373
1374 orig_data = ba_writer.buffer();
1375 printf("%d\n", (int) orig_data.size() );
1376
1377 m_origFrames = orig_data.size() / sizeof( sampleFrame );
1378 MM_FREE( m_origData );
1379 m_origData = MM_ALLOC( sampleFrame, m_origFrames );
1380 memcpy( m_origData, orig_data.data(), orig_data.size() );
1381
1382#else /* LMMS_HAVE_FLAC_STREAM_DECODER_H */
1383
1384 m_origFrames = dsize / sizeof( sampleFrame );
1385 MM_FREE( m_origData );
1386 m_origData = MM_ALLOC( sampleFrame, m_origFrames );
1387 memcpy( m_origData, dst, dsize );
1388
1389#endif
1390
1391 delete[] dst;
1392
1393 m_audioFile = QString();

Callers 3

loadSettingsMethod · 0.80
dropEventMethod · 0.80
loadSettingsMethod · 0.80

Calls 7

openMethod · 0.80
decodeFunction · 0.70
QStringClass · 0.50
closeMethod · 0.45
bufferMethod · 0.45
sizeMethod · 0.45
dataMethod · 0.45

Tested by

no test coverage detected