mirror of
https://github.com/f4exb/sdrangel.git
synced 2024-11-08 09:36:02 -05:00
152 lines
5.0 KiB
C
152 lines
5.0 KiB
C
|
/*
|
||
|
* Copyright (C) 2010 DSD Author
|
||
|
* GPG Key ID: 0x3F1D7FD0 (74EF 430D F7F2 0A48 FCE6 F630 FAA2 635D 3F1D 7FD0)
|
||
|
*
|
||
|
* Permission to use, copy, modify, and/or distribute this software for any
|
||
|
* purpose with or without fee is hereby granted, provided that the above
|
||
|
* copyright notice and this permission notice appear in all copies.
|
||
|
*
|
||
|
* THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
|
||
|
* REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
||
|
* AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
|
||
|
* INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
||
|
* LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
|
||
|
* OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
||
|
* PERFORMANCE OF THIS SOFTWARE.
|
||
|
*/
|
||
|
|
||
|
#include "dsd.h"
|
||
|
#include "dsd_cleanupexit.h"
|
||
|
|
||
|
void
|
||
|
playMbeFiles (dsd_opts * opts, dsd_state * state, int argc, char **argv)
|
||
|
{
|
||
|
#ifdef USE_LIBSNDFILE
|
||
|
int i;
|
||
|
char imbe_d[88];
|
||
|
char ambe_d[49];
|
||
|
|
||
|
for (i = state->optind; i < argc; i++)
|
||
|
{
|
||
|
sprintf (opts->mbe_in_file, "%s", argv[i]);
|
||
|
openMbeInFile (opts, state);
|
||
|
mbe_initMbeParms (state->cur_mp, state->prev_mp, state->prev_mp_enhanced);
|
||
|
printf ("playing %s\n", opts->mbe_in_file);
|
||
|
while (feof (opts->mbe_in_f) == 0)
|
||
|
{
|
||
|
if (state->mbe_file_type == 0)
|
||
|
{
|
||
|
readImbe4400Data (opts, state, imbe_d);
|
||
|
mbe_processImbe4400Dataf (state->audio_out_temp_buf, &state->errs, &state->errs2, state->err_str, imbe_d, state->cur_mp, state->prev_mp, state->prev_mp_enhanced, opts->uvquality);
|
||
|
processAudio (opts, state);
|
||
|
if (opts->wav_out_f != NULL)
|
||
|
{
|
||
|
writeSynthesizedVoice (opts, state);
|
||
|
}
|
||
|
|
||
|
if (opts->audio_out != 1)
|
||
|
{
|
||
|
playSynthesizedVoice (opts, state);
|
||
|
}
|
||
|
}
|
||
|
else if (state->mbe_file_type == 1)
|
||
|
{
|
||
|
readAmbe2450Data (opts, state, ambe_d);
|
||
|
mbe_processAmbe2450Dataf (state->audio_out_temp_buf, &state->errs, &state->errs2, state->err_str, ambe_d, state->cur_mp, state->prev_mp, state->prev_mp_enhanced, opts->uvquality);
|
||
|
processAudio (opts, state);
|
||
|
if (opts->wav_out_f != NULL)
|
||
|
{
|
||
|
writeSynthesizedVoice (opts, state);
|
||
|
}
|
||
|
if (opts->audio_out == 1)
|
||
|
{
|
||
|
playSynthesizedVoice (opts, state);
|
||
|
}
|
||
|
}
|
||
|
if (exitflag == 1)
|
||
|
{
|
||
|
cleanupAndExit (opts, state);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
#endif
|
||
|
}
|
||
|
|
||
|
void
|
||
|
processMbeFrame (dsd_opts * opts, dsd_state * state, char imbe_fr[8][23], char ambe_fr[4][24], char imbe7100_fr[7][24])
|
||
|
{
|
||
|
|
||
|
int i;
|
||
|
char imbe_d[88];
|
||
|
char ambe_d[49];
|
||
|
#ifdef AMBE_PACKET_OUT
|
||
|
char ambe_d_str[50];
|
||
|
#endif
|
||
|
|
||
|
for (i = 0; i < 88; i++)
|
||
|
{
|
||
|
imbe_d[i] = 0;
|
||
|
}
|
||
|
|
||
|
if ((state->synctype == 0) || (state->synctype == 1))
|
||
|
{
|
||
|
mbe_processImbe7200x4400Framef (state->audio_out_temp_buf, &state->errs, &state->errs2, state->err_str, imbe_fr, imbe_d, state->cur_mp, state->prev_mp, state->prev_mp_enhanced, opts->uvquality);
|
||
|
if (opts->mbe_out_f != NULL)
|
||
|
{
|
||
|
saveImbe4400Data (opts, state, imbe_d);
|
||
|
}
|
||
|
}
|
||
|
else if ((state->synctype == 14) || (state->synctype == 15))
|
||
|
{
|
||
|
mbe_processImbe7100x4400Framef (state->audio_out_temp_buf, &state->errs, &state->errs2, state->err_str, imbe7100_fr, imbe_d, state->cur_mp, state->prev_mp, state->prev_mp_enhanced, opts->uvquality);
|
||
|
if (opts->mbe_out_f != NULL)
|
||
|
{
|
||
|
saveImbe4400Data (opts, state, imbe_d);
|
||
|
}
|
||
|
}
|
||
|
else if ((state->synctype == 6) || (state->synctype == 7))
|
||
|
{
|
||
|
mbe_processAmbe3600x2400Framef (state->audio_out_temp_buf, &state->errs, &state->errs2, state->err_str, ambe_fr, ambe_d, state->cur_mp, state->prev_mp, state->prev_mp_enhanced, opts->uvquality);
|
||
|
if (opts->mbe_out_f != NULL)
|
||
|
{
|
||
|
saveAmbe2450Data (opts, state, ambe_d);
|
||
|
}
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
mbe_processAmbe3600x2450Framef (state->audio_out_temp_buf, &state->errs, &state->errs2, state->err_str, ambe_fr, ambe_d, state->cur_mp, state->prev_mp, state->prev_mp_enhanced, opts->uvquality);
|
||
|
#ifdef AMBE_PACKET_OUT
|
||
|
for(i=0; i<49; i++) {
|
||
|
ambe_d_str[i] = ambe_d[i] + '0';
|
||
|
}
|
||
|
ambe_d_str[49] = '\0';
|
||
|
// print binary string
|
||
|
fprintf(stderr, "\n?\t?\t%s\t", ambe_d_str);
|
||
|
// print error data
|
||
|
fprintf(stderr, "E1: %d; E2: %d; S: %s", state->errs, state->errs2, state->err_str);
|
||
|
#endif
|
||
|
if (opts->mbe_out_f != NULL)
|
||
|
{
|
||
|
saveAmbe2450Data (opts, state, ambe_d);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if (opts->errorbars == 1)
|
||
|
{
|
||
|
printf ("%s", state->err_str);
|
||
|
}
|
||
|
|
||
|
processAudio (opts, state);
|
||
|
#ifdef USE_LIBSNDFILE
|
||
|
if (opts->wav_out_f != NULL)
|
||
|
{
|
||
|
writeSynthesizedVoice (opts, state);
|
||
|
}
|
||
|
#endif
|
||
|
|
||
|
if (opts->audio_out == 1)
|
||
|
{
|
||
|
playSynthesizedVoice (opts, state);
|
||
|
}
|
||
|
}
|