|
|
@ -3378,129 +3378,6 @@ static int64_t getutime(void) |
|
|
|
#endif |
|
|
|
#endif |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
static void opt_show_formats(void) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
AVInputFormat *ifmt=NULL; |
|
|
|
|
|
|
|
AVOutputFormat *ofmt=NULL; |
|
|
|
|
|
|
|
URLProtocol *up=NULL; |
|
|
|
|
|
|
|
AVCodec *p=NULL, *p2; |
|
|
|
|
|
|
|
AVBitStreamFilter *bsf=NULL; |
|
|
|
|
|
|
|
const char *last_name; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
printf("File formats:\n"); |
|
|
|
|
|
|
|
last_name= "000"; |
|
|
|
|
|
|
|
for(;;){ |
|
|
|
|
|
|
|
int decode=0; |
|
|
|
|
|
|
|
int encode=0; |
|
|
|
|
|
|
|
const char *name=NULL; |
|
|
|
|
|
|
|
const char *long_name=NULL; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
while((ofmt= av_oformat_next(ofmt))) { |
|
|
|
|
|
|
|
if((name == NULL || strcmp(ofmt->name, name)<0) && |
|
|
|
|
|
|
|
strcmp(ofmt->name, last_name)>0){ |
|
|
|
|
|
|
|
name= ofmt->name; |
|
|
|
|
|
|
|
long_name= ofmt->long_name; |
|
|
|
|
|
|
|
encode=1; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
while((ifmt= av_iformat_next(ifmt))) { |
|
|
|
|
|
|
|
if((name == NULL || strcmp(ifmt->name, name)<0) && |
|
|
|
|
|
|
|
strcmp(ifmt->name, last_name)>0){ |
|
|
|
|
|
|
|
name= ifmt->name; |
|
|
|
|
|
|
|
long_name= ifmt->long_name; |
|
|
|
|
|
|
|
encode=0; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
if(name && strcmp(ifmt->name, name)==0) |
|
|
|
|
|
|
|
decode=1; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
if(name==NULL) |
|
|
|
|
|
|
|
break; |
|
|
|
|
|
|
|
last_name= name; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
printf( |
|
|
|
|
|
|
|
" %s%s %-15s %s\n", |
|
|
|
|
|
|
|
decode ? "D":" ", |
|
|
|
|
|
|
|
encode ? "E":" ", |
|
|
|
|
|
|
|
name, |
|
|
|
|
|
|
|
long_name ? long_name:" "); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
printf("\n"); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
printf("Codecs:\n"); |
|
|
|
|
|
|
|
last_name= "000"; |
|
|
|
|
|
|
|
for(;;){ |
|
|
|
|
|
|
|
int decode=0; |
|
|
|
|
|
|
|
int encode=0; |
|
|
|
|
|
|
|
int cap=0; |
|
|
|
|
|
|
|
const char *type_str; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
p2=NULL; |
|
|
|
|
|
|
|
while((p= av_codec_next(p))) { |
|
|
|
|
|
|
|
if((p2==NULL || strcmp(p->name, p2->name)<0) && |
|
|
|
|
|
|
|
strcmp(p->name, last_name)>0){ |
|
|
|
|
|
|
|
p2= p; |
|
|
|
|
|
|
|
decode= encode= cap=0; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
if(p2 && strcmp(p->name, p2->name)==0){ |
|
|
|
|
|
|
|
if(p->decode) decode=1; |
|
|
|
|
|
|
|
if(p->encode) encode=1; |
|
|
|
|
|
|
|
cap |= p->capabilities; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
if(p2==NULL) |
|
|
|
|
|
|
|
break; |
|
|
|
|
|
|
|
last_name= p2->name; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
switch(p2->type) { |
|
|
|
|
|
|
|
case CODEC_TYPE_VIDEO: |
|
|
|
|
|
|
|
type_str = "V"; |
|
|
|
|
|
|
|
break; |
|
|
|
|
|
|
|
case CODEC_TYPE_AUDIO: |
|
|
|
|
|
|
|
type_str = "A"; |
|
|
|
|
|
|
|
break; |
|
|
|
|
|
|
|
case CODEC_TYPE_SUBTITLE: |
|
|
|
|
|
|
|
type_str = "S"; |
|
|
|
|
|
|
|
break; |
|
|
|
|
|
|
|
default: |
|
|
|
|
|
|
|
type_str = "?"; |
|
|
|
|
|
|
|
break; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
printf( |
|
|
|
|
|
|
|
" %s%s%s%s%s%s %-15s %s", |
|
|
|
|
|
|
|
decode ? "D": (/*p2->decoder ? "d":*/" "), |
|
|
|
|
|
|
|
encode ? "E":" ", |
|
|
|
|
|
|
|
type_str, |
|
|
|
|
|
|
|
cap & CODEC_CAP_DRAW_HORIZ_BAND ? "S":" ", |
|
|
|
|
|
|
|
cap & CODEC_CAP_DR1 ? "D":" ", |
|
|
|
|
|
|
|
cap & CODEC_CAP_TRUNCATED ? "T":" ", |
|
|
|
|
|
|
|
p2->name, |
|
|
|
|
|
|
|
p2->long_name ? p2->long_name : ""); |
|
|
|
|
|
|
|
/* if(p2->decoder && decode==0)
|
|
|
|
|
|
|
|
printf(" use %s for decoding", p2->decoder->name);*/ |
|
|
|
|
|
|
|
printf("\n"); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
printf("\n"); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
printf("Bitstream filters:\n"); |
|
|
|
|
|
|
|
while((bsf = av_bitstream_filter_next(bsf))) |
|
|
|
|
|
|
|
printf(" %s", bsf->name); |
|
|
|
|
|
|
|
printf("\n"); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
printf("Supported file protocols:\n"); |
|
|
|
|
|
|
|
while((up = av_protocol_next(up))) |
|
|
|
|
|
|
|
printf(" %s:", up->name); |
|
|
|
|
|
|
|
printf("\n"); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
printf("Frame size, frame rate abbreviations:\n ntsc pal qntsc qpal sntsc spal film ntsc-film sqcif qcif cif 4cif\n"); |
|
|
|
|
|
|
|
printf("\n"); |
|
|
|
|
|
|
|
printf( |
|
|
|
|
|
|
|
"Note, the names of encoders and decoders do not always match, so there are\n" |
|
|
|
|
|
|
|
"several cases where the above table shows encoder only or decoder only entries\n" |
|
|
|
|
|
|
|
"even though both encoding and decoding are supported. For example, the h263\n" |
|
|
|
|
|
|
|
"decoder corresponds to the h263 and h263p encoders, for file formats it is even\n" |
|
|
|
|
|
|
|
"worse.\n"); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
static void parse_matrix_coeffs(uint16_t *dest, const char *str) |
|
|
|
static void parse_matrix_coeffs(uint16_t *dest, const char *str) |
|
|
|
{ |
|
|
|
{ |
|
|
|
int i; |
|
|
|
int i; |
|
|
@ -3761,7 +3638,7 @@ static const OptionDef options[] = { |
|
|
|
{ "L", OPT_EXIT, {(void*)show_license}, "show license" }, |
|
|
|
{ "L", OPT_EXIT, {(void*)show_license}, "show license" }, |
|
|
|
{ "h", OPT_EXIT, {(void*)show_help}, "show help" }, |
|
|
|
{ "h", OPT_EXIT, {(void*)show_help}, "show help" }, |
|
|
|
{ "version", OPT_EXIT, {(void*)show_version}, "show version" }, |
|
|
|
{ "version", OPT_EXIT, {(void*)show_version}, "show version" }, |
|
|
|
{ "formats", OPT_EXIT, {(void*)opt_show_formats}, "show available formats, codecs, protocols, ..." }, |
|
|
|
{ "formats", OPT_EXIT, {(void*)show_formats}, "show available formats, codecs, protocols, ..." }, |
|
|
|
{ "f", HAS_ARG, {(void*)opt_format}, "force format", "fmt" }, |
|
|
|
{ "f", HAS_ARG, {(void*)opt_format}, "force format", "fmt" }, |
|
|
|
{ "i", HAS_ARG, {(void*)opt_input_file}, "input file name", "filename" }, |
|
|
|
{ "i", HAS_ARG, {(void*)opt_input_file}, "input file name", "filename" }, |
|
|
|
{ "y", OPT_BOOL, {(void*)&file_overwrite}, "overwrite output files" }, |
|
|
|
{ "y", OPT_BOOL, {(void*)&file_overwrite}, "overwrite output files" }, |
|
|
|