cmdl-tool #45
1 changed files with 154 additions and 251 deletions
|
@ -1067,6 +1067,121 @@ parse_opt(int key,
|
|||
return EXIT_SUCCESS;
|
||||
}
|
||||
|
||||
void
|
||||
printheaderIO(char const *input, char const *output, char const *reference)
|
||||
{
|
||||
/*-----------------------*\
|
||||
! DEFINE CHAR VARIABLES: !
|
||||
\*-----------------------*/
|
||||
char cli_buffer[1024] = {0};
|
||||
char cli_verbose[4096] = {0};
|
||||
|
||||
strcat(cli_verbose, bwc_header_art);
|
||||
strcat(cli_verbose, "--------------------------- I/O --------------------------\n\n");
|
||||
|
||||
sprintf(cli_buffer," Input: %s \n", input);
|
||||
strcat(cli_verbose, cli_buffer);
|
||||
memset(cli_buffer, '0', sizeof(char) * 1024);
|
||||
|
||||
sprintf(cli_buffer," Output: %s \n", output);
|
||||
strcat(cli_verbose, cli_buffer);
|
||||
memset(cli_buffer, '0', sizeof(char) * 1024);
|
||||
|
||||
sprintf(cli_buffer," Reference: %s \n", reference);
|
||||
strcat(cli_verbose, cli_buffer);
|
||||
memset(cli_buffer, '0', sizeof(char) * 1024);
|
||||
printf("%s", cli_verbose);
|
||||
}
|
||||
|
||||
void
|
||||
printctrl(bwc_gl_ctrl *const control)
|
||||
{
|
||||
/*-----------------------*\
|
||||
! DEFINE INT VARIABLES: !
|
||||
\*-----------------------*/
|
||||
uint8_t i;
|
||||
|
||||
/*-----------------------*\
|
||||
! DEFINE CHAR VARIABLES: !
|
||||
\*-----------------------*/
|
||||
char cli_buffer[1024] = {0};
|
||||
char cli_verbose[4096] = {0};
|
||||
|
||||
strcat(cli_verbose, "\n");
|
||||
strcat(cli_verbose, "----------------- Compression Parameters -----------------\n");
|
||||
strcat(cli_verbose, "\n");
|
||||
|
||||
strcat(cli_verbose," Tile Size: \n");
|
||||
sprintf(cli_buffer," - Samples in 1.D: %27ld\n"\
|
||||
" - Samples in 2.D: %27ld\n"\
|
||||
" - Samples in 3.D: %27ld\n"\
|
||||
" - Samples in 4.D: %27ld\n", control->tileSizeX,
|
||||
control->tileSizeY,
|
||||
control->tileSizeZ,
|
||||
control->tileSizeTS);
|
||||
strcat(cli_verbose, cli_buffer);
|
||||
memset(cli_buffer, '0', sizeof(char) * 1024);
|
||||
|
||||
strcat(cli_verbose, " __________________________________________________________\n");
|
||||
strcat(cli_verbose, "\n");
|
||||
strcat(cli_verbose, " 1.D | 2.D | 3.D | 4.D\n");
|
||||
sprintf(cli_buffer, " Decomposition Levels: %18d |%4d |%4d |%4d\n",
|
||||
control->decompX,
|
||||
control->decompY,
|
||||
control->decompZ,
|
||||
control->decompTS);
|
||||
strcat(cli_verbose, cli_buffer);
|
||||
memset(cli_buffer, '0', sizeof(char) * 1024);
|
||||
|
||||
sprintf(cli_buffer, " Precincts [log2]: %18d |%4d |%4d |%4d\n",
|
||||
control->precSizeX,
|
||||
control->precSizeY,
|
||||
control->precSizeZ,
|
||||
control->precSizeTS);
|
||||
strcat(cli_verbose, cli_buffer);
|
||||
memset(cli_buffer, '0', sizeof(char) * 1024);
|
||||
|
||||
sprintf(cli_buffer, " Codeblocks [log2]: %18d |%4d |%4d |%4d\n",
|
||||
control->cbX,
|
||||
control->cbY,
|
||||
control->cbZ,
|
||||
control->cbTS);
|
||||
strcat(cli_verbose, cli_buffer);
|
||||
memset(cli_buffer, '0', sizeof(char) * 1024);
|
||||
|
||||
strcat(cli_verbose, " __________________________________________________________\n");
|
||||
strcat(cli_verbose, "\n");
|
||||
|
||||
sprintf(cli_buffer, " Q Number Format: %27d\n", control->Qm);
|
||||
strcat(cli_verbose, cli_buffer);
|
||||
memset(cli_buffer, '0', sizeof(char) * 1024);
|
||||
|
||||
if (control->error_resilience)
|
||||
{
|
||||
sprintf(cli_buffer, " Error Resilience: %27s\n", "true");
|
||||
}
|
||||
else
|
||||
{
|
||||
sprintf(cli_buffer, " Error Resilience: %27s\n", "false");
|
||||
}
|
||||
strcat(cli_verbose, cli_buffer);
|
||||
memset(cli_buffer, '0', sizeof(char) * 1024);
|
||||
|
||||
strcat(cli_verbose, " __________________________________________________________\n");
|
||||
strcat(cli_verbose, "\n");
|
||||
|
||||
for(i = 0; i < control->nLayers; ++i)
|
||||
{
|
||||
sprintf(cli_buffer, " Quality Layer Nr. %d: %33.2f bpd\n", i,
|
||||
control->bitrate[i]);
|
||||
strcat(cli_verbose, cli_buffer);
|
||||
}
|
||||
|
||||
memset(cli_buffer, '0', sizeof(char) * 1024);
|
||||
strcat(cli_verbose, "\n==============================================================\n");
|
||||
printf("%s", cli_verbose);
|
||||
}
|
||||
|
||||
static uchar
|
||||
output_analysis(eas3_data *const ref_data, eas3_data *const org_data)
|
||||
{
|
||||
|
@ -1209,8 +1324,6 @@ int main(int argc, char *argv[])
|
|||
! DEFINE CHAR VARIABLES: !
|
||||
\*-----------------------*/
|
||||
char rate[200] = {0};
|
||||
char cli_buffer[1024] = {0};
|
||||
char cli_verbose[4096] = {0};
|
||||
|
||||
char *cli_output = NULL;
|
||||
char *buffer = NULL;
|
||||
|
@ -1255,30 +1368,9 @@ int main(int argc, char *argv[])
|
|||
/* Compress the user supplied data set. */
|
||||
if (arguments.mode == cli_cmp)
|
||||
{
|
||||
|
||||
/* Ingest the bwccmdl input and set the appropriate cli_ *
|
||||
* verbose message if the option is set. */
|
||||
// TODO: Define a universal data structure and implement a reader
|
||||
// that ingests different file formats
|
||||
if ((data = read_eas3(arguments.in)) == NULL)
|
||||
{
|
||||
error_handle = EXIT_FAILURE;
|
||||
goto OUT;
|
||||
}
|
||||
if (arguments.verbose == true)
|
||||
{
|
||||
strcat(cli_verbose, bwc_header_art);
|
||||
strcat(cli_verbose, "--------------------------- I/O --------------------------\n\n");
|
||||
|
||||
sprintf(cli_buffer," Input: %s \n", arguments.in);
|
||||
strcat(cli_verbose, cli_buffer);
|
||||
memset(cli_buffer, '0', sizeof(char) * 1024);
|
||||
}
|
||||
|
||||
/* Evaluate the appropriate output file. */
|
||||
if ((arguments.optSet & FLOUT) == 0)
|
||||
arguments.out = arguments.in;
|
||||
|
||||
if ((buffer = strrchr(arguments.out, '.')) == NULL)
|
||||
{
|
||||
error_handle = EXIT_FAILURE;
|
||||
|
@ -1296,9 +1388,15 @@ int main(int argc, char *argv[])
|
|||
|
||||
if (arguments.verbose == true)
|
||||
{
|
||||
sprintf(cli_buffer," Output: %s \n", cli_output);
|
||||
strcat(cli_verbose, cli_buffer);
|
||||
memset(cli_buffer, '0', sizeof(char) * 1024);
|
||||
printheaderIO(arguments.in, cli_output, arguments.ref);
|
||||
}
|
||||
|
||||
// TODO: Define a universal data structure and implement a reader
|
||||
// that ingests different file formats
|
||||
if ((data = read_eas3(arguments.in)) == NULL)
|
||||
{
|
||||
error_handle = EXIT_FAILURE;
|
||||
goto OUT;
|
||||
}
|
||||
|
||||
/* Evaluate the input and output buffer size and initial- *
|
||||
|
@ -1329,15 +1427,6 @@ int main(int argc, char *argv[])
|
|||
precision);
|
||||
bwc_set_aux(stream, (char*)data->aux.ptr, data->aux.len);
|
||||
|
||||
/* Apply the user supplied compression options using the *
|
||||
* appropriate setter functions. */
|
||||
if (arguments.verbose == true)
|
||||
{
|
||||
strcat(cli_verbose, "\n");
|
||||
strcat(cli_verbose, "----------------- Compression Parameters -----------------\n");
|
||||
strcat(cli_verbose, "\n");
|
||||
}
|
||||
|
||||
if ((arguments.optSet & TILES) != 0)
|
||||
{
|
||||
bwc_set_tiles(coder, arguments.tileSize[0],
|
||||
|
@ -1345,20 +1434,6 @@ int main(int argc, char *argv[])
|
|||
arguments.tileSize[2],
|
||||
arguments.tileSize[3], bwc_tile_sizeof);
|
||||
|
||||
if (arguments.verbose == true)
|
||||
{
|
||||
strcat(cli_verbose," Tile Size: \n");
|
||||
sprintf(cli_buffer," - Samples in 1.D: %27ld\n"\
|
||||
" - Samples in 2.D: %27ld\n"\
|
||||
" - Samples in 3.D: %27ld\n"\
|
||||
" - Samples in 4.D: %27ld\n", arguments.tileSize[0],
|
||||
arguments.tileSize[1],
|
||||
arguments.tileSize[2],
|
||||
arguments.tileSize[3]);
|
||||
strcat(cli_verbose, cli_buffer);
|
||||
memset(cli_buffer, '0', sizeof(char) * 1024);
|
||||
delim = true;
|
||||
}
|
||||
}
|
||||
|
||||
// TODO: Implement the kernel setter as a global function
|
||||
|
@ -1371,35 +1446,12 @@ int main(int argc, char *argv[])
|
|||
arguments.dwtKernel[3]);
|
||||
}*/
|
||||
|
||||
if ((arguments.verbose == true) &&
|
||||
((arguments.optSet & (DCLVL | PRECS | CBLKS)) != 0))
|
||||
{
|
||||
if (delim == true)
|
||||
{
|
||||
strcat(cli_verbose, " __________________________________________________________\n");
|
||||
strcat(cli_verbose, "\n");
|
||||
}
|
||||
strcat(cli_verbose, " 1.D | 2.D | 3.D | 4.D\n");
|
||||
delim = true;
|
||||
}
|
||||
|
||||
if ((arguments.optSet & DCLVL) != 0)
|
||||
{
|
||||
bwc_set_decomp(coder, arguments.decompLevel[0],
|
||||
arguments.decompLevel[1],
|
||||
arguments.decompLevel[2],
|
||||
arguments.decompLevel[3]);
|
||||
|
||||
if (arguments.verbose == true)
|
||||
{
|
||||
sprintf(cli_buffer, " Decomposition Levels: %18d |%4d |%4d |%4d\n",
|
||||
arguments.decompLevel[0],
|
||||
arguments.decompLevel[1],
|
||||
arguments.decompLevel[2],
|
||||
arguments.decompLevel[3]);
|
||||
strcat(cli_verbose, cli_buffer);
|
||||
memset(cli_buffer, '0', sizeof(char) * 1024);
|
||||
}
|
||||
}
|
||||
|
||||
if ((arguments.optSet & PRECS) != 0)
|
||||
|
@ -1408,17 +1460,6 @@ int main(int argc, char *argv[])
|
|||
arguments.precSize[1],
|
||||
arguments.precSize[2],
|
||||
arguments.precSize[3]);
|
||||
|
||||
if (arguments.verbose == true)
|
||||
{
|
||||
sprintf(cli_buffer, " Precincts [log2]: %18d |%4d |%4d |%4d\n",
|
||||
arguments.precSize[0],
|
||||
arguments.precSize[1],
|
||||
arguments.precSize[2],
|
||||
arguments.precSize[3]);
|
||||
strcat(cli_verbose, cli_buffer);
|
||||
memset(cli_buffer, '0', sizeof(char) * 1024);
|
||||
}
|
||||
}
|
||||
|
||||
if ((arguments.optSet & CBLKS) != 0)
|
||||
|
@ -1427,64 +1468,21 @@ int main(int argc, char *argv[])
|
|||
arguments.cblkSize[1],
|
||||
arguments.cblkSize[2],
|
||||
arguments.cblkSize[3]);
|
||||
|
||||
if (arguments.verbose == true)
|
||||
{
|
||||
sprintf(cli_buffer, " Codeblocks [log2]: %18d |%4d |%4d |%4d\n",
|
||||
arguments.cblkSize[0],
|
||||
arguments.cblkSize[1],
|
||||
arguments.cblkSize[2],
|
||||
arguments.cblkSize[3]);
|
||||
strcat(cli_verbose, cli_buffer);
|
||||
memset(cli_buffer, '0', sizeof(char) * 1024);
|
||||
}
|
||||
}
|
||||
|
||||
if ((arguments.verbose == true) &&
|
||||
(delim == true) &&
|
||||
(((arguments.optSet & QFRMT) != 0) || arguments.erresilience == true))
|
||||
{
|
||||
|
||||
strcat(cli_verbose, " __________________________________________________________\n");
|
||||
strcat(cli_verbose, "\n");
|
||||
}
|
||||
|
||||
if ((arguments.optSet & QFRMT) != 0)
|
||||
{
|
||||
bwc_set_qm(coder, arguments.Qm);
|
||||
|
||||
if (arguments.verbose == true)
|
||||
{
|
||||
sprintf(cli_buffer, " Q Number Format: %27d\n", arguments.Qm);
|
||||
strcat(cli_verbose, cli_buffer);
|
||||
memset(cli_buffer, '0', sizeof(char) * 1024);
|
||||
delim = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (arguments.erresilience == true)
|
||||
{
|
||||
bwc_set_error_resilience(coder);
|
||||
|
||||
if (arguments.verbose == true)
|
||||
{
|
||||
sprintf(cli_buffer, " Error Resilience: %27s\n", "true");
|
||||
strcat(cli_verbose, cli_buffer);
|
||||
memset(cli_buffer, '0', sizeof(char) * 1024);
|
||||
delim = true;
|
||||
}
|
||||
}
|
||||
|
||||
/* Initialize the rate control string according to the *
|
||||
* specified bit rate/compression ratio. */
|
||||
if ((arguments.verbose == true) &&
|
||||
(delim == true))
|
||||
{
|
||||
|
||||
strcat(cli_verbose, " __________________________________________________________\n");
|
||||
strcat(cli_verbose, "\n");
|
||||
}
|
||||
|
||||
if ((arguments.optSet & BITRT) != 0)
|
||||
{
|
||||
rtype = 1.0;
|
||||
|
@ -1507,32 +1505,21 @@ int main(int argc, char *argv[])
|
|||
if (arguments.rate[i] > 0)
|
||||
{
|
||||
sprintf(rate + strlen(rate), "%05.3f,", pow(arguments.rate[i]/rtype, exp));
|
||||
|
||||
if (arguments.verbose == true)
|
||||
{
|
||||
sprintf(cli_buffer, " Quality Layer Nr. %d: %33.2f bpd\n", i,
|
||||
pow(arguments.rate[i]/rtype, exp));
|
||||
strcat(cli_verbose, cli_buffer);
|
||||
}
|
||||
}
|
||||
}
|
||||
rate[strlen(rate) - 1] = '0';
|
||||
|
||||
if (arguments.verbose == true)
|
||||
{
|
||||
memset(cli_buffer, '0', sizeof(char) * 1024);
|
||||
strcat(cli_verbose, "\n==============================================================\n");
|
||||
printf("%s", cli_verbose);
|
||||
}
|
||||
|
||||
/* Initialize the rate control string according to the *
|
||||
* specified bit rate/compression ratio. */
|
||||
if (bwc_create_compression(coder, stream, rate) == EXIT_FAILURE)
|
||||
{
|
||||
error_handle = EXIT_FAILURE;
|
||||
goto OUT;
|
||||
}
|
||||
|
||||
if(arguments.verbose == true)
|
||||
{
|
||||
printctrl(&coder->control);
|
||||
}
|
||||
|
||||
size = bwc_compress(coder, stream);
|
||||
|
||||
/* Write the codestream to the speicifed file. */
|
||||
|
@ -1553,32 +1540,9 @@ int main(int argc, char *argv[])
|
|||
}
|
||||
else if (arguments.mode == cli_dcp)
|
||||
{
|
||||
if ((fp = fopen(arguments.in, "r")) == NULL)
|
||||
{
|
||||
error_handle = EXIT_FAILURE;
|
||||
printf(FINERROR);
|
||||
goto OUT;
|
||||
}
|
||||
|
||||
root = ftell(fp);
|
||||
fseek(fp, 0L, SEEK_END);
|
||||
Lfield = ftell(fp) - root;
|
||||
fseek(fp, root, SEEK_SET);
|
||||
|
||||
if (arguments.verbose == true)
|
||||
{
|
||||
strcat(cli_verbose, bwc_header_art);
|
||||
strcat(cli_verbose, "--------------------------- I/O --------------------------\n\n");
|
||||
|
||||
sprintf(cli_buffer," Input: %s \n", arguments.in);
|
||||
strcat(cli_verbose, cli_buffer);
|
||||
memset(cli_buffer, '0', sizeof(char) * 1024);
|
||||
}
|
||||
|
||||
/* Evaluate the appropriate output file. */
|
||||
if ((arguments.optSet & FLOUT) == 0)
|
||||
arguments.out = arguments.in;
|
||||
|
||||
if ((buffer = strrchr(arguments.out, '.')) == NULL)
|
||||
{
|
||||
error_handle = EXIT_FAILURE;
|
||||
|
@ -1596,18 +1560,21 @@ int main(int argc, char *argv[])
|
|||
|
||||
if (arguments.verbose == true)
|
||||
{
|
||||
sprintf(cli_buffer," Output: %s \n", cli_output);
|
||||
strcat(cli_verbose, cli_buffer);
|
||||
memset(cli_buffer, '0', sizeof(char) * 1024);
|
||||
printheaderIO(arguments.in, cli_output, arguments.ref);
|
||||
}
|
||||
|
||||
if (arguments.verbose == true)
|
||||
if ((fp = fopen(arguments.in, "r")) == NULL)
|
||||
{
|
||||
memset(cli_buffer, '0', sizeof(char) * 1024);
|
||||
strcat(cli_verbose, "\n==============================================================\n");
|
||||
printf("%s", cli_verbose);
|
||||
error_handle = EXIT_FAILURE;
|
||||
printf(FINERROR);
|
||||
goto OUT;
|
||||
}
|
||||
|
||||
root = ftell(fp);
|
||||
fseek(fp, 0L, SEEK_END);
|
||||
Lfield = ftell(fp) - root;
|
||||
fseek(fp, root, SEEK_SET);
|
||||
|
||||
/* Read the compressed data from the input file. */
|
||||
input = calloc(Lfield, sizeof(uchar));
|
||||
if (fread(input, sizeof(uchar), Lfield, fp) != Lfield)
|
||||
|
@ -1631,6 +1598,8 @@ int main(int argc, char *argv[])
|
|||
}
|
||||
bwc_close_header(header);
|
||||
|
||||
printctrl(&header->control);
|
||||
|
||||
/* Initialize and run the decompression. */
|
||||
stream = bwc_init_stream(input, output, comp);
|
||||
coder = bwc_alloc_decoder();
|
||||
|
@ -1651,6 +1620,11 @@ int main(int argc, char *argv[])
|
|||
}
|
||||
else if (arguments.mode == cli_anl)
|
||||
{
|
||||
if (arguments.verbose == true)
|
||||
{
|
||||
printheaderIO(arguments.in, cli_output, arguments.ref);
|
||||
}
|
||||
|
||||
/* Ingest the reference data input. */
|
||||
if ((ref_data = read_eas3(arguments.ref)) == NULL)
|
||||
{
|
||||
|
@ -1694,6 +1668,11 @@ int main(int argc, char *argv[])
|
|||
}
|
||||
bwc_close_header(header);
|
||||
|
||||
if(arguments.verbose == true)
|
||||
{
|
||||
printctrl(&header->control);
|
||||
}
|
||||
|
||||
/* Initialize and run the decompression. */
|
||||
stream = bwc_init_stream(input, output, comp);
|
||||
coder = bwc_alloc_decoder();
|
||||
|
@ -1715,11 +1694,7 @@ int main(int argc, char *argv[])
|
|||
}
|
||||
else if (arguments.mode == cli_inf)
|
||||
{
|
||||
strcat(cli_verbose, bwc_header_art);
|
||||
strcat(cli_verbose, "--------------------------- I/O --------------------------\n\n");
|
||||
sprintf(cli_buffer," Input: %s \n", arguments.in);
|
||||
strcat(cli_verbose, cli_buffer);
|
||||
memset(cli_buffer, '0', sizeof(char) * 1024);
|
||||
printheaderIO(arguments.in, cli_output, arguments.ref);
|
||||
|
||||
if ((fp = fopen(arguments.in, "r")) == NULL)
|
||||
{
|
||||
|
@ -1742,7 +1717,7 @@ int main(int argc, char *argv[])
|
|||
goto OUT;
|
||||
}
|
||||
|
||||
/* Retrieve header information and allocate output buffer. */
|
||||
/* Retrieve header information. */
|
||||
header = bwc_open_header(input);
|
||||
size = header->info.nX * header->info.nY * header->info.nZ *
|
||||
header->info.nTS * header->info.nPar;
|
||||
|
@ -1756,79 +1731,7 @@ int main(int argc, char *argv[])
|
|||
}
|
||||
bwc_close_header(header);
|
||||
|
||||
strcat(cli_verbose, "\n");
|
||||
strcat(cli_verbose, "----------------- Compression Parameters -----------------\n");
|
||||
strcat(cli_verbose, "\n");
|
||||
|
||||
strcat(cli_verbose," Tile Size: \n");
|
||||
sprintf(cli_buffer," - Samples in 1.D: %27ld\n"\
|
||||
" - Samples in 2.D: %27ld\n"\
|
||||
" - Samples in 3.D: %27ld\n"\
|
||||
" - Samples in 4.D: %27ld\n", header->control.tileSizeX,
|
||||
header->control.tileSizeY,
|
||||
header->control.tileSizeZ,
|
||||
header->control.tileSizeTS);
|
||||
strcat(cli_verbose, cli_buffer);
|
||||
memset(cli_buffer, '0', sizeof(char) * 1024);
|
||||
|
||||
strcat(cli_verbose, " __________________________________________________________\n");
|
||||
strcat(cli_verbose, "\n");
|
||||
strcat(cli_verbose, " 1.D | 2.D | 3.D | 4.D\n");
|
||||
sprintf(cli_buffer, " Decomposition Levels: %18d |%4d |%4d |%4d\n",
|
||||
header->control.decompX,
|
||||
header->control.decompY,
|
||||
header->control.decompZ,
|
||||
header->control.decompTS);
|
||||
strcat(cli_verbose, cli_buffer);
|
||||
memset(cli_buffer, '0', sizeof(char) * 1024);
|
||||
|
||||
sprintf(cli_buffer, " Precincts [log2]: %18d |%4d |%4d |%4d\n",
|
||||
header->control.precSizeX,
|
||||
header->control.precSizeY,
|
||||
header->control.precSizeZ,
|
||||
header->control.precSizeTS);
|
||||
strcat(cli_verbose, cli_buffer);
|
||||
memset(cli_buffer, '0', sizeof(char) * 1024);
|
||||
|
||||
sprintf(cli_buffer, " Codeblocks [log2]: %18d |%4d |%4d |%4d\n",
|
||||
header->control.cbX,
|
||||
header->control.cbY,
|
||||
header->control.cbZ,
|
||||
header->control.cbTS);
|
||||
strcat(cli_verbose, cli_buffer);
|
||||
memset(cli_buffer, '0', sizeof(char) * 1024);
|
||||
|
||||
strcat(cli_verbose, " __________________________________________________________\n");
|
||||
strcat(cli_verbose, "\n");
|
||||
|
||||
sprintf(cli_buffer, " Q Number Format: %27d\n", header->control.Qm);
|
||||
strcat(cli_verbose, cli_buffer);
|
||||
memset(cli_buffer, '0', sizeof(char) * 1024);
|
||||
|
||||
if (header->control.error_resilience)
|
||||
{
|
||||
sprintf(cli_buffer, " Error Resilience: %27s\n", "true");
|
||||
}
|
||||
else
|
||||
{
|
||||
sprintf(cli_buffer, " Error Resilience: %27s\n", "false");
|
||||
}
|
||||
strcat(cli_verbose, cli_buffer);
|
||||
memset(cli_buffer, '0', sizeof(char) * 1024);
|
||||
|
||||
strcat(cli_verbose, " __________________________________________________________\n");
|
||||
strcat(cli_verbose, "\n");
|
||||
|
||||
for(i = 0; i < header->control.nLayers; ++i)
|
||||
{
|
||||
sprintf(cli_buffer, " Quality Layer Nr. %d: %33.2f bpd\n", i,
|
||||
header->control.bitrate[i]);
|
||||
strcat(cli_verbose, cli_buffer);
|
||||
}
|
||||
|
||||
memset(cli_buffer, '0', sizeof(char) * 1024);
|
||||
strcat(cli_verbose, "\n==============================================================\n");
|
||||
printf("%s", cli_verbose);
|
||||
printctrl(&header->control);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
Loading…
Reference in a new issue