#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <flixengine2/flixengine2.h>
#include "example_common.h"
int main(int argc, char** argv)
{
const char* rpchost = "localhost";
const int timeout_s = 0;
FLIX2HANDLE flix;
on2bool ier;
int32_t srcw, srch, srcduration;
on2sc sc;
printf("Flix Engine client library v%s\n",Flix2_Version());
printf("%s\n\n",Flix2_Copyright());
if (argc < 3) {
printf("usage: cli_encode <infile> <outfile>\n\n");
printf("NOTE cli_encode uses libflixengine2.so which is a client\n"
"NOTE side rpc library. All paths must be accessible to the\n"
"NOTE server side, i.e., flixd, thus relative paths will most\n"
"NOTE likely give undesired results. The same can be said\n"
"NOTE for clients running on different machines.\n");
return -1;
}
CHECKSC( Flix2_CreateEx(&flix, rpchost, timeout_s) )
printf("Input File : %s\n",argv[1]);
if(*argv[1] != '/') printf("WARNING: path to input file is not absolute\n");
CHECKSC( Flix2_SetInputFile(flix, argv[1]) )
CHECKSC( video_options_GetSourceWidth(flix,&srcw) )
CHECKSC( video_options_GetSourceHeight(flix,&srch) )
CHECKSC( Flix2_GetSourceDuration(flix,&srcduration) )
printf(" Width: %d\n"
" Height: %d\n"
" Duration: %dms\n",
srcw,srch,srcduration);
printf("Output File : %s\n",argv[2]);
if(*argv[2] != '/') printf("WARNING: path to output file is not absolute\n");
CHECKSC( Flix2_SetOutputFile(flix, argv[2]) )
CHECKSC( Flix2_Encode(flix) )
printf("\n");
do {
int32_t p;
sleep(1);
sc = Flix2_IsEncoderRunning(flix,&ier);
CHECKSC( encoding_status_PercentComplete(flix,&p) )
printf("\rEncoding...%d%% ",p); fflush(stdout);
} while(!sc && ier);
printf("Done!\n");
print_encoder_status(flix);
CHECKSC( Flix2_Destroy(flix) )
return 0;
}