@ -58,6 +58,7 @@ typedef struct {
# if HAVE_GLOB
glob_t globstate ;
# endif
int start_number ;
} VideoDemuxData ;
static const int sizes [ ] [ 2 ] = {
@ -109,13 +110,13 @@ static int is_glob(const char *path)
/* return -1 if no image found */
static int find_image_range ( int * pfirst_index , int * plast_index ,
const char * path )
const char * path , int max_start )
{
char buf [ 1024 ] ;
int range , last_index , range1 , first_index ;
/* find the first image */
for ( first_index = 0 ; first_index < 5 ; first_index + + ) {
for ( first_index = max_start ; first_index < max_start + 5 ; first_index + + ) {
if ( av_get_frame_filename ( buf , sizeof ( buf ) , path , first_index ) < 0 ) {
* pfirst_index =
* plast_index = 1 ;
@ -251,8 +252,8 @@ static int read_header(AVFormatContext *s1)
last_index = s - > globstate . gl_pathc - 1 ;
# endif
} else {
if ( find_image_range ( & first_index , & last_index , s - > path ) < 0 )
return AVERROR ( ENOENT ) ;
if ( find_image_range ( & first_index , & last_index , s - > path , s - > start_number - 1 ) < 0 )
return AVERROR ( ENOENT ) ;
}
s - > img_first = first_index ;
s - > img_last = last_index ;
@ -375,6 +376,7 @@ static const AVOption options[] = {
{ " video_size " , " " , OFFSET ( video_size ) , AV_OPT_TYPE_STRING , { . str = NULL } , 0 , 0 , DEC } ,
{ " framerate " , " " , OFFSET ( framerate ) , AV_OPT_TYPE_STRING , { . str = " 25 " } , 0 , 0 , DEC } ,
{ " loop " , " " , OFFSET ( loop ) , AV_OPT_TYPE_INT , { . dbl = 0 } , 0 , 1 , DEC } ,
{ " start_number " , " first number in the sequence " , OFFSET ( start_number ) , AV_OPT_TYPE_INT , { . dbl = 1 } , 1 , INT_MAX , DEC } ,
{ NULL } ,
} ;