demux_mf: uncrustify

This commit is contained in:
wm4 2013-11-11 18:48:31 +01:00
parent d8882bbfb7
commit 59cc8fff19
3 changed files with 210 additions and 212 deletions

View File

@ -34,7 +34,7 @@
#include "stheader.h"
#include "mf.h"
#define MF_MAX_FILE_SIZE (1024*1024*256)
#define MF_MAX_FILE_SIZE (1024 * 1024 * 256)
static void free_mf(mf_t *mf)
{
@ -49,14 +49,18 @@ static void free_mf(mf_t *mf)
static void demux_seek_mf(demuxer_t *demuxer, float rel_seek_secs, int flags)
{
mf_t * mf = (mf_t *)demuxer->priv;
int newpos = (flags & SEEK_ABSOLUTE)?0:mf->curr_frame - 1;
mf_t *mf = demuxer->priv;
int newpos = (flags & SEEK_ABSOLUTE) ? 0 : mf->curr_frame - 1;
if ( flags & SEEK_FACTOR ) newpos+=rel_seek_secs*(mf->nr_of_files - 1);
else newpos+=rel_seek_secs * mf->sh->fps;
if ( newpos < 0 ) newpos=0;
if( newpos >= mf->nr_of_files) newpos=mf->nr_of_files - 1;
mf->curr_frame=newpos;
if (flags & SEEK_FACTOR)
newpos += rel_seek_secs * (mf->nr_of_files - 1);
else
newpos += rel_seek_secs * mf->sh->fps;
if (newpos < 0)
newpos = 0;
if (newpos >= mf->nr_of_files)
newpos = mf->nr_of_files - 1;
mf->curr_frame = newpos;
}
// return value:
@ -101,52 +105,52 @@ static int demux_mf_fill_buffer(demuxer_t *demuxer)
// map file extension/type to a codec name
static const struct {
const char *type;
const char *codec;
const char *type;
const char *codec;
} type2format[] = {
{ "bmp", "bmp" },
{ "dpx", "dpx" },
{ "j2c", "jpeg2000" },
{ "j2k", "jpeg2000" },
{ "jp2", "jpeg2000" },
{ "jpc", "jpeg2000" },
{ "jpeg", "mjpeg" },
{ "jpg", "mjpeg" },
{ "jps", "mjpeg" },
{ "jls", "ljpeg" },
{ "thm", "mjpeg" },
{ "db", "mjpeg" },
{ "pcx", "pcx" },
{ "png", "png" },
{ "pns", "png" },
{ "ptx", "ptx" },
{ "tga", "targa" },
{ "tif", "tiff" },
{ "tiff", "tiff" },
{ "sgi", "sgi" },
{ "sun", "sunrast" },
{ "ras", "sunrast" },
{ "rs", "sunrast" },
{ "ra", "sunrast" },
{ "im1", "sunrast" },
{ "im8", "sunrast" },
{ "im24", "sunrast" },
{ "im32", "sunrast" },
{ "sunras", "sunrast" },
{ "xbm", "xbm" },
{ "pam", "pam" },
{ "pbm", "pbm" },
{ "pgm", "pgm" },
{ "pgmyuv", "pgmyuv" },
{ "ppm", "ppm" },
{ "pnm", "ppm" },
{ "gif", "gif" }, // usually handled by demux_lavf
{ "pix", "brender_pix" },
{ "exr", "exr" },
{ "pic", "pictor" },
{ "xface", "xface" },
{ "xwd", "xwd" },
{0}
{ "bmp", "bmp" },
{ "dpx", "dpx" },
{ "j2c", "jpeg2000" },
{ "j2k", "jpeg2000" },
{ "jp2", "jpeg2000" },
{ "jpc", "jpeg2000" },
{ "jpeg", "mjpeg" },
{ "jpg", "mjpeg" },
{ "jps", "mjpeg" },
{ "jls", "ljpeg" },
{ "thm", "mjpeg" },
{ "db", "mjpeg" },
{ "pcx", "pcx" },
{ "png", "png" },
{ "pns", "png" },
{ "ptx", "ptx" },
{ "tga", "targa" },
{ "tif", "tiff" },
{ "tiff", "tiff" },
{ "sgi", "sgi" },
{ "sun", "sunrast" },
{ "ras", "sunrast" },
{ "rs", "sunrast" },
{ "ra", "sunrast" },
{ "im1", "sunrast" },
{ "im8", "sunrast" },
{ "im24", "sunrast" },
{ "im32", "sunrast" },
{ "sunras", "sunrast" },
{ "xbm", "xbm" },
{ "pam", "pam" },
{ "pbm", "pbm" },
{ "pgm", "pgm" },
{ "pgmyuv", "pgmyuv" },
{ "ppm", "ppm" },
{ "pnm", "ppm" },
{ "gif", "gif" }, // usually handled by demux_lavf
{ "pix", "brender_pix" },
{ "exr", "exr" },
{ "pic", "pictor" },
{ "xface", "xface" },
{ "xwd", "xwd" },
{0}
};
static const char *probe_format(mf_t *mf, enum demux_check check)
@ -167,7 +171,7 @@ static const char *probe_format(mf_t *mf, enum demux_check check)
if (!mf_type) {
mp_msg(MSGT_DEMUX, MSGL_ERR,
"[demux_mf] file type was not set! (try --mf-type=ext)\n");
} else {
} else {
mp_msg(MSGT_DEMUX, MSGL_ERR,
"[demux_mf] --mf-type set to an unknown codec!\n");
}
@ -175,67 +179,68 @@ static const char *probe_format(mf_t *mf, enum demux_check check)
return NULL;
}
static int demux_open_mf(demuxer_t* demuxer, enum demux_check check)
static int demux_open_mf(demuxer_t *demuxer, enum demux_check check)
{
sh_video_t *sh_video = NULL;
mf_t *mf;
sh_video_t *sh_video = NULL;
mf_t *mf;
if (strncmp(demuxer->stream->url, "mf://", 5) == 0 &&
demuxer->stream->type == STREAMTYPE_MF)
{
mf = open_mf_pattern(demuxer->stream->url + 5);
} else {
mf = open_mf_single(demuxer->stream->url);
mf->streams = calloc(1, sizeof(struct stream *));
mf->streams[0] = demuxer->stream;
}
if (strncmp(demuxer->stream->url, "mf://", 5) == 0 &&
demuxer->stream->type == STREAMTYPE_MF)
mf = open_mf_pattern(demuxer->stream->url + 5);
else {
mf = open_mf_single(demuxer->stream->url);
mf->streams = calloc(1, sizeof(struct stream *));
mf->streams[0] = demuxer->stream;
}
if (!mf || mf->nr_of_files < 1)
goto error;
if (!mf || mf->nr_of_files < 1)
goto error;
const char *codec = probe_format(mf, check);
if (!codec)
goto error;
const char *codec = probe_format(mf, check);
if (!codec)
goto error;
mf->curr_frame = 0;
mf->curr_frame = 0;
// create a new video stream header
struct sh_stream *sh = new_sh_stream(demuxer, STREAM_VIDEO);
sh_video = sh->video;
// create a new video stream header
struct sh_stream *sh = new_sh_stream(demuxer, STREAM_VIDEO);
sh_video = sh->video;
sh_video->gsh->codec = codec;
sh_video->disp_w = 0;
sh_video->disp_h = 0;
sh_video->fps = mf_fps;
sh_video->gsh->codec = codec;
sh_video->disp_w = 0;
sh_video->disp_h = 0;
sh_video->fps = mf_fps;
mf->sh = sh_video;
demuxer->priv=(void*)mf;
demuxer->seekable = true;
mf->sh = sh_video;
demuxer->priv = (void *)mf;
demuxer->seekable = true;
return 0;
return 0;
error:
free_mf(mf);
return -1;
free_mf(mf);
return -1;
}
static void demux_close_mf(demuxer_t* demuxer) {
mf_t *mf = demuxer->priv;
static void demux_close_mf(demuxer_t *demuxer)
{
mf_t *mf = demuxer->priv;
free_mf(mf);
free_mf(mf);
}
static int demux_control_mf(demuxer_t *demuxer, int cmd, void *arg) {
mf_t *mf = (mf_t *)demuxer->priv;
static int demux_control_mf(demuxer_t *demuxer, int cmd, void *arg)
{
mf_t *mf = demuxer->priv;
switch(cmd) {
switch (cmd) {
case DEMUXER_CTRL_GET_TIME_LENGTH:
*((double *)arg) = (double)mf->nr_of_files / mf->sh->fps;
return DEMUXER_CTRL_OK;
*((double *)arg) = (double)mf->nr_of_files / mf->sh->fps;
return DEMUXER_CTRL_OK;
default:
return DEMUXER_CTRL_NOTIMPL;
}
return DEMUXER_CTRL_NOTIMPL;
}
}
const demuxer_desc_t demuxer_desc_mf = {

View File

@ -43,138 +43,132 @@
#include "mf.h"
double mf_fps = 25.0;
char * mf_type = NULL; //"jpg";
char *mf_type = NULL; //"jpg";
mf_t* open_mf_pattern(char * filename)
mf_t *open_mf_pattern(char *filename)
{
#if defined(HAVE_GLOB) || defined(__MINGW32__)
glob_t gg;
int i;
char * fname = NULL;
mf_t * mf;
int error_count = 0;
int count = 0;
glob_t gg;
char *fname = NULL;
mf_t *mf;
int error_count = 0;
int count = 0;
mf=calloc( 1,sizeof( mf_t ) );
mf = calloc(1, sizeof(mf_t));
if( filename[0] == '@' )
{
FILE *lst_f=fopen(filename + 1,"r");
if ( lst_f )
{
fname=malloc(MP_PATH_MAX);
while ( fgets( fname,MP_PATH_MAX,lst_f ) )
{
/* remove spaces from end of fname */
char *t=fname + strlen( fname ) - 1;
while ( t > fname && isspace( *t ) ) *(t--)=0;
if ( !mp_path_exists( fname ) )
{
mp_msg( MSGT_STREAM,MSGL_V,"[mf] file not found: '%s'\n",fname );
if (filename[0] == '@') {
FILE *lst_f = fopen(filename + 1, "r");
if (lst_f) {
fname = malloc(MP_PATH_MAX);
while (fgets(fname, MP_PATH_MAX, lst_f)) {
/* remove spaces from end of fname */
char *t = fname + strlen(fname) - 1;
while (t > fname && isspace(*t))
*(t--) = 0;
if (!mp_path_exists(fname)) {
mp_msg(MSGT_STREAM, MSGL_V, "[mf] file not found: '%s'\n",
fname);
} else {
mf->names = realloc(mf->names,
(mf->nr_of_files + 1) * sizeof(char *));
mf->names[mf->nr_of_files] = strdup(fname);
mf->nr_of_files++;
}
}
fclose(lst_f);
mp_msg(MSGT_STREAM, MSGL_INFO, "[mf] number of files: %d\n",
mf->nr_of_files);
goto exit_mf;
}
else
{
mf->names=realloc( mf->names,( mf->nr_of_files + 1 ) * sizeof( char* ) );
mf->names[mf->nr_of_files]=strdup( fname );
mf->nr_of_files++;
mp_msg(MSGT_STREAM, MSGL_INFO, "[mf] %s is not indirect filelist\n",
filename + 1);
}
if (strchr(filename, ',')) {
mp_msg(MSGT_STREAM, MSGL_INFO, "[mf] filelist: %s\n", filename);
bstr bfilename = bstr0(filename);
while (bfilename.len) {
bstr bfname;
bstr_split_tok(bfilename, ",", &bfname, &bfilename);
char *fname2 = bstrdup0(NULL, bfname);
if (!mp_path_exists(fname2))
mp_msg(MSGT_STREAM, MSGL_V, "[mf] file not found: '%s'\n",
fname2);
else {
mf->names =
realloc(mf->names, (mf->nr_of_files + 1) * sizeof(char *));
mf->names[mf->nr_of_files] = strdup(fname2);
mf->nr_of_files++;
}
talloc_free(fname2);
}
}
fclose( lst_f );
mp_msg(MSGT_STREAM, MSGL_INFO, "[mf] number of files: %d\n",
mf->nr_of_files);
mp_msg( MSGT_STREAM,MSGL_INFO,"[mf] number of files: %d\n",mf->nr_of_files );
goto exit_mf;
goto exit_mf;
}
mp_msg( MSGT_STREAM,MSGL_INFO,"[mf] %s is not indirect filelist\n",filename+1 );
}
if( strchr( filename,',') )
{
mp_msg( MSGT_STREAM,MSGL_INFO,"[mf] filelist: %s\n",filename );
bstr bfilename = bstr0(filename);
fname = malloc(strlen(filename) + 32);
while (bfilename.len)
{
bstr bfname;
bstr_split_tok(bfilename, ",", &bfname, &bfilename);
char *fname2 = bstrdup0(NULL, bfname);
if (!strchr(filename, '%')) {
strcpy(fname, filename);
if (!strchr(filename, '*'))
strcat(fname, "*");
if ( !mp_path_exists( fname2 ) )
{
mp_msg( MSGT_STREAM,MSGL_V,"[mf] file not found: '%s'\n",fname2 );
}
else
{
mf->names=realloc( mf->names,( mf->nr_of_files + 1 ) * sizeof( char* ) );
mf->names[mf->nr_of_files] = strdup(fname2);
// mp_msg( MSGT_STREAM,MSGL_V,"[mf] added file %d.: %s\n",mf->nr_of_files,mf->names[mf->nr_of_files] );
mf->nr_of_files++;
}
talloc_free(fname2);
mp_msg(MSGT_STREAM, MSGL_INFO, "[mf] search expr: %s\n", fname);
if (glob(fname, 0, NULL, &gg)) {
free(mf);
free(fname);
return NULL;
}
mf->nr_of_files = 0;
mf->names = calloc(gg.gl_pathc, sizeof(char *));
for (int i = 0; i < gg.gl_pathc; i++) {
if (mp_path_isdir(gg.gl_pathv[i]))
continue;
mf->names[mf->nr_of_files] = strdup(gg.gl_pathv[i]);
mf->nr_of_files++;
}
mp_msg(MSGT_STREAM, MSGL_INFO, "[mf] number of files: %d\n",
mf->nr_of_files);
globfree(&gg);
goto exit_mf;
}
mp_msg( MSGT_STREAM,MSGL_INFO,"[mf] number of files: %d\n",mf->nr_of_files );
goto exit_mf;
}
mp_msg(MSGT_STREAM, MSGL_INFO, "[mf] search expr: %s\n", filename);
fname=malloc( strlen( filename ) + 32 );
if ( !strchr( filename,'%' ) )
{
strcpy( fname,filename );
if ( !strchr( filename,'*' ) ) strcat( fname,"*" );
mp_msg( MSGT_STREAM,MSGL_INFO,"[mf] search expr: %s\n",fname );
if ( glob( fname,0,NULL,&gg ) )
{ free( mf ); free( fname ); return NULL; }
mf->nr_of_files=0;
mf->names=calloc( gg.gl_pathc, sizeof( char* ) );
for( i=0;i < gg.gl_pathc;i++ )
{
if (mp_path_isdir(gg.gl_pathv[i]))
continue;
mf->names[mf->nr_of_files]=strdup( gg.gl_pathv[i] );
mf->nr_of_files++;
// mp_msg( MSGT_STREAM,MSGL_DBG2,"[mf] added file %d.: %s\n",i,mf->names[i] );
while (error_count < 5) {
sprintf(fname, filename, count++);
if (!mp_path_exists(fname)) {
error_count++;
mp_msg(MSGT_STREAM, MSGL_V, "[mf] file not found: '%s'\n", fname);
} else {
mf->names =
realloc(mf->names, (mf->nr_of_files + 1) * sizeof(char *));
mf->names[mf->nr_of_files] = strdup(fname);
mf->nr_of_files++;
}
}
mp_msg( MSGT_STREAM,MSGL_INFO,"[mf] number of files: %d\n",mf->nr_of_files);
globfree( &gg );
goto exit_mf;
}
mp_msg( MSGT_STREAM,MSGL_INFO,"[mf] search expr: %s\n",filename );
while ( error_count < 5 )
{
sprintf( fname,filename,count++ );
if ( !mp_path_exists( fname ) )
{
error_count++;
mp_msg( MSGT_STREAM,MSGL_V,"[mf] file not found: '%s'\n",fname );
}
else
{
mf->names=realloc( mf->names,( mf->nr_of_files + 1 ) * sizeof( char* ) );
mf->names[mf->nr_of_files]=strdup( fname );
// mp_msg( MSGT_STREAM,MSGL_V,"[mf] added file %d.: %s\n",mf->nr_of_files,mf->names[mf->nr_of_files] );
mf->nr_of_files++;
}
}
mp_msg( MSGT_STREAM,MSGL_INFO,"[mf] number of files: %d\n",mf->nr_of_files );
mp_msg(MSGT_STREAM, MSGL_INFO, "[mf] number of files: %d\n",
mf->nr_of_files);
exit_mf:
free( fname );
return mf;
free(fname);
return mf;
#else
mp_msg(MSGT_STREAM,MSGL_FATAL,"[mf] mf support is disabled on your os\n");
return 0;
mp_msg(MSGT_STREAM, MSGL_FATAL, "[mf] mf support is disabled on your os\n");
return 0;
#endif
}
mf_t* open_mf_single(char * filename)
mf_t *open_mf_single(char *filename)
{
mf_t *mf = calloc(1, sizeof(mf_t));
mf->nr_of_files = 1;

View File

@ -22,14 +22,13 @@
extern double mf_fps;
extern char * mf_type;
typedef struct
{
struct sh_video *sh;
int curr_frame;
int nr_of_files;
char ** names;
// optional
struct stream **streams;
typedef struct mf {
struct sh_video *sh;
int curr_frame;
int nr_of_files;
char ** names;
// optional
struct stream **streams;
} mf_t;
mf_t* open_mf_pattern(char * filename);