mirror of
https://github.com/mpv-player/mpv
synced 2025-04-01 23:00:41 +00:00
Merge svn change r31134
Fix some search/replace errors introduced in the svn commit.
This commit is contained in:
commit
4c6e3ac01b
14
LICENSE
14
LICENSE
@ -1,12 +1,12 @@
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 2, June 1991
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 2, June 1991
|
||||
|
||||
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
|
||||
51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
Preamble
|
||||
Preamble
|
||||
|
||||
The licenses for most software are designed to take away your
|
||||
freedom to share and change it. By contrast, the GNU General Public
|
||||
@ -56,7 +56,7 @@ patent must be licensed for everyone's free use or not licensed at all.
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow.
|
||||
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||
|
||||
0. This License applies to any program or other work which contains
|
||||
@ -255,7 +255,7 @@ make exceptions for this. Our decision will be guided by the two goals
|
||||
of preserving the free status of all derivatives of our free software and
|
||||
of promoting the sharing and reuse of software generally.
|
||||
|
||||
NO WARRANTY
|
||||
NO WARRANTY
|
||||
|
||||
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
|
||||
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
|
||||
@ -277,9 +277,9 @@ YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
|
||||
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
|
||||
POSSIBILITY OF SUCH DAMAGES.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
How to Apply These Terms to Your New Programs
|
||||
How to Apply These Terms to Your New Programs
|
||||
|
||||
If you develop a new program, and you want it to be of the greatest
|
||||
possible use to the public, the best way to achieve this is to make it
|
||||
|
156
asxparser.c
156
asxparser.c
@ -112,8 +112,8 @@ asx_parse_attribs(ASX_Parser_t* parser,char* buffer,char*** _attribs) {
|
||||
if(ptr3 == NULL) break;
|
||||
for(ptr2 = ptr3-1; strchr(SPACE,*ptr2) != NULL; ptr2--) {
|
||||
if (ptr2 == ptr1) {
|
||||
mp_msg(MSGT_PLAYTREE,MSGL_ERR,"At line %d : this should never append, back to attribute begin while skipping end space",parser->line);
|
||||
break;
|
||||
mp_msg(MSGT_PLAYTREE,MSGL_ERR,"At line %d : this should never append, back to attribute begin while skipping end space",parser->line);
|
||||
break;
|
||||
}
|
||||
}
|
||||
attrib = malloc(ptr2-ptr1+2);
|
||||
@ -159,7 +159,7 @@ asx_parse_attribs(ASX_Parser_t* parser,char* buffer,char*** _attribs) {
|
||||
*/
|
||||
int
|
||||
asx_get_element(ASX_Parser_t* parser,char** _buffer,
|
||||
char** _element,char** _body,char*** _attribs) {
|
||||
char** _element,char** _body,char*** _attribs) {
|
||||
char *ptr1,*ptr2, *ptr3, *ptr4;
|
||||
char *attribs = NULL;
|
||||
char *element = NULL, *body = NULL, *ret = NULL, *buffer;
|
||||
@ -183,21 +183,21 @@ asx_get_element(ASX_Parser_t* parser,char** _buffer,
|
||||
int i;
|
||||
for(i = 0 ; i < parser->ret_stack_size ; i++) {
|
||||
if(buffer == ls[i].buffer) {
|
||||
parser->line = ls[i].line;
|
||||
break;
|
||||
parser->line = ls[i].line;
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
if( i < parser->ret_stack_size) {
|
||||
i++;
|
||||
if( i < parser->ret_stack_size)
|
||||
memmove(parser->ret_stack,parser->ret_stack+i, (parser->ret_stack_size - i)*sizeof(ASX_LineSave_t));
|
||||
memmove(parser->ret_stack,parser->ret_stack+i, (parser->ret_stack_size - i)*sizeof(ASX_LineSave_t));
|
||||
parser->ret_stack_size -= i;
|
||||
if(parser->ret_stack_size > 0)
|
||||
parser->ret_stack = realloc(parser->ret_stack,parser->ret_stack_size*sizeof(ASX_LineSave_t));
|
||||
parser->ret_stack = realloc(parser->ret_stack,parser->ret_stack_size*sizeof(ASX_LineSave_t));
|
||||
else {
|
||||
free(parser->ret_stack);
|
||||
parser->ret_stack = NULL;
|
||||
free(parser->ret_stack);
|
||||
parser->ret_stack = NULL;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -206,8 +206,8 @@ asx_get_element(ASX_Parser_t* parser,char** _buffer,
|
||||
while(1) {
|
||||
for( ; ptr1[0] != '<' ; ptr1++) {
|
||||
if(ptr1[0] == '\0') {
|
||||
ptr1 = NULL;
|
||||
break;
|
||||
ptr1 = NULL;
|
||||
break;
|
||||
}
|
||||
if(ptr1[0] == '\n') parser->line++;
|
||||
}
|
||||
@ -216,16 +216,16 @@ asx_get_element(ASX_Parser_t* parser,char** _buffer,
|
||||
|
||||
if(strncmp(ptr1,"<!--",4) == 0) { // Comments
|
||||
for( ; strncmp(ptr1,"-->",3) != 0 ; ptr1++) {
|
||||
if(ptr1[0] == '\0') {
|
||||
ptr1 = NULL;
|
||||
break;
|
||||
}
|
||||
if(ptr1[0] == '\n') parser->line++;
|
||||
if(ptr1[0] == '\0') {
|
||||
ptr1 = NULL;
|
||||
break;
|
||||
}
|
||||
if(ptr1[0] == '\n') parser->line++;
|
||||
}
|
||||
//ptr1 = strstr(ptr1,"-->");
|
||||
if(!ptr1) {
|
||||
mp_msg(MSGT_PLAYTREE,MSGL_ERR,"At line %d : unfinished comment",parser->line);
|
||||
return -1;
|
||||
mp_msg(MSGT_PLAYTREE,MSGL_ERR,"At line %d : unfinished comment",parser->line);
|
||||
return -1;
|
||||
}
|
||||
} else {
|
||||
break;
|
||||
@ -288,10 +288,10 @@ asx_get_element(ASX_Parser_t* parser,char** _buffer,
|
||||
ptr3++;
|
||||
for( ; strchr(SPACE,*ptr3) != NULL; ptr3++) { // Skip space on body begin
|
||||
if(*ptr3 == '\0') {
|
||||
mp_msg(MSGT_PLAYTREE,MSGL_ERR,"At line %d : EOB reached while parsing %s element body",parser->line,element);
|
||||
free(element);
|
||||
if(attribs) free(attribs);
|
||||
return -1;
|
||||
mp_msg(MSGT_PLAYTREE,MSGL_ERR,"At line %d : EOB reached while parsing %s element body",parser->line,element);
|
||||
free(element);
|
||||
if(attribs) free(attribs);
|
||||
return -1;
|
||||
}
|
||||
if(ptr3[0] == '\n') parser->line++;
|
||||
}
|
||||
@ -299,52 +299,52 @@ asx_get_element(ASX_Parser_t* parser,char** _buffer,
|
||||
body_line = parser->line;
|
||||
while(1) { // Find closing element
|
||||
for( ; ptr4[0] != '<' ; ptr4++) {
|
||||
if(ptr4[0] == '\0') {
|
||||
ptr4 = NULL;
|
||||
break;
|
||||
}
|
||||
if(ptr4[0] == '\n') parser->line++;
|
||||
if(ptr4[0] == '\0') {
|
||||
ptr4 = NULL;
|
||||
break;
|
||||
}
|
||||
if(ptr4[0] == '\n') parser->line++;
|
||||
}
|
||||
if(ptr4 && strncmp(ptr4,"<!--",4) == 0) { // Comments
|
||||
for( ; strncmp(ptr4,"-->",3) != 0 ; ptr4++) {
|
||||
if(ptr4[0] == '\0') {
|
||||
ptr4 = NULL;
|
||||
break;
|
||||
}
|
||||
if(ptr1[0] == '\n') parser->line++;
|
||||
}
|
||||
continue;
|
||||
for( ; strncmp(ptr4,"-->",3) != 0 ; ptr4++) {
|
||||
if(ptr4[0] == '\0') {
|
||||
ptr4 = NULL;
|
||||
break;
|
||||
}
|
||||
if(ptr1[0] == '\n') parser->line++;
|
||||
}
|
||||
continue;
|
||||
}
|
||||
if(ptr4 == NULL || ptr4[1] == '\0') {
|
||||
mp_msg(MSGT_PLAYTREE,MSGL_ERR,"At line %d : EOB reached while parsing %s element body",parser->line,element);
|
||||
free(element);
|
||||
if(attribs) free(attribs);
|
||||
return -1;
|
||||
mp_msg(MSGT_PLAYTREE,MSGL_ERR,"At line %d : EOB reached while parsing %s element body",parser->line,element);
|
||||
free(element);
|
||||
if(attribs) free(attribs);
|
||||
return -1;
|
||||
}
|
||||
if(ptr4[1] != '/' && strncasecmp(element,ptr4+1,strlen(element)) == 0) {
|
||||
in++;
|
||||
ptr4+=2;
|
||||
continue;
|
||||
in++;
|
||||
ptr4+=2;
|
||||
continue;
|
||||
} else if(strncasecmp(element,ptr4+2,strlen(element)) == 0) { // Extract body
|
||||
if(in > 0) {
|
||||
in--;
|
||||
ptr4 += 2+strlen(element);
|
||||
continue;
|
||||
}
|
||||
ret = ptr4+strlen(element)+3;
|
||||
if(ptr4 != ptr3) {
|
||||
ptr4--;
|
||||
for( ; ptr4 != ptr3 && strchr(SPACE,*ptr4) != NULL; ptr4--) ;// Skip space on body end
|
||||
// if(ptr4[0] == '\0') parser->line--;
|
||||
//}
|
||||
ptr4++;
|
||||
body = malloc(ptr4-ptr3+1);
|
||||
strncpy(body,ptr3,ptr4-ptr3);
|
||||
body[ptr4-ptr3] = '\0';
|
||||
}
|
||||
break;
|
||||
if(in > 0) {
|
||||
in--;
|
||||
ptr4 += 2+strlen(element);
|
||||
continue;
|
||||
}
|
||||
ret = ptr4+strlen(element)+3;
|
||||
if(ptr4 != ptr3) {
|
||||
ptr4--;
|
||||
for( ; ptr4 != ptr3 && strchr(SPACE,*ptr4) != NULL; ptr4--) ;// Skip space on body end
|
||||
// if(ptr4[0] == '\0') parser->line--;
|
||||
//}
|
||||
ptr4++;
|
||||
body = malloc(ptr4-ptr3+1);
|
||||
strncpy(body,ptr3,ptr4-ptr3);
|
||||
body[ptr4-ptr3] = '\0';
|
||||
}
|
||||
break;
|
||||
} else {
|
||||
ptr4 += 2;
|
||||
ptr4 += 2;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
@ -543,23 +543,23 @@ asx_parse_repeat(ASX_Parser_t* parser,char* buffer,char** _attribs) {
|
||||
if(strcasecmp(element,"ENTRY") == 0) {
|
||||
entry = asx_parse_entry(parser,body,attribs);
|
||||
if(entry) {
|
||||
if(!list) list = entry;
|
||||
else play_tree_append_entry(list,entry);
|
||||
mp_msg(MSGT_PLAYTREE,MSGL_DBG2,"Adding element %s to repeat\n",element);
|
||||
if(!list) list = entry;
|
||||
else play_tree_append_entry(list,entry);
|
||||
mp_msg(MSGT_PLAYTREE,MSGL_DBG2,"Adding element %s to repeat\n",element);
|
||||
}
|
||||
} else if(strcasecmp(element,"ENTRYREF") == 0) {
|
||||
entry = asx_parse_entryref(parser,body,attribs);
|
||||
if(entry) {
|
||||
if(!list) list = entry;
|
||||
else play_tree_append_entry(list,entry);
|
||||
mp_msg(MSGT_PLAYTREE,MSGL_DBG2,"Adding element %s to repeat\n",element);
|
||||
if(!list) list = entry;
|
||||
else play_tree_append_entry(list,entry);
|
||||
mp_msg(MSGT_PLAYTREE,MSGL_DBG2,"Adding element %s to repeat\n",element);
|
||||
}
|
||||
} else if(strcasecmp(element,"REPEAT") == 0) {
|
||||
entry = asx_parse_repeat(parser,body,attribs);
|
||||
if(entry) {
|
||||
if(!list) list = entry;
|
||||
else play_tree_append_entry(list,entry);
|
||||
mp_msg(MSGT_PLAYTREE,MSGL_DBG2,"Adding element %s to repeat\n",element);
|
||||
if(!list) list = entry;
|
||||
else play_tree_append_entry(list,entry);
|
||||
mp_msg(MSGT_PLAYTREE,MSGL_DBG2,"Adding element %s to repeat\n",element);
|
||||
}
|
||||
} else if(strcasecmp(element,"PARAM") == 0) {
|
||||
asx_parse_param(parser,attribs,repeat);
|
||||
@ -630,23 +630,23 @@ asx_parser_build_tree(struct m_config *mconfig, char* buffer,int deep) {
|
||||
if(strcasecmp(element,"ENTRY") == 0) {
|
||||
entry = asx_parse_entry(parser,body,attribs);
|
||||
if(entry) {
|
||||
if(!list) list = entry;
|
||||
else play_tree_append_entry(list,entry);
|
||||
mp_msg(MSGT_PLAYTREE,MSGL_DBG2,"Adding element %s to asx\n",element);
|
||||
if(!list) list = entry;
|
||||
else play_tree_append_entry(list,entry);
|
||||
mp_msg(MSGT_PLAYTREE,MSGL_DBG2,"Adding element %s to asx\n",element);
|
||||
}
|
||||
} else if(strcasecmp(element,"ENTRYREF") == 0) {
|
||||
entry = asx_parse_entryref(parser,body,attribs);
|
||||
if(entry) {
|
||||
if(!list) list = entry;
|
||||
else play_tree_append_entry(list,entry);
|
||||
mp_msg(MSGT_PLAYTREE,MSGL_DBG2,"Adding element %s to asx\n",element);
|
||||
if(!list) list = entry;
|
||||
else play_tree_append_entry(list,entry);
|
||||
mp_msg(MSGT_PLAYTREE,MSGL_DBG2,"Adding element %s to asx\n",element);
|
||||
}
|
||||
} else if(strcasecmp(element,"REPEAT") == 0) {
|
||||
entry = asx_parse_repeat(parser,body,attribs);
|
||||
if(entry) {
|
||||
if(!list) list = entry;
|
||||
else play_tree_append_entry(list,entry);
|
||||
mp_msg(MSGT_PLAYTREE,MSGL_DBG2,"Adding element %s to asx\n",element);
|
||||
if(!list) list = entry;
|
||||
else play_tree_append_entry(list,entry);
|
||||
mp_msg(MSGT_PLAYTREE,MSGL_DBG2,"Adding element %s to asx\n",element);
|
||||
}
|
||||
} else
|
||||
mp_msg(MSGT_PLAYTREE,MSGL_DBG2,"Ignoring element %s\n",element);
|
||||
|
@ -49,7 +49,7 @@ asx_parser_free(ASX_Parser_t* parser);
|
||||
*/
|
||||
int
|
||||
asx_get_element(ASX_Parser_t* parser,char** _buffer,
|
||||
char** _element,char** _body,char*** _attribs);
|
||||
char** _element,char** _body,char*** _attribs);
|
||||
|
||||
int
|
||||
asx_parse_attribs(ASX_Parser_t* parser,char* buffer,char*** _attribs);
|
||||
|
@ -17,349 +17,345 @@
|
||||
*/
|
||||
|
||||
// ------------------------- common options --------------------
|
||||
{"quiet", &quiet, CONF_TYPE_FLAG, CONF_GLOBAL, 0, 1, NULL},
|
||||
{"noquiet", &quiet, CONF_TYPE_FLAG, CONF_GLOBAL, 1, 0, NULL},
|
||||
{"really-quiet", &verbose, CONF_TYPE_FLAG, CONF_GLOBAL|CONF_PRE_PARSE, 0, -10, NULL},
|
||||
{"v", cfg_inc_verbose, CONF_TYPE_FUNC, CONF_GLOBAL|CONF_NOSAVE, 0, 0, NULL},
|
||||
{"quiet", &quiet, CONF_TYPE_FLAG, CONF_GLOBAL, 0, 1, NULL},
|
||||
{"noquiet", &quiet, CONF_TYPE_FLAG, CONF_GLOBAL, 1, 0, NULL},
|
||||
{"really-quiet", &verbose, CONF_TYPE_FLAG, CONF_GLOBAL|CONF_PRE_PARSE, 0, -10, NULL},
|
||||
{"v", cfg_inc_verbose, CONF_TYPE_FUNC, CONF_GLOBAL|CONF_NOSAVE, 0, 0, NULL},
|
||||
{"msglevel", (void *) msgl_config, CONF_TYPE_SUBCONFIG, CONF_GLOBAL, 0, 0, NULL},
|
||||
{"msgcolor", &mp_msg_color, CONF_TYPE_FLAG, CONF_GLOBAL, 0, 1, NULL},
|
||||
{"nomsgcolor", &mp_msg_color, CONF_TYPE_FLAG, CONF_GLOBAL, 1, 0, NULL},
|
||||
{"msgmodule", &mp_msg_module, CONF_TYPE_FLAG, CONF_GLOBAL, 0, 1, NULL},
|
||||
{"nomsgmodule", &mp_msg_module, CONF_TYPE_FLAG, CONF_GLOBAL, 1, 0, NULL},
|
||||
{"msgcolor", &mp_msg_color, CONF_TYPE_FLAG, CONF_GLOBAL, 0, 1, NULL},
|
||||
{"nomsgcolor", &mp_msg_color, CONF_TYPE_FLAG, CONF_GLOBAL, 1, 0, NULL},
|
||||
{"msgmodule", &mp_msg_module, CONF_TYPE_FLAG, CONF_GLOBAL, 0, 1, NULL},
|
||||
{"nomsgmodule", &mp_msg_module, CONF_TYPE_FLAG, CONF_GLOBAL, 1, 0, NULL},
|
||||
#ifdef CONFIG_ICONV
|
||||
{"msgcharset", &mp_msg_charset, CONF_TYPE_STRING, CONF_GLOBAL, 0, 0, NULL},
|
||||
{"msgcharset", &mp_msg_charset, CONF_TYPE_STRING, CONF_GLOBAL, 0, 0, NULL},
|
||||
#endif
|
||||
#ifdef CONFIG_PRIORITY
|
||||
{"priority", &proc_priority, CONF_TYPE_STRING, 0, 0, 0, NULL},
|
||||
{"priority", &proc_priority, CONF_TYPE_STRING, 0, 0, 0, NULL},
|
||||
#endif
|
||||
{"codecpath", &codec_path, CONF_TYPE_STRING, 0, 0, 0, NULL},
|
||||
{"noconfig", (void *) noconfig_opts, CONF_TYPE_SUBCONFIG, CONF_GLOBAL|CONF_NOCFG|CONF_PRE_PARSE, 0, 0, NULL},
|
||||
{"codecpath", &codec_path, CONF_TYPE_STRING, 0, 0, 0, NULL},
|
||||
{"noconfig", (void *) noconfig_opts, CONF_TYPE_SUBCONFIG, CONF_GLOBAL|CONF_NOCFG|CONF_PRE_PARSE, 0, 0, NULL},
|
||||
|
||||
// ------------------------- stream options --------------------
|
||||
|
||||
#ifdef CONFIG_STREAM_CACHE
|
||||
{"cache", &stream_cache_size, CONF_TYPE_INT, CONF_RANGE, 32, 1048576, NULL},
|
||||
{"nocache", &stream_cache_size, CONF_TYPE_FLAG, 0, 1, 0, NULL},
|
||||
{"cache-min", &stream_cache_min_percent, CONF_TYPE_FLOAT, CONF_RANGE, 0, 99, NULL},
|
||||
{"cache-seek-min", &stream_cache_seek_min_percent, CONF_TYPE_FLOAT, CONF_RANGE, 0, 99, NULL},
|
||||
{"cache", &stream_cache_size, CONF_TYPE_INT, CONF_RANGE, 32, 1048576, NULL},
|
||||
{"nocache", &stream_cache_size, CONF_TYPE_FLAG, 0, 1, 0, NULL},
|
||||
{"cache-min", &stream_cache_min_percent, CONF_TYPE_FLOAT, CONF_RANGE, 0, 99, NULL},
|
||||
{"cache-seek-min", &stream_cache_seek_min_percent, CONF_TYPE_FLOAT, CONF_RANGE, 0, 99, NULL},
|
||||
#else
|
||||
{"cache", "MPlayer was compiled without cache2 support.\n", CONF_TYPE_PRINT, CONF_NOCFG, 0, 0, NULL},
|
||||
{"cache", "MPlayer was compiled without cache2 support.\n", CONF_TYPE_PRINT, CONF_NOCFG, 0, 0, NULL},
|
||||
#endif /* CONFIG_STREAM_CACHE */
|
||||
{"vcd", "-vcd N has been removed, use vcd://N instead.\n", CONF_TYPE_PRINT, CONF_NOCFG ,0,0, NULL},
|
||||
{"cuefile", "-cuefile has been removed, use cue://filename:N where N is the track number.\n", CONF_TYPE_PRINT, 0, 0, 0, NULL},
|
||||
{"cdrom-device", &cdrom_device, CONF_TYPE_STRING, 0, 0, 0, NULL},
|
||||
{"vcd", "-vcd N has been removed, use vcd://N instead.\n", CONF_TYPE_PRINT, CONF_NOCFG ,0,0, NULL},
|
||||
{"cuefile", "-cuefile has been removed, use cue://filename:N where N is the track number.\n", CONF_TYPE_PRINT, 0, 0, 0, NULL},
|
||||
{"cdrom-device", &cdrom_device, CONF_TYPE_STRING, 0, 0, 0, NULL},
|
||||
#ifdef CONFIG_DVDREAD
|
||||
{"dvd-device", &dvd_device, CONF_TYPE_STRING, 0, 0, 0, NULL},
|
||||
{"dvd-speed", &dvd_speed, CONF_TYPE_INT, 0, 0, 0, NULL},
|
||||
{"dvd", "-dvd N has been removed, use dvd://N instead.\n" , CONF_TYPE_PRINT, 0, 0, 0, NULL},
|
||||
{"dvdangle", &dvd_angle, CONF_TYPE_INT, CONF_RANGE, 1, 99, NULL},
|
||||
{"dvd-device", &dvd_device, CONF_TYPE_STRING, 0, 0, 0, NULL},
|
||||
{"dvd-speed", &dvd_speed, CONF_TYPE_INT, 0, 0, 0, NULL},
|
||||
{"dvd", "-dvd N has been removed, use dvd://N instead.\n" , CONF_TYPE_PRINT, 0, 0, 0, NULL},
|
||||
{"dvdangle", &dvd_angle, CONF_TYPE_INT, CONF_RANGE, 1, 99, NULL},
|
||||
#else
|
||||
{"dvd-device", "MPlayer was compiled without libdvdread support.\n", CONF_TYPE_PRINT, 0, 0, 0, NULL},
|
||||
{"dvd-speed", "MPlayer was compiled without libdvdread support.\n", CONF_TYPE_PRINT, 0, 0, 0, NULL},
|
||||
{"dvd", "MPlayer was compiled without libdvdread support.\n", CONF_TYPE_PRINT, CONF_NOCFG, 0, 0, NULL},
|
||||
{"dvd-device", "MPlayer was compiled without libdvdread support.\n", CONF_TYPE_PRINT, 0, 0, 0, NULL},
|
||||
{"dvd-speed", "MPlayer was compiled without libdvdread support.\n", CONF_TYPE_PRINT, 0, 0, 0, NULL},
|
||||
{"dvd", "MPlayer was compiled without libdvdread support.\n", CONF_TYPE_PRINT, CONF_NOCFG, 0, 0, NULL},
|
||||
#endif /* CONFIG_DVDREAD */
|
||||
OPT_INTPAIR("chapter", chapterrange, 0),
|
||||
OPT_INTRANGE("edition", edition_id, 0, -1, 8190),
|
||||
{"alang", &audio_lang, CONF_TYPE_STRING, 0, 0, 0, NULL},
|
||||
{"slang", &dvdsub_lang, CONF_TYPE_STRING, 0, 0, 0, NULL},
|
||||
OPT_INTPAIR("chapter", chapterrange, 0),
|
||||
OPT_INTRANGE("edition", edition_id, 0, -1, 8190),
|
||||
{"alang", &audio_lang, CONF_TYPE_STRING, 0, 0, 0, NULL},
|
||||
{"slang", &dvdsub_lang, CONF_TYPE_STRING, 0, 0, 0, NULL},
|
||||
|
||||
{"dvdauth", "libcss is obsolete. Try libdvdread instead.\n", CONF_TYPE_PRINT, CONF_NOCFG, 0, 0, NULL},
|
||||
{"dvdkey", "libcss is obsolete. Try libdvdread instead.\n", CONF_TYPE_PRINT, CONF_NOCFG, 0, 0, NULL},
|
||||
{"csslib", "libcss is obsolete. Try libdvdread instead.\n", CONF_TYPE_PRINT, CONF_NOCFG, 0, 0, NULL},
|
||||
{"dvdauth", "libcss is obsolete. Try libdvdread instead.\n", CONF_TYPE_PRINT, CONF_NOCFG, 0, 0, NULL},
|
||||
{"dvdkey", "libcss is obsolete. Try libdvdread instead.\n", CONF_TYPE_PRINT, CONF_NOCFG, 0, 0, NULL},
|
||||
{"csslib", "libcss is obsolete. Try libdvdread instead.\n", CONF_TYPE_PRINT, CONF_NOCFG, 0, 0, NULL},
|
||||
|
||||
#ifdef CONFIG_NETWORK
|
||||
{"user", &network_username, CONF_TYPE_STRING, 0, 0, 0, NULL},
|
||||
{"passwd", &network_password, CONF_TYPE_STRING, 0, 0, 0, NULL},
|
||||
{"bandwidth", &network_bandwidth, CONF_TYPE_INT, CONF_MIN, 0, 0, NULL},
|
||||
{"user-agent", &network_useragent, CONF_TYPE_STRING, 0, 0, 0, NULL},
|
||||
{"cookies", &network_cookies_enabled, CONF_TYPE_FLAG, 0, 0, 1, NULL},
|
||||
{"nocookies", &network_cookies_enabled, CONF_TYPE_FLAG, 0, 1, 0, NULL},
|
||||
{"cookies-file", &cookies_file, CONF_TYPE_STRING, 0, 0, 0, NULL},
|
||||
{"prefer-ipv4", &network_prefer_ipv4, CONF_TYPE_FLAG, 0, 0, 1, NULL},
|
||||
{"ipv4-only-proxy", &network_ipv4_only_proxy, CONF_TYPE_FLAG, 0, 0, 1, NULL},
|
||||
{"reuse-socket", &reuse_socket, CONF_TYPE_FLAG, CONF_GLOBAL, 0, 1, NULL},
|
||||
{"noreuse-socket", &reuse_socket, CONF_TYPE_FLAG, CONF_GLOBAL, 1, 0, NULL},
|
||||
{"user", &network_username, CONF_TYPE_STRING, 0, 0, 0, NULL},
|
||||
{"passwd", &network_password, CONF_TYPE_STRING, 0, 0, 0, NULL},
|
||||
{"bandwidth", &network_bandwidth, CONF_TYPE_INT, CONF_MIN, 0, 0, NULL},
|
||||
{"user-agent", &network_useragent, CONF_TYPE_STRING, 0, 0, 0, NULL},
|
||||
{"cookies", &network_cookies_enabled, CONF_TYPE_FLAG, 0, 0, 1, NULL},
|
||||
{"nocookies", &network_cookies_enabled, CONF_TYPE_FLAG, 0, 1, 0, NULL},
|
||||
{"cookies-file", &cookies_file, CONF_TYPE_STRING, 0, 0, 0, NULL},
|
||||
{"prefer-ipv4", &network_prefer_ipv4, CONF_TYPE_FLAG, 0, 0, 1, NULL},
|
||||
{"ipv4-only-proxy", &network_ipv4_only_proxy, CONF_TYPE_FLAG, 0, 0, 1, NULL},
|
||||
{"reuse-socket", &reuse_socket, CONF_TYPE_FLAG, CONF_GLOBAL, 0, 1, NULL},
|
||||
{"noreuse-socket", &reuse_socket, CONF_TYPE_FLAG, CONF_GLOBAL, 1, 0, NULL},
|
||||
#ifdef HAVE_AF_INET6
|
||||
{"prefer-ipv6", &network_prefer_ipv4, CONF_TYPE_FLAG, 0, 1, 0, NULL},
|
||||
{"prefer-ipv6", &network_prefer_ipv4, CONF_TYPE_FLAG, 0, 1, 0, NULL},
|
||||
#else
|
||||
{"prefer-ipv6", "MPlayer was compiled without IPv6 support.\n", CONF_TYPE_PRINT, 0, 0, 0, NULL},
|
||||
{"prefer-ipv6", "MPlayer was compiled without IPv6 support.\n", CONF_TYPE_PRINT, 0, 0, 0, NULL},
|
||||
#endif /* HAVE_AF_INET6 */
|
||||
|
||||
#else
|
||||
{"user", "MPlayer was compiled without streaming (network) support.\n", CONF_TYPE_PRINT, CONF_NOCFG, 0, 0, NULL},
|
||||
{"passwd", "MPlayer was compiled without streaming (network) support.\n", CONF_TYPE_PRINT, CONF_NOCFG, 0, 0, NULL},
|
||||
{"bandwidth", "MPlayer was compiled without streaming (network) support.\n", CONF_TYPE_PRINT, CONF_NOCFG, 0, 0, NULL},
|
||||
{"user-agent", "MPlayer was compiled without streaming (network) support.\n", CONF_TYPE_PRINT, CONF_NOCFG, 0, 0, NULL},
|
||||
{"user", "MPlayer was compiled without streaming (network) support.\n", CONF_TYPE_PRINT, CONF_NOCFG, 0, 0, NULL},
|
||||
{"passwd", "MPlayer was compiled without streaming (network) support.\n", CONF_TYPE_PRINT, CONF_NOCFG, 0, 0, NULL},
|
||||
{"bandwidth", "MPlayer was compiled without streaming (network) support.\n", CONF_TYPE_PRINT, CONF_NOCFG, 0, 0, NULL},
|
||||
{"user-agent", "MPlayer was compiled without streaming (network) support.\n", CONF_TYPE_PRINT, CONF_NOCFG, 0, 0, NULL},
|
||||
#endif /* CONFIG_NETWORK */
|
||||
|
||||
#ifdef CONFIG_LIVE555
|
||||
{"sdp", "-sdp has been removed, use sdp://file instead.\n", CONF_TYPE_PRINT, 0, 0, 0, NULL},
|
||||
{"sdp", "-sdp has been removed, use sdp://file instead.\n", CONF_TYPE_PRINT, 0, 0, 0, NULL},
|
||||
#endif /* CONFIG_LIVE555 */
|
||||
#if defined(CONFIG_LIBNEMESI) || defined(CONFIG_LIVE555)
|
||||
// -rtsp-stream-over-tcp option, specifying TCP streaming of RTP/RTCP
|
||||
{"rtsp-stream-over-tcp", &rtsp_transport_tcp, CONF_TYPE_FLAG, 0, 0, 1, NULL},
|
||||
// -rtsp-stream-over-tcp option, specifying TCP streaming of RTP/RTCP
|
||||
{"rtsp-stream-over-tcp", &rtsp_transport_tcp, CONF_TYPE_FLAG, 0, 0, 1, NULL},
|
||||
#else
|
||||
{"rtsp-stream-over-tcp", "-rtsp-stream-over-tcp requires the \"LIVE555 Streaming Media\" or \"libnemesi\" libraries.\n", CONF_TYPE_PRINT, CONF_NOCFG, 0, 0, NULL},
|
||||
{"rtsp-stream-over-tcp", "-rtsp-stream-over-tcp requires the \"LIVE555 Streaming Media\" or \"libnemesi\" libraries.\n", CONF_TYPE_PRINT, CONF_NOCFG, 0, 0, NULL},
|
||||
#endif /* defined(CONFIG_LIBNEMESI) || defined(CONFIG_LIVE555) */
|
||||
#ifdef CONFIG_LIBNEMESI
|
||||
{"rtsp-stream-over-sctp", &rtsp_transport_sctp, CONF_TYPE_FLAG, 0, 0, 1, NULL},
|
||||
{"rtsp-stream-over-sctp", &rtsp_transport_sctp, CONF_TYPE_FLAG, 0, 0, 1, NULL},
|
||||
#else
|
||||
{"rtsp-stream-over-sctp", "-rtsp-stream-over-sctp requires the \"libnemesi\" library\n", CONF_TYPE_PRINT, CONF_NOCFG, 0, 0, NULL},
|
||||
{"rtsp-stream-over-sctp", "-rtsp-stream-over-sctp requires the \"libnemesi\" library\n", CONF_TYPE_PRINT, CONF_NOCFG, 0, 0, NULL},
|
||||
#endif /* CONFIG_LIBNEMESI */
|
||||
#ifdef CONFIG_NETWORK
|
||||
{"rtsp-port", &rtsp_port, CONF_TYPE_INT, CONF_RANGE, -1, 65535, NULL},
|
||||
{"rtsp-destination", &rtsp_destination, CONF_TYPE_STRING, CONF_MIN, 0, 0, NULL},
|
||||
{"rtsp-port", &rtsp_port, CONF_TYPE_INT, CONF_RANGE, -1, 65535, NULL},
|
||||
{"rtsp-destination", &rtsp_destination, CONF_TYPE_STRING, CONF_MIN, 0, 0, NULL},
|
||||
#else
|
||||
{"rtsp-port", "MPlayer was compiled without network support.\n", CONF_TYPE_PRINT, CONF_NOCFG, 0, 0, NULL},
|
||||
{"rtsp-destination", "MPlayer was compiled without network support.\n", CONF_TYPE_PRINT, CONF_NOCFG, 0, 0, NULL},
|
||||
{"rtsp-port", "MPlayer was compiled without network support.\n", CONF_TYPE_PRINT, CONF_NOCFG, 0, 0, NULL},
|
||||
{"rtsp-destination", "MPlayer was compiled without network support.\n", CONF_TYPE_PRINT, CONF_NOCFG, 0, 0, NULL},
|
||||
#endif /* CONFIG_NETWORK */
|
||||
|
||||
// ------------------------- demuxer options --------------------
|
||||
|
||||
// number of frames to play/convert
|
||||
{"frames", &play_n_frames_mf, CONF_TYPE_INT, CONF_MIN, 0, 0, NULL},
|
||||
// number of frames to play/convert
|
||||
{"frames", &play_n_frames_mf, CONF_TYPE_INT, CONF_MIN, 0, 0, NULL},
|
||||
|
||||
// seek to byte/seconds position
|
||||
{"sb", &seek_to_byte, CONF_TYPE_POSITION, CONF_MIN, 0, 0, NULL},
|
||||
{"ss", &seek_to_sec, CONF_TYPE_TIME, 0, 0, 0, NULL},
|
||||
// seek to byte/seconds position
|
||||
{"sb", &seek_to_byte, CONF_TYPE_POSITION, CONF_MIN, 0, 0, NULL},
|
||||
{"ss", &seek_to_sec, CONF_TYPE_TIME, 0, 0, 0, NULL},
|
||||
|
||||
// stop at given position
|
||||
{"endpos", &end_at, CONF_TYPE_TIME_SIZE, 0, 0, 0, NULL},
|
||||
// stop at given position
|
||||
{"endpos", &end_at, CONF_TYPE_TIME_SIZE, 0, 0, 0, NULL},
|
||||
|
||||
{"edl", &edl_filename, CONF_TYPE_STRING, 0, 0, 0, NULL},
|
||||
{"edl", &edl_filename, CONF_TYPE_STRING, 0, 0, 0, NULL},
|
||||
|
||||
// AVI specific: force non-interleaved mode
|
||||
{"ni", &force_ni, CONF_TYPE_FLAG, 0, 0, 1, NULL},
|
||||
{"noni", &force_ni, CONF_TYPE_FLAG, 0, 1, 0, NULL},
|
||||
// AVI specific: force non-interleaved mode
|
||||
{"ni", &force_ni, CONF_TYPE_FLAG, 0, 0, 1, NULL},
|
||||
{"noni", &force_ni, CONF_TYPE_FLAG, 0, 1, 0, NULL},
|
||||
|
||||
// AVI and Ogg only: (re)build index at startup
|
||||
{"noidx", &index_mode, CONF_TYPE_FLAG, 0, -1, 0, NULL},
|
||||
{"idx", &index_mode, CONF_TYPE_FLAG, 0, -1, 1, NULL},
|
||||
{"forceidx", &index_mode, CONF_TYPE_FLAG, 0, -1, 2, NULL},
|
||||
{"saveidx", &index_file_save, CONF_TYPE_STRING, 0, 0, 0, NULL},
|
||||
{"loadidx", &index_file_load, CONF_TYPE_STRING, 0, 0, 0, NULL},
|
||||
// AVI and Ogg only: (re)build index at startup
|
||||
{"noidx", &index_mode, CONF_TYPE_FLAG, 0, -1, 0, NULL},
|
||||
{"idx", &index_mode, CONF_TYPE_FLAG, 0, -1, 1, NULL},
|
||||
{"forceidx", &index_mode, CONF_TYPE_FLAG, 0, -1, 2, NULL},
|
||||
{"saveidx", &index_file_save, CONF_TYPE_STRING, 0, 0, 0, NULL},
|
||||
{"loadidx", &index_file_load, CONF_TYPE_STRING, 0, 0, 0, NULL},
|
||||
|
||||
// select audio/video/subtitle stream
|
||||
OPT_INTRANGE("aid", audio_id, 0, -2, 8190),
|
||||
{"ausid", &audio_substream_id, CONF_TYPE_INT, 0, 0, 0, NULL},
|
||||
OPT_INTRANGE("vid", video_id, 0, -2, 8190),
|
||||
OPT_INTRANGE("sid", sub_id, 0, -2, 8190),
|
||||
OPT_FLAG_CONSTANTS("nosub", sub_id, 0, -1, -2),
|
||||
OPT_FLAG_CONSTANTS("novideo", video_id, 0, -1, -2),
|
||||
// select audio/video/subtitle stream
|
||||
OPT_INTRANGE("aid", audio_id, 0, -2, 8190),
|
||||
{"ausid", &audio_substream_id, CONF_TYPE_INT, 0, 0, 0, NULL},
|
||||
OPT_INTRANGE("vid", video_id, 0, -2, 8190),
|
||||
OPT_INTRANGE("sid", sub_id, 0, -2, 8190),
|
||||
OPT_FLAG_CONSTANTS("nosub", sub_id, 0, -1, -2),
|
||||
OPT_FLAG_CONSTANTS("novideo", video_id, 0, -1, -2),
|
||||
|
||||
{ "hr-mp3-seek", &hr_mp3_seek, CONF_TYPE_FLAG, 0, 0, 1, NULL },
|
||||
{ "nohr-mp3-seek", &hr_mp3_seek, CONF_TYPE_FLAG, 0, 1, 0, NULL},
|
||||
{ "hr-mp3-seek", &hr_mp3_seek, CONF_TYPE_FLAG, 0, 0, 1, NULL },
|
||||
{ "nohr-mp3-seek", &hr_mp3_seek, CONF_TYPE_FLAG, 0, 1, 0, NULL},
|
||||
|
||||
{ "rawaudio", &demux_rawaudio_opts, CONF_TYPE_SUBCONFIG, 0, 0, 0, NULL},
|
||||
{ "rawvideo", &demux_rawvideo_opts, CONF_TYPE_SUBCONFIG, 0, 0, 0, NULL},
|
||||
{ "rawaudio", &demux_rawaudio_opts, CONF_TYPE_SUBCONFIG, 0, 0, 0, NULL},
|
||||
{ "rawvideo", &demux_rawvideo_opts, CONF_TYPE_SUBCONFIG, 0, 0, 0, NULL},
|
||||
|
||||
#ifdef CONFIG_CDDA
|
||||
{ "cdda", &cdda_opts, CONF_TYPE_SUBCONFIG, 0, 0, 0, NULL},
|
||||
{ "cdda", &cdda_opts, CONF_TYPE_SUBCONFIG, 0, 0, 0, NULL},
|
||||
#endif
|
||||
|
||||
// demuxer.c - select audio/sub file/demuxer
|
||||
{ "audiofile", &audio_stream, CONF_TYPE_STRING, 0, 0, 0, NULL },
|
||||
{ "audiofile-cache", &audio_stream_cache, CONF_TYPE_INT, CONF_RANGE, 50, 65536, NULL},
|
||||
{ "subfile", &sub_stream, CONF_TYPE_STRING, 0, 0, 0, NULL },
|
||||
{ "demuxer", &demuxer_name, CONF_TYPE_STRING, 0, 0, 0, NULL },
|
||||
{ "audio-demuxer", &audio_demuxer_name, CONF_TYPE_STRING, 0, 0, 0, NULL },
|
||||
{ "sub-demuxer", &sub_demuxer_name, CONF_TYPE_STRING, 0, 0, 0, NULL },
|
||||
{ "extbased", &extension_parsing, CONF_TYPE_FLAG, 0, 0, 1, NULL },
|
||||
{ "noextbased", &extension_parsing, CONF_TYPE_FLAG, 0, 1, 0, NULL },
|
||||
// demuxer.c - select audio/sub file/demuxer
|
||||
{ "audiofile", &audio_stream, CONF_TYPE_STRING, 0, 0, 0, NULL },
|
||||
{ "audiofile-cache", &audio_stream_cache, CONF_TYPE_INT, CONF_RANGE, 50, 65536, NULL},
|
||||
{ "subfile", &sub_stream, CONF_TYPE_STRING, 0, 0, 0, NULL },
|
||||
{ "demuxer", &demuxer_name, CONF_TYPE_STRING, 0, 0, 0, NULL },
|
||||
{ "audio-demuxer", &audio_demuxer_name, CONF_TYPE_STRING, 0, 0, 0, NULL },
|
||||
{ "sub-demuxer", &sub_demuxer_name, CONF_TYPE_STRING, 0, 0, 0, NULL },
|
||||
{ "extbased", &extension_parsing, CONF_TYPE_FLAG, 0, 0, 1, NULL },
|
||||
{ "noextbased", &extension_parsing, CONF_TYPE_FLAG, 0, 1, 0, NULL },
|
||||
|
||||
{"mf", (void *) mfopts_conf, CONF_TYPE_SUBCONFIG, 0,0,0, NULL},
|
||||
{"mf", (void *) mfopts_conf, CONF_TYPE_SUBCONFIG, 0,0,0, NULL},
|
||||
#ifdef CONFIG_RADIO
|
||||
{"radio", radioopts_conf, CONF_TYPE_SUBCONFIG, 0, 0, 0, NULL},
|
||||
{"radio", radioopts_conf, CONF_TYPE_SUBCONFIG, 0, 0, 0, NULL},
|
||||
#else
|
||||
{"radio", "MPlayer was compiled without Radio interface support.\n", CONF_TYPE_PRINT, 0, 0, 0, NULL},
|
||||
{"radio", "MPlayer was compiled without Radio interface support.\n", CONF_TYPE_PRINT, 0, 0, 0, NULL},
|
||||
#endif /* CONFIG_RADIO */
|
||||
#ifdef CONFIG_TV
|
||||
{"tv", (void *) tvopts_conf, CONF_TYPE_SUBCONFIG, 0, 0, 0, NULL},
|
||||
{"tv", (void *) tvopts_conf, CONF_TYPE_SUBCONFIG, 0, 0, 0, NULL},
|
||||
#else
|
||||
{"tv", "MPlayer was compiled without TV interface support.\n", CONF_TYPE_PRINT, 0, 0, 0, NULL},
|
||||
{"tv", "MPlayer was compiled without TV interface support.\n", CONF_TYPE_PRINT, 0, 0, 0, NULL},
|
||||
#endif /* CONFIG_TV */
|
||||
#ifdef CONFIG_PVR
|
||||
{"pvr", (void *) pvropts_conf, CONF_TYPE_SUBCONFIG, 0, 0, 0, NULL},
|
||||
{"pvr", (void *) pvropts_conf, CONF_TYPE_SUBCONFIG, 0, 0, 0, NULL},
|
||||
#else
|
||||
{"pvr", "MPlayer was compiled without V4L2/PVR interface support.\n", CONF_TYPE_PRINT, 0, 0, 0, NULL},
|
||||
{"pvr", "MPlayer was compiled without V4L2/PVR interface support.\n", CONF_TYPE_PRINT, 0, 0, 0, NULL},
|
||||
#endif /* CONFIG_PVR */
|
||||
{"vivo", (void *) vivoopts_conf, CONF_TYPE_SUBCONFIG, 0, 0, 0, NULL},
|
||||
{"vivo", (void *) vivoopts_conf, CONF_TYPE_SUBCONFIG, 0, 0, 0, NULL},
|
||||
#ifdef CONFIG_DVBIN
|
||||
{"dvbin", (void *) dvbin_opts_conf, CONF_TYPE_SUBCONFIG, 0, 0, 0, NULL},
|
||||
{"dvbin", (void *) dvbin_opts_conf, CONF_TYPE_SUBCONFIG, 0, 0, 0, NULL},
|
||||
#endif
|
||||
|
||||
// ------------------------- a-v sync options --------------------
|
||||
|
||||
// AVI specific: A-V sync mode (bps vs. interleaving)
|
||||
{"bps", &pts_from_bps, CONF_TYPE_FLAG, 0, 0, 1, NULL},
|
||||
{"nobps", &pts_from_bps, CONF_TYPE_FLAG, 0, 1, 0, NULL},
|
||||
// AVI specific: A-V sync mode (bps vs. interleaving)
|
||||
{"bps", &pts_from_bps, CONF_TYPE_FLAG, 0, 0, 1, NULL},
|
||||
{"nobps", &pts_from_bps, CONF_TYPE_FLAG, 0, 1, 0, NULL},
|
||||
|
||||
// set A-V sync correction speed (0=disables it):
|
||||
{"mc", &default_max_pts_correction, CONF_TYPE_FLOAT, CONF_RANGE, 0, 100, NULL},
|
||||
// set A-V sync correction speed (0=disables it):
|
||||
{"mc", &default_max_pts_correction, CONF_TYPE_FLOAT, CONF_RANGE, 0, 100, NULL},
|
||||
|
||||
// force video/audio rate:
|
||||
{"fps", &force_fps, CONF_TYPE_DOUBLE, CONF_MIN, 0, 0, NULL},
|
||||
{"srate", &force_srate, CONF_TYPE_INT, CONF_RANGE, 1000, 8*48000, NULL},
|
||||
{"channels", &audio_output_channels, CONF_TYPE_INT, CONF_RANGE, 1, 8, NULL},
|
||||
{"format", &audio_output_format, CONF_TYPE_AFMT, 0, 0, 0, NULL},
|
||||
OPT_FLOATRANGE("speed", playback_speed, 0, 0.01, 100.0),
|
||||
// force video/audio rate:
|
||||
{"fps", &force_fps, CONF_TYPE_DOUBLE, CONF_MIN, 0, 0, NULL},
|
||||
{"srate", &force_srate, CONF_TYPE_INT, CONF_RANGE, 1000, 8*48000, NULL},
|
||||
{"channels", &audio_output_channels, CONF_TYPE_INT, CONF_RANGE, 1, 8, NULL},
|
||||
{"format", &audio_output_format, CONF_TYPE_AFMT, 0, 0, 0, NULL},
|
||||
OPT_FLOATRANGE("speed", playback_speed, 0, 0.01, 100.0),
|
||||
|
||||
// set a-v distance
|
||||
{"delay", &audio_delay, CONF_TYPE_FLOAT, CONF_RANGE, -100.0, 100.0, NULL},
|
||||
// set a-v distance
|
||||
{"delay", &audio_delay, CONF_TYPE_FLOAT, CONF_RANGE, -100.0, 100.0, NULL},
|
||||
|
||||
// ignore header-specified delay (dwStart)
|
||||
{"ignore-start", &ignore_start, CONF_TYPE_FLAG, 0, 0, 1, NULL},
|
||||
{"noignore-start", &ignore_start, CONF_TYPE_FLAG, 0, 1, 0, NULL},
|
||||
// ignore header-specified delay (dwStart)
|
||||
{"ignore-start", &ignore_start, CONF_TYPE_FLAG, 0, 0, 1, NULL},
|
||||
{"noignore-start", &ignore_start, CONF_TYPE_FLAG, 0, 1, 0, NULL},
|
||||
|
||||
#ifdef CONFIG_LIBA52
|
||||
{"a52drc", &a52_drc_level, CONF_TYPE_FLOAT, CONF_RANGE, 0, 1, NULL},
|
||||
{"a52drc", &a52_drc_level, CONF_TYPE_FLOAT, CONF_RANGE, 0, 1, NULL},
|
||||
#endif
|
||||
|
||||
// ------------------------- codec/vfilter options --------------------
|
||||
|
||||
// MP3-only: select stereo/left/right
|
||||
// MP3-only: select stereo/left/right
|
||||
#ifdef CONFIG_FAKE_MONO
|
||||
{"stereo", &fakemono, CONF_TYPE_INT, CONF_RANGE, 0, 2, NULL},
|
||||
{"stereo", &fakemono, CONF_TYPE_INT, CONF_RANGE, 0, 2, NULL},
|
||||
#endif
|
||||
|
||||
// disable audio
|
||||
OPT_FLAG_CONSTANTS("sound", audio_id, 0, -2, -1),
|
||||
OPT_FLAG_CONSTANTS("nosound", audio_id, 0, -1, -2),
|
||||
// disable audio
|
||||
OPT_FLAG_CONSTANTS("sound", audio_id, 0, -2, -1),
|
||||
OPT_FLAG_CONSTANTS("nosound", audio_id, 0, -1, -2),
|
||||
|
||||
{"af*", &af_cfg.list, CONF_TYPE_STRING_LIST, 0, 0, 0, NULL},
|
||||
{"af-adv", (void *) audio_filter_conf, CONF_TYPE_SUBCONFIG, 0, 0, 0, NULL},
|
||||
{"af*", &af_cfg.list, CONF_TYPE_STRING_LIST, 0, 0, 0, NULL},
|
||||
{"af-adv", (void *) audio_filter_conf, CONF_TYPE_SUBCONFIG, 0, 0, 0, NULL},
|
||||
|
||||
{"vop", "-vop has been removed, use -vf instead.\n", CONF_TYPE_PRINT, CONF_NOCFG ,0,0, NULL},
|
||||
{"vop", "-vop has been removed, use -vf instead.\n", CONF_TYPE_PRINT, CONF_NOCFG ,0,0, NULL},
|
||||
OPT_SETTINGSLIST("vf*", vf_settings, 0, &vf_obj_list),
|
||||
// select audio/video codec (by name) or codec family (by number):
|
||||
// {"afm", &audio_family, CONF_TYPE_INT, CONF_MIN, 0, 22, NULL}, // keep ranges in sync
|
||||
// {"vfm", &video_family, CONF_TYPE_INT, CONF_MIN, 0, 29, NULL}, // with codec-cfg.c
|
||||
// {"afm", &audio_fm, CONF_TYPE_STRING, 0, 0, 0, NULL},
|
||||
{"afm", &audio_fm_list, CONF_TYPE_STRING_LIST, 0, 0, 0, NULL},
|
||||
{"vfm", &video_fm_list, CONF_TYPE_STRING_LIST, 0, 0, 0, NULL},
|
||||
// {"ac", &audio_codec, CONF_TYPE_STRING, 0, 0, 0, NULL},
|
||||
{"ac", &audio_codec_list, CONF_TYPE_STRING_LIST, 0, 0, 0, NULL},
|
||||
{"vc", &video_codec_list, CONF_TYPE_STRING_LIST, 0, 0, 0, NULL},
|
||||
// select audio/video codec (by name) or codec family (by number):
|
||||
{"afm", &audio_fm_list, CONF_TYPE_STRING_LIST, 0, 0, 0, NULL},
|
||||
{"vfm", &video_fm_list, CONF_TYPE_STRING_LIST, 0, 0, 0, NULL},
|
||||
{"ac", &audio_codec_list, CONF_TYPE_STRING_LIST, 0, 0, 0, NULL},
|
||||
{"vc", &video_codec_list, CONF_TYPE_STRING_LIST, 0, 0, 0, NULL},
|
||||
|
||||
// postprocessing:
|
||||
#ifdef CONFIG_LIBAVCODEC
|
||||
{"pp", &divx_quality, CONF_TYPE_INT, 0, 0, 0, NULL},
|
||||
{"pp", &divx_quality, CONF_TYPE_INT, 0, 0, 0, NULL},
|
||||
#endif
|
||||
#ifdef CONFIG_LIBPOSTPROC
|
||||
{"pphelp", &pp_help, CONF_TYPE_PRINT_INDIRECT, CONF_NOCFG, 0, 0, NULL},
|
||||
{"pphelp", &pp_help, CONF_TYPE_PRINT_INDIRECT, CONF_NOCFG, 0, 0, NULL},
|
||||
#endif
|
||||
|
||||
// scaling:
|
||||
{"sws", &sws_flags, CONF_TYPE_INT, 0, 0, 2, NULL},
|
||||
{"ssf", (void *) scaler_filter_conf, CONF_TYPE_SUBCONFIG, 0, 0, 0, NULL},
|
||||
OPT_FLAG_ON("zoom", softzoom, 0),
|
||||
OPT_FLAG_OFF("nozoom", softzoom, 0),
|
||||
OPT_FLOATRANGE("aspect", movie_aspect, 0, 0.2, 3.0),
|
||||
OPT_FLAG_CONSTANTS("noaspect", movie_aspect, 0, 0, 0),
|
||||
OPT_FLOATRANGE("xy", screen_size_xy, 0, 0.001, 4096),
|
||||
// scaling:
|
||||
{"sws", &sws_flags, CONF_TYPE_INT, 0, 0, 2, NULL},
|
||||
{"ssf", (void *) scaler_filter_conf, CONF_TYPE_SUBCONFIG, 0, 0, 0, NULL},
|
||||
OPT_FLAG_ON("zoom", softzoom, 0),
|
||||
OPT_FLAG_OFF("nozoom", softzoom, 0),
|
||||
OPT_FLOATRANGE("aspect", movie_aspect, 0, 0.2, 3.0),
|
||||
OPT_FLAG_CONSTANTS("noaspect", movie_aspect, 0, 0, 0),
|
||||
OPT_FLOATRANGE("xy", screen_size_xy, 0, 0.001, 4096),
|
||||
|
||||
OPT_FLAG_CONSTANTS("flip", flip, 0, -1, 1),
|
||||
OPT_FLAG_CONSTANTS("noflip", flip, 0, -1, 0),
|
||||
{"tsfastparse", "-tsfastparse is no longer a valid option.\n", CONF_TYPE_PRINT, CONF_NOCFG ,0,0, NULL
|
||||
OPT_FLAG_CONSTANTS("flip", flip, 0, -1, 1),
|
||||
OPT_FLAG_CONSTANTS("noflip", flip, 0, -1, 0),
|
||||
{"tsfastparse", "-tsfastparse is no longer a valid option.\n", CONF_TYPE_PRINT, CONF_NOCFG ,0,0, NULL
|
||||
},
|
||||
{"tsprog", &ts_prog, CONF_TYPE_INT, CONF_RANGE, 0, 65534, NULL},
|
||||
{"tsprog", &ts_prog, CONF_TYPE_INT, CONF_RANGE, 0, 65534, NULL},
|
||||
#define TS_MAX_PROBE_SIZE 2000000 /* don't forget to change this in libmpdemux/demux_ts.c too */
|
||||
{"tsprobe", &ts_probe, CONF_TYPE_POSITION, 0, 0, TS_MAX_PROBE_SIZE, NULL},
|
||||
{"psprobe", &ps_probe, CONF_TYPE_POSITION, 0, 0, TS_MAX_PROBE_SIZE, NULL},
|
||||
{"tskeepbroken", &ts_keep_broken, CONF_TYPE_FLAG, 0, 0, 1, NULL},
|
||||
{"tsprobe", &ts_probe, CONF_TYPE_POSITION, 0, 0, TS_MAX_PROBE_SIZE, NULL},
|
||||
{"psprobe", &ps_probe, CONF_TYPE_POSITION, 0, 0, TS_MAX_PROBE_SIZE, NULL},
|
||||
{"tskeepbroken", &ts_keep_broken, CONF_TYPE_FLAG, 0, 0, 1, NULL},
|
||||
|
||||
// draw by slices or whole frame (useful with libmpeg2/libavcodec)
|
||||
OPT_FLAG_ON("slices", vd_use_slices, 0),
|
||||
OPT_FLAG_OFF("noslices", vd_use_slices, 0),
|
||||
{"field-dominance", &field_dominance, CONF_TYPE_INT, CONF_RANGE, -1, 1, NULL},
|
||||
// draw by slices or whole frame (useful with libmpeg2/libavcodec)
|
||||
OPT_FLAG_ON("slices", vd_use_slices, 0),
|
||||
OPT_FLAG_OFF("noslices", vd_use_slices, 0),
|
||||
{"field-dominance", &field_dominance, CONF_TYPE_INT, CONF_RANGE, -1, 1, NULL},
|
||||
|
||||
#ifdef CONFIG_LIBAVCODEC
|
||||
{"lavdopts", (void *) lavc_decode_opts_conf, CONF_TYPE_SUBCONFIG, 0, 0, 0, NULL},
|
||||
{"lavdopts", (void *) lavc_decode_opts_conf, CONF_TYPE_SUBCONFIG, 0, 0, 0, NULL},
|
||||
#endif
|
||||
#ifdef CONFIG_LIBAVFORMAT
|
||||
{"lavfdopts", (void *) lavfdopts_conf, CONF_TYPE_SUBCONFIG, CONF_GLOBAL, 0, 0, NULL},
|
||||
{"lavfdopts", (void *) lavfdopts_conf, CONF_TYPE_SUBCONFIG, CONF_GLOBAL, 0, 0, NULL},
|
||||
#endif
|
||||
#ifdef CONFIG_XVID4
|
||||
{"xvidopts", xvid_dec_opts, CONF_TYPE_SUBCONFIG, 0, 0, 0, NULL},
|
||||
{"xvidopts", xvid_dec_opts, CONF_TYPE_SUBCONFIG, 0, 0, 0, NULL},
|
||||
#endif
|
||||
{"codecs-file", &codecs_file, CONF_TYPE_STRING, 0, 0, 0, NULL},
|
||||
{"codecs-file", &codecs_file, CONF_TYPE_STRING, 0, 0, 0, NULL},
|
||||
// ------------------------- subtitles options --------------------
|
||||
|
||||
{"sub", &sub_name, CONF_TYPE_STRING_LIST, 0, 0, 0, NULL},
|
||||
{"sub", &sub_name, CONF_TYPE_STRING_LIST, 0, 0, 0, NULL},
|
||||
#ifdef CONFIG_FRIBIDI
|
||||
{"fribidi-charset", &fribidi_charset, CONF_TYPE_STRING, 0, 0, 0, NULL},
|
||||
{"flip-hebrew", &flip_hebrew, CONF_TYPE_FLAG, 0, 0, 1, NULL},
|
||||
{"noflip-hebrew", &flip_hebrew, CONF_TYPE_FLAG, 0, 1, 0, NULL},
|
||||
{"flip-hebrew-commas", &fribidi_flip_commas, CONF_TYPE_FLAG, 0, 1, 0, NULL},
|
||||
{"noflip-hebrew-commas", &fribidi_flip_commas, CONF_TYPE_FLAG, 0, 0, 1, NULL},
|
||||
{"fribidi-charset", &fribidi_charset, CONF_TYPE_STRING, 0, 0, 0, NULL},
|
||||
{"flip-hebrew", &flip_hebrew, CONF_TYPE_FLAG, 0, 0, 1, NULL},
|
||||
{"noflip-hebrew", &flip_hebrew, CONF_TYPE_FLAG, 0, 1, 0, NULL},
|
||||
{"flip-hebrew-commas", &fribidi_flip_commas, CONF_TYPE_FLAG, 0, 1, 0, NULL},
|
||||
{"noflip-hebrew-commas", &fribidi_flip_commas, CONF_TYPE_FLAG, 0, 0, 1, NULL},
|
||||
#else
|
||||
{"fribidi-charset", "MPlayer was compiled without FriBiDi support.\n", CONF_TYPE_PRINT, CONF_NOCFG, 0, 0, NULL},
|
||||
{"flip-hebrew", "MPlayer was compiled without FriBiDi support.\n", CONF_TYPE_PRINT, CONF_NOCFG, 0, 0, NULL},
|
||||
{"noflip-hebrew", "MPlayer was compiled without FriBiDi support.\n", CONF_TYPE_PRINT, CONF_NOCFG, 0, 0, NULL},
|
||||
{"flip-hebrew-commas", "MPlayer was compiled without FriBiDi support.\n", CONF_TYPE_PRINT, CONF_NOCFG, 0, 0, NULL},
|
||||
{"noflip-hebrew-commas", "MPlayer was compiled without FriBiDi support.\n", CONF_TYPE_PRINT, CONF_NOCFG, 0, 0, NULL},
|
||||
{"fribidi-charset", "MPlayer was compiled without FriBiDi support.\n", CONF_TYPE_PRINT, CONF_NOCFG, 0, 0, NULL},
|
||||
{"flip-hebrew", "MPlayer was compiled without FriBiDi support.\n", CONF_TYPE_PRINT, CONF_NOCFG, 0, 0, NULL},
|
||||
{"noflip-hebrew", "MPlayer was compiled without FriBiDi support.\n", CONF_TYPE_PRINT, CONF_NOCFG, 0, 0, NULL},
|
||||
{"flip-hebrew-commas", "MPlayer was compiled without FriBiDi support.\n", CONF_TYPE_PRINT, CONF_NOCFG, 0, 0, NULL},
|
||||
{"noflip-hebrew-commas", "MPlayer was compiled without FriBiDi support.\n", CONF_TYPE_PRINT, CONF_NOCFG, 0, 0, NULL},
|
||||
#endif /* CONFIG_FRIBIDI */
|
||||
#ifdef CONFIG_ICONV
|
||||
{"subcp", &sub_cp, CONF_TYPE_STRING, 0, 0, 0, NULL},
|
||||
{"subcp", &sub_cp, CONF_TYPE_STRING, 0, 0, 0, NULL},
|
||||
#endif
|
||||
{"subdelay", &sub_delay, CONF_TYPE_FLOAT, 0, 0.0, 10.0, NULL},
|
||||
{"subfps", &sub_fps, CONF_TYPE_FLOAT, 0, 0.0, 10.0, NULL},
|
||||
{"autosub", &sub_auto, CONF_TYPE_FLAG, 0, 0, 1, NULL},
|
||||
{"noautosub", &sub_auto, CONF_TYPE_FLAG, 0, 1, 0, NULL},
|
||||
{"unicode", &sub_unicode, CONF_TYPE_FLAG, 0, 0, 1, NULL},
|
||||
{"nounicode", &sub_unicode, CONF_TYPE_FLAG, 0, 1, 0, NULL},
|
||||
{"utf8", &sub_utf8, CONF_TYPE_FLAG, 0, 0, 1, NULL},
|
||||
{"noutf8", &sub_utf8, CONF_TYPE_FLAG, 0, 1, 0, NULL},
|
||||
{"forcedsubsonly", &forced_subs_only, CONF_TYPE_FLAG, 0, 0, 1, NULL},
|
||||
// specify IFO file for VOBSUB subtitle
|
||||
{"ifo", &spudec_ifo, CONF_TYPE_STRING, 0, 0, 0, NULL},
|
||||
// enable Closed Captioning display
|
||||
{"subcc", &subcc_enabled, CONF_TYPE_FLAG, 0, 0, 1, NULL},
|
||||
{"nosubcc", &subcc_enabled, CONF_TYPE_FLAG, 0, 1, 0, NULL},
|
||||
{"overlapsub", &suboverlap_enabled, CONF_TYPE_FLAG, 0, 0, 2, NULL},
|
||||
{"nooverlapsub", &suboverlap_enabled, CONF_TYPE_FLAG, 0, 0, 0, NULL},
|
||||
{"sub-bg-color", &sub_bg_color, CONF_TYPE_INT, CONF_RANGE, 0, 255, NULL},
|
||||
{"sub-bg-alpha", &sub_bg_alpha, CONF_TYPE_INT, CONF_RANGE, 0, 255, NULL},
|
||||
{"sub-no-text-pp", &sub_no_text_pp, CONF_TYPE_FLAG, 0, 0, 1, NULL},
|
||||
{"sub-fuzziness", &sub_match_fuzziness, CONF_TYPE_INT, CONF_RANGE, 0, 2, NULL},
|
||||
{"font", &font_name, CONF_TYPE_STRING, 0, 0, 0, NULL},
|
||||
{"subfont", &sub_font_name, CONF_TYPE_STRING, 0, 0, 0, NULL},
|
||||
{"ffactor", &font_factor, CONF_TYPE_FLOAT, CONF_RANGE, 0.0, 10.0, NULL},
|
||||
{"subpos", &sub_pos, CONF_TYPE_INT, CONF_RANGE, 0, 100, NULL},
|
||||
{"subalign", &sub_alignment, CONF_TYPE_INT, CONF_RANGE, 0, 2, NULL},
|
||||
{"subwidth", &sub_width_p, CONF_TYPE_INT, CONF_RANGE, 10, 100, NULL},
|
||||
{"spualign", &spu_alignment, CONF_TYPE_INT, CONF_RANGE, -1, 2, NULL},
|
||||
{"spuaa", &spu_aamode, CONF_TYPE_INT, CONF_RANGE, 0, 31, NULL},
|
||||
{"spugauss", &spu_gaussvar, CONF_TYPE_FLOAT, CONF_RANGE, 0.0, 3.0, NULL},
|
||||
{"subdelay", &sub_delay, CONF_TYPE_FLOAT, 0, 0.0, 10.0, NULL},
|
||||
{"subfps", &sub_fps, CONF_TYPE_FLOAT, 0, 0.0, 10.0, NULL},
|
||||
{"autosub", &sub_auto, CONF_TYPE_FLAG, 0, 0, 1, NULL},
|
||||
{"noautosub", &sub_auto, CONF_TYPE_FLAG, 0, 1, 0, NULL},
|
||||
{"unicode", &sub_unicode, CONF_TYPE_FLAG, 0, 0, 1, NULL},
|
||||
{"nounicode", &sub_unicode, CONF_TYPE_FLAG, 0, 1, 0, NULL},
|
||||
{"utf8", &sub_utf8, CONF_TYPE_FLAG, 0, 0, 1, NULL},
|
||||
{"noutf8", &sub_utf8, CONF_TYPE_FLAG, 0, 1, 0, NULL},
|
||||
{"forcedsubsonly", &forced_subs_only, CONF_TYPE_FLAG, 0, 0, 1, NULL},
|
||||
// specify IFO file for VOBSUB subtitle
|
||||
{"ifo", &spudec_ifo, CONF_TYPE_STRING, 0, 0, 0, NULL},
|
||||
// enable Closed Captioning display
|
||||
{"subcc", &subcc_enabled, CONF_TYPE_FLAG, 0, 0, 1, NULL},
|
||||
{"nosubcc", &subcc_enabled, CONF_TYPE_FLAG, 0, 1, 0, NULL},
|
||||
{"overlapsub", &suboverlap_enabled, CONF_TYPE_FLAG, 0, 0, 2, NULL},
|
||||
{"nooverlapsub", &suboverlap_enabled, CONF_TYPE_FLAG, 0, 0, 0, NULL},
|
||||
{"sub-bg-color", &sub_bg_color, CONF_TYPE_INT, CONF_RANGE, 0, 255, NULL},
|
||||
{"sub-bg-alpha", &sub_bg_alpha, CONF_TYPE_INT, CONF_RANGE, 0, 255, NULL},
|
||||
{"sub-no-text-pp", &sub_no_text_pp, CONF_TYPE_FLAG, 0, 0, 1, NULL},
|
||||
{"sub-fuzziness", &sub_match_fuzziness, CONF_TYPE_INT, CONF_RANGE, 0, 2, NULL},
|
||||
{"font", &font_name, CONF_TYPE_STRING, 0, 0, 0, NULL},
|
||||
{"subfont", &sub_font_name, CONF_TYPE_STRING, 0, 0, 0, NULL},
|
||||
{"ffactor", &font_factor, CONF_TYPE_FLOAT, CONF_RANGE, 0.0, 10.0, NULL},
|
||||
{"subpos", &sub_pos, CONF_TYPE_INT, CONF_RANGE, 0, 100, NULL},
|
||||
{"subalign", &sub_alignment, CONF_TYPE_INT, CONF_RANGE, 0, 2, NULL},
|
||||
{"subwidth", &sub_width_p, CONF_TYPE_INT, CONF_RANGE, 10, 100, NULL},
|
||||
{"spualign", &spu_alignment, CONF_TYPE_INT, CONF_RANGE, -1, 2, NULL},
|
||||
{"spuaa", &spu_aamode, CONF_TYPE_INT, CONF_RANGE, 0, 31, NULL},
|
||||
{"spugauss", &spu_gaussvar, CONF_TYPE_FLOAT, CONF_RANGE, 0.0, 3.0, NULL},
|
||||
#ifdef CONFIG_FREETYPE
|
||||
{"subfont-encoding", &subtitle_font_encoding, CONF_TYPE_STRING, 0, 0, 0, NULL},
|
||||
{"subfont-text-scale", &text_font_scale_factor, CONF_TYPE_FLOAT, CONF_RANGE, 0, 100, NULL},
|
||||
{"subfont-osd-scale", &osd_font_scale_factor, CONF_TYPE_FLOAT, CONF_RANGE, 0, 100, NULL},
|
||||
{"subfont-blur", &subtitle_font_radius, CONF_TYPE_FLOAT, CONF_RANGE, 0, 8, NULL},
|
||||
{"subfont-outline", &subtitle_font_thickness, CONF_TYPE_FLOAT, CONF_RANGE, 0, 8, NULL},
|
||||
{"subfont-autoscale", &subtitle_autoscale, CONF_TYPE_INT, CONF_RANGE, 0, 3, NULL},
|
||||
{"subfont-encoding", &subtitle_font_encoding, CONF_TYPE_STRING, 0, 0, 0, NULL},
|
||||
{"subfont-text-scale", &text_font_scale_factor, CONF_TYPE_FLOAT, CONF_RANGE, 0, 100, NULL},
|
||||
{"subfont-osd-scale", &osd_font_scale_factor, CONF_TYPE_FLOAT, CONF_RANGE, 0, 100, NULL},
|
||||
{"subfont-blur", &subtitle_font_radius, CONF_TYPE_FLOAT, CONF_RANGE, 0, 8, NULL},
|
||||
{"subfont-outline", &subtitle_font_thickness, CONF_TYPE_FLOAT, CONF_RANGE, 0, 8, NULL},
|
||||
{"subfont-autoscale", &subtitle_autoscale, CONF_TYPE_INT, CONF_RANGE, 0, 3, NULL},
|
||||
#endif
|
||||
#ifdef CONFIG_ASS
|
||||
OPT_FLAG_ON("ass", ass_enabled, 0),
|
||||
OPT_FLAG_OFF("noass", ass_enabled, 0),
|
||||
{"ass-font-scale", &ass_font_scale, CONF_TYPE_FLOAT, CONF_RANGE, 0, 100, NULL},
|
||||
{"ass-line-spacing", &ass_line_spacing, CONF_TYPE_FLOAT, CONF_RANGE, -1000, 1000, NULL},
|
||||
{"ass-top-margin", &ass_top_margin, CONF_TYPE_INT, CONF_RANGE, 0, 2000, NULL},
|
||||
{"ass-bottom-margin", &ass_bottom_margin, CONF_TYPE_INT, CONF_RANGE, 0, 2000, NULL},
|
||||
{"ass-use-margins", &ass_use_margins, CONF_TYPE_FLAG, 0, 0, 1, NULL},
|
||||
{"noass-use-margins", &ass_use_margins, CONF_TYPE_FLAG, 0, 1, 0, NULL},
|
||||
{"embeddedfonts", &use_embedded_fonts, CONF_TYPE_FLAG, 0, 0, 1, NULL},
|
||||
{"noembeddedfonts", &use_embedded_fonts, CONF_TYPE_FLAG, 0, 1, 0, NULL},
|
||||
{"ass-force-style", &ass_force_style_list, CONF_TYPE_STRING_LIST, 0, 0, 0, NULL},
|
||||
{"ass-color", &ass_color, CONF_TYPE_STRING, 0, 0, 0, NULL},
|
||||
{"ass-border-color", &ass_border_color, CONF_TYPE_STRING, 0, 0, 0, NULL},
|
||||
{"ass-styles", &ass_styles_file, CONF_TYPE_STRING, 0, 0, 0, NULL},
|
||||
{"ass-hinting", &ass_hinting, CONF_TYPE_INT, CONF_RANGE, 0, 7, NULL},
|
||||
OPT_FLAG_ON("ass", ass_enabled, 0),
|
||||
OPT_FLAG_OFF("noass", ass_enabled, 0),
|
||||
{"ass-font-scale", &ass_font_scale, CONF_TYPE_FLOAT, CONF_RANGE, 0, 100, NULL},
|
||||
{"ass-line-spacing", &ass_line_spacing, CONF_TYPE_FLOAT, CONF_RANGE, -1000, 1000, NULL},
|
||||
{"ass-top-margin", &ass_top_margin, CONF_TYPE_INT, CONF_RANGE, 0, 2000, NULL},
|
||||
{"ass-bottom-margin", &ass_bottom_margin, CONF_TYPE_INT, CONF_RANGE, 0, 2000, NULL},
|
||||
{"ass-use-margins", &ass_use_margins, CONF_TYPE_FLAG, 0, 0, 1, NULL},
|
||||
{"noass-use-margins", &ass_use_margins, CONF_TYPE_FLAG, 0, 1, 0, NULL},
|
||||
{"embeddedfonts", &use_embedded_fonts, CONF_TYPE_FLAG, 0, 0, 1, NULL},
|
||||
{"noembeddedfonts", &use_embedded_fonts, CONF_TYPE_FLAG, 0, 1, 0, NULL},
|
||||
{"ass-force-style", &ass_force_style_list, CONF_TYPE_STRING_LIST, 0, 0, 0, NULL},
|
||||
{"ass-color", &ass_color, CONF_TYPE_STRING, 0, 0, 0, NULL},
|
||||
{"ass-border-color", &ass_border_color, CONF_TYPE_STRING, 0, 0, 0, NULL},
|
||||
{"ass-styles", &ass_styles_file, CONF_TYPE_STRING, 0, 0, 0, NULL},
|
||||
{"ass-hinting", &ass_hinting, CONF_TYPE_INT, CONF_RANGE, 0, 7, NULL},
|
||||
#endif
|
||||
#ifdef CONFIG_FONTCONFIG
|
||||
{"fontconfig", &font_fontconfig, CONF_TYPE_FLAG, 0, -1, 1, NULL},
|
||||
{"nofontconfig", &font_fontconfig, CONF_TYPE_FLAG, 0, 1, -1, NULL},
|
||||
{"fontconfig", &font_fontconfig, CONF_TYPE_FLAG, 0, -1, 1, NULL},
|
||||
{"nofontconfig", &font_fontconfig, CONF_TYPE_FLAG, 0, 1, -1, NULL},
|
||||
#else
|
||||
{"fontconfig", "MPlayer was compiled without fontconfig support.\n", CONF_TYPE_PRINT, CONF_NOCFG, 0, 0, NULL},
|
||||
{"nofontconfig", "MPlayer was compiled without fontconfig support.\n", CONF_TYPE_PRINT, CONF_NOCFG, 0, 0, NULL},
|
||||
{"fontconfig", "MPlayer was compiled without fontconfig support.\n", CONF_TYPE_PRINT, CONF_NOCFG, 0, 0, NULL},
|
||||
{"nofontconfig", "MPlayer was compiled without fontconfig support.\n", CONF_TYPE_PRINT, CONF_NOCFG, 0, 0, NULL},
|
||||
#endif /* CONFIG_FONTCONFIG */
|
||||
|
358
cfg-common.h
358
cfg-common.h
@ -92,67 +92,67 @@ const m_option_t radioopts_conf[]={
|
||||
|
||||
#ifdef CONFIG_TV
|
||||
const m_option_t tvopts_conf[]={
|
||||
{"on", "-tv on has been removed, use tv:// instead.\n", CONF_TYPE_PRINT, 0, 0, 0, NULL},
|
||||
{"immediatemode", &stream_tv_defaults.immediate, CONF_TYPE_INT, CONF_RANGE, 0, 1, NULL},
|
||||
{"noaudio", &stream_tv_defaults.noaudio, CONF_TYPE_FLAG, 0, 0, 1, NULL},
|
||||
{"audiorate", &stream_tv_defaults.audiorate, CONF_TYPE_INT, 0, 0, 0, NULL},
|
||||
{"driver", &stream_tv_defaults.driver, CONF_TYPE_STRING, 0, 0, 0, NULL},
|
||||
{"device", &stream_tv_defaults.device, CONF_TYPE_STRING, 0, 0, 0, NULL},
|
||||
{"freq", &stream_tv_defaults.freq, CONF_TYPE_STRING, 0, 0, 0, NULL},
|
||||
{"channel", &stream_tv_defaults.channel, CONF_TYPE_STRING, 0, 0, 0, NULL},
|
||||
{"chanlist", &stream_tv_defaults.chanlist, CONF_TYPE_STRING, 0, 0, 0, NULL},
|
||||
{"norm", &stream_tv_defaults.norm, CONF_TYPE_STRING, 0, 0, 0, NULL},
|
||||
{"automute", &stream_tv_defaults.automute, CONF_TYPE_INT, CONF_RANGE, 0, 255, NULL},
|
||||
{"on", "-tv on has been removed, use tv:// instead.\n", CONF_TYPE_PRINT, 0, 0, 0, NULL},
|
||||
{"immediatemode", &stream_tv_defaults.immediate, CONF_TYPE_INT, CONF_RANGE, 0, 1, NULL},
|
||||
{"noaudio", &stream_tv_defaults.noaudio, CONF_TYPE_FLAG, 0, 0, 1, NULL},
|
||||
{"audiorate", &stream_tv_defaults.audiorate, CONF_TYPE_INT, 0, 0, 0, NULL},
|
||||
{"driver", &stream_tv_defaults.driver, CONF_TYPE_STRING, 0, 0, 0, NULL},
|
||||
{"device", &stream_tv_defaults.device, CONF_TYPE_STRING, 0, 0, 0, NULL},
|
||||
{"freq", &stream_tv_defaults.freq, CONF_TYPE_STRING, 0, 0, 0, NULL},
|
||||
{"channel", &stream_tv_defaults.channel, CONF_TYPE_STRING, 0, 0, 0, NULL},
|
||||
{"chanlist", &stream_tv_defaults.chanlist, CONF_TYPE_STRING, 0, 0, 0, NULL},
|
||||
{"norm", &stream_tv_defaults.norm, CONF_TYPE_STRING, 0, 0, 0, NULL},
|
||||
{"automute", &stream_tv_defaults.automute, CONF_TYPE_INT, CONF_RANGE, 0, 255, NULL},
|
||||
#if defined(CONFIG_TV_V4L2) || defined(CONFIG_TV_DSHOW)
|
||||
{"normid", &stream_tv_defaults.normid, CONF_TYPE_INT, 0, 0, 0, NULL},
|
||||
{"normid", &stream_tv_defaults.normid, CONF_TYPE_INT, 0, 0, 0, NULL},
|
||||
#endif
|
||||
{"width", &stream_tv_defaults.width, CONF_TYPE_INT, 0, 0, 4096, NULL},
|
||||
{"height", &stream_tv_defaults.height, CONF_TYPE_INT, 0, 0, 4096, NULL},
|
||||
{"input", &stream_tv_defaults.input, CONF_TYPE_INT, 0, 0, 20, NULL},
|
||||
{"outfmt", &stream_tv_defaults.outfmt, CONF_TYPE_IMGFMT, 0, 0, 0, NULL},
|
||||
{"fps", &stream_tv_defaults.fps, CONF_TYPE_FLOAT, 0, 0, 100.0, NULL},
|
||||
{"channels", &stream_tv_defaults.channels, CONF_TYPE_STRING_LIST, 0, 0, 0, NULL},
|
||||
{"brightness", &stream_tv_defaults.brightness, CONF_TYPE_INT, CONF_RANGE, -100, 100, NULL},
|
||||
{"contrast", &stream_tv_defaults.contrast, CONF_TYPE_INT, CONF_RANGE, -100, 100, NULL},
|
||||
{"hue", &stream_tv_defaults.hue, CONF_TYPE_INT, CONF_RANGE, -100, 100, NULL},
|
||||
{"saturation", &stream_tv_defaults.saturation, CONF_TYPE_INT, CONF_RANGE, -100, 100, NULL},
|
||||
{"gain", &stream_tv_defaults.gain, CONF_TYPE_INT, CONF_RANGE, -1, 100, NULL},
|
||||
{"width", &stream_tv_defaults.width, CONF_TYPE_INT, 0, 0, 4096, NULL},
|
||||
{"height", &stream_tv_defaults.height, CONF_TYPE_INT, 0, 0, 4096, NULL},
|
||||
{"input", &stream_tv_defaults.input, CONF_TYPE_INT, 0, 0, 20, NULL},
|
||||
{"outfmt", &stream_tv_defaults.outfmt, CONF_TYPE_IMGFMT, 0, 0, 0, NULL},
|
||||
{"fps", &stream_tv_defaults.fps, CONF_TYPE_FLOAT, 0, 0, 100.0, NULL},
|
||||
{"channels", &stream_tv_defaults.channels, CONF_TYPE_STRING_LIST, 0, 0, 0, NULL},
|
||||
{"brightness", &stream_tv_defaults.brightness, CONF_TYPE_INT, CONF_RANGE, -100, 100, NULL},
|
||||
{"contrast", &stream_tv_defaults.contrast, CONF_TYPE_INT, CONF_RANGE, -100, 100, NULL},
|
||||
{"hue", &stream_tv_defaults.hue, CONF_TYPE_INT, CONF_RANGE, -100, 100, NULL},
|
||||
{"saturation", &stream_tv_defaults.saturation, CONF_TYPE_INT, CONF_RANGE, -100, 100, NULL},
|
||||
{"gain", &stream_tv_defaults.gain, CONF_TYPE_INT, CONF_RANGE, -1, 100, NULL},
|
||||
#if defined(CONFIG_TV_V4L) || defined(CONFIG_TV_V4L2) || defined(CONFIG_TV_DSHOW)
|
||||
{"buffersize", &stream_tv_defaults.buffer_size, CONF_TYPE_INT, CONF_RANGE, 16, 1024, NULL},
|
||||
{"amode", &stream_tv_defaults.amode, CONF_TYPE_INT, CONF_RANGE, 0, 3, NULL},
|
||||
{"volume", &stream_tv_defaults.volume, CONF_TYPE_INT, CONF_RANGE, 0, 65535, NULL},
|
||||
{"buffersize", &stream_tv_defaults.buffer_size, CONF_TYPE_INT, CONF_RANGE, 16, 1024, NULL},
|
||||
{"amode", &stream_tv_defaults.amode, CONF_TYPE_INT, CONF_RANGE, 0, 3, NULL},
|
||||
{"volume", &stream_tv_defaults.volume, CONF_TYPE_INT, CONF_RANGE, 0, 65535, NULL},
|
||||
#endif
|
||||
#if defined(CONFIG_TV_V4L) || defined(CONFIG_TV_V4L2)
|
||||
{"bass", &stream_tv_defaults.bass, CONF_TYPE_INT, CONF_RANGE, 0, 65535, NULL},
|
||||
{"treble", &stream_tv_defaults.treble, CONF_TYPE_INT, CONF_RANGE, 0, 65535, NULL},
|
||||
{"balance", &stream_tv_defaults.balance, CONF_TYPE_INT, CONF_RANGE, 0, 65535, NULL},
|
||||
{"forcechan", &stream_tv_defaults.forcechan, CONF_TYPE_INT, CONF_RANGE, 1, 2, NULL},
|
||||
{"forceaudio", &stream_tv_defaults.force_audio, CONF_TYPE_FLAG, 0, 0, 1, NULL},
|
||||
{"buffersize", &stream_tv_defaults.buffer_size, CONF_TYPE_INT, CONF_RANGE, 16, 1024, NULL},
|
||||
{"mjpeg", &stream_tv_defaults.mjpeg, CONF_TYPE_FLAG, 0, 0, 1, NULL},
|
||||
{"decimation", &stream_tv_defaults.decimation, CONF_TYPE_INT, CONF_RANGE, 1, 4, NULL},
|
||||
{"quality", &stream_tv_defaults.quality, CONF_TYPE_INT, CONF_RANGE, 0, 100, NULL},
|
||||
{"bass", &stream_tv_defaults.bass, CONF_TYPE_INT, CONF_RANGE, 0, 65535, NULL},
|
||||
{"treble", &stream_tv_defaults.treble, CONF_TYPE_INT, CONF_RANGE, 0, 65535, NULL},
|
||||
{"balance", &stream_tv_defaults.balance, CONF_TYPE_INT, CONF_RANGE, 0, 65535, NULL},
|
||||
{"forcechan", &stream_tv_defaults.forcechan, CONF_TYPE_INT, CONF_RANGE, 1, 2, NULL},
|
||||
{"forceaudio", &stream_tv_defaults.force_audio, CONF_TYPE_FLAG, 0, 0, 1, NULL},
|
||||
{"buffersize", &stream_tv_defaults.buffer_size, CONF_TYPE_INT, CONF_RANGE, 16, 1024, NULL},
|
||||
{"mjpeg", &stream_tv_defaults.mjpeg, CONF_TYPE_FLAG, 0, 0, 1, NULL},
|
||||
{"decimation", &stream_tv_defaults.decimation, CONF_TYPE_INT, CONF_RANGE, 1, 4, NULL},
|
||||
{"quality", &stream_tv_defaults.quality, CONF_TYPE_INT, CONF_RANGE, 0, 100, NULL},
|
||||
#ifdef CONFIG_ALSA
|
||||
{"alsa", &stream_tv_defaults.alsa, CONF_TYPE_FLAG, 0, 0, 1, NULL},
|
||||
{"alsa", &stream_tv_defaults.alsa, CONF_TYPE_FLAG, 0, 0, 1, NULL},
|
||||
#endif /* CONFIG_ALSA */
|
||||
#endif /* defined(CONFIG_TV_V4L) || defined(CONFIG_TV_V4L2) */
|
||||
{"adevice", &stream_tv_defaults.adevice, CONF_TYPE_STRING, 0, 0, 0, NULL},
|
||||
{"tdevice", &stream_tv_defaults.teletext.device, CONF_TYPE_STRING, 0, 0, 0, NULL},
|
||||
{"tpage", &stream_tv_defaults.teletext.page, CONF_TYPE_INT, CONF_RANGE, 100, 899, NULL},
|
||||
{"tformat", &stream_tv_defaults.teletext.format, CONF_TYPE_INT, CONF_RANGE, 0, 3, NULL},
|
||||
{"tlang", &stream_tv_defaults.teletext.lang, CONF_TYPE_INT, CONF_RANGE, -1, 0x7f, NULL},
|
||||
{"audioid", &stream_tv_defaults.audio_id, CONF_TYPE_INT, CONF_RANGE, 0, 9, NULL},
|
||||
{"adevice", &stream_tv_defaults.adevice, CONF_TYPE_STRING, 0, 0, 0, NULL},
|
||||
{"tdevice", &stream_tv_defaults.teletext.device, CONF_TYPE_STRING, 0, 0, 0, NULL},
|
||||
{"tpage", &stream_tv_defaults.teletext.page, CONF_TYPE_INT, CONF_RANGE, 100, 899, NULL},
|
||||
{"tformat", &stream_tv_defaults.teletext.format, CONF_TYPE_INT, CONF_RANGE, 0, 3, NULL},
|
||||
{"tlang", &stream_tv_defaults.teletext.lang, CONF_TYPE_INT, CONF_RANGE, -1, 0x7f, NULL},
|
||||
{"audioid", &stream_tv_defaults.audio_id, CONF_TYPE_INT, CONF_RANGE, 0, 9, NULL},
|
||||
#ifdef CONFIG_TV_DSHOW
|
||||
{"hidden_video_renderer", &stream_tv_defaults.hidden_video_renderer, CONF_TYPE_FLAG, 0, 0, 1, NULL},
|
||||
{"nohidden_video_renderer", &stream_tv_defaults.hidden_video_renderer, CONF_TYPE_FLAG, 0, 0, 0, NULL},
|
||||
{"hidden_vp_renderer", &stream_tv_defaults.hidden_vp_renderer, CONF_TYPE_FLAG, 0, 0, 1, NULL},
|
||||
{"nohidden_vp_renderer", &stream_tv_defaults.hidden_vp_renderer, CONF_TYPE_FLAG, 0, 0, 0, NULL},
|
||||
{"system_clock", &stream_tv_defaults.system_clock, CONF_TYPE_FLAG, 0, 0, 1, NULL},
|
||||
{"nosystem_clock", &stream_tv_defaults.system_clock, CONF_TYPE_FLAG, 0, 0, 0, NULL},
|
||||
{"normalize_audio_chunks", &stream_tv_defaults.normalize_audio_chunks, CONF_TYPE_FLAG, 0, 0, 1, NULL},
|
||||
{"nonormalize_audio_chunks", &stream_tv_defaults.normalize_audio_chunks, CONF_TYPE_FLAG, 0, 0, 0, NULL},
|
||||
{"hidden_video_renderer", &stream_tv_defaults.hidden_video_renderer, CONF_TYPE_FLAG, 0, 0, 1, NULL},
|
||||
{"nohidden_video_renderer", &stream_tv_defaults.hidden_video_renderer, CONF_TYPE_FLAG, 0, 0, 0, NULL},
|
||||
{"hidden_vp_renderer", &stream_tv_defaults.hidden_vp_renderer, CONF_TYPE_FLAG, 0, 0, 1, NULL},
|
||||
{"nohidden_vp_renderer", &stream_tv_defaults.hidden_vp_renderer, CONF_TYPE_FLAG, 0, 0, 0, NULL},
|
||||
{"system_clock", &stream_tv_defaults.system_clock, CONF_TYPE_FLAG, 0, 0, 1, NULL},
|
||||
{"nosystem_clock", &stream_tv_defaults.system_clock, CONF_TYPE_FLAG, 0, 0, 0, NULL},
|
||||
{"normalize_audio_chunks", &stream_tv_defaults.normalize_audio_chunks, CONF_TYPE_FLAG, 0, 0, 1, NULL},
|
||||
{"nonormalize_audio_chunks", &stream_tv_defaults.normalize_audio_chunks, CONF_TYPE_FLAG, 0, 0, 0, NULL},
|
||||
#endif
|
||||
{NULL, NULL, 0, 0, 0, 0, NULL}
|
||||
{NULL, NULL, 0, 0, 0, 0, NULL}
|
||||
};
|
||||
#endif /* CONFIG_TV */
|
||||
|
||||
@ -168,16 +168,16 @@ extern char *pvr_param_stream_type;
|
||||
|
||||
#ifdef CONFIG_PVR
|
||||
const m_option_t pvropts_conf[]={
|
||||
{"aspect", &pvr_param_aspect_ratio, CONF_TYPE_INT, 0, 1, 4, NULL},
|
||||
{"arate", &pvr_param_sample_rate, CONF_TYPE_INT, 0, 32000, 48000, NULL},
|
||||
{"alayer", &pvr_param_audio_layer, CONF_TYPE_INT, 0, 1, 2, NULL},
|
||||
{"abitrate", &pvr_param_audio_bitrate, CONF_TYPE_INT, 0, 32, 448, NULL},
|
||||
{"amode", &pvr_param_audio_mode, CONF_TYPE_STRING, 0, 0, 0, NULL},
|
||||
{"vbitrate", &pvr_param_bitrate, CONF_TYPE_INT, 0, 0, 0, NULL},
|
||||
{"vmode", &pvr_param_bitrate_mode, CONF_TYPE_STRING, 0, 0, 0, NULL},
|
||||
{"vpeak", &pvr_param_bitrate_peak, CONF_TYPE_INT, 0, 0, 0, NULL},
|
||||
{"fmt", &pvr_param_stream_type, CONF_TYPE_STRING, 0, 0, 0, NULL},
|
||||
{NULL, NULL, 0, 0, 0, 0, NULL}
|
||||
{"aspect", &pvr_param_aspect_ratio, CONF_TYPE_INT, 0, 1, 4, NULL},
|
||||
{"arate", &pvr_param_sample_rate, CONF_TYPE_INT, 0, 32000, 48000, NULL},
|
||||
{"alayer", &pvr_param_audio_layer, CONF_TYPE_INT, 0, 1, 2, NULL},
|
||||
{"abitrate", &pvr_param_audio_bitrate, CONF_TYPE_INT, 0, 32, 448, NULL},
|
||||
{"amode", &pvr_param_audio_mode, CONF_TYPE_STRING, 0, 0, 0, NULL},
|
||||
{"vbitrate", &pvr_param_bitrate, CONF_TYPE_INT, 0, 0, 0, NULL},
|
||||
{"vmode", &pvr_param_bitrate_mode, CONF_TYPE_STRING, 0, 0, 0, NULL},
|
||||
{"vpeak", &pvr_param_bitrate_peak, CONF_TYPE_INT, 0, 0, 0, NULL},
|
||||
{"fmt", &pvr_param_stream_type, CONF_TYPE_STRING, 0, 0, 0, NULL},
|
||||
{NULL, NULL, 0, 0, 0, 0, NULL}
|
||||
};
|
||||
#endif /* CONFIG_PVR */
|
||||
|
||||
@ -201,13 +201,13 @@ extern float sws_chr_sharpen;
|
||||
extern float sws_lum_sharpen;
|
||||
|
||||
const m_option_t scaler_filter_conf[]={
|
||||
{"lgb", &sws_lum_gblur, CONF_TYPE_FLOAT, 0, 0, 100.0, NULL},
|
||||
{"cgb", &sws_chr_gblur, CONF_TYPE_FLOAT, 0, 0, 100.0, NULL},
|
||||
{"cvs", &sws_chr_vshift, CONF_TYPE_INT, 0, 0, 0, NULL},
|
||||
{"chs", &sws_chr_hshift, CONF_TYPE_INT, 0, 0, 0, NULL},
|
||||
{"ls", &sws_lum_sharpen, CONF_TYPE_FLOAT, 0, -100.0, 100.0, NULL},
|
||||
{"cs", &sws_chr_sharpen, CONF_TYPE_FLOAT, 0, -100.0, 100.0, NULL},
|
||||
{NULL, NULL, 0, 0, 0, 0, NULL}
|
||||
{"lgb", &sws_lum_gblur, CONF_TYPE_FLOAT, 0, 0, 100.0, NULL},
|
||||
{"cgb", &sws_chr_gblur, CONF_TYPE_FLOAT, 0, 0, 100.0, NULL},
|
||||
{"cvs", &sws_chr_vshift, CONF_TYPE_INT, 0, 0, 0, NULL},
|
||||
{"chs", &sws_chr_hshift, CONF_TYPE_INT, 0, 0, 0, NULL},
|
||||
{"ls", &sws_lum_sharpen, CONF_TYPE_FLOAT, 0, -100.0, 100.0, NULL},
|
||||
{"cs", &sws_chr_sharpen, CONF_TYPE_FLOAT, 0, -100.0, 100.0, NULL},
|
||||
{NULL, NULL, 0, 0, 0, 0, NULL}
|
||||
};
|
||||
|
||||
/* VIVO demuxer options: */
|
||||
@ -222,17 +222,17 @@ extern int vivo_param_vformat;
|
||||
extern char *dvd_device, *cdrom_device;
|
||||
|
||||
const m_option_t vivoopts_conf[]={
|
||||
{"version", &vivo_param_version, CONF_TYPE_INT, 0, 0, 0, NULL},
|
||||
/* audio options */
|
||||
{"acodec", &vivo_param_acodec, CONF_TYPE_STRING, 0, 0, 0, NULL},
|
||||
{"abitrate", &vivo_param_abitrate, CONF_TYPE_INT, 0, 0, 0, NULL},
|
||||
{"samplerate", &vivo_param_samplerate, CONF_TYPE_INT, 0, 0, 0, NULL},
|
||||
{"bytesperblock", &vivo_param_bytesperblock, CONF_TYPE_INT, 0, 0, 0, NULL},
|
||||
/* video options */
|
||||
{"width", &vivo_param_width, CONF_TYPE_INT, 0, 0, 0, NULL},
|
||||
{"height", &vivo_param_height, CONF_TYPE_INT, 0, 0, 0, NULL},
|
||||
{"vformat", &vivo_param_vformat, CONF_TYPE_INT, 0, 0, 0, NULL},
|
||||
{NULL, NULL, 0, 0, 0, 0, NULL}
|
||||
{"version", &vivo_param_version, CONF_TYPE_INT, 0, 0, 0, NULL},
|
||||
/* audio options */
|
||||
{"acodec", &vivo_param_acodec, CONF_TYPE_STRING, 0, 0, 0, NULL},
|
||||
{"abitrate", &vivo_param_abitrate, CONF_TYPE_INT, 0, 0, 0, NULL},
|
||||
{"samplerate", &vivo_param_samplerate, CONF_TYPE_INT, 0, 0, 0, NULL},
|
||||
{"bytesperblock", &vivo_param_bytesperblock, CONF_TYPE_INT, 0, 0, 0, NULL},
|
||||
/* video options */
|
||||
{"width", &vivo_param_width, CONF_TYPE_INT, 0, 0, 0, NULL},
|
||||
{"height", &vivo_param_height, CONF_TYPE_INT, 0, 0, 0, NULL},
|
||||
{"vformat", &vivo_param_vformat, CONF_TYPE_INT, 0, 0, 0, NULL},
|
||||
{NULL, NULL, 0, 0, 0, 0, NULL}
|
||||
};
|
||||
|
||||
extern int mf_w;
|
||||
@ -242,118 +242,118 @@ extern char * mf_type;
|
||||
extern m_obj_list_t vf_obj_list;
|
||||
|
||||
const m_option_t mfopts_conf[]={
|
||||
{"on", "-mf on has been removed, use mf:// instead.\n", CONF_TYPE_PRINT, 0, 0, 1, NULL},
|
||||
{"w", &mf_w, CONF_TYPE_INT, 0, 0, 0, NULL},
|
||||
{"h", &mf_h, CONF_TYPE_INT, 0, 0, 0, NULL},
|
||||
{"fps", &mf_fps, CONF_TYPE_DOUBLE, 0, 0, 0, NULL},
|
||||
{"type", &mf_type, CONF_TYPE_STRING, 0, 0, 0, NULL},
|
||||
{NULL, NULL, 0, 0, 0, 0, NULL}
|
||||
{"on", "-mf on has been removed, use mf:// instead.\n", CONF_TYPE_PRINT, 0, 0, 1, NULL},
|
||||
{"w", &mf_w, CONF_TYPE_INT, 0, 0, 0, NULL},
|
||||
{"h", &mf_h, CONF_TYPE_INT, 0, 0, 0, NULL},
|
||||
{"fps", &mf_fps, CONF_TYPE_DOUBLE, 0, 0, 0, NULL},
|
||||
{"type", &mf_type, CONF_TYPE_STRING, 0, 0, 0, NULL},
|
||||
{NULL, NULL, 0, 0, 0, 0, NULL}
|
||||
};
|
||||
|
||||
#include "libaf/af.h"
|
||||
extern af_cfg_t af_cfg; // Audio filter configuration, defined in libmpcodecs/dec_audio.c
|
||||
const m_option_t audio_filter_conf[]={
|
||||
{"list", &af_cfg.list, CONF_TYPE_STRING_LIST, 0, 0, 0, NULL},
|
||||
{"force", &af_cfg.force, CONF_TYPE_INT, CONF_RANGE, 0, 7, NULL},
|
||||
{NULL, NULL, 0, 0, 0, 0, NULL}
|
||||
{"list", &af_cfg.list, CONF_TYPE_STRING_LIST, 0, 0, 0, NULL},
|
||||
{"force", &af_cfg.force, CONF_TYPE_INT, CONF_RANGE, 0, 7, NULL},
|
||||
{NULL, NULL, 0, 0, 0, 0, NULL}
|
||||
};
|
||||
|
||||
extern int mp_msg_levels[MSGT_MAX];
|
||||
extern int mp_msg_level_all;
|
||||
|
||||
const m_option_t msgl_config[]={
|
||||
{ "all", &mp_msg_level_all, CONF_TYPE_INT, CONF_RANGE, -1, 9, NULL},
|
||||
{ "all", &mp_msg_level_all, CONF_TYPE_INT, CONF_RANGE, -1, 9, NULL},
|
||||
|
||||
{ "global", &mp_msg_levels[MSGT_GLOBAL], CONF_TYPE_INT, CONF_RANGE, -1, 9, NULL },
|
||||
{ "cplayer", &mp_msg_levels[MSGT_CPLAYER], CONF_TYPE_INT, CONF_RANGE, -1, 9, NULL },
|
||||
{ "vo", &mp_msg_levels[MSGT_VO], CONF_TYPE_INT, CONF_RANGE, -1, 9, NULL },
|
||||
{ "ao", &mp_msg_levels[MSGT_AO], CONF_TYPE_INT, CONF_RANGE, -1, 9, NULL },
|
||||
{ "demuxer", &mp_msg_levels[MSGT_DEMUXER], CONF_TYPE_INT, CONF_RANGE, -1, 9, NULL },
|
||||
{ "ds", &mp_msg_levels[MSGT_DS], CONF_TYPE_INT, CONF_RANGE, -1, 9, NULL },
|
||||
{ "demux", &mp_msg_levels[MSGT_DEMUX], CONF_TYPE_INT, CONF_RANGE, -1, 9, NULL },
|
||||
{ "header", &mp_msg_levels[MSGT_HEADER], CONF_TYPE_INT, CONF_RANGE, -1, 9, NULL },
|
||||
{ "avsync", &mp_msg_levels[MSGT_AVSYNC], CONF_TYPE_INT, CONF_RANGE, -1, 9, NULL },
|
||||
{ "autoq", &mp_msg_levels[MSGT_AUTOQ], CONF_TYPE_INT, CONF_RANGE, -1, 9, NULL },
|
||||
{ "cfgparser", &mp_msg_levels[MSGT_CFGPARSER], CONF_TYPE_INT, CONF_RANGE, -1, 9, NULL },
|
||||
{ "decaudio", &mp_msg_levels[MSGT_DECAUDIO], CONF_TYPE_INT, CONF_RANGE, -1, 9, NULL },
|
||||
{ "decvideo", &mp_msg_levels[MSGT_DECVIDEO], CONF_TYPE_INT, CONF_RANGE, -1, 9, NULL },
|
||||
{ "seek", &mp_msg_levels[MSGT_SEEK], CONF_TYPE_INT, CONF_RANGE, -1, 9, NULL },
|
||||
{ "win32", &mp_msg_levels[MSGT_WIN32], CONF_TYPE_INT, CONF_RANGE, -1, 9, NULL },
|
||||
{ "open", &mp_msg_levels[MSGT_OPEN], CONF_TYPE_INT, CONF_RANGE, -1, 9, NULL },
|
||||
{ "dvd", &mp_msg_levels[MSGT_DVD], CONF_TYPE_INT, CONF_RANGE, -1, 9, NULL },
|
||||
{ "parsees", &mp_msg_levels[MSGT_PARSEES], CONF_TYPE_INT, CONF_RANGE, -1, 9, NULL },
|
||||
{ "lirc", &mp_msg_levels[MSGT_LIRC], CONF_TYPE_INT, CONF_RANGE, -1, 9, NULL },
|
||||
{ "stream", &mp_msg_levels[MSGT_STREAM], CONF_TYPE_INT, CONF_RANGE, -1, 9, NULL },
|
||||
{ "cache", &mp_msg_levels[MSGT_CACHE], CONF_TYPE_INT, CONF_RANGE, -1, 9, NULL },
|
||||
{ "mencoder", &mp_msg_levels[MSGT_MENCODER], CONF_TYPE_INT, CONF_RANGE, -1, 9, NULL },
|
||||
{ "xacodec", &mp_msg_levels[MSGT_XACODEC], CONF_TYPE_INT, CONF_RANGE, -1, 9, NULL },
|
||||
{ "tv", &mp_msg_levels[MSGT_TV], CONF_TYPE_INT, CONF_RANGE, -1, 9, NULL },
|
||||
{ "radio", &mp_msg_levels[MSGT_RADIO], CONF_TYPE_INT, CONF_RANGE, -1, 9, NULL },
|
||||
{ "osdep", &mp_msg_levels[MSGT_OSDEP], CONF_TYPE_INT, CONF_RANGE, -1, 9, NULL },
|
||||
{ "spudec", &mp_msg_levels[MSGT_SPUDEC], CONF_TYPE_INT, CONF_RANGE, -1, 9, NULL },
|
||||
{ "playtree", &mp_msg_levels[MSGT_PLAYTREE], CONF_TYPE_INT, CONF_RANGE, -1, 9, NULL },
|
||||
{ "input", &mp_msg_levels[MSGT_INPUT], CONF_TYPE_INT, CONF_RANGE, -1, 9, NULL },
|
||||
{ "vfilter", &mp_msg_levels[MSGT_VFILTER], CONF_TYPE_INT, CONF_RANGE, -1, 9, NULL },
|
||||
{ "osd", &mp_msg_levels[MSGT_OSD], CONF_TYPE_INT, CONF_RANGE, -1, 9, NULL },
|
||||
{ "network", &mp_msg_levels[MSGT_NETWORK], CONF_TYPE_INT, CONF_RANGE, -1, 9, NULL },
|
||||
{ "cpudetect", &mp_msg_levels[MSGT_CPUDETECT], CONF_TYPE_INT, CONF_RANGE, -1, 9, NULL },
|
||||
{ "codeccfg", &mp_msg_levels[MSGT_CODECCFG], CONF_TYPE_INT, CONF_RANGE, -1, 9, NULL },
|
||||
{ "sws", &mp_msg_levels[MSGT_SWS], CONF_TYPE_INT, CONF_RANGE, -1, 9, NULL },
|
||||
{ "vobsub", &mp_msg_levels[MSGT_VOBSUB], CONF_TYPE_INT, CONF_RANGE, -1, 9, NULL },
|
||||
{ "subreader", &mp_msg_levels[MSGT_SUBREADER], CONF_TYPE_INT, CONF_RANGE, -1, 9, NULL },
|
||||
{ "afilter", &mp_msg_levels[MSGT_AFILTER], CONF_TYPE_INT, CONF_RANGE, -1, 9, NULL },
|
||||
{ "netst", &mp_msg_levels[MSGT_NETST], CONF_TYPE_INT, CONF_RANGE, -1, 9, NULL },
|
||||
{ "muxer", &mp_msg_levels[MSGT_MUXER], CONF_TYPE_INT, CONF_RANGE, -1, 9, NULL },
|
||||
{ "osd-menu", &mp_msg_levels[MSGT_OSD_MENU], CONF_TYPE_INT, CONF_RANGE, -1, 9, NULL },
|
||||
{ "identify", &mp_msg_levels[MSGT_IDENTIFY], CONF_TYPE_INT, CONF_RANGE, -1, 9, NULL },
|
||||
{ "ass", &mp_msg_levels[MSGT_ASS], CONF_TYPE_INT, CONF_RANGE, -1, 9, NULL },
|
||||
{ "statusline", &mp_msg_levels[MSGT_STATUSLINE], CONF_TYPE_INT, CONF_RANGE, -1, 9, NULL },
|
||||
{"help", "Available msg modules:\n"
|
||||
" global - common player errors/information\n"
|
||||
" cplayer - console player (mplayer.c)\n"
|
||||
" vo - libvo\n"
|
||||
" ao - libao\n"
|
||||
" demuxer - demuxer.c (general stuff)\n"
|
||||
" ds - demux stream (add/read packet etc)\n"
|
||||
" demux - fileformat-specific stuff (demux_*.c)\n"
|
||||
" header - fileformat-specific header (*header.c)\n"
|
||||
" avsync - mplayer.c timer stuff\n"
|
||||
" autoq - mplayer.c auto-quality stuff\n"
|
||||
" cfgparser - cfgparser.c\n"
|
||||
" decaudio - av decoder\n"
|
||||
" decvideo\n"
|
||||
" seek - seeking code\n"
|
||||
" win32 - win32 dll stuff\n"
|
||||
" open - open.c (stream opening)\n"
|
||||
" dvd - open.c (DVD init/read/seek)\n"
|
||||
" parsees - parse_es.c (mpeg stream parser)\n"
|
||||
" lirc - lirc_mp.c and input lirc driver\n"
|
||||
" stream - stream.c\n"
|
||||
" cache - cache2.c\n"
|
||||
" mencoder\n"
|
||||
" xacodec - XAnim codecs\n"
|
||||
" tv - TV input subsystem\n"
|
||||
" osdep - OS-dependent parts\n"
|
||||
" spudec - spudec.c\n"
|
||||
" playtree - Playtree handling (playtree.c, playtreeparser.c)\n"
|
||||
" input\n"
|
||||
" vfilter\n"
|
||||
" osd\n"
|
||||
" network\n"
|
||||
" cpudetect\n"
|
||||
" codeccfg\n"
|
||||
" sws\n"
|
||||
" vobsub\n"
|
||||
" subreader\n"
|
||||
" osd-menu - OSD menu messages\n"
|
||||
" afilter - Audio filter messages\n"
|
||||
" netst - Netstream\n"
|
||||
" muxer - muxer layer\n"
|
||||
" identify - identify output\n"
|
||||
" ass - libass messages\n"
|
||||
" statusline - playback/encoding status line\n"
|
||||
"\n", CONF_TYPE_PRINT, CONF_NOCFG, 0, 0, NULL},
|
||||
{NULL, NULL, 0, 0, 0, 0, NULL}
|
||||
{ "global", &mp_msg_levels[MSGT_GLOBAL], CONF_TYPE_INT, CONF_RANGE, -1, 9, NULL },
|
||||
{ "cplayer", &mp_msg_levels[MSGT_CPLAYER], CONF_TYPE_INT, CONF_RANGE, -1, 9, NULL },
|
||||
{ "vo", &mp_msg_levels[MSGT_VO], CONF_TYPE_INT, CONF_RANGE, -1, 9, NULL },
|
||||
{ "ao", &mp_msg_levels[MSGT_AO], CONF_TYPE_INT, CONF_RANGE, -1, 9, NULL },
|
||||
{ "demuxer", &mp_msg_levels[MSGT_DEMUXER], CONF_TYPE_INT, CONF_RANGE, -1, 9, NULL },
|
||||
{ "ds", &mp_msg_levels[MSGT_DS], CONF_TYPE_INT, CONF_RANGE, -1, 9, NULL },
|
||||
{ "demux", &mp_msg_levels[MSGT_DEMUX], CONF_TYPE_INT, CONF_RANGE, -1, 9, NULL },
|
||||
{ "header", &mp_msg_levels[MSGT_HEADER], CONF_TYPE_INT, CONF_RANGE, -1, 9, NULL },
|
||||
{ "avsync", &mp_msg_levels[MSGT_AVSYNC], CONF_TYPE_INT, CONF_RANGE, -1, 9, NULL },
|
||||
{ "autoq", &mp_msg_levels[MSGT_AUTOQ], CONF_TYPE_INT, CONF_RANGE, -1, 9, NULL },
|
||||
{ "cfgparser", &mp_msg_levels[MSGT_CFGPARSER], CONF_TYPE_INT, CONF_RANGE, -1, 9, NULL },
|
||||
{ "decaudio", &mp_msg_levels[MSGT_DECAUDIO], CONF_TYPE_INT, CONF_RANGE, -1, 9, NULL },
|
||||
{ "decvideo", &mp_msg_levels[MSGT_DECVIDEO], CONF_TYPE_INT, CONF_RANGE, -1, 9, NULL },
|
||||
{ "seek", &mp_msg_levels[MSGT_SEEK], CONF_TYPE_INT, CONF_RANGE, -1, 9, NULL },
|
||||
{ "win32", &mp_msg_levels[MSGT_WIN32], CONF_TYPE_INT, CONF_RANGE, -1, 9, NULL },
|
||||
{ "open", &mp_msg_levels[MSGT_OPEN], CONF_TYPE_INT, CONF_RANGE, -1, 9, NULL },
|
||||
{ "dvd", &mp_msg_levels[MSGT_DVD], CONF_TYPE_INT, CONF_RANGE, -1, 9, NULL },
|
||||
{ "parsees", &mp_msg_levels[MSGT_PARSEES], CONF_TYPE_INT, CONF_RANGE, -1, 9, NULL },
|
||||
{ "lirc", &mp_msg_levels[MSGT_LIRC], CONF_TYPE_INT, CONF_RANGE, -1, 9, NULL },
|
||||
{ "stream", &mp_msg_levels[MSGT_STREAM], CONF_TYPE_INT, CONF_RANGE, -1, 9, NULL },
|
||||
{ "cache", &mp_msg_levels[MSGT_CACHE], CONF_TYPE_INT, CONF_RANGE, -1, 9, NULL },
|
||||
{ "mencoder", &mp_msg_levels[MSGT_MENCODER], CONF_TYPE_INT, CONF_RANGE, -1, 9, NULL },
|
||||
{ "xacodec", &mp_msg_levels[MSGT_XACODEC], CONF_TYPE_INT, CONF_RANGE, -1, 9, NULL },
|
||||
{ "tv", &mp_msg_levels[MSGT_TV], CONF_TYPE_INT, CONF_RANGE, -1, 9, NULL },
|
||||
{ "radio", &mp_msg_levels[MSGT_RADIO], CONF_TYPE_INT, CONF_RANGE, -1, 9, NULL },
|
||||
{ "osdep", &mp_msg_levels[MSGT_OSDEP], CONF_TYPE_INT, CONF_RANGE, -1, 9, NULL },
|
||||
{ "spudec", &mp_msg_levels[MSGT_SPUDEC], CONF_TYPE_INT, CONF_RANGE, -1, 9, NULL },
|
||||
{ "playtree", &mp_msg_levels[MSGT_PLAYTREE], CONF_TYPE_INT, CONF_RANGE, -1, 9, NULL },
|
||||
{ "input", &mp_msg_levels[MSGT_INPUT], CONF_TYPE_INT, CONF_RANGE, -1, 9, NULL },
|
||||
{ "vfilter", &mp_msg_levels[MSGT_VFILTER], CONF_TYPE_INT, CONF_RANGE, -1, 9, NULL },
|
||||
{ "osd", &mp_msg_levels[MSGT_OSD], CONF_TYPE_INT, CONF_RANGE, -1, 9, NULL },
|
||||
{ "network", &mp_msg_levels[MSGT_NETWORK], CONF_TYPE_INT, CONF_RANGE, -1, 9, NULL },
|
||||
{ "cpudetect", &mp_msg_levels[MSGT_CPUDETECT], CONF_TYPE_INT, CONF_RANGE, -1, 9, NULL },
|
||||
{ "codeccfg", &mp_msg_levels[MSGT_CODECCFG], CONF_TYPE_INT, CONF_RANGE, -1, 9, NULL },
|
||||
{ "sws", &mp_msg_levels[MSGT_SWS], CONF_TYPE_INT, CONF_RANGE, -1, 9, NULL },
|
||||
{ "vobsub", &mp_msg_levels[MSGT_VOBSUB], CONF_TYPE_INT, CONF_RANGE, -1, 9, NULL },
|
||||
{ "subreader", &mp_msg_levels[MSGT_SUBREADER], CONF_TYPE_INT, CONF_RANGE, -1, 9, NULL },
|
||||
{ "afilter", &mp_msg_levels[MSGT_AFILTER], CONF_TYPE_INT, CONF_RANGE, -1, 9, NULL },
|
||||
{ "netst", &mp_msg_levels[MSGT_NETST], CONF_TYPE_INT, CONF_RANGE, -1, 9, NULL },
|
||||
{ "muxer", &mp_msg_levels[MSGT_MUXER], CONF_TYPE_INT, CONF_RANGE, -1, 9, NULL },
|
||||
{ "osd-menu", &mp_msg_levels[MSGT_OSD_MENU], CONF_TYPE_INT, CONF_RANGE, -1, 9, NULL },
|
||||
{ "identify", &mp_msg_levels[MSGT_IDENTIFY], CONF_TYPE_INT, CONF_RANGE, -1, 9, NULL },
|
||||
{ "ass", &mp_msg_levels[MSGT_ASS], CONF_TYPE_INT, CONF_RANGE, -1, 9, NULL },
|
||||
{ "statusline", &mp_msg_levels[MSGT_STATUSLINE], CONF_TYPE_INT, CONF_RANGE, -1, 9, NULL },
|
||||
{"help", "Available msg modules:\n"
|
||||
" global - common player errors/information\n"
|
||||
" cplayer - console player (mplayer.c)\n"
|
||||
" vo - libvo\n"
|
||||
" ao - libao\n"
|
||||
" demuxer - demuxer.c (general stuff)\n"
|
||||
" ds - demux stream (add/read packet etc)\n"
|
||||
" demux - fileformat-specific stuff (demux_*.c)\n"
|
||||
" header - fileformat-specific header (*header.c)\n"
|
||||
" avsync - mplayer.c timer stuff\n"
|
||||
" autoq - mplayer.c auto-quality stuff\n"
|
||||
" cfgparser - cfgparser.c\n"
|
||||
" decaudio - av decoder\n"
|
||||
" decvideo\n"
|
||||
" seek - seeking code\n"
|
||||
" win32 - win32 dll stuff\n"
|
||||
" open - open.c (stream opening)\n"
|
||||
" dvd - open.c (DVD init/read/seek)\n"
|
||||
" parsees - parse_es.c (mpeg stream parser)\n"
|
||||
" lirc - lirc_mp.c and input lirc driver\n"
|
||||
" stream - stream.c\n"
|
||||
" cache - cache2.c\n"
|
||||
" mencoder\n"
|
||||
" xacodec - XAnim codecs\n"
|
||||
" tv - TV input subsystem\n"
|
||||
" osdep - OS-dependent parts\n"
|
||||
" spudec - spudec.c\n"
|
||||
" playtree - Playtree handling (playtree.c, playtreeparser.c)\n"
|
||||
" input\n"
|
||||
" vfilter\n"
|
||||
" osd\n"
|
||||
" network\n"
|
||||
" cpudetect\n"
|
||||
" codeccfg\n"
|
||||
" sws\n"
|
||||
" vobsub\n"
|
||||
" subreader\n"
|
||||
" osd-menu - OSD menu messages\n"
|
||||
" afilter - Audio filter messages\n"
|
||||
" netst - Netstream\n"
|
||||
" muxer - muxer layer\n"
|
||||
" identify - identify output\n"
|
||||
" ass - libass messages\n"
|
||||
" statusline - playback/encoding status line\n"
|
||||
"\n", CONF_TYPE_PRINT, CONF_NOCFG, 0, 0, NULL},
|
||||
{NULL, NULL, 0, 0, 0, 0, NULL}
|
||||
|
||||
};
|
||||
|
||||
|
272
cfg-mencoder.h
272
cfg-mencoder.h
@ -41,243 +41,243 @@ extern const m_option_t vfwopts_conf[];
|
||||
extern const m_option_t xvidencopts_conf[];
|
||||
|
||||
const m_option_t ovc_conf[]={
|
||||
{"copy", &out_video_codec, CONF_TYPE_FLAG, 0, 0, VCODEC_COPY, NULL},
|
||||
{"frameno", &out_video_codec, CONF_TYPE_FLAG, 0, 0, VCODEC_FRAMENO, NULL},
|
||||
{"lavc", &out_video_codec, CONF_TYPE_FLAG, 0, 0, VCODEC_LIBAVCODEC, NULL},
|
||||
// {"null", &out_video_codec, CONF_TYPE_FLAG, 0, 0, VCODEC_NULL, NULL},
|
||||
{"raw", &out_video_codec, CONF_TYPE_FLAG, 0, 0, VCODEC_RAW, NULL},
|
||||
{"vfw", &out_video_codec, CONF_TYPE_FLAG, 0, 0, VCODEC_VFW, NULL},
|
||||
{"libdv", &out_video_codec, CONF_TYPE_FLAG, 0, 0, VCODEC_LIBDV, NULL},
|
||||
{"xvid", &out_video_codec, CONF_TYPE_FLAG, 0, 0, VCODEC_XVID, NULL},
|
||||
{"qtvideo", &out_video_codec, CONF_TYPE_FLAG, 0, 0, VCODEC_QTVIDEO, NULL},
|
||||
{"nuv", &out_video_codec, CONF_TYPE_FLAG, 0, 0, VCODEC_NUV, NULL},
|
||||
{"x264", &out_video_codec, CONF_TYPE_FLAG, 0, 0, VCODEC_X264, NULL},
|
||||
{"help", "\nAvailable codecs:\n"
|
||||
" copy - frame copy, without re-encoding. Doesn't work with filters.\n"
|
||||
" frameno - special audio-only file for 3-pass encoding, see DOCS.\n"
|
||||
" raw - uncompressed video. Use fourcc option to set format explicitly.\n"
|
||||
{"copy", &out_video_codec, CONF_TYPE_FLAG, 0, 0, VCODEC_COPY, NULL},
|
||||
{"frameno", &out_video_codec, CONF_TYPE_FLAG, 0, 0, VCODEC_FRAMENO, NULL},
|
||||
{"lavc", &out_video_codec, CONF_TYPE_FLAG, 0, 0, VCODEC_LIBAVCODEC, NULL},
|
||||
// {"null", &out_video_codec, CONF_TYPE_FLAG, 0, 0, VCODEC_NULL, NULL},
|
||||
{"raw", &out_video_codec, CONF_TYPE_FLAG, 0, 0, VCODEC_RAW, NULL},
|
||||
{"vfw", &out_video_codec, CONF_TYPE_FLAG, 0, 0, VCODEC_VFW, NULL},
|
||||
{"libdv", &out_video_codec, CONF_TYPE_FLAG, 0, 0, VCODEC_LIBDV, NULL},
|
||||
{"xvid", &out_video_codec, CONF_TYPE_FLAG, 0, 0, VCODEC_XVID, NULL},
|
||||
{"qtvideo", &out_video_codec, CONF_TYPE_FLAG, 0, 0, VCODEC_QTVIDEO, NULL},
|
||||
{"nuv", &out_video_codec, CONF_TYPE_FLAG, 0, 0, VCODEC_NUV, NULL},
|
||||
{"x264", &out_video_codec, CONF_TYPE_FLAG, 0, 0, VCODEC_X264, NULL},
|
||||
{"help", "\nAvailable codecs:\n"
|
||||
" copy - frame copy, without re-encoding. Doesn't work with filters.\n"
|
||||
" frameno - special audio-only file for 3-pass encoding, see DOCS.\n"
|
||||
" raw - uncompressed video. Use fourcc option to set format explicitly.\n"
|
||||
#ifdef CONFIG_LIBLZO
|
||||
" nuv - nuppel video\n"
|
||||
" nuv - nuppel video\n"
|
||||
#endif
|
||||
#ifdef CONFIG_LIBAVCODEC
|
||||
" lavc - libavcodec codecs - best quality!\n"
|
||||
" lavc - libavcodec codecs - best quality!\n"
|
||||
#endif
|
||||
#ifdef CONFIG_WIN32DLL
|
||||
" vfw - VfW DLLs, read DOCS/HTML/en/encoding-guide.html.\n"
|
||||
" qtvideo - QuickTime DLLs, currently only SVQ1/3 are supported.\n"
|
||||
" vfw - VfW DLLs, read DOCS/HTML/en/encoding-guide.html.\n"
|
||||
" qtvideo - QuickTime DLLs, currently only SVQ1/3 are supported.\n"
|
||||
#endif
|
||||
#ifdef CONFIG_LIBDV095
|
||||
" libdv - DV encoding with libdv v0.9.5\n"
|
||||
" libdv - DV encoding with libdv v0.9.5\n"
|
||||
#endif
|
||||
#ifdef CONFIG_XVID4
|
||||
" xvid - XviD encoding\n"
|
||||
" xvid - XviD encoding\n"
|
||||
#endif
|
||||
#ifdef CONFIG_X264
|
||||
" x264 - H.264 encoding\n"
|
||||
" x264 - H.264 encoding\n"
|
||||
#endif
|
||||
"\n", CONF_TYPE_PRINT, CONF_NOCFG, 0, 0, NULL},
|
||||
{NULL, NULL, 0, 0, 0, 0, NULL}
|
||||
"\n", CONF_TYPE_PRINT, CONF_NOCFG, 0, 0, NULL},
|
||||
{NULL, NULL, 0, 0, 0, 0, NULL}
|
||||
};
|
||||
|
||||
const m_option_t oac_conf[]={
|
||||
{"copy", &out_audio_codec, CONF_TYPE_FLAG, 0, 0, ACODEC_COPY, NULL},
|
||||
{"pcm", &out_audio_codec, CONF_TYPE_FLAG, 0, 0, ACODEC_PCM, NULL},
|
||||
{"copy", &out_audio_codec, CONF_TYPE_FLAG, 0, 0, ACODEC_COPY, NULL},
|
||||
{"pcm", &out_audio_codec, CONF_TYPE_FLAG, 0, 0, ACODEC_PCM, NULL},
|
||||
#ifdef CONFIG_MP3LAME
|
||||
{"mp3lame", &out_audio_codec, CONF_TYPE_FLAG, 0, 0, ACODEC_VBRMP3, NULL},
|
||||
{"mp3lame", &out_audio_codec, CONF_TYPE_FLAG, 0, 0, ACODEC_VBRMP3, NULL},
|
||||
#else
|
||||
{"mp3lame", "MPlayer was compiled without libmp3lame support.\n", CONF_TYPE_PRINT, CONF_NOCFG, 0, 0, NULL},
|
||||
{"mp3lame", "MPlayer was compiled without libmp3lame support.\n", CONF_TYPE_PRINT, CONF_NOCFG, 0, 0, NULL},
|
||||
#endif /* CONFIG_MP3LAME */
|
||||
#ifdef CONFIG_LIBAVCODEC
|
||||
{"lavc", &out_audio_codec, CONF_TYPE_FLAG, 0, 0, ACODEC_LAVC, NULL},
|
||||
{"lavc", &out_audio_codec, CONF_TYPE_FLAG, 0, 0, ACODEC_LAVC, NULL},
|
||||
#else
|
||||
{"lavc", "MPlayer was compiled without libavcodec. See README or DOCS.\n", CONF_TYPE_PRINT, CONF_NOCFG, 0, 0, NULL},
|
||||
{"lavc", "MPlayer was compiled without libavcodec. See README or DOCS.\n", CONF_TYPE_PRINT, CONF_NOCFG, 0, 0, NULL},
|
||||
#endif /* CONFIG_LIBAVCODEC */
|
||||
#ifdef CONFIG_TOOLAME
|
||||
{"toolame", &out_audio_codec, CONF_TYPE_FLAG, 0, 0, ACODEC_TOOLAME, NULL},
|
||||
{"toolame", &out_audio_codec, CONF_TYPE_FLAG, 0, 0, ACODEC_TOOLAME, NULL},
|
||||
#else
|
||||
{"toolame", "MPlayer was compiled without libtoolame. See README or DOCS.\n", CONF_TYPE_PRINT, CONF_NOCFG, 0, 0, NULL},
|
||||
{"toolame", "MPlayer was compiled without libtoolame. See README or DOCS.\n", CONF_TYPE_PRINT, CONF_NOCFG, 0, 0, NULL},
|
||||
#endif /* CONFIG_TOOLAME */
|
||||
#ifdef CONFIG_TWOLAME
|
||||
{"twolame", &out_audio_codec, CONF_TYPE_FLAG, 0, 0, ACODEC_TWOLAME, NULL},
|
||||
{"twolame", &out_audio_codec, CONF_TYPE_FLAG, 0, 0, ACODEC_TWOLAME, NULL},
|
||||
#else
|
||||
{"twolame", "MPlayer was compiled without libtwolame. See README or DOCS.\n", CONF_TYPE_PRINT, CONF_NOCFG, 0, 0, NULL},
|
||||
{"twolame", "MPlayer was compiled without libtwolame. See README or DOCS.\n", CONF_TYPE_PRINT, CONF_NOCFG, 0, 0, NULL},
|
||||
#endif /* CONFIG_TWOLAME */
|
||||
#ifdef CONFIG_FAAC
|
||||
{"faac", &out_audio_codec, CONF_TYPE_FLAG, 0, 0, ACODEC_FAAC, NULL},
|
||||
{"faac", &out_audio_codec, CONF_TYPE_FLAG, 0, 0, ACODEC_FAAC, NULL},
|
||||
#else
|
||||
{"faac", "MPlayer was compiled without libfaac. See README or DOCS.\n", CONF_TYPE_PRINT, CONF_NOCFG, 0, 0, NULL},
|
||||
{"faac", "MPlayer was compiled without libfaac. See README or DOCS.\n", CONF_TYPE_PRINT, CONF_NOCFG, 0, 0, NULL},
|
||||
#endif /* CONFIG_FAAC */
|
||||
{"help", "\nAvailable codecs:\n"
|
||||
" copy - frame copy, without re-encoding (useful for AC3)\n"
|
||||
" pcm - uncompressed PCM audio\n"
|
||||
{"help", "\nAvailable codecs:\n"
|
||||
" copy - frame copy, without re-encoding (useful for AC3)\n"
|
||||
" pcm - uncompressed PCM audio\n"
|
||||
#ifdef CONFIG_MP3LAME
|
||||
" mp3lame - cbr/abr/vbr MP3 using libmp3lame\n"
|
||||
" mp3lame - cbr/abr/vbr MP3 using libmp3lame\n"
|
||||
#endif
|
||||
#ifdef CONFIG_LIBAVCODEC
|
||||
" lavc - FFmpeg audio encoder (MP2, AC3, ...)\n"
|
||||
" lavc - FFmpeg audio encoder (MP2, AC3, ...)\n"
|
||||
#endif
|
||||
#ifdef CONFIG_TOOLAME
|
||||
" toolame - Toolame MP2 audio encoder\n"
|
||||
" toolame - Toolame MP2 audio encoder\n"
|
||||
#endif
|
||||
#ifdef CONFIG_TWOLAME
|
||||
" twolame - Twolame MP2 audio encoder\n"
|
||||
" twolame - Twolame MP2 audio encoder\n"
|
||||
#endif
|
||||
#ifdef CONFIG_FAAC
|
||||
" faac - FAAC AAC audio encoder\n"
|
||||
" faac - FAAC AAC audio encoder\n"
|
||||
#endif
|
||||
"\n", CONF_TYPE_PRINT, CONF_NOCFG, 0, 0, NULL},
|
||||
{NULL, NULL, 0, 0, 0, 0, NULL}
|
||||
"\n", CONF_TYPE_PRINT, CONF_NOCFG, 0, 0, NULL},
|
||||
{NULL, NULL, 0, 0, 0, 0, NULL}
|
||||
};
|
||||
|
||||
const m_option_t info_conf[]={
|
||||
{"name", &info_name, CONF_TYPE_STRING, 0, 0, 0, NULL},
|
||||
{"artist", &info_artist, CONF_TYPE_STRING, 0, 0, 0, NULL},
|
||||
{"genre", &info_genre, CONF_TYPE_STRING, 0, 0, 0, NULL},
|
||||
{"subject", &info_subject, CONF_TYPE_STRING, 0, 0, 0, NULL},
|
||||
{"copyright", &info_copyright, CONF_TYPE_STRING, 0, 0, 0, NULL},
|
||||
{"srcform", &info_sourceform, CONF_TYPE_STRING, 0, 0, 0, NULL},
|
||||
{"comment", &info_comment, CONF_TYPE_STRING, 0, 0, 0, NULL},
|
||||
{"help", "\nAvailable INFO fields:\n"
|
||||
" name - title of the work\n"
|
||||
" artist - artist or author of the work\n"
|
||||
" genre - original work category\n"
|
||||
" subject - contents of the work\n"
|
||||
" copyright - copyright information\n"
|
||||
" srcform - original format of the digitzed material\n"
|
||||
" comment - general comments about the work\n"
|
||||
"\n", CONF_TYPE_PRINT, CONF_NOCFG, 0, 0, NULL},
|
||||
{NULL, NULL, 0, 0, 0, 0, NULL}
|
||||
{"name", &info_name, CONF_TYPE_STRING, 0, 0, 0, NULL},
|
||||
{"artist", &info_artist, CONF_TYPE_STRING, 0, 0, 0, NULL},
|
||||
{"genre", &info_genre, CONF_TYPE_STRING, 0, 0, 0, NULL},
|
||||
{"subject", &info_subject, CONF_TYPE_STRING, 0, 0, 0, NULL},
|
||||
{"copyright", &info_copyright, CONF_TYPE_STRING, 0, 0, 0, NULL},
|
||||
{"srcform", &info_sourceform, CONF_TYPE_STRING, 0, 0, 0, NULL},
|
||||
{"comment", &info_comment, CONF_TYPE_STRING, 0, 0, 0, NULL},
|
||||
{"help", "\nAvailable INFO fields:\n"
|
||||
" name - title of the work\n"
|
||||
" artist - artist or author of the work\n"
|
||||
" genre - original work category\n"
|
||||
" subject - contents of the work\n"
|
||||
" copyright - copyright information\n"
|
||||
" srcform - original format of the digitzed material\n"
|
||||
" comment - general comments about the work\n"
|
||||
"\n", CONF_TYPE_PRINT, CONF_NOCFG, 0, 0, NULL},
|
||||
{NULL, NULL, 0, 0, 0, 0, NULL}
|
||||
};
|
||||
|
||||
const m_option_t of_conf[]={
|
||||
{"avi", &out_file_format, CONF_TYPE_FLAG, 0, 0, MUXER_TYPE_AVI, NULL},
|
||||
{"mpeg", &out_file_format, CONF_TYPE_FLAG, 0, 0, MUXER_TYPE_MPEG, NULL},
|
||||
{"avi", &out_file_format, CONF_TYPE_FLAG, 0, 0, MUXER_TYPE_AVI, NULL},
|
||||
{"mpeg", &out_file_format, CONF_TYPE_FLAG, 0, 0, MUXER_TYPE_MPEG, NULL},
|
||||
#ifdef CONFIG_LIBAVFORMAT
|
||||
{"lavf", &out_file_format, CONF_TYPE_FLAG, 0, 0, MUXER_TYPE_LAVF, NULL},
|
||||
{"lavf", &out_file_format, CONF_TYPE_FLAG, 0, 0, MUXER_TYPE_LAVF, NULL},
|
||||
#endif
|
||||
{"rawvideo", &out_file_format, CONF_TYPE_FLAG, 0, 0, MUXER_TYPE_RAWVIDEO, NULL},
|
||||
{"rawaudio", &out_file_format, CONF_TYPE_FLAG, 0, 0, MUXER_TYPE_RAWAUDIO, NULL},
|
||||
{"help", "\nAvailable output formats:\n"
|
||||
" avi - Microsoft Audio/Video Interleaved\n"
|
||||
" mpeg - MPEG-1/2 system stream format\n"
|
||||
{"rawvideo", &out_file_format, CONF_TYPE_FLAG, 0, 0, MUXER_TYPE_RAWVIDEO, NULL},
|
||||
{"rawaudio", &out_file_format, CONF_TYPE_FLAG, 0, 0, MUXER_TYPE_RAWAUDIO, NULL},
|
||||
{"help", "\nAvailable output formats:\n"
|
||||
" avi - Microsoft Audio/Video Interleaved\n"
|
||||
" mpeg - MPEG-1/2 system stream format\n"
|
||||
#ifdef CONFIG_LIBAVFORMAT
|
||||
" lavf - FFmpeg libavformat muxers\n"
|
||||
" lavf - FFmpeg libavformat muxers\n"
|
||||
#endif
|
||||
" rawvideo - (video only, one stream only) raw stream, no muxing\n"
|
||||
" rawaudio - (audio only, one stream only) raw stream, no muxing\n"
|
||||
"\n", CONF_TYPE_PRINT, CONF_NOCFG, 0, 0, NULL},
|
||||
{NULL, NULL, 0, 0, 0, 0, NULL}
|
||||
" rawvideo - (video only, one stream only) raw stream, no muxing\n"
|
||||
" rawaudio - (audio only, one stream only) raw stream, no muxing\n"
|
||||
"\n", CONF_TYPE_PRINT, CONF_NOCFG, 0, 0, NULL},
|
||||
{NULL, NULL, 0, 0, 0, 0, NULL}
|
||||
};
|
||||
|
||||
extern float avi_aspect_override; /* defined in libmpdemux/muxer_avi.c */
|
||||
extern int write_odml; /* defined in libmpdemux/muxer_avi.c */
|
||||
|
||||
const m_option_t mencoder_opts[]={
|
||||
/* name, pointer, type, flags, min, max */
|
||||
/* name, pointer, type, flags, min, max */
|
||||
|
||||
{"frameno-file", &frameno_filename, CONF_TYPE_STRING, CONF_GLOBAL, 0, 0, NULL},
|
||||
{"frameno-file", &frameno_filename, CONF_TYPE_STRING, CONF_GLOBAL, 0, 0, NULL},
|
||||
|
||||
{"hr-edl-seek", &edl_seek_type, CONF_TYPE_FLAG, 0, 0, 1, NULL},
|
||||
{"nohr-edl-seek", &edl_seek_type, CONF_TYPE_FLAG, 0, 1, 0, NULL},
|
||||
{"hr-edl-seek", &edl_seek_type, CONF_TYPE_FLAG, 0, 0, 1, NULL},
|
||||
{"nohr-edl-seek", &edl_seek_type, CONF_TYPE_FLAG, 0, 1, 0, NULL},
|
||||
|
||||
// set output framerate - recommended for variable-FPS (ASF etc) files
|
||||
// and for 29.97FPS progressive MPEG2 streams
|
||||
{"ofps", &force_ofps, CONF_TYPE_DOUBLE, CONF_MIN|CONF_GLOBAL, 0, 0, NULL},
|
||||
{"o", &out_filename, CONF_TYPE_STRING, CONF_GLOBAL, 0, 0, NULL},
|
||||
// set output framerate - recommended for variable-FPS (ASF etc) files
|
||||
// and for 29.97FPS progressive MPEG2 streams
|
||||
{"ofps", &force_ofps, CONF_TYPE_DOUBLE, CONF_MIN|CONF_GLOBAL, 0, 0, NULL},
|
||||
{"o", &out_filename, CONF_TYPE_STRING, CONF_GLOBAL, 0, 0, NULL},
|
||||
|
||||
// limit number of skippable frames after a non-skipped one
|
||||
{"skiplimit", &skip_limit, CONF_TYPE_INT, 0, 0, 0, NULL},
|
||||
{"noskiplimit", &skip_limit, CONF_TYPE_FLAG, 0, 0, -1, NULL},
|
||||
{"noskip", &skip_limit, CONF_TYPE_FLAG, 0, 0, 0, NULL},
|
||||
// limit number of skippable frames after a non-skipped one
|
||||
{"skiplimit", &skip_limit, CONF_TYPE_INT, 0, 0, 0, NULL},
|
||||
{"noskiplimit", &skip_limit, CONF_TYPE_FLAG, 0, 0, -1, NULL},
|
||||
{"noskip", &skip_limit, CONF_TYPE_FLAG, 0, 0, 0, NULL},
|
||||
|
||||
{"audio-density", &audio_density, CONF_TYPE_INT, CONF_RANGE|CONF_GLOBAL, 1, 50, NULL},
|
||||
{"audio-preload", &audio_preload, CONF_TYPE_FLOAT, CONF_RANGE|CONF_GLOBAL, 0, 2, NULL},
|
||||
{"audio-delay", &audio_delay_fix, CONF_TYPE_FLOAT, CONF_GLOBAL, 0, 0, NULL},
|
||||
{"audio-density", &audio_density, CONF_TYPE_INT, CONF_RANGE|CONF_GLOBAL, 1, 50, NULL},
|
||||
{"audio-preload", &audio_preload, CONF_TYPE_FLOAT, CONF_RANGE|CONF_GLOBAL, 0, 2, NULL},
|
||||
{"audio-delay", &audio_delay_fix, CONF_TYPE_FLOAT, CONF_GLOBAL, 0, 0, NULL},
|
||||
|
||||
{"x", "-x has been removed, use -vf scale=w:h for scaling.\n", CONF_TYPE_PRINT, CONF_NOCFG, 0, 0, NULL},
|
||||
{"xsize", "-xsize has been removed, use -vf crop=w:h:x:y for cropping.\n", CONF_TYPE_PRINT, CONF_NOCFG, 0, 0, NULL},
|
||||
{"x", "-x has been removed, use -vf scale=w:h for scaling.\n", CONF_TYPE_PRINT, CONF_NOCFG, 0, 0, NULL},
|
||||
{"xsize", "-xsize has been removed, use -vf crop=w:h:x:y for cropping.\n", CONF_TYPE_PRINT, CONF_NOCFG, 0, 0, NULL},
|
||||
|
||||
// output audio/video codec selection
|
||||
{"oac", (void *) oac_conf, CONF_TYPE_SUBCONFIG, CONF_GLOBAL, 0, 0, NULL},
|
||||
{"ovc", (void *) ovc_conf, CONF_TYPE_SUBCONFIG, CONF_GLOBAL, 0, 0, NULL},
|
||||
// output audio/video codec selection
|
||||
{"oac", (void *) oac_conf, CONF_TYPE_SUBCONFIG, CONF_GLOBAL, 0, 0, NULL},
|
||||
{"ovc", (void *) ovc_conf, CONF_TYPE_SUBCONFIG, CONF_GLOBAL, 0, 0, NULL},
|
||||
|
||||
// output file format
|
||||
{"of", (void *) of_conf, CONF_TYPE_SUBCONFIG, CONF_GLOBAL, 0, 0, NULL},
|
||||
// output file format
|
||||
{"of", (void *) of_conf, CONF_TYPE_SUBCONFIG, CONF_GLOBAL, 0, 0, NULL},
|
||||
|
||||
// override audio format tag in output file
|
||||
{"fafmttag", &force_audiofmttag, CONF_TYPE_INT, CONF_GLOBAL, 0, 0, NULL},
|
||||
// override FOURCC in output file
|
||||
{"ffourcc", &force_fourcc, CONF_TYPE_STRING, CONF_GLOBAL, 4, 4, NULL},
|
||||
// override audio format tag in output file
|
||||
{"fafmttag", &force_audiofmttag, CONF_TYPE_INT, CONF_GLOBAL, 0, 0, NULL},
|
||||
// override FOURCC in output file
|
||||
{"ffourcc", &force_fourcc, CONF_TYPE_STRING, CONF_GLOBAL, 4, 4, NULL},
|
||||
|
||||
// override avi aspect autodetection
|
||||
{"force-avi-aspect", &avi_aspect_override, CONF_TYPE_FLOAT, CONF_RANGE|CONF_GLOBAL, 0.2, 3.0, NULL},
|
||||
// override avi aspect autodetection
|
||||
{"force-avi-aspect", &avi_aspect_override, CONF_TYPE_FLOAT, CONF_RANGE|CONF_GLOBAL, 0.2, 3.0, NULL},
|
||||
|
||||
{"pass", "-pass has been removed, use -lavcopts vpass=n, -xvidencopts pass=n\n", CONF_TYPE_PRINT, CONF_NOCFG, 0, 0, NULL},
|
||||
{"passlogfile", &passtmpfile, CONF_TYPE_STRING, CONF_GLOBAL, 0, 0, NULL},
|
||||
{"pass", "-pass has been removed, use -lavcopts vpass=n, -xvidencopts pass=n\n", CONF_TYPE_PRINT, CONF_NOCFG, 0, 0, NULL},
|
||||
{"passlogfile", &passtmpfile, CONF_TYPE_STRING, CONF_GLOBAL, 0, 0, NULL},
|
||||
|
||||
{"vobsubout", &vobsub_out, CONF_TYPE_STRING, CONF_GLOBAL, 0, 0, NULL},
|
||||
{"vobsuboutindex", &vobsub_out_index, CONF_TYPE_INT, CONF_RANGE|CONF_GLOBAL, 0, 31, NULL},
|
||||
{"vobsuboutid", &vobsub_out_id, CONF_TYPE_STRING, CONF_GLOBAL, 0, 0, NULL},
|
||||
{"vobsubout", &vobsub_out, CONF_TYPE_STRING, CONF_GLOBAL, 0, 0, NULL},
|
||||
{"vobsuboutindex", &vobsub_out_index, CONF_TYPE_INT, CONF_RANGE|CONF_GLOBAL, 0, 31, NULL},
|
||||
{"vobsuboutid", &vobsub_out_id, CONF_TYPE_STRING, CONF_GLOBAL, 0, 0, NULL},
|
||||
|
||||
{"autoexpand", &auto_expand, CONF_TYPE_FLAG, 0, 0, 1, NULL},
|
||||
{"noautoexpand", &auto_expand, CONF_TYPE_FLAG, 0, 1, 0, NULL},
|
||||
{"autoexpand", &auto_expand, CONF_TYPE_FLAG, 0, 0, 1, NULL},
|
||||
{"noautoexpand", &auto_expand, CONF_TYPE_FLAG, 0, 1, 0, NULL},
|
||||
|
||||
{"encodedups", &encode_duplicates, CONF_TYPE_FLAG, 0, 0, 1, NULL},
|
||||
{"noencodedups", &encode_duplicates, CONF_TYPE_FLAG, 0, 1, 0, NULL},
|
||||
{"encodedups", &encode_duplicates, CONF_TYPE_FLAG, 0, 0, 1, NULL},
|
||||
{"noencodedups", &encode_duplicates, CONF_TYPE_FLAG, 0, 1, 0, NULL},
|
||||
|
||||
{"odml", &write_odml, CONF_TYPE_FLAG, CONF_GLOBAL, 0, 1, NULL},
|
||||
{"noodml", &write_odml, CONF_TYPE_FLAG, CONF_GLOBAL, 1, 0, NULL},
|
||||
{"odml", &write_odml, CONF_TYPE_FLAG, CONF_GLOBAL, 0, 1, NULL},
|
||||
{"noodml", &write_odml, CONF_TYPE_FLAG, CONF_GLOBAL, 1, 0, NULL},
|
||||
|
||||
// info header strings
|
||||
{"info", (void *) info_conf, CONF_TYPE_SUBCONFIG, CONF_GLOBAL, 0, 0, NULL},
|
||||
// info header strings
|
||||
{"info", (void *) info_conf, CONF_TYPE_SUBCONFIG, CONF_GLOBAL, 0, 0, NULL},
|
||||
|
||||
#ifdef CONFIG_MP3LAME
|
||||
{"lameopts", lameopts_conf, CONF_TYPE_SUBCONFIG, CONF_GLOBAL, 0, 0, NULL},
|
||||
{"lameopts", lameopts_conf, CONF_TYPE_SUBCONFIG, CONF_GLOBAL, 0, 0, NULL},
|
||||
#endif
|
||||
#ifdef CONFIG_LIBAVCODEC
|
||||
{"lavcopts", lavcopts_conf, CONF_TYPE_SUBCONFIG, CONF_GLOBAL, 0, 0, NULL},
|
||||
{"lavcopts", lavcopts_conf, CONF_TYPE_SUBCONFIG, CONF_GLOBAL, 0, 0, NULL},
|
||||
#else
|
||||
{"lavcopts", "MPlayer was compiled without libavcodec. See README or DOCS.\n", CONF_TYPE_PRINT, CONF_NOCFG, 0, 0, NULL},
|
||||
{"lavcopts", "MPlayer was compiled without libavcodec. See README or DOCS.\n", CONF_TYPE_PRINT, CONF_NOCFG, 0, 0, NULL},
|
||||
#endif /* CONFIG_LIBAVCODEC */
|
||||
#ifdef CONFIG_TOOLAME
|
||||
{"toolameopts", toolameopts_conf, CONF_TYPE_SUBCONFIG, CONF_GLOBAL, 0, 0, NULL},
|
||||
{"toolameopts", toolameopts_conf, CONF_TYPE_SUBCONFIG, CONF_GLOBAL, 0, 0, NULL},
|
||||
#else
|
||||
{"toolameopts", "MPlayer was compiled without libtoolame. See README or DOCS.\n", CONF_TYPE_PRINT, CONF_NOCFG, 0, 0, NULL},
|
||||
{"toolameopts", "MPlayer was compiled without libtoolame. See README or DOCS.\n", CONF_TYPE_PRINT, CONF_NOCFG, 0, 0, NULL},
|
||||
#endif /* CONFIG_TOOLAME */
|
||||
#ifdef CONFIG_TWOLAME
|
||||
{"twolameopts", twolameopts_conf, CONF_TYPE_SUBCONFIG, CONF_GLOBAL, 0, 0, NULL},
|
||||
{"twolameopts", twolameopts_conf, CONF_TYPE_SUBCONFIG, CONF_GLOBAL, 0, 0, NULL},
|
||||
#else
|
||||
{"twolameopts", "MPlayer was compiled without libtwolame. See README or DOCS.\n", CONF_TYPE_PRINT, CONF_NOCFG, 0, 0, NULL},
|
||||
{"twolameopts", "MPlayer was compiled without libtwolame. See README or DOCS.\n", CONF_TYPE_PRINT, CONF_NOCFG, 0, 0, NULL},
|
||||
#endif /* CONFIG_TWOLAME */
|
||||
#ifdef CONFIG_FAAC
|
||||
{"faacopts", faacopts_conf, CONF_TYPE_SUBCONFIG, CONF_GLOBAL, 0, 0, NULL},
|
||||
{"faacopts", faacopts_conf, CONF_TYPE_SUBCONFIG, CONF_GLOBAL, 0, 0, NULL},
|
||||
#else
|
||||
{"faacopts", "MPlayer was compiled without libfaac. See README or DOCS.\n", CONF_TYPE_PRINT, CONF_NOCFG, 0, 0, NULL},
|
||||
{"faacopts", "MPlayer was compiled without libfaac. See README or DOCS.\n", CONF_TYPE_PRINT, CONF_NOCFG, 0, 0, NULL},
|
||||
#endif /* CONFIG_FAAC */
|
||||
#ifdef CONFIG_WIN32DLL
|
||||
{"xvfwopts", vfwopts_conf, CONF_TYPE_SUBCONFIG, CONF_GLOBAL, 0, 0, NULL},
|
||||
{"xvfwopts", vfwopts_conf, CONF_TYPE_SUBCONFIG, CONF_GLOBAL, 0, 0, NULL},
|
||||
#endif
|
||||
#ifdef CONFIG_XVID4
|
||||
{"xvidencopts", xvidencopts_conf, CONF_TYPE_SUBCONFIG, CONF_GLOBAL, 0, 0, NULL},
|
||||
{"xvidencopts", xvidencopts_conf, CONF_TYPE_SUBCONFIG, CONF_GLOBAL, 0, 0, NULL},
|
||||
#endif
|
||||
#if defined(CONFIG_X264)
|
||||
{"x264encopts", &x264enc_set_param, CONF_TYPE_FUNC_PARAM, CONF_GLOBAL, 0, 0, NULL},
|
||||
{"x264encopts", &x264enc_set_param, CONF_TYPE_FUNC_PARAM, CONF_GLOBAL, 0, 0, NULL},
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_LIBLZO
|
||||
{"nuvopts", nuvopts_conf, CONF_TYPE_SUBCONFIG, CONF_GLOBAL, 0, 0, NULL},
|
||||
{"nuvopts", nuvopts_conf, CONF_TYPE_SUBCONFIG, CONF_GLOBAL, 0, 0, NULL},
|
||||
#endif
|
||||
{"mpegopts", mpegopts_conf, CONF_TYPE_SUBCONFIG, CONF_GLOBAL, 0, 0, NULL},
|
||||
{"mpegopts", mpegopts_conf, CONF_TYPE_SUBCONFIG, CONF_GLOBAL, 0, 0, NULL},
|
||||
#ifdef CONFIG_LIBAVFORMAT
|
||||
{"lavfopts", lavfopts_conf, CONF_TYPE_SUBCONFIG, CONF_GLOBAL, 0, 0, NULL},
|
||||
{"lavfopts", lavfopts_conf, CONF_TYPE_SUBCONFIG, CONF_GLOBAL, 0, 0, NULL},
|
||||
#endif
|
||||
|
||||
#include "cfg-common-opts.h"
|
||||
|
||||
// {"-help", help_text, CONF_TYPE_PRINT, CONF_NOCFG, 0, 0, NULL},
|
||||
// {"help", help_text, CONF_TYPE_PRINT, CONF_NOCFG, 0, 0, NULL},
|
||||
// {"h", help_text, CONF_TYPE_PRINT, CONF_NOCFG, 0, 0, NULL},
|
||||
{NULL, NULL, 0, 0, 0, 0, NULL}
|
||||
// {"-help", help_text, CONF_TYPE_PRINT, CONF_NOCFG, 0, 0, NULL},
|
||||
// {"help", help_text, CONF_TYPE_PRINT, CONF_NOCFG, 0, 0, NULL},
|
||||
// {"h", help_text, CONF_TYPE_PRINT, CONF_NOCFG, 0, 0, NULL},
|
||||
{NULL, NULL, 0, 0, 0, 0, NULL}
|
||||
};
|
||||
|
||||
#endif /* MPLAYER_CFG_MENCODER_H */
|
||||
|
408
cfg-mplayer.h
408
cfg-mplayer.h
@ -59,16 +59,16 @@ extern int sws_flags;
|
||||
extern char* pp_help;
|
||||
|
||||
const m_option_t vd_conf[]={
|
||||
{"help", "Use MPlayer with an appropriate video file instead of live partners to avoid vd.\n", CONF_TYPE_PRINT, CONF_NOCFG|CONF_GLOBAL, 0, 0, NULL},
|
||||
{NULL, NULL, 0, 0, 0, 0, NULL}
|
||||
{"help", "Use MPlayer with an appropriate video file instead of live partners to avoid vd.\n", CONF_TYPE_PRINT, CONF_NOCFG|CONF_GLOBAL, 0, 0, NULL},
|
||||
{NULL, NULL, 0, 0, 0, 0, NULL}
|
||||
};
|
||||
|
||||
#ifdef CONFIG_TV
|
||||
const m_option_t tvscan_conf[]={
|
||||
{"autostart", &stream_tv_defaults.scan, CONF_TYPE_FLAG, 0, 0, 1, NULL},
|
||||
{"threshold", &stream_tv_defaults.scan_threshold, CONF_TYPE_INT, CONF_RANGE, 1, 100, NULL},
|
||||
{"period", &stream_tv_defaults.scan_period, CONF_TYPE_FLOAT, CONF_RANGE, 0.1, 2.0, NULL},
|
||||
{NULL, NULL, 0, 0, 0, 0, NULL}
|
||||
{"autostart", &stream_tv_defaults.scan, CONF_TYPE_FLAG, 0, 0, 1, NULL},
|
||||
{"threshold", &stream_tv_defaults.scan_threshold, CONF_TYPE_INT, CONF_RANGE, 1, 100, NULL},
|
||||
{"period", &stream_tv_defaults.scan_period, CONF_TYPE_FLOAT, CONF_RANGE, 0.1, 2.0, NULL},
|
||||
{NULL, NULL, 0, 0, 0, 0, NULL}
|
||||
};
|
||||
#endif
|
||||
/*
|
||||
@ -85,289 +85,289 @@ const m_option_t tvscan_conf[]={
|
||||
*/
|
||||
|
||||
const m_option_t mplayer_opts[]={
|
||||
/* name, pointer, type, flags, min, max */
|
||||
/* name, pointer, type, flags, min, max */
|
||||
|
||||
//---------------------- libao/libvo options ------------------------
|
||||
{"o", "Option -o has been renamed to -vo (video-out), use -vo.\n",
|
||||
CONF_TYPE_PRINT, CONF_NOCFG, 0, 0, NULL},
|
||||
OPT_STRINGLIST("vo", video_driver_list, 0),
|
||||
OPT_STRINGLIST("ao", audio_driver_list, 0),
|
||||
OPT_FLAG_ON("fixed-vo", fixed_vo, CONF_GLOBAL),
|
||||
OPT_FLAG_OFF("nofixed-vo", fixed_vo, CONF_GLOBAL),
|
||||
OPT_FLAG_ON("ontop", vo_ontop, 0),
|
||||
OPT_FLAG_OFF("noontop", vo_ontop, 0),
|
||||
{"rootwin", &vo_rootwin, CONF_TYPE_FLAG, 0, 0, 1, NULL},
|
||||
{"border", &vo_border, CONF_TYPE_FLAG, 0, 0, 1, NULL},
|
||||
{"noborder", &vo_border, CONF_TYPE_FLAG, 0, 1, 0, NULL},
|
||||
{"o", "Option -o has been renamed to -vo (video-out), use -vo.\n",
|
||||
CONF_TYPE_PRINT, CONF_NOCFG, 0, 0, NULL},
|
||||
OPT_STRINGLIST("vo", video_driver_list, 0),
|
||||
OPT_STRINGLIST("ao", audio_driver_list, 0),
|
||||
OPT_FLAG_ON("fixed-vo", fixed_vo, CONF_GLOBAL),
|
||||
OPT_FLAG_OFF("nofixed-vo", fixed_vo, CONF_GLOBAL),
|
||||
OPT_FLAG_ON("ontop", vo_ontop, 0),
|
||||
OPT_FLAG_OFF("noontop", vo_ontop, 0),
|
||||
{"rootwin", &vo_rootwin, CONF_TYPE_FLAG, 0, 0, 1, NULL},
|
||||
{"border", &vo_border, CONF_TYPE_FLAG, 0, 0, 1, NULL},
|
||||
{"noborder", &vo_border, CONF_TYPE_FLAG, 0, 1, 0, NULL},
|
||||
|
||||
{"aop", "-aop has been removed, use -af instead.\n", CONF_TYPE_PRINT, CONF_NOCFG, 0, 0, NULL},
|
||||
{"dsp", "-dsp has been removed. Use -ao oss:dsp_path instead.\n", CONF_TYPE_PRINT, CONF_NOCFG, 0, 0, NULL},
|
||||
{"mixer", &mixer_device, CONF_TYPE_STRING, 0, 0, 0, NULL},
|
||||
{"mixer-channel", &mixer_channel, CONF_TYPE_STRING, 0, 0, 0, NULL},
|
||||
{"softvol", &soft_vol, CONF_TYPE_FLAG, 0, 0, 1, NULL},
|
||||
{"nosoftvol", &soft_vol, CONF_TYPE_FLAG, 0, 1, 0, NULL},
|
||||
{"softvol-max", &soft_vol_max, CONF_TYPE_FLOAT, CONF_RANGE, 10, 10000, NULL},
|
||||
{"volstep", &volstep, CONF_TYPE_INT, CONF_RANGE, 0, 100, NULL},
|
||||
{"volume", &start_volume, CONF_TYPE_FLOAT, CONF_RANGE, -1, 10000, NULL},
|
||||
{"master", "Option -master has been removed, use -af volume instead.\n", CONF_TYPE_PRINT, 0, 0, 0, NULL},
|
||||
// override audio buffer size (used only by -ao oss, anyway obsolete...)
|
||||
{"abs", &ao_data.buffersize, CONF_TYPE_INT, CONF_MIN, 0, 0, NULL},
|
||||
{"aop", "-aop has been removed, use -af instead.\n", CONF_TYPE_PRINT, CONF_NOCFG, 0, 0, NULL},
|
||||
{"dsp", "-dsp has been removed. Use -ao oss:dsp_path instead.\n", CONF_TYPE_PRINT, CONF_NOCFG, 0, 0, NULL},
|
||||
{"mixer", &mixer_device, CONF_TYPE_STRING, 0, 0, 0, NULL},
|
||||
{"mixer-channel", &mixer_channel, CONF_TYPE_STRING, 0, 0, 0, NULL},
|
||||
{"softvol", &soft_vol, CONF_TYPE_FLAG, 0, 0, 1, NULL},
|
||||
{"nosoftvol", &soft_vol, CONF_TYPE_FLAG, 0, 1, 0, NULL},
|
||||
{"softvol-max", &soft_vol_max, CONF_TYPE_FLOAT, CONF_RANGE, 10, 10000, NULL},
|
||||
{"volstep", &volstep, CONF_TYPE_INT, CONF_RANGE, 0, 100, NULL},
|
||||
{"volume", &start_volume, CONF_TYPE_FLOAT, CONF_RANGE, -1, 10000, NULL},
|
||||
{"master", "Option -master has been removed, use -af volume instead.\n", CONF_TYPE_PRINT, 0, 0, 0, NULL},
|
||||
// override audio buffer size (used only by -ao oss, anyway obsolete...)
|
||||
{"abs", &ao_data.buffersize, CONF_TYPE_INT, CONF_MIN, 0, 0, NULL},
|
||||
|
||||
// -ao pcm options:
|
||||
{"aofile", "-aofile has been removed. Use -ao pcm:file=<filename> instead.\n", CONF_TYPE_PRINT, 0, 0, 0, NULL},
|
||||
{"waveheader", "-waveheader has been removed. Use -ao pcm:waveheader instead.\n", CONF_TYPE_PRINT, 0, 0, 1, NULL},
|
||||
{"nowaveheader", "-nowaveheader has been removed. Use -ao pcm:nowaveheader instead.\n", CONF_TYPE_PRINT, 0, 1, 0, NULL},
|
||||
// -ao pcm options:
|
||||
{"aofile", "-aofile has been removed. Use -ao pcm:file=<filename> instead.\n", CONF_TYPE_PRINT, 0, 0, 0, NULL},
|
||||
{"waveheader", "-waveheader has been removed. Use -ao pcm:waveheader instead.\n", CONF_TYPE_PRINT, 0, 0, 1, NULL},
|
||||
{"nowaveheader", "-nowaveheader has been removed. Use -ao pcm:nowaveheader instead.\n", CONF_TYPE_PRINT, 0, 1, 0, NULL},
|
||||
|
||||
{"alsa", "-alsa has been removed. Remove it from your config file.\n",
|
||||
{"alsa", "-alsa has been removed. Remove it from your config file.\n",
|
||||
CONF_TYPE_PRINT, 0, 0, 0, NULL},
|
||||
{"noalsa", "-noalsa has been removed. Remove it from your config file.\n",
|
||||
{"noalsa", "-noalsa has been removed. Remove it from your config file.\n",
|
||||
CONF_TYPE_PRINT, 0, 0, 0, NULL},
|
||||
{"edlout", &edl_output_filename, CONF_TYPE_STRING, 0, 0, 0, NULL},
|
||||
{"edlout", &edl_output_filename, CONF_TYPE_STRING, 0, 0, 0, NULL},
|
||||
|
||||
#ifdef CONFIG_X11
|
||||
{"display", &mDisplayName, CONF_TYPE_STRING, 0, 0, 0, NULL},
|
||||
{"display", &mDisplayName, CONF_TYPE_STRING, 0, 0, 0, NULL},
|
||||
#endif
|
||||
|
||||
// -vo png only:
|
||||
// -vo png only:
|
||||
#ifdef CONFIG_PNG
|
||||
{"z", "-z has been removed. Use -vo png:z=<0-9> instead.\n", CONF_TYPE_PRINT, 0, 0, 0, NULL},
|
||||
{"z", "-z has been removed. Use -vo png:z=<0-9> instead.\n", CONF_TYPE_PRINT, 0, 0, 0, NULL},
|
||||
#endif
|
||||
// -vo jpeg only:
|
||||
// -vo jpeg only:
|
||||
#ifdef CONFIG_JPEG
|
||||
{"jpeg", "-jpeg has been removed. Use -vo jpeg:<options> instead.\n",
|
||||
CONF_TYPE_PRINT, 0, 0, 0, NULL},
|
||||
{"jpeg", "-jpeg has been removed. Use -vo jpeg:<options> instead.\n",
|
||||
CONF_TYPE_PRINT, 0, 0, 0, NULL},
|
||||
#endif
|
||||
// -vo sdl only:
|
||||
{"sdl", "Use -vo sdl:driver=<driver> instead of -vo sdl -sdl driver.\n",
|
||||
CONF_TYPE_PRINT, 0, 0, 0, NULL},
|
||||
{"noxv", "-noxv has been removed. Use -vo sdl:nohwaccel instead.\n", CONF_TYPE_PRINT, 0, 0, 0, NULL},
|
||||
{"forcexv", "-forcexv has been removed. Use -vo sdl:forcexv instead.\n", CONF_TYPE_PRINT, 0, 0, 0, NULL},
|
||||
// -ao sdl only:
|
||||
{"sdla", "Use -ao sdl:driver instead of -ao sdl -sdla driver.\n",
|
||||
CONF_TYPE_PRINT, 0, 0, 0, NULL},
|
||||
// -vo sdl only:
|
||||
{"sdl", "Use -vo sdl:driver=<driver> instead of -vo sdl -sdl driver.\n",
|
||||
CONF_TYPE_PRINT, 0, 0, 0, NULL},
|
||||
{"noxv", "-noxv has been removed. Use -vo sdl:nohwaccel instead.\n", CONF_TYPE_PRINT, 0, 0, 0, NULL},
|
||||
{"forcexv", "-forcexv has been removed. Use -vo sdl:forcexv instead.\n", CONF_TYPE_PRINT, 0, 0, 0, NULL},
|
||||
// -ao sdl only:
|
||||
{"sdla", "Use -ao sdl:driver instead of -ao sdl -sdla driver.\n",
|
||||
CONF_TYPE_PRINT, 0, 0, 0, NULL},
|
||||
|
||||
#if defined(CONFIG_FBDEV) || defined(CONFIG_VESA)
|
||||
{"monitor-hfreq", &monitor_hfreq_str, CONF_TYPE_STRING, 0, 0, 0, NULL},
|
||||
{"monitor-vfreq", &monitor_vfreq_str, CONF_TYPE_STRING, 0, 0, 0, NULL},
|
||||
{"monitor-dotclock", &monitor_dotclock_str, CONF_TYPE_STRING, 0, 0, 0, NULL},
|
||||
{"monitor-hfreq", &monitor_hfreq_str, CONF_TYPE_STRING, 0, 0, 0, NULL},
|
||||
{"monitor-vfreq", &monitor_vfreq_str, CONF_TYPE_STRING, 0, 0, 0, NULL},
|
||||
{"monitor-dotclock", &monitor_dotclock_str, CONF_TYPE_STRING, 0, 0, 0, NULL},
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_FBDEV
|
||||
{"fbmode", &fb_mode_name, CONF_TYPE_STRING, 0, 0, 0, NULL},
|
||||
{"fbmodeconfig", &fb_mode_cfgfile, CONF_TYPE_STRING, 0, 0, 0, NULL},
|
||||
{"fbmode", &fb_mode_name, CONF_TYPE_STRING, 0, 0, 0, NULL},
|
||||
{"fbmodeconfig", &fb_mode_cfgfile, CONF_TYPE_STRING, 0, 0, 0, NULL},
|
||||
#endif
|
||||
#ifdef CONFIG_DIRECTFB
|
||||
#if DIRECTFBVERSION > 912
|
||||
{"dfbopts", "-dfbopts has been removed. Use -vf directfb:dfbopts=... instead.\n", CONF_TYPE_PRINT, 0, 0, 0, NULL},
|
||||
{"dfbopts", "-dfbopts has been removed. Use -vf directfb:dfbopts=... instead.\n", CONF_TYPE_PRINT, 0, 0, 0, NULL},
|
||||
#endif
|
||||
#endif
|
||||
|
||||
// force window width/height or resolution (with -vm)
|
||||
OPT_INTRANGE("x", screen_size_x, 0, 0, 4096),
|
||||
OPT_INTRANGE("y", screen_size_y, 0, 0, 4096),
|
||||
// set screen dimensions (when not detectable or virtual!=visible)
|
||||
OPT_INTRANGE("screenw", vo_screenwidth, CONF_OLD, 0, 4096),
|
||||
OPT_INTRANGE("screenh", vo_screenheight, CONF_OLD, 0, 4096),
|
||||
// Geometry string
|
||||
{"geometry", &vo_geometry, CONF_TYPE_STRING, 0, 0, 0, NULL},
|
||||
OPT_FLAG_ON("force-window-position", force_window_position, 0),
|
||||
OPT_FLAG_OFF("noforce-window-position", force_window_position, 0),
|
||||
// vo name (X classname) and window title strings
|
||||
{"name", &vo_winname, CONF_TYPE_STRING, 0, 0, 0, NULL},
|
||||
{"title", &vo_wintitle, CONF_TYPE_STRING, 0, 0, 0, NULL},
|
||||
// set aspect ratio of monitor - useful for 16:9 TV-out
|
||||
OPT_FLOATRANGE("monitoraspect", force_monitor_aspect, 0, 0.0, 9.0),
|
||||
OPT_FLOATRANGE("monitorpixelaspect", monitor_pixel_aspect, 0, 0.2, 9.0),
|
||||
// video mode switching: (x11,xv,dga)
|
||||
OPT_FLAG_ON("vm", vidmode, 0),
|
||||
OPT_FLAG_OFF("novm", vidmode, 0),
|
||||
// start in fullscreen mode:
|
||||
OPT_FLAG_ON("fs", fullscreen, 0),
|
||||
OPT_FLAG_OFF("nofs", fullscreen, 0),
|
||||
// set fullscreen switch method (workaround for buggy WMs)
|
||||
{"fsmode", "-fsmode is obsolete, avoid it and use -fstype instead.\nIf you really want it, try -fsmode-dontuse, but don't report bugs!\n", CONF_TYPE_PRINT, CONF_RANGE, 0, 31, NULL},
|
||||
{"fsmode-dontuse", &vo_fsmode, CONF_TYPE_INT, CONF_RANGE, 0, 31, NULL},
|
||||
// set bpp (x11+vm, dga, fbdev, vesa, svga?)
|
||||
OPT_INTRANGE("bpp", vo_dbpp, 0, 0, 32),
|
||||
{"colorkey", &vo_colorkey, CONF_TYPE_INT, 0, 0, 0, NULL},
|
||||
{"nocolorkey", &vo_colorkey, CONF_TYPE_FLAG, 0, 0, 0x1000000, NULL},
|
||||
{"double", &vo_doublebuffering, CONF_TYPE_FLAG, 0, 0, 1, NULL},
|
||||
{"nodouble", &vo_doublebuffering, CONF_TYPE_FLAG, 0, 1, 0, NULL},
|
||||
// wait for v-sync (vesa)
|
||||
{"vsync", &vo_vsync, CONF_TYPE_FLAG, 0, 0, 1, NULL},
|
||||
{"novsync", &vo_vsync, CONF_TYPE_FLAG, 0, 1, 0, NULL},
|
||||
{"panscan", &vo_panscan, CONF_TYPE_FLOAT, CONF_RANGE, -1.0, 1.0, NULL},
|
||||
OPT_FLOATRANGE("panscanrange", vo_panscanrange, 0, -19.0, 99.0),
|
||||
// force window width/height or resolution (with -vm)
|
||||
OPT_INTRANGE("x", screen_size_x, 0, 0, 4096),
|
||||
OPT_INTRANGE("y", screen_size_y, 0, 0, 4096),
|
||||
// set screen dimensions (when not detectable or virtual!=visible)
|
||||
OPT_INTRANGE("screenw", vo_screenwidth, CONF_OLD, 0, 4096),
|
||||
OPT_INTRANGE("screenh", vo_screenheight, CONF_OLD, 0, 4096),
|
||||
// Geometry string
|
||||
{"geometry", &vo_geometry, CONF_TYPE_STRING, 0, 0, 0, NULL},
|
||||
OPT_FLAG_ON("force-window-position", force_window_position, 0),
|
||||
OPT_FLAG_OFF("noforce-window-position", force_window_position, 0),
|
||||
// vo name (X classname) and window title strings
|
||||
{"name", &vo_winname, CONF_TYPE_STRING, 0, 0, 0, NULL},
|
||||
{"title", &vo_wintitle, CONF_TYPE_STRING, 0, 0, 0, NULL},
|
||||
// set aspect ratio of monitor - useful for 16:9 TV-out
|
||||
OPT_FLOATRANGE("monitoraspect", force_monitor_aspect, 0, 0.0, 9.0),
|
||||
OPT_FLOATRANGE("monitorpixelaspect", monitor_pixel_aspect, 0, 0.2, 9.0),
|
||||
// video mode switching: (x11,xv,dga)
|
||||
OPT_FLAG_ON("vm", vidmode, 0),
|
||||
OPT_FLAG_OFF("novm", vidmode, 0),
|
||||
// start in fullscreen mode:
|
||||
OPT_FLAG_ON("fs", fullscreen, 0),
|
||||
OPT_FLAG_OFF("nofs", fullscreen, 0),
|
||||
// set fullscreen switch method (workaround for buggy WMs)
|
||||
{"fsmode", "-fsmode is obsolete, avoid it and use -fstype instead.\nIf you really want it, try -fsmode-dontuse, but don't report bugs!\n", CONF_TYPE_PRINT, CONF_RANGE, 0, 31, NULL},
|
||||
{"fsmode-dontuse", &vo_fsmode, CONF_TYPE_INT, CONF_RANGE, 0, 31, NULL},
|
||||
// set bpp (x11+vm, dga, fbdev, vesa, svga?)
|
||||
OPT_INTRANGE("bpp", vo_dbpp, 0, 0, 32),
|
||||
{"colorkey", &vo_colorkey, CONF_TYPE_INT, 0, 0, 0, NULL},
|
||||
{"nocolorkey", &vo_colorkey, CONF_TYPE_FLAG, 0, 0, 0x1000000, NULL},
|
||||
{"double", &vo_doublebuffering, CONF_TYPE_FLAG, 0, 0, 1, NULL},
|
||||
{"nodouble", &vo_doublebuffering, CONF_TYPE_FLAG, 0, 1, 0, NULL},
|
||||
// wait for v-sync (vesa)
|
||||
{"vsync", &vo_vsync, CONF_TYPE_FLAG, 0, 0, 1, NULL},
|
||||
{"novsync", &vo_vsync, CONF_TYPE_FLAG, 0, 1, 0, NULL},
|
||||
{"panscan", &vo_panscan, CONF_TYPE_FLOAT, CONF_RANGE, -1.0, 1.0, NULL},
|
||||
OPT_FLOATRANGE("panscanrange", vo_panscanrange, 0, -19.0, 99.0),
|
||||
|
||||
{"grabpointer", &vo_grabpointer, CONF_TYPE_FLAG, 0, 0, 1, NULL},
|
||||
{"nograbpointer", &vo_grabpointer, CONF_TYPE_FLAG, 0, 1, 0, NULL},
|
||||
{"grabpointer", &vo_grabpointer, CONF_TYPE_FLAG, 0, 0, 1, NULL},
|
||||
{"nograbpointer", &vo_grabpointer, CONF_TYPE_FLAG, 0, 1, 0, NULL},
|
||||
|
||||
{"adapter", &vo_adapter_num, CONF_TYPE_INT, CONF_RANGE, 0, 5, NULL},
|
||||
{"refreshrate",&vo_refresh_rate,CONF_TYPE_INT,CONF_RANGE, 0,100, NULL},
|
||||
{"wid", &WinID, CONF_TYPE_INT64, 0, 0, 0, NULL},
|
||||
{"wid", &WinID, CONF_TYPE_INT64, 0, 0, 0, NULL},
|
||||
#ifdef CONFIG_X11
|
||||
// x11,xv,xmga,xvidix
|
||||
{"icelayer", "-icelayer has been removed. Use -fstype layer:<number> instead.\n", CONF_TYPE_PRINT, 0, 0, 0, NULL},
|
||||
{"stop-xscreensaver", &stop_xscreensaver, CONF_TYPE_FLAG, 0, 0, 1, NULL},
|
||||
{"nostop-xscreensaver", &stop_xscreensaver, CONF_TYPE_FLAG, 0, 1, 0, NULL},
|
||||
{"stop_xscreensaver", "Use -stop-xscreensaver instead, options with _ have been obsoleted.\n", CONF_TYPE_PRINT, 0, 0, 0, NULL},
|
||||
{"fstype", &vo_fstype_list, CONF_TYPE_STRING_LIST, 0, 0, 0, NULL},
|
||||
// x11,xv,xmga,xvidix
|
||||
{"icelayer", "-icelayer has been removed. Use -fstype layer:<number> instead.\n", CONF_TYPE_PRINT, 0, 0, 0, NULL},
|
||||
{"stop-xscreensaver", &stop_xscreensaver, CONF_TYPE_FLAG, 0, 0, 1, NULL},
|
||||
{"nostop-xscreensaver", &stop_xscreensaver, CONF_TYPE_FLAG, 0, 1, 0, NULL},
|
||||
{"stop_xscreensaver", "Use -stop-xscreensaver instead, options with _ have been obsoleted.\n", CONF_TYPE_PRINT, 0, 0, 0, NULL},
|
||||
{"fstype", &vo_fstype_list, CONF_TYPE_STRING_LIST, 0, 0, 0, NULL},
|
||||
#endif
|
||||
{"heartbeat-cmd", &heartbeat_cmd, CONF_TYPE_STRING, 0, 0, 0, NULL},
|
||||
{"mouseinput", &vo_nomouse_input, CONF_TYPE_FLAG, 0, 1, 0, NULL},
|
||||
{"nomouseinput", &vo_nomouse_input, CONF_TYPE_FLAG,0, 0, 1, NULL},
|
||||
{"heartbeat-cmd", &heartbeat_cmd, CONF_TYPE_STRING, 0, 0, 0, NULL},
|
||||
{"mouseinput", &vo_nomouse_input, CONF_TYPE_FLAG, 0, 1, 0, NULL},
|
||||
{"nomouseinput", &vo_nomouse_input, CONF_TYPE_FLAG,0, 0, 1, NULL},
|
||||
|
||||
{"xineramascreen", &xinerama_screen, CONF_TYPE_INT, CONF_RANGE, -2, 32, NULL},
|
||||
{"xineramascreen", &xinerama_screen, CONF_TYPE_INT, CONF_RANGE, -2, 32, NULL},
|
||||
|
||||
OPT_INTRANGE("brightness", vo_gamma_brightness, 0, -100, 100),
|
||||
OPT_INTRANGE("saturation", vo_gamma_saturation, 0, -100, 100),
|
||||
OPT_INTRANGE("contrast", vo_gamma_contrast, 0, -100, 100),
|
||||
OPT_INTRANGE("hue", vo_gamma_hue, 0, -100, 100),
|
||||
{"keepaspect", &vo_keepaspect, CONF_TYPE_FLAG, 0, 0, 1, NULL},
|
||||
{"nokeepaspect", &vo_keepaspect, CONF_TYPE_FLAG, 0, 1, 0, NULL},
|
||||
OPT_INTRANGE("brightness", vo_gamma_brightness, 0, -100, 100),
|
||||
OPT_INTRANGE("saturation", vo_gamma_saturation, 0, -100, 100),
|
||||
OPT_INTRANGE("contrast", vo_gamma_contrast, 0, -100, 100),
|
||||
OPT_INTRANGE("hue", vo_gamma_hue, 0, -100, 100),
|
||||
{"keepaspect", &vo_keepaspect, CONF_TYPE_FLAG, 0, 0, 1, NULL},
|
||||
{"nokeepaspect", &vo_keepaspect, CONF_TYPE_FLAG, 0, 1, 0, NULL},
|
||||
|
||||
// direct rendering (decoding to video out buffer)
|
||||
{"dr", &vo_directrendering, CONF_TYPE_FLAG, 0, 0, 1, NULL},
|
||||
{"nodr", &vo_directrendering, CONF_TYPE_FLAG, 0, 1, 0, NULL},
|
||||
{"vaa_dr", "-vaa_dr has been removed, use -dr.\n", CONF_TYPE_PRINT, 0, 0, 0, NULL},
|
||||
{"vaa_nodr", "-vaa_nodr has been removed, use -nodr.\n", CONF_TYPE_PRINT, 0, 0, 0, NULL},
|
||||
// direct rendering (decoding to video out buffer)
|
||||
{"dr", &vo_directrendering, CONF_TYPE_FLAG, 0, 0, 1, NULL},
|
||||
{"nodr", &vo_directrendering, CONF_TYPE_FLAG, 0, 1, 0, NULL},
|
||||
{"vaa_dr", "-vaa_dr has been removed, use -dr.\n", CONF_TYPE_PRINT, 0, 0, 0, NULL},
|
||||
{"vaa_nodr", "-vaa_nodr has been removed, use -nodr.\n", CONF_TYPE_PRINT, 0, 0, 0, NULL},
|
||||
|
||||
#ifdef CONFIG_AA
|
||||
// -vo aa
|
||||
{"aa*", "-aa* has been removed. Use -vo aa:suboption instead.\n", CONF_TYPE_PRINT, 0, 0, 0, NULL},
|
||||
// -vo aa
|
||||
{"aa*", "-aa* has been removed. Use -vo aa:suboption instead.\n", CONF_TYPE_PRINT, 0, 0, 0, NULL},
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_ZR
|
||||
// -vo zr
|
||||
{"zr*", vo_zr_parseoption, CONF_TYPE_FUNC_FULL, 0, 0, 0, &vo_zr_revertoption },
|
||||
// -vo zr
|
||||
{"zr*", vo_zr_parseoption, CONF_TYPE_FUNC_FULL, 0, 0, 0, &vo_zr_revertoption },
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_DXR2
|
||||
{"dxr2", &dxr2_opts, CONF_TYPE_SUBCONFIG, 0, 0, 0, NULL},
|
||||
{"dxr2", &dxr2_opts, CONF_TYPE_SUBCONFIG, 0, 0, 0, NULL},
|
||||
#endif
|
||||
|
||||
|
||||
//---------------------- mplayer-only options ------------------------
|
||||
|
||||
{"use-filedir-conf", &use_filedir_conf, CONF_TYPE_FLAG, CONF_GLOBAL, 0, 1, NULL},
|
||||
{"nouse-filedir-conf", &use_filedir_conf, CONF_TYPE_FLAG, CONF_GLOBAL, 1, 0, NULL},
|
||||
{"use-filename-title", &use_filename_title, CONF_TYPE_FLAG, CONF_GLOBAL, 0, 1, NULL},
|
||||
{"nouse-filename-title", &use_filename_title, CONF_TYPE_FLAG, CONF_GLOBAL, 1, 0, NULL},
|
||||
{"use-filedir-conf", &use_filedir_conf, CONF_TYPE_FLAG, CONF_GLOBAL, 0, 1, NULL},
|
||||
{"nouse-filedir-conf", &use_filedir_conf, CONF_TYPE_FLAG, CONF_GLOBAL, 1, 0, NULL},
|
||||
{"use-filename-title", &use_filename_title, CONF_TYPE_FLAG, CONF_GLOBAL, 0, 1, NULL},
|
||||
{"nouse-filename-title", &use_filename_title, CONF_TYPE_FLAG, CONF_GLOBAL, 1, 0, NULL},
|
||||
#ifdef CONFIG_CRASH_DEBUG
|
||||
{"crash-debug", &crash_debug, CONF_TYPE_FLAG, CONF_GLOBAL, 0, 1, NULL},
|
||||
{"nocrash-debug", &crash_debug, CONF_TYPE_FLAG, CONF_GLOBAL, 1, 0, NULL},
|
||||
{"crash-debug", &crash_debug, CONF_TYPE_FLAG, CONF_GLOBAL, 0, 1, NULL},
|
||||
{"nocrash-debug", &crash_debug, CONF_TYPE_FLAG, CONF_GLOBAL, 1, 0, NULL},
|
||||
#endif
|
||||
OPT_INTRANGE("osdlevel", osd_level, 0, 0, 3),
|
||||
OPT_INTRANGE("osd-duration", osd_duration, 0, 0, 3600000),
|
||||
OPT_INTRANGE("osdlevel", osd_level, 0, 0, 3),
|
||||
OPT_INTRANGE("osd-duration", osd_duration, 0, 0, 3600000),
|
||||
#ifdef CONFIG_MENU
|
||||
{"menu", &use_menu, CONF_TYPE_FLAG, CONF_GLOBAL, 0, 1, NULL},
|
||||
{"nomenu", &use_menu, CONF_TYPE_FLAG, CONF_GLOBAL, 1, 0, NULL},
|
||||
{"menu-root", &menu_root, CONF_TYPE_STRING, CONF_GLOBAL, 0, 0, NULL},
|
||||
{"menu-cfg", &menu_cfg, CONF_TYPE_STRING, CONF_GLOBAL, 0, 0, NULL},
|
||||
{"menu-startup", &menu_startup, CONF_TYPE_FLAG, CONF_GLOBAL, 0, 1, NULL},
|
||||
{"menu-keepdir", &menu_keepdir, CONF_TYPE_FLAG, CONF_GLOBAL, 0, 1, NULL},
|
||||
{"menu-chroot", &menu_chroot, CONF_TYPE_STRING, 0, 0, 0, NULL},
|
||||
{"menu", &use_menu, CONF_TYPE_FLAG, CONF_GLOBAL, 0, 1, NULL},
|
||||
{"nomenu", &use_menu, CONF_TYPE_FLAG, CONF_GLOBAL, 1, 0, NULL},
|
||||
{"menu-root", &menu_root, CONF_TYPE_STRING, CONF_GLOBAL, 0, 0, NULL},
|
||||
{"menu-cfg", &menu_cfg, CONF_TYPE_STRING, CONF_GLOBAL, 0, 0, NULL},
|
||||
{"menu-startup", &menu_startup, CONF_TYPE_FLAG, CONF_GLOBAL, 0, 1, NULL},
|
||||
{"menu-keepdir", &menu_keepdir, CONF_TYPE_FLAG, CONF_GLOBAL, 0, 1, NULL},
|
||||
{"menu-chroot", &menu_chroot, CONF_TYPE_STRING, 0, 0, 0, NULL},
|
||||
#ifdef CONFIG_FRIBIDI
|
||||
{"menu-fribidi-charset", &menu_fribidi_charset, CONF_TYPE_STRING, 0, 0, 0, NULL},
|
||||
{"menu-flip-hebrew", &menu_flip_hebrew, CONF_TYPE_FLAG, 0, 0, 1, NULL},
|
||||
{"menu-noflip-hebrew", &menu_flip_hebrew, CONF_TYPE_FLAG, 0, 1, 0, NULL},
|
||||
{"menu-flip-hebrew-commas", &menu_fribidi_flip_commas, CONF_TYPE_FLAG, 0, 1, 0, NULL},
|
||||
{"menu-noflip-hebrew-commas", &menu_fribidi_flip_commas, CONF_TYPE_FLAG, 0, 0, 1, NULL},
|
||||
{"menu-fribidi-charset", &menu_fribidi_charset, CONF_TYPE_STRING, 0, 0, 0, NULL},
|
||||
{"menu-flip-hebrew", &menu_flip_hebrew, CONF_TYPE_FLAG, 0, 0, 1, NULL},
|
||||
{"menu-noflip-hebrew", &menu_flip_hebrew, CONF_TYPE_FLAG, 0, 1, 0, NULL},
|
||||
{"menu-flip-hebrew-commas", &menu_fribidi_flip_commas, CONF_TYPE_FLAG, 0, 1, 0, NULL},
|
||||
{"menu-noflip-hebrew-commas", &menu_fribidi_flip_commas, CONF_TYPE_FLAG, 0, 0, 1, NULL},
|
||||
#endif /* CONFIG_FRIBIDI */
|
||||
#else
|
||||
{"menu", "OSD menu support was not compiled in.\n", CONF_TYPE_PRINT,0, 0, 0, NULL},
|
||||
{"menu", "OSD menu support was not compiled in.\n", CONF_TYPE_PRINT,0, 0, 0, NULL},
|
||||
#endif /* CONFIG_MENU */
|
||||
|
||||
// these should be moved to -common, and supported in MEncoder
|
||||
{"vobsub", &vobsub_name, CONF_TYPE_STRING, 0, 0, 0, NULL},
|
||||
{"vobsubid", &vobsub_id, CONF_TYPE_INT, CONF_RANGE, 0, 31, NULL},
|
||||
// these should be moved to -common, and supported in MEncoder
|
||||
{"vobsub", &vobsub_name, CONF_TYPE_STRING, 0, 0, 0, NULL},
|
||||
{"vobsubid", &vobsub_id, CONF_TYPE_INT, CONF_RANGE, 0, 31, NULL},
|
||||
#ifdef CONFIG_UNRAR_EXEC
|
||||
{"unrarexec", &unrar_executable, CONF_TYPE_STRING, 0, 0, 0, NULL},
|
||||
{"unrarexec", &unrar_executable, CONF_TYPE_STRING, 0, 0, 0, NULL},
|
||||
#endif
|
||||
|
||||
{"sstep", &step_sec, CONF_TYPE_INT, CONF_MIN, 0, 0, NULL},
|
||||
{"sstep", &step_sec, CONF_TYPE_INT, CONF_MIN, 0, 0, NULL},
|
||||
|
||||
{"framedrop", &frame_dropping, CONF_TYPE_FLAG, 0, 0, 1, NULL},
|
||||
{"hardframedrop", &frame_dropping, CONF_TYPE_FLAG, 0, 0, 2, NULL},
|
||||
{"noframedrop", &frame_dropping, CONF_TYPE_FLAG, 0, 1, 0, NULL},
|
||||
{"framedrop", &frame_dropping, CONF_TYPE_FLAG, 0, 0, 1, NULL},
|
||||
{"hardframedrop", &frame_dropping, CONF_TYPE_FLAG, 0, 0, 2, NULL},
|
||||
{"noframedrop", &frame_dropping, CONF_TYPE_FLAG, 0, 1, 0, NULL},
|
||||
|
||||
{"autoq", &auto_quality, CONF_TYPE_INT, CONF_RANGE, 0, 100, NULL},
|
||||
{"autoq", &auto_quality, CONF_TYPE_INT, CONF_RANGE, 0, 100, NULL},
|
||||
|
||||
{"benchmark", &benchmark, CONF_TYPE_FLAG, 0, 0, 1, NULL},
|
||||
{"benchmark", &benchmark, CONF_TYPE_FLAG, 0, 0, 1, NULL},
|
||||
|
||||
// dump some stream out instead of playing the file
|
||||
// this really should be in MEncoder instead of MPlayer... -> TODO
|
||||
{"dumpfile", &stream_dump_name, CONF_TYPE_STRING, 0, 0, 0, NULL},
|
||||
{"dumpaudio", &stream_dump_type, CONF_TYPE_FLAG, 0, 0, 1, NULL},
|
||||
{"dumpvideo", &stream_dump_type, CONF_TYPE_FLAG, 0, 0, 2, NULL},
|
||||
{"dumpsub", &stream_dump_type, CONF_TYPE_FLAG, 0, 0, 3, NULL},
|
||||
{"dumpmpsub", &stream_dump_type, CONF_TYPE_FLAG, 0, 0, 4, NULL},
|
||||
{"dumpstream", &stream_dump_type, CONF_TYPE_FLAG, 0, 0, 5, NULL},
|
||||
{"dumpsrtsub", &stream_dump_type, CONF_TYPE_FLAG, 0, 0, 6, NULL},
|
||||
{"dumpmicrodvdsub", &stream_dump_type, CONF_TYPE_FLAG, 0, 0, 7, NULL},
|
||||
{"dumpjacosub", &stream_dump_type, CONF_TYPE_FLAG, 0, 0, 8, NULL},
|
||||
{"dumpsami", &stream_dump_type, CONF_TYPE_FLAG, 0, 0, 9, NULL},
|
||||
// dump some stream out instead of playing the file
|
||||
// this really should be in MEncoder instead of MPlayer... -> TODO
|
||||
{"dumpfile", &stream_dump_name, CONF_TYPE_STRING, 0, 0, 0, NULL},
|
||||
{"dumpaudio", &stream_dump_type, CONF_TYPE_FLAG, 0, 0, 1, NULL},
|
||||
{"dumpvideo", &stream_dump_type, CONF_TYPE_FLAG, 0, 0, 2, NULL},
|
||||
{"dumpsub", &stream_dump_type, CONF_TYPE_FLAG, 0, 0, 3, NULL},
|
||||
{"dumpmpsub", &stream_dump_type, CONF_TYPE_FLAG, 0, 0, 4, NULL},
|
||||
{"dumpstream", &stream_dump_type, CONF_TYPE_FLAG, 0, 0, 5, NULL},
|
||||
{"dumpsrtsub", &stream_dump_type, CONF_TYPE_FLAG, 0, 0, 6, NULL},
|
||||
{"dumpmicrodvdsub", &stream_dump_type, CONF_TYPE_FLAG, 0, 0, 7, NULL},
|
||||
{"dumpjacosub", &stream_dump_type, CONF_TYPE_FLAG, 0, 0, 8, NULL},
|
||||
{"dumpsami", &stream_dump_type, CONF_TYPE_FLAG, 0, 0, 9, NULL},
|
||||
|
||||
#ifdef CONFIG_LIRC
|
||||
{"lircconf", &lirc_configfile, CONF_TYPE_STRING, CONF_GLOBAL, 0, 0, NULL},
|
||||
{"lircconf", &lirc_configfile, CONF_TYPE_STRING, CONF_GLOBAL, 0, 0, NULL},
|
||||
#endif
|
||||
|
||||
// these should be removed when gmplayer is forgotten
|
||||
{"gui", "Internal GUI was removed. Use some other frontend instead.\n", CONF_TYPE_PRINT, 0, 0, 0, NULL},
|
||||
{"nogui", "Internal GUI was removed, -nogui is no longer valid.\n", CONF_TYPE_PRINT, 0, 0, 0, NULL},
|
||||
|
||||
OPT_FLAG_CONSTANTS("noloop", loop_times, 0, 0, -1),
|
||||
OPT_INTRANGE("loop", loop_times, 0, -1, 10000),
|
||||
{"playlist", NULL, CONF_TYPE_STRING, 0, 0, 0, NULL},
|
||||
OPT_FLAG_CONSTANTS("noloop", loop_times, 0, 0, -1),
|
||||
OPT_INTRANGE("loop", loop_times, 0, -1, 10000),
|
||||
{"playlist", NULL, CONF_TYPE_STRING, 0, 0, 0, NULL},
|
||||
|
||||
OPT_FLAG_ON("ordered-chapters", ordered_chapters, 0),
|
||||
OPT_FLAG_OFF("noordered-chapters", ordered_chapters, 0),
|
||||
OPT_FLAG_ON("ordered-chapters", ordered_chapters, 0),
|
||||
OPT_FLAG_OFF("noordered-chapters", ordered_chapters, 0),
|
||||
|
||||
// a-v sync stuff:
|
||||
OPT_FLAG_ON("correct-pts", user_correct_pts, 0),
|
||||
OPT_FLAG_OFF("nocorrect-pts", user_correct_pts, 0),
|
||||
OPT_INTRANGE("pts-association-mode", user_pts_assoc_mode, 0, 0, 2),
|
||||
{"noautosync", &autosync, CONF_TYPE_FLAG, 0, 0, -1, NULL},
|
||||
{"autosync", &autosync, CONF_TYPE_INT, CONF_RANGE, 0, 10000, NULL},
|
||||
// a-v sync stuff:
|
||||
OPT_FLAG_ON("correct-pts", user_correct_pts, 0),
|
||||
OPT_FLAG_OFF("nocorrect-pts", user_correct_pts, 0),
|
||||
OPT_INTRANGE("pts-association-mode", user_pts_assoc_mode, 0, 0, 2),
|
||||
{"noautosync", &autosync, CONF_TYPE_FLAG, 0, 0, -1, NULL},
|
||||
{"autosync", &autosync, CONF_TYPE_INT, CONF_RANGE, 0, 10000, NULL},
|
||||
|
||||
{"softsleep", &softsleep, CONF_TYPE_FLAG, 0, 0, 1, NULL},
|
||||
{"softsleep", &softsleep, CONF_TYPE_FLAG, 0, 0, 1, NULL},
|
||||
#ifdef HAVE_RTC
|
||||
{"nortc", &nortc, CONF_TYPE_FLAG, 0, 0, 1, NULL},
|
||||
{"rtc", &nortc, CONF_TYPE_FLAG, 0, 1, 0, NULL},
|
||||
{"rtc-device", &rtc_device, CONF_TYPE_STRING, 0, 0, 0, NULL},
|
||||
{"nortc", &nortc, CONF_TYPE_FLAG, 0, 0, 1, NULL},
|
||||
{"rtc", &nortc, CONF_TYPE_FLAG, 0, 1, 0, NULL},
|
||||
{"rtc-device", &rtc_device, CONF_TYPE_STRING, 0, 0, 0, NULL},
|
||||
#endif
|
||||
|
||||
{"term-osd", &term_osd, CONF_TYPE_FLAG, 0, 0, 1, NULL},
|
||||
{"noterm-osd", &term_osd, CONF_TYPE_FLAG, 0, 1, 0, NULL},
|
||||
{"term-osd-esc", &term_osd_esc, CONF_TYPE_STRING, 0, 0, 1, NULL},
|
||||
{"playing-msg", &playing_msg, CONF_TYPE_STRING, 0, 0, 0, NULL},
|
||||
{"term-osd", &term_osd, CONF_TYPE_FLAG, 0, 0, 1, NULL},
|
||||
{"noterm-osd", &term_osd, CONF_TYPE_FLAG, 0, 1, 0, NULL},
|
||||
{"term-osd-esc", &term_osd_esc, CONF_TYPE_STRING, 0, 0, 1, NULL},
|
||||
{"playing-msg", &playing_msg, CONF_TYPE_STRING, 0, 0, 0, NULL},
|
||||
|
||||
{"slave", &slave_mode, CONF_TYPE_FLAG,CONF_GLOBAL , 0, 1, NULL},
|
||||
{"idle", &player_idle_mode, CONF_TYPE_FLAG,CONF_GLOBAL , 0, 1, NULL},
|
||||
{"noidle", &player_idle_mode, CONF_TYPE_FLAG,CONF_GLOBAL , 1, 0, NULL},
|
||||
{"use-stdin", "-use-stdin has been renamed to -noconsolecontrols, use that instead.", CONF_TYPE_PRINT, 0, 0, 0, NULL},
|
||||
OPT_INTRANGE("key-fifo-size", key_fifo_size, CONF_GLOBAL, 2, 65000),
|
||||
{"noconsolecontrols", &noconsolecontrols, CONF_TYPE_FLAG, CONF_GLOBAL, 0, 1, NULL},
|
||||
{"consolecontrols", &noconsolecontrols, CONF_TYPE_FLAG, CONF_GLOBAL, 1, 0, NULL},
|
||||
{"mouse-movements", &enable_mouse_movements, CONF_TYPE_FLAG, CONF_GLOBAL, 0, 1, NULL},
|
||||
{"nomouse-movements", &enable_mouse_movements, CONF_TYPE_FLAG, CONF_GLOBAL, 1, 0, NULL},
|
||||
OPT_INTRANGE("doubleclick-time", doubleclick_time, 0, 0, 1000),
|
||||
{"slave", &slave_mode, CONF_TYPE_FLAG,CONF_GLOBAL , 0, 1, NULL},
|
||||
{"idle", &player_idle_mode, CONF_TYPE_FLAG,CONF_GLOBAL , 0, 1, NULL},
|
||||
{"noidle", &player_idle_mode, CONF_TYPE_FLAG,CONF_GLOBAL , 1, 0, NULL},
|
||||
{"use-stdin", "-use-stdin has been renamed to -noconsolecontrols, use that instead.", CONF_TYPE_PRINT, 0, 0, 0, NULL},
|
||||
OPT_INTRANGE("key-fifo-size", key_fifo_size, CONF_GLOBAL, 2, 65000),
|
||||
{"noconsolecontrols", &noconsolecontrols, CONF_TYPE_FLAG, CONF_GLOBAL, 0, 1, NULL},
|
||||
{"consolecontrols", &noconsolecontrols, CONF_TYPE_FLAG, CONF_GLOBAL, 1, 0, NULL},
|
||||
{"mouse-movements", &enable_mouse_movements, CONF_TYPE_FLAG, CONF_GLOBAL, 0, 1, NULL},
|
||||
{"nomouse-movements", &enable_mouse_movements, CONF_TYPE_FLAG, CONF_GLOBAL, 1, 0, NULL},
|
||||
OPT_INTRANGE("doubleclick-time", doubleclick_time, 0, 0, 1000),
|
||||
#ifdef CONFIG_TV
|
||||
{"tvscan", (void *) tvscan_conf, CONF_TYPE_SUBCONFIG, 0, 0, 0, NULL},
|
||||
{"tvscan", (void *) tvscan_conf, CONF_TYPE_SUBCONFIG, 0, 0, 0, NULL},
|
||||
#else
|
||||
{"tvscan", "MPlayer was compiled without TV interface support.\n", CONF_TYPE_PRINT, 0, 0, 0, NULL},
|
||||
{"tvscan", "MPlayer was compiled without TV interface support.\n", CONF_TYPE_PRINT, 0, 0, 0, NULL},
|
||||
#endif /* CONFIG_TV */
|
||||
|
||||
#include "cfg-common-opts.h"
|
||||
|
||||
{"list-properties", &list_properties, CONF_TYPE_FLAG, CONF_GLOBAL, 0, 1, NULL},
|
||||
{"identify", &mp_msg_levels[MSGT_IDENTIFY], CONF_TYPE_FLAG, CONF_GLOBAL, 0, MSGL_V, NULL},
|
||||
{"-help", (void *) help_text, CONF_TYPE_PRINT, CONF_NOCFG|CONF_GLOBAL, 0, 0, NULL},
|
||||
{"help", (void *) help_text, CONF_TYPE_PRINT, CONF_NOCFG|CONF_GLOBAL, 0, 0, NULL},
|
||||
{"h", (void *) help_text, CONF_TYPE_PRINT, CONF_NOCFG|CONF_GLOBAL, 0, 0, NULL},
|
||||
{"list-properties", &list_properties, CONF_TYPE_FLAG, CONF_GLOBAL, 0, 1, NULL},
|
||||
{"identify", &mp_msg_levels[MSGT_IDENTIFY], CONF_TYPE_FLAG, CONF_GLOBAL, 0, MSGL_V, NULL},
|
||||
{"-help", (void *) help_text, CONF_TYPE_PRINT, CONF_NOCFG|CONF_GLOBAL, 0, 0, NULL},
|
||||
{"help", (void *) help_text, CONF_TYPE_PRINT, CONF_NOCFG|CONF_GLOBAL, 0, 0, NULL},
|
||||
{"h", (void *) help_text, CONF_TYPE_PRINT, CONF_NOCFG|CONF_GLOBAL, 0, 0, NULL},
|
||||
|
||||
{"vd", (void *) vd_conf, CONF_TYPE_SUBCONFIG, 0, 0, 0, NULL},
|
||||
{NULL, NULL, 0, 0, 0, 0, NULL}
|
||||
{"vd", (void *) vd_conf, CONF_TYPE_SUBCONFIG, 0, 0, 0, NULL},
|
||||
{NULL, NULL, 0, 0, 0, 0, NULL}
|
||||
};
|
||||
|
||||
#endif /* MPLAYER_CFG_MPLAYER_H */
|
||||
|
1869
codec-cfg.c
1869
codec-cfg.c
File diff suppressed because it is too large
Load Diff
76
codec-cfg.h
76
codec-cfg.h
@ -19,60 +19,60 @@
|
||||
#ifndef MPLAYER_CODEC_CFG_H
|
||||
#define MPLAYER_CODEC_CFG_H
|
||||
|
||||
#define CODEC_CFG_MIN 20070407
|
||||
#define CODEC_CFG_MIN 20070407
|
||||
|
||||
#define CODECS_MAX_FOURCC 92
|
||||
#define CODECS_MAX_OUTFMT 16
|
||||
#define CODECS_MAX_INFMT 16
|
||||
#define CODECS_MAX_FOURCC 92
|
||||
#define CODECS_MAX_OUTFMT 16
|
||||
#define CODECS_MAX_INFMT 16
|
||||
|
||||
// Global flags:
|
||||
#define CODECS_FLAG_SEEKABLE (1<<0)
|
||||
#define CODECS_FLAG_ALIGN16 (1<<1)
|
||||
#define CODECS_FLAG_SEEKABLE (1<<0)
|
||||
#define CODECS_FLAG_ALIGN16 (1<<1)
|
||||
|
||||
// Outfmt flags:
|
||||
#define CODECS_FLAG_FLIP (1<<0)
|
||||
#define CODECS_FLAG_NOFLIP (1<<1)
|
||||
#define CODECS_FLAG_YUVHACK (1<<2)
|
||||
#define CODECS_FLAG_QUERY (1<<3)
|
||||
#define CODECS_FLAG_STATIC (1<<4)
|
||||
#define CODECS_FLAG_FLIP (1<<0)
|
||||
#define CODECS_FLAG_NOFLIP (1<<1)
|
||||
#define CODECS_FLAG_YUVHACK (1<<2)
|
||||
#define CODECS_FLAG_QUERY (1<<3)
|
||||
#define CODECS_FLAG_STATIC (1<<4)
|
||||
|
||||
#define CODECS_STATUS__MIN 0
|
||||
#define CODECS_STATUS_NOT_WORKING -1
|
||||
#define CODECS_STATUS_PROBLEMS 0
|
||||
#define CODECS_STATUS_WORKING 1
|
||||
#define CODECS_STATUS_UNTESTED 2
|
||||
#define CODECS_STATUS__MAX 2
|
||||
#define CODECS_STATUS__MIN 0
|
||||
#define CODECS_STATUS_NOT_WORKING -1
|
||||
#define CODECS_STATUS_PROBLEMS 0
|
||||
#define CODECS_STATUS_WORKING 1
|
||||
#define CODECS_STATUS_UNTESTED 2
|
||||
#define CODECS_STATUS__MAX 2
|
||||
|
||||
|
||||
#if !defined(GUID_TYPE) && !defined(GUID_DEFINED)
|
||||
#define GUID_TYPE 1
|
||||
#define GUID_TYPE 1
|
||||
#define GUID_DEFINED 1
|
||||
typedef struct {
|
||||
unsigned long f1;
|
||||
unsigned short f2;
|
||||
unsigned short f3;
|
||||
unsigned char f4[8];
|
||||
unsigned long f1;
|
||||
unsigned short f2;
|
||||
unsigned short f3;
|
||||
unsigned char f4[8];
|
||||
} GUID;
|
||||
#endif
|
||||
|
||||
|
||||
typedef struct codecs {
|
||||
unsigned int fourcc[CODECS_MAX_FOURCC];
|
||||
unsigned int fourccmap[CODECS_MAX_FOURCC];
|
||||
unsigned int outfmt[CODECS_MAX_OUTFMT];
|
||||
unsigned char outflags[CODECS_MAX_OUTFMT];
|
||||
unsigned int infmt[CODECS_MAX_INFMT];
|
||||
unsigned char inflags[CODECS_MAX_INFMT];
|
||||
char *name;
|
||||
char *info;
|
||||
char *comment;
|
||||
char *dll;
|
||||
char* drv;
|
||||
GUID guid;
|
||||
// short driver;
|
||||
short flags;
|
||||
short status;
|
||||
short cpuflags;
|
||||
unsigned int fourcc[CODECS_MAX_FOURCC];
|
||||
unsigned int fourccmap[CODECS_MAX_FOURCC];
|
||||
unsigned int outfmt[CODECS_MAX_OUTFMT];
|
||||
unsigned char outflags[CODECS_MAX_OUTFMT];
|
||||
unsigned int infmt[CODECS_MAX_INFMT];
|
||||
unsigned char inflags[CODECS_MAX_INFMT];
|
||||
char *name;
|
||||
char *info;
|
||||
char *comment;
|
||||
char *dll;
|
||||
char* drv;
|
||||
GUID guid;
|
||||
// short driver;
|
||||
short flags;
|
||||
short status;
|
||||
short cpuflags;
|
||||
} codecs_t;
|
||||
|
||||
int parse_codec_cfg(const char *cfgfile);
|
||||
|
567
cpudetect.c
567
cpudetect.c
@ -63,29 +63,29 @@ static int has_cpuid(void)
|
||||
#if ARCH_X86_64
|
||||
return 1;
|
||||
#else
|
||||
long a, c;
|
||||
__asm__ volatile (
|
||||
/* See if CPUID instruction is supported ... */
|
||||
/* ... Get copies of EFLAGS into eax and ecx */
|
||||
"pushfl\n\t"
|
||||
"pop %0\n\t"
|
||||
"mov %0, %1\n\t"
|
||||
long a, c;
|
||||
__asm__ volatile (
|
||||
/* See if CPUID instruction is supported ... */
|
||||
/* ... Get copies of EFLAGS into eax and ecx */
|
||||
"pushfl\n\t"
|
||||
"pop %0\n\t"
|
||||
"mov %0, %1\n\t"
|
||||
|
||||
/* ... Toggle the ID bit in one copy and store */
|
||||
/* to the EFLAGS reg */
|
||||
"xor $0x200000, %0\n\t"
|
||||
"push %0\n\t"
|
||||
"popfl\n\t"
|
||||
/* ... Toggle the ID bit in one copy and store */
|
||||
/* to the EFLAGS reg */
|
||||
"xor $0x200000, %0\n\t"
|
||||
"push %0\n\t"
|
||||
"popfl\n\t"
|
||||
|
||||
/* ... Get the (hopefully modified) EFLAGS */
|
||||
"pushfl\n\t"
|
||||
"pop %0\n\t"
|
||||
: "=a" (a), "=c" (c)
|
||||
:
|
||||
: "cc"
|
||||
);
|
||||
/* ... Get the (hopefully modified) EFLAGS */
|
||||
"pushfl\n\t"
|
||||
"pop %0\n\t"
|
||||
: "=a" (a), "=c" (c)
|
||||
:
|
||||
: "cc"
|
||||
);
|
||||
|
||||
return a != c;
|
||||
return a != c;
|
||||
#endif
|
||||
}
|
||||
|
||||
@ -93,168 +93,167 @@ static void
|
||||
do_cpuid(unsigned int ax, unsigned int *p)
|
||||
{
|
||||
#if 0
|
||||
__asm__ volatile(
|
||||
"cpuid;"
|
||||
: "=a" (p[0]), "=b" (p[1]), "=c" (p[2]), "=d" (p[3])
|
||||
: "0" (ax)
|
||||
);
|
||||
__asm__ volatile(
|
||||
"cpuid;"
|
||||
: "=a" (p[0]), "=b" (p[1]), "=c" (p[2]), "=d" (p[3])
|
||||
: "0" (ax)
|
||||
);
|
||||
#else
|
||||
// code from libavcodec:
|
||||
__asm__ volatile
|
||||
("mov %%"REG_b", %%"REG_S"\n\t"
|
||||
("mov %%"REG_b", %%"REG_S"\n\t"
|
||||
"cpuid\n\t"
|
||||
"xchg %%"REG_b", %%"REG_S
|
||||
: "=a" (p[0]), "=S" (p[1]),
|
||||
"=c" (p[2]), "=d" (p[3])
|
||||
: "0" (ax));
|
||||
#endif
|
||||
|
||||
}
|
||||
|
||||
void GetCpuCaps( CpuCaps *caps)
|
||||
{
|
||||
unsigned int regs[4];
|
||||
unsigned int regs2[4];
|
||||
unsigned int regs[4];
|
||||
unsigned int regs2[4];
|
||||
|
||||
memset(caps, 0, sizeof(*caps));
|
||||
caps->isX86=1;
|
||||
caps->cl_size=32; /* default */
|
||||
if (!has_cpuid()) {
|
||||
mp_msg(MSGT_CPUDETECT,MSGL_WARN,"CPUID not supported!??? (maybe an old 486?)\n");
|
||||
return;
|
||||
}
|
||||
do_cpuid(0x00000000, regs); // get _max_ cpuid level and vendor name
|
||||
mp_msg(MSGT_CPUDETECT,MSGL_V,"CPU vendor name: %.4s%.4s%.4s max cpuid level: %d\n",
|
||||
(char*) (regs+1),(char*) (regs+3),(char*) (regs+2), regs[0]);
|
||||
if (regs[0]>=0x00000001)
|
||||
{
|
||||
char *tmpstr, *ptmpstr;
|
||||
unsigned cl_size;
|
||||
memset(caps, 0, sizeof(*caps));
|
||||
caps->isX86=1;
|
||||
caps->cl_size=32; /* default */
|
||||
if (!has_cpuid()) {
|
||||
mp_msg(MSGT_CPUDETECT,MSGL_WARN,"CPUID not supported!??? (maybe an old 486?)\n");
|
||||
return;
|
||||
}
|
||||
do_cpuid(0x00000000, regs); // get _max_ cpuid level and vendor name
|
||||
mp_msg(MSGT_CPUDETECT,MSGL_V,"CPU vendor name: %.4s%.4s%.4s max cpuid level: %d\n",
|
||||
(char*) (regs+1),(char*) (regs+3),(char*) (regs+2), regs[0]);
|
||||
if (regs[0]>=0x00000001)
|
||||
{
|
||||
char *tmpstr, *ptmpstr;
|
||||
unsigned cl_size;
|
||||
|
||||
do_cpuid(0x00000001, regs2);
|
||||
do_cpuid(0x00000001, regs2);
|
||||
|
||||
caps->cpuType=(regs2[0] >> 8)&0xf;
|
||||
caps->cpuModel=(regs2[0] >> 4)&0xf;
|
||||
caps->cpuType=(regs2[0] >> 8)&0xf;
|
||||
caps->cpuModel=(regs2[0] >> 4)&0xf;
|
||||
|
||||
// see AMD64 Architecture Programmer's Manual, Volume 3: General-purpose and
|
||||
// System Instructions, Table 3-2: Effective family computation, page 120.
|
||||
if(caps->cpuType==0xf){
|
||||
// use extended family (P4, IA64, K8)
|
||||
caps->cpuType=0xf+((regs2[0]>>20)&255);
|
||||
}
|
||||
if(caps->cpuType==0xf || caps->cpuType==6)
|
||||
caps->cpuModel |= ((regs2[0]>>16)&0xf) << 4;
|
||||
if(caps->cpuType==0xf){
|
||||
// use extended family (P4, IA64, K8)
|
||||
caps->cpuType=0xf+((regs2[0]>>20)&255);
|
||||
}
|
||||
if(caps->cpuType==0xf || caps->cpuType==6)
|
||||
caps->cpuModel |= ((regs2[0]>>16)&0xf) << 4;
|
||||
|
||||
caps->cpuStepping=regs2[0] & 0xf;
|
||||
caps->cpuStepping=regs2[0] & 0xf;
|
||||
|
||||
// general feature flags:
|
||||
caps->hasTSC = (regs2[3] & (1 << 8 )) >> 8; // 0x0000010
|
||||
caps->hasMMX = (regs2[3] & (1 << 23 )) >> 23; // 0x0800000
|
||||
caps->hasSSE = (regs2[3] & (1 << 25 )) >> 25; // 0x2000000
|
||||
caps->hasSSE2 = (regs2[3] & (1 << 26 )) >> 26; // 0x4000000
|
||||
caps->hasSSE3 = (regs2[2] & 1); // 0x0000001
|
||||
caps->hasSSSE3 = (regs2[2] & (1 << 9 )) >> 9; // 0x0000200
|
||||
caps->hasMMX2 = caps->hasSSE; // SSE cpus supports mmxext too
|
||||
cl_size = ((regs2[1] >> 8) & 0xFF)*8;
|
||||
if(cl_size) caps->cl_size = cl_size;
|
||||
// general feature flags:
|
||||
caps->hasTSC = (regs2[3] & (1 << 8 )) >> 8; // 0x0000010
|
||||
caps->hasMMX = (regs2[3] & (1 << 23 )) >> 23; // 0x0800000
|
||||
caps->hasSSE = (regs2[3] & (1 << 25 )) >> 25; // 0x2000000
|
||||
caps->hasSSE2 = (regs2[3] & (1 << 26 )) >> 26; // 0x4000000
|
||||
caps->hasSSE3 = (regs2[2] & 1); // 0x0000001
|
||||
caps->hasSSSE3 = (regs2[2] & (1 << 9 )) >> 9; // 0x0000200
|
||||
caps->hasMMX2 = caps->hasSSE; // SSE cpus supports mmxext too
|
||||
cl_size = ((regs2[1] >> 8) & 0xFF)*8;
|
||||
if(cl_size) caps->cl_size = cl_size;
|
||||
|
||||
ptmpstr=tmpstr=GetCpuFriendlyName(regs, regs2);
|
||||
while(*ptmpstr == ' ') // strip leading spaces
|
||||
ptmpstr++;
|
||||
mp_msg(MSGT_CPUDETECT,MSGL_V,"CPU: %s ", ptmpstr);
|
||||
free(tmpstr);
|
||||
mp_msg(MSGT_CPUDETECT,MSGL_V,"(Family: %d, Model: %d, Stepping: %d)\n",
|
||||
caps->cpuType, caps->cpuModel, caps->cpuStepping);
|
||||
ptmpstr=tmpstr=GetCpuFriendlyName(regs, regs2);
|
||||
while(*ptmpstr == ' ') // strip leading spaces
|
||||
ptmpstr++;
|
||||
mp_msg(MSGT_CPUDETECT,MSGL_V,"CPU: %s ", ptmpstr);
|
||||
free(tmpstr);
|
||||
mp_msg(MSGT_CPUDETECT,MSGL_V,"(Family: %d, Model: %d, Stepping: %d)\n",
|
||||
caps->cpuType, caps->cpuModel, caps->cpuStepping);
|
||||
|
||||
}
|
||||
do_cpuid(0x80000000, regs);
|
||||
if (regs[0]>=0x80000001) {
|
||||
mp_msg(MSGT_CPUDETECT,MSGL_V,"extended cpuid-level: %d\n",regs[0]&0x7FFFFFFF);
|
||||
do_cpuid(0x80000001, regs2);
|
||||
caps->hasMMX |= (regs2[3] & (1 << 23 )) >> 23; // 0x0800000
|
||||
caps->hasMMX2 |= (regs2[3] & (1 << 22 )) >> 22; // 0x400000
|
||||
caps->has3DNow = (regs2[3] & (1 << 31 )) >> 31; //0x80000000
|
||||
caps->has3DNowExt = (regs2[3] & (1 << 30 )) >> 30;
|
||||
caps->hasSSE4a = (regs2[2] & (1 << 6 )) >> 6; // 0x0000040
|
||||
}
|
||||
if(regs[0]>=0x80000006)
|
||||
{
|
||||
do_cpuid(0x80000006, regs2);
|
||||
mp_msg(MSGT_CPUDETECT,MSGL_V,"extended cache-info: %d\n",regs2[2]&0x7FFFFFFF);
|
||||
caps->cl_size = regs2[2] & 0xFF;
|
||||
}
|
||||
mp_msg(MSGT_CPUDETECT,MSGL_V,"Detected cache-line size is %u bytes\n",caps->cl_size);
|
||||
}
|
||||
do_cpuid(0x80000000, regs);
|
||||
if (regs[0]>=0x80000001) {
|
||||
mp_msg(MSGT_CPUDETECT,MSGL_V,"extended cpuid-level: %d\n",regs[0]&0x7FFFFFFF);
|
||||
do_cpuid(0x80000001, regs2);
|
||||
caps->hasMMX |= (regs2[3] & (1 << 23 )) >> 23; // 0x0800000
|
||||
caps->hasMMX2 |= (regs2[3] & (1 << 22 )) >> 22; // 0x400000
|
||||
caps->has3DNow = (regs2[3] & (1 << 31 )) >> 31; //0x80000000
|
||||
caps->has3DNowExt = (regs2[3] & (1 << 30 )) >> 30;
|
||||
caps->hasSSE4a = (regs2[2] & (1 << 6 )) >> 6; // 0x0000040
|
||||
}
|
||||
if(regs[0]>=0x80000006)
|
||||
{
|
||||
do_cpuid(0x80000006, regs2);
|
||||
mp_msg(MSGT_CPUDETECT,MSGL_V,"extended cache-info: %d\n",regs2[2]&0x7FFFFFFF);
|
||||
caps->cl_size = regs2[2] & 0xFF;
|
||||
}
|
||||
mp_msg(MSGT_CPUDETECT,MSGL_V,"Detected cache-line size is %u bytes\n",caps->cl_size);
|
||||
#if 0
|
||||
mp_msg(MSGT_CPUDETECT,MSGL_INFO,"cpudetect: MMX=%d MMX2=%d SSE=%d SSE2=%d 3DNow=%d 3DNowExt=%d\n",
|
||||
gCpuCaps.hasMMX,
|
||||
gCpuCaps.hasMMX2,
|
||||
gCpuCaps.hasSSE,
|
||||
gCpuCaps.hasSSE2,
|
||||
gCpuCaps.has3DNow,
|
||||
gCpuCaps.has3DNowExt );
|
||||
mp_msg(MSGT_CPUDETECT,MSGL_INFO,"cpudetect: MMX=%d MMX2=%d SSE=%d SSE2=%d 3DNow=%d 3DNowExt=%d\n",
|
||||
gCpuCaps.hasMMX,
|
||||
gCpuCaps.hasMMX2,
|
||||
gCpuCaps.hasSSE,
|
||||
gCpuCaps.hasSSE2,
|
||||
gCpuCaps.has3DNow,
|
||||
gCpuCaps.has3DNowExt);
|
||||
#endif
|
||||
|
||||
/* FIXME: Does SSE2 need more OS support, too? */
|
||||
if (caps->hasSSE)
|
||||
check_os_katmai_support();
|
||||
if (!caps->hasSSE)
|
||||
caps->hasSSE2 = 0;
|
||||
// caps->has3DNow=1;
|
||||
// caps->hasMMX2 = 0;
|
||||
// caps->hasMMX = 0;
|
||||
/* FIXME: Does SSE2 need more OS support, too? */
|
||||
if (caps->hasSSE)
|
||||
check_os_katmai_support();
|
||||
if (!caps->hasSSE)
|
||||
caps->hasSSE2 = 0;
|
||||
// caps->has3DNow=1;
|
||||
// caps->hasMMX2 = 0;
|
||||
// caps->hasMMX = 0;
|
||||
|
||||
#if !CONFIG_RUNTIME_CPUDETECT
|
||||
#if !HAVE_MMX
|
||||
if(caps->hasMMX) mp_msg(MSGT_CPUDETECT,MSGL_WARN,"MMX supported but disabled\n");
|
||||
caps->hasMMX=0;
|
||||
if(caps->hasMMX) mp_msg(MSGT_CPUDETECT,MSGL_WARN,"MMX supported but disabled\n");
|
||||
caps->hasMMX=0;
|
||||
#endif
|
||||
#if !HAVE_MMX2
|
||||
if(caps->hasMMX2) mp_msg(MSGT_CPUDETECT,MSGL_WARN,"MMX2 supported but disabled\n");
|
||||
caps->hasMMX2=0;
|
||||
if(caps->hasMMX2) mp_msg(MSGT_CPUDETECT,MSGL_WARN,"MMX2 supported but disabled\n");
|
||||
caps->hasMMX2=0;
|
||||
#endif
|
||||
#if !HAVE_SSE
|
||||
if(caps->hasSSE) mp_msg(MSGT_CPUDETECT,MSGL_WARN,"SSE supported but disabled\n");
|
||||
caps->hasSSE=0;
|
||||
if(caps->hasSSE) mp_msg(MSGT_CPUDETECT,MSGL_WARN,"SSE supported but disabled\n");
|
||||
caps->hasSSE=0;
|
||||
#endif
|
||||
#if !HAVE_SSE2
|
||||
if(caps->hasSSE2) mp_msg(MSGT_CPUDETECT,MSGL_WARN,"SSE2 supported but disabled\n");
|
||||
caps->hasSSE2=0;
|
||||
if(caps->hasSSE2) mp_msg(MSGT_CPUDETECT,MSGL_WARN,"SSE2 supported but disabled\n");
|
||||
caps->hasSSE2=0;
|
||||
#endif
|
||||
#if !HAVE_AMD3DNOW
|
||||
if(caps->has3DNow) mp_msg(MSGT_CPUDETECT,MSGL_WARN,"3DNow supported but disabled\n");
|
||||
caps->has3DNow=0;
|
||||
if(caps->has3DNow) mp_msg(MSGT_CPUDETECT,MSGL_WARN,"3DNow supported but disabled\n");
|
||||
caps->has3DNow=0;
|
||||
#endif
|
||||
#if !HAVE_AMD3DNOWEXT
|
||||
if(caps->has3DNowExt) mp_msg(MSGT_CPUDETECT,MSGL_WARN,"3DNowExt supported but disabled\n");
|
||||
caps->has3DNowExt=0;
|
||||
if(caps->has3DNowExt) mp_msg(MSGT_CPUDETECT,MSGL_WARN,"3DNowExt supported but disabled\n");
|
||||
caps->has3DNowExt=0;
|
||||
#endif
|
||||
#endif // CONFIG_RUNTIME_CPUDETECT
|
||||
}
|
||||
|
||||
char *GetCpuFriendlyName(unsigned int regs[], unsigned int regs2[]){
|
||||
char vendor[13];
|
||||
char *retname;
|
||||
int i;
|
||||
char vendor[13];
|
||||
char *retname;
|
||||
int i;
|
||||
|
||||
if (NULL==(retname=malloc(256))) {
|
||||
mp_msg(MSGT_CPUDETECT,MSGL_FATAL,"Error: GetCpuFriendlyName() not enough memory\n");
|
||||
exit(1);
|
||||
}
|
||||
retname[0] = '\0';
|
||||
if (NULL==(retname=malloc(256))) {
|
||||
mp_msg(MSGT_CPUDETECT,MSGL_FATAL,"Error: GetCpuFriendlyName() not enough memory\n");
|
||||
exit(1);
|
||||
}
|
||||
retname[0] = '\0';
|
||||
|
||||
sprintf(vendor,"%.4s%.4s%.4s",(char*)(regs+1),(char*)(regs+3),(char*)(regs+2));
|
||||
sprintf(vendor,"%.4s%.4s%.4s",(char*)(regs+1),(char*)(regs+3),(char*)(regs+2));
|
||||
|
||||
do_cpuid(0x80000000,regs);
|
||||
if (regs[0] >= 0x80000004)
|
||||
{
|
||||
// CPU has built-in namestring
|
||||
for (i = 0x80000002; i <= 0x80000004; i++)
|
||||
{
|
||||
do_cpuid(i, regs);
|
||||
strncat(retname, (char*)regs, 16);
|
||||
}
|
||||
}
|
||||
return retname;
|
||||
do_cpuid(0x80000000,regs);
|
||||
if (regs[0] >= 0x80000004)
|
||||
{
|
||||
// CPU has built-in namestring
|
||||
for (i = 0x80000002; i <= 0x80000004; i++)
|
||||
{
|
||||
do_cpuid(i, regs);
|
||||
strncat(retname, (char*)regs, 16);
|
||||
}
|
||||
}
|
||||
return retname;
|
||||
}
|
||||
|
||||
#if defined(__linux__) && defined(_POSIX_SOURCE) && !ARCH_X86_64
|
||||
@ -281,31 +280,31 @@ static void sigill_handler_sse( int signal, struct sigcontext sc )
|
||||
#if (defined(__MINGW32__) || defined(__CYGWIN__)) && !ARCH_X86_64
|
||||
LONG CALLBACK win32_sig_handler_sse(EXCEPTION_POINTERS* ep)
|
||||
{
|
||||
if(ep->ExceptionRecord->ExceptionCode==EXCEPTION_ILLEGAL_INSTRUCTION){
|
||||
mp_msg(MSGT_CPUDETECT,MSGL_V, "SIGILL, " );
|
||||
ep->ContextRecord->Eip +=3;
|
||||
gCpuCaps.hasSSE=0;
|
||||
return EXCEPTION_CONTINUE_EXECUTION;
|
||||
}
|
||||
return EXCEPTION_CONTINUE_SEARCH;
|
||||
if(ep->ExceptionRecord->ExceptionCode==EXCEPTION_ILLEGAL_INSTRUCTION){
|
||||
mp_msg(MSGT_CPUDETECT,MSGL_V, "SIGILL, " );
|
||||
ep->ContextRecord->Eip +=3;
|
||||
gCpuCaps.hasSSE=0;
|
||||
return EXCEPTION_CONTINUE_EXECUTION;
|
||||
}
|
||||
return EXCEPTION_CONTINUE_SEARCH;
|
||||
}
|
||||
#endif /* defined(__MINGW32__) || defined(__CYGWIN__) */
|
||||
|
||||
#ifdef __OS2__
|
||||
ULONG _System os2_sig_handler_sse( PEXCEPTIONREPORTRECORD p1,
|
||||
PEXCEPTIONREGISTRATIONRECORD p2,
|
||||
PCONTEXTRECORD p3,
|
||||
PVOID p4 )
|
||||
ULONG _System os2_sig_handler_sse(PEXCEPTIONREPORTRECORD p1,
|
||||
PEXCEPTIONREGISTRATIONRECORD p2,
|
||||
PCONTEXTRECORD p3,
|
||||
PVOID p4)
|
||||
{
|
||||
if(p1->ExceptionNum == XCPT_ILLEGAL_INSTRUCTION){
|
||||
mp_msg(MSGT_CPUDETECT, MSGL_V, "SIGILL, ");
|
||||
if(p1->ExceptionNum == XCPT_ILLEGAL_INSTRUCTION){
|
||||
mp_msg(MSGT_CPUDETECT, MSGL_V, "SIGILL, ");
|
||||
|
||||
p3->ctx_RegEip += 3;
|
||||
gCpuCaps.hasSSE = 0;
|
||||
p3->ctx_RegEip += 3;
|
||||
gCpuCaps.hasSSE = 0;
|
||||
|
||||
return XCPT_CONTINUE_EXECUTION;
|
||||
}
|
||||
return XCPT_CONTINUE_SEARCH;
|
||||
return XCPT_CONTINUE_EXECUTION;
|
||||
}
|
||||
return XCPT_CONTINUE_SEARCH;
|
||||
}
|
||||
#endif
|
||||
|
||||
@ -325,103 +324,103 @@ ULONG _System os2_sig_handler_sse( PEXCEPTIONREPORTRECORD p1,
|
||||
static void check_os_katmai_support( void )
|
||||
{
|
||||
#if ARCH_X86_64
|
||||
gCpuCaps.hasSSE=1;
|
||||
gCpuCaps.hasSSE2=1;
|
||||
gCpuCaps.hasSSE=1;
|
||||
gCpuCaps.hasSSE2=1;
|
||||
#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__DragonFly__) || defined(__APPLE__)
|
||||
int has_sse=0, ret;
|
||||
size_t len=sizeof(has_sse);
|
||||
int has_sse=0, ret;
|
||||
size_t len=sizeof(has_sse);
|
||||
|
||||
ret = sysctlbyname(SSE_SYSCTL_NAME, &has_sse, &len, NULL, 0);
|
||||
if (ret || !has_sse)
|
||||
gCpuCaps.hasSSE=0;
|
||||
ret = sysctlbyname(SSE_SYSCTL_NAME, &has_sse, &len, NULL, 0);
|
||||
if (ret || !has_sse)
|
||||
gCpuCaps.hasSSE=0;
|
||||
|
||||
#elif defined(__NetBSD__) || defined (__OpenBSD__)
|
||||
#if __NetBSD_Version__ >= 105250000 || (defined __OpenBSD__)
|
||||
int has_sse, has_sse2, ret, mib[2];
|
||||
size_t varlen;
|
||||
int has_sse, has_sse2, ret, mib[2];
|
||||
size_t varlen;
|
||||
|
||||
mib[0] = CTL_MACHDEP;
|
||||
mib[1] = CPU_SSE;
|
||||
varlen = sizeof(has_sse);
|
||||
mib[0] = CTL_MACHDEP;
|
||||
mib[1] = CPU_SSE;
|
||||
varlen = sizeof(has_sse);
|
||||
|
||||
mp_msg(MSGT_CPUDETECT,MSGL_V, "Testing OS support for SSE... " );
|
||||
ret = sysctl(mib, 2, &has_sse, &varlen, NULL, 0);
|
||||
gCpuCaps.hasSSE = ret >= 0 && has_sse;
|
||||
mp_msg(MSGT_CPUDETECT,MSGL_V, gCpuCaps.hasSSE ? "yes.\n" : "no!\n" );
|
||||
mp_msg(MSGT_CPUDETECT,MSGL_V, "Testing OS support for SSE... " );
|
||||
ret = sysctl(mib, 2, &has_sse, &varlen, NULL, 0);
|
||||
gCpuCaps.hasSSE = ret >= 0 && has_sse;
|
||||
mp_msg(MSGT_CPUDETECT,MSGL_V, gCpuCaps.hasSSE ? "yes.\n" : "no!\n" );
|
||||
|
||||
mib[1] = CPU_SSE2;
|
||||
varlen = sizeof(has_sse2);
|
||||
mp_msg(MSGT_CPUDETECT,MSGL_V, "Testing OS support for SSE2... " );
|
||||
ret = sysctl(mib, 2, &has_sse2, &varlen, NULL, 0);
|
||||
gCpuCaps.hasSSE2 = ret >= 0 && has_sse2;
|
||||
mp_msg(MSGT_CPUDETECT,MSGL_V, gCpuCaps.hasSSE2 ? "yes.\n" : "no!\n" );
|
||||
mib[1] = CPU_SSE2;
|
||||
varlen = sizeof(has_sse2);
|
||||
mp_msg(MSGT_CPUDETECT,MSGL_V, "Testing OS support for SSE2... " );
|
||||
ret = sysctl(mib, 2, &has_sse2, &varlen, NULL, 0);
|
||||
gCpuCaps.hasSSE2 = ret >= 0 && has_sse2;
|
||||
mp_msg(MSGT_CPUDETECT,MSGL_V, gCpuCaps.hasSSE2 ? "yes.\n" : "no!\n" );
|
||||
#else
|
||||
gCpuCaps.hasSSE = 0;
|
||||
mp_msg(MSGT_CPUDETECT,MSGL_WARN, "No OS support for SSE, disabling to be safe.\n" );
|
||||
gCpuCaps.hasSSE = 0;
|
||||
mp_msg(MSGT_CPUDETECT,MSGL_WARN, "No OS support for SSE, disabling to be safe.\n" );
|
||||
#endif
|
||||
#elif defined(__MINGW32__) || defined(__CYGWIN__)
|
||||
LPTOP_LEVEL_EXCEPTION_FILTER exc_fil;
|
||||
if ( gCpuCaps.hasSSE ) {
|
||||
mp_msg(MSGT_CPUDETECT,MSGL_V, "Testing OS support for SSE... " );
|
||||
exc_fil = SetUnhandledExceptionFilter(win32_sig_handler_sse);
|
||||
__asm__ volatile ("xorps %xmm0, %xmm0");
|
||||
SetUnhandledExceptionFilter(exc_fil);
|
||||
mp_msg(MSGT_CPUDETECT,MSGL_V, gCpuCaps.hasSSE ? "yes.\n" : "no!\n" );
|
||||
}
|
||||
LPTOP_LEVEL_EXCEPTION_FILTER exc_fil;
|
||||
if ( gCpuCaps.hasSSE ) {
|
||||
mp_msg(MSGT_CPUDETECT,MSGL_V, "Testing OS support for SSE... " );
|
||||
exc_fil = SetUnhandledExceptionFilter(win32_sig_handler_sse);
|
||||
__asm__ volatile ("xorps %xmm0, %xmm0");
|
||||
SetUnhandledExceptionFilter(exc_fil);
|
||||
mp_msg(MSGT_CPUDETECT,MSGL_V, gCpuCaps.hasSSE ? "yes.\n" : "no!\n" );
|
||||
}
|
||||
#elif defined(__OS2__)
|
||||
EXCEPTIONREGISTRATIONRECORD RegRec = { 0, &os2_sig_handler_sse };
|
||||
if ( gCpuCaps.hasSSE ) {
|
||||
mp_msg(MSGT_CPUDETECT,MSGL_V, "Testing OS support for SSE... " );
|
||||
DosSetExceptionHandler( &RegRec );
|
||||
__asm__ volatile ("xorps %xmm0, %xmm0");
|
||||
DosUnsetExceptionHandler( &RegRec );
|
||||
mp_msg(MSGT_CPUDETECT,MSGL_V, gCpuCaps.hasSSE ? "yes.\n" : "no!\n" );
|
||||
}
|
||||
EXCEPTIONREGISTRATIONRECORD RegRec = { 0, &os2_sig_handler_sse };
|
||||
if ( gCpuCaps.hasSSE ) {
|
||||
mp_msg(MSGT_CPUDETECT,MSGL_V, "Testing OS support for SSE... " );
|
||||
DosSetExceptionHandler( &RegRec );
|
||||
__asm__ volatile ("xorps %xmm0, %xmm0");
|
||||
DosUnsetExceptionHandler( &RegRec );
|
||||
mp_msg(MSGT_CPUDETECT,MSGL_V, gCpuCaps.hasSSE ? "yes.\n" : "no!\n" );
|
||||
}
|
||||
#elif defined(__linux__)
|
||||
#if defined(_POSIX_SOURCE)
|
||||
struct sigaction saved_sigill;
|
||||
struct sigaction saved_sigill;
|
||||
|
||||
/* Save the original signal handlers.
|
||||
*/
|
||||
sigaction( SIGILL, NULL, &saved_sigill );
|
||||
/* Save the original signal handlers.
|
||||
*/
|
||||
sigaction( SIGILL, NULL, &saved_sigill );
|
||||
|
||||
signal( SIGILL, (void (*)(int))sigill_handler_sse );
|
||||
signal( SIGILL, (void (*)(int))sigill_handler_sse );
|
||||
|
||||
/* Emulate test for OSFXSR in CR4. The OS will set this bit if it
|
||||
* supports the extended FPU save and restore required for SSE. If
|
||||
* we execute an SSE instruction on a PIII and get a SIGILL, the OS
|
||||
* doesn't support Streaming SIMD Exceptions, even if the processor
|
||||
* does.
|
||||
*/
|
||||
if ( gCpuCaps.hasSSE ) {
|
||||
mp_msg(MSGT_CPUDETECT,MSGL_V, "Testing OS support for SSE... " );
|
||||
/* Emulate test for OSFXSR in CR4. The OS will set this bit if it
|
||||
* supports the extended FPU save and restore required for SSE. If
|
||||
* we execute an SSE instruction on a PIII and get a SIGILL, the OS
|
||||
* doesn't support Streaming SIMD Exceptions, even if the processor
|
||||
* does.
|
||||
*/
|
||||
if ( gCpuCaps.hasSSE ) {
|
||||
mp_msg(MSGT_CPUDETECT,MSGL_V, "Testing OS support for SSE... " );
|
||||
|
||||
// __asm__ volatile ("xorps %%xmm0, %%xmm0");
|
||||
__asm__ volatile ("xorps %xmm0, %xmm0");
|
||||
__asm__ volatile ("xorps %xmm0, %xmm0");
|
||||
|
||||
mp_msg(MSGT_CPUDETECT,MSGL_V, gCpuCaps.hasSSE ? "yes.\n" : "no!\n" );
|
||||
}
|
||||
mp_msg(MSGT_CPUDETECT,MSGL_V, gCpuCaps.hasSSE ? "yes.\n" : "no!\n" );
|
||||
}
|
||||
|
||||
/* Restore the original signal handlers.
|
||||
*/
|
||||
sigaction( SIGILL, &saved_sigill, NULL );
|
||||
/* Restore the original signal handlers.
|
||||
*/
|
||||
sigaction( SIGILL, &saved_sigill, NULL );
|
||||
|
||||
/* If we've gotten to here and the XMM CPUID bit is still set, we're
|
||||
* safe to go ahead and hook out the SSE code throughout Mesa.
|
||||
*/
|
||||
mp_msg(MSGT_CPUDETECT,MSGL_V, "Tests of OS support for SSE %s\n", gCpuCaps.hasSSE ? "passed." : "failed!" );
|
||||
/* If we've gotten to here and the XMM CPUID bit is still set, we're
|
||||
* safe to go ahead and hook out the SSE code throughout Mesa.
|
||||
*/
|
||||
mp_msg(MSGT_CPUDETECT,MSGL_V, "Tests of OS support for SSE %s\n", gCpuCaps.hasSSE ? "passed." : "failed!" );
|
||||
#else
|
||||
/* We can't use POSIX signal handling to test the availability of
|
||||
* SSE, so we disable it by default.
|
||||
*/
|
||||
mp_msg(MSGT_CPUDETECT,MSGL_WARN, "Cannot test OS support for SSE, disabling to be safe.\n" );
|
||||
gCpuCaps.hasSSE=0;
|
||||
/* We can't use POSIX signal handling to test the availability of
|
||||
* SSE, so we disable it by default.
|
||||
*/
|
||||
mp_msg(MSGT_CPUDETECT,MSGL_WARN, "Cannot test OS support for SSE, disabling to be safe.\n" );
|
||||
gCpuCaps.hasSSE=0;
|
||||
#endif /* _POSIX_SOURCE */
|
||||
#else
|
||||
/* Do nothing on other platforms for now.
|
||||
*/
|
||||
mp_msg(MSGT_CPUDETECT,MSGL_WARN, "Cannot test OS support for SSE, leaving disabled.\n" );
|
||||
gCpuCaps.hasSSE=0;
|
||||
/* Do nothing on other platforms for now.
|
||||
*/
|
||||
mp_msg(MSGT_CPUDETECT,MSGL_WARN, "Cannot test OS support for SSE, leaving disabled.\n" );
|
||||
gCpuCaps.hasSSE=0;
|
||||
#endif /* __linux__ */
|
||||
}
|
||||
#else /* ARCH_X86 */
|
||||
@ -451,98 +450,98 @@ static void sigill_handler (int sig)
|
||||
|
||||
void GetCpuCaps( CpuCaps *caps)
|
||||
{
|
||||
caps->cpuType=0;
|
||||
caps->cpuModel=0;
|
||||
caps->cpuStepping=0;
|
||||
caps->hasMMX=0;
|
||||
caps->hasMMX2=0;
|
||||
caps->has3DNow=0;
|
||||
caps->has3DNowExt=0;
|
||||
caps->hasSSE=0;
|
||||
caps->hasSSE2=0;
|
||||
caps->hasSSE3=0;
|
||||
caps->hasSSSE3=0;
|
||||
caps->hasSSE4a=0;
|
||||
caps->isX86=0;
|
||||
caps->hasAltiVec = 0;
|
||||
caps->cpuType=0;
|
||||
caps->cpuModel=0;
|
||||
caps->cpuStepping=0;
|
||||
caps->hasMMX=0;
|
||||
caps->hasMMX2=0;
|
||||
caps->has3DNow=0;
|
||||
caps->has3DNowExt=0;
|
||||
caps->hasSSE=0;
|
||||
caps->hasSSE2=0;
|
||||
caps->hasSSE3=0;
|
||||
caps->hasSSSE3=0;
|
||||
caps->hasSSE4a=0;
|
||||
caps->isX86=0;
|
||||
caps->hasAltiVec = 0;
|
||||
#if HAVE_ALTIVEC
|
||||
#ifdef __APPLE__
|
||||
/*
|
||||
rip-off from ffmpeg altivec detection code.
|
||||
this code also appears on Apple's AltiVec pages.
|
||||
*/
|
||||
{
|
||||
int sels[2] = {CTL_HW, HW_VECTORUNIT};
|
||||
int has_vu = 0;
|
||||
size_t len = sizeof(has_vu);
|
||||
int err;
|
||||
{
|
||||
int sels[2] = {CTL_HW, HW_VECTORUNIT};
|
||||
int has_vu = 0;
|
||||
size_t len = sizeof(has_vu);
|
||||
int err;
|
||||
|
||||
err = sysctl(sels, 2, &has_vu, &len, NULL, 0);
|
||||
err = sysctl(sels, 2, &has_vu, &len, NULL, 0);
|
||||
|
||||
if (err == 0)
|
||||
if (has_vu != 0)
|
||||
caps->hasAltiVec = 1;
|
||||
}
|
||||
if (err == 0)
|
||||
if (has_vu != 0)
|
||||
caps->hasAltiVec = 1;
|
||||
}
|
||||
#elif defined(__AMIGAOS4__)
|
||||
ULONG result = 0;
|
||||
ULONG result = 0;
|
||||
|
||||
GetCPUInfoTags(GCIT_VectorUnit, &result, TAG_DONE);
|
||||
if (result == VECTORTYPE_ALTIVEC)
|
||||
caps->hasAltiVec = 1;
|
||||
GetCPUInfoTags(GCIT_VectorUnit, &result, TAG_DONE);
|
||||
if (result == VECTORTYPE_ALTIVEC)
|
||||
caps->hasAltiVec = 1;
|
||||
#else
|
||||
/* no Darwin, do it the brute-force way */
|
||||
/* this is borrowed from the libmpeg2 library */
|
||||
{
|
||||
signal (SIGILL, sigill_handler);
|
||||
if (sigsetjmp (jmpbuf, 1)) {
|
||||
{
|
||||
signal (SIGILL, sigill_handler);
|
||||
if (sigsetjmp (jmpbuf, 1)) {
|
||||
signal (SIGILL, SIG_DFL);
|
||||
} else {
|
||||
} else {
|
||||
canjump = 1;
|
||||
|
||||
__asm__ volatile ("mtspr 256, %0\n\t"
|
||||
__asm__ volatile ("mtspr 256, %0\n\t"
|
||||
"vand %%v0, %%v0, %%v0"
|
||||
:
|
||||
: "r" (-1));
|
||||
|
||||
signal (SIGILL, SIG_DFL);
|
||||
caps->hasAltiVec = 1;
|
||||
}
|
||||
signal (SIGILL, SIG_DFL);
|
||||
caps->hasAltiVec = 1;
|
||||
}
|
||||
}
|
||||
#endif /* __APPLE__ */
|
||||
mp_msg(MSGT_CPUDETECT,MSGL_V,"AltiVec %sfound\n", (caps->hasAltiVec ? "" : "not "));
|
||||
mp_msg(MSGT_CPUDETECT,MSGL_V,"AltiVec %sfound\n", (caps->hasAltiVec ? "" : "not "));
|
||||
#endif /* HAVE_ALTIVEC */
|
||||
|
||||
if (ARCH_IA64)
|
||||
mp_msg(MSGT_CPUDETECT,MSGL_V,"CPU: Intel Itanium\n");
|
||||
if (ARCH_IA64)
|
||||
mp_msg(MSGT_CPUDETECT,MSGL_V,"CPU: Intel Itanium\n");
|
||||
|
||||
if (ARCH_SPARC)
|
||||
mp_msg(MSGT_CPUDETECT,MSGL_V,"CPU: Sun Sparc\n");
|
||||
if (ARCH_SPARC)
|
||||
mp_msg(MSGT_CPUDETECT,MSGL_V,"CPU: Sun Sparc\n");
|
||||
|
||||
if (ARCH_ARM)
|
||||
mp_msg(MSGT_CPUDETECT,MSGL_V,"CPU: ARM\n");
|
||||
if (ARCH_ARM)
|
||||
mp_msg(MSGT_CPUDETECT,MSGL_V,"CPU: ARM\n");
|
||||
|
||||
if (ARCH_PPC)
|
||||
mp_msg(MSGT_CPUDETECT,MSGL_V,"CPU: PowerPC\n");
|
||||
if (ARCH_PPC)
|
||||
mp_msg(MSGT_CPUDETECT,MSGL_V,"CPU: PowerPC\n");
|
||||
|
||||
if (ARCH_ALPHA)
|
||||
mp_msg(MSGT_CPUDETECT,MSGL_V,"CPU: Digital Alpha\n");
|
||||
if (ARCH_ALPHA)
|
||||
mp_msg(MSGT_CPUDETECT,MSGL_V,"CPU: Digital Alpha\n");
|
||||
|
||||
if (ARCH_MIPS)
|
||||
mp_msg(MSGT_CPUDETECT,MSGL_V,"CPU: MIPS\n");
|
||||
if (ARCH_MIPS)
|
||||
mp_msg(MSGT_CPUDETECT,MSGL_V,"CPU: MIPS\n");
|
||||
|
||||
if (ARCH_PA_RISC)
|
||||
mp_msg(MSGT_CPUDETECT,MSGL_V,"CPU: Hewlett-Packard PA-RISC\n");
|
||||
if (ARCH_PA_RISC)
|
||||
mp_msg(MSGT_CPUDETECT,MSGL_V,"CPU: Hewlett-Packard PA-RISC\n");
|
||||
|
||||
if (ARCH_S390)
|
||||
mp_msg(MSGT_CPUDETECT,MSGL_V,"CPU: IBM S/390\n");
|
||||
if (ARCH_S390)
|
||||
mp_msg(MSGT_CPUDETECT,MSGL_V,"CPU: IBM S/390\n");
|
||||
|
||||
if (ARCH_S390X)
|
||||
mp_msg(MSGT_CPUDETECT,MSGL_V,"CPU: IBM S/390X\n");
|
||||
if (ARCH_S390X)
|
||||
mp_msg(MSGT_CPUDETECT,MSGL_V,"CPU: IBM S/390X\n");
|
||||
|
||||
if (ARCH_VAX)
|
||||
mp_msg(MSGT_CPUDETECT,MSGL_V, "CPU: Digital VAX\n" );
|
||||
if (ARCH_VAX)
|
||||
mp_msg(MSGT_CPUDETECT,MSGL_V, "CPU: Digital VAX\n" );
|
||||
|
||||
if (ARCH_XTENSA)
|
||||
mp_msg(MSGT_CPUDETECT,MSGL_V, "CPU: Tensilica Xtensa\n" );
|
||||
if (ARCH_XTENSA)
|
||||
mp_msg(MSGT_CPUDETECT,MSGL_V, "CPU: Tensilica Xtensa\n" );
|
||||
}
|
||||
#endif /* !ARCH_X86 */
|
||||
|
38
cpudetect.h
38
cpudetect.h
@ -21,30 +21,30 @@
|
||||
|
||||
#include "config.h"
|
||||
|
||||
#define CPUTYPE_I386 3
|
||||
#define CPUTYPE_I486 4
|
||||
#define CPUTYPE_I586 5
|
||||
#define CPUTYPE_I386 3
|
||||
#define CPUTYPE_I486 4
|
||||
#define CPUTYPE_I586 5
|
||||
#define CPUTYPE_I686 6
|
||||
|
||||
#include "ffmpeg_files/x86_cpu.h"
|
||||
|
||||
typedef struct cpucaps_s {
|
||||
int cpuType;
|
||||
int cpuModel;
|
||||
int cpuStepping;
|
||||
int hasMMX;
|
||||
int hasMMX2;
|
||||
int has3DNow;
|
||||
int has3DNowExt;
|
||||
int hasSSE;
|
||||
int hasSSE2;
|
||||
int hasSSE3;
|
||||
int hasSSSE3;
|
||||
int hasSSE4a;
|
||||
int isX86;
|
||||
unsigned cl_size; /* size of cache line */
|
||||
int hasAltiVec;
|
||||
int hasTSC;
|
||||
int cpuType;
|
||||
int cpuModel;
|
||||
int cpuStepping;
|
||||
int hasMMX;
|
||||
int hasMMX2;
|
||||
int has3DNow;
|
||||
int has3DNowExt;
|
||||
int hasSSE;
|
||||
int hasSSE2;
|
||||
int hasSSE3;
|
||||
int hasSSSE3;
|
||||
int hasSSE4a;
|
||||
int isX86;
|
||||
unsigned cl_size; /* size of cache line */
|
||||
int hasAltiVec;
|
||||
int hasTSC;
|
||||
} CpuCaps;
|
||||
|
||||
extern CpuCaps gCpuCaps;
|
||||
|
524
cpuinfo.c
524
cpuinfo.c
@ -44,319 +44,319 @@ typedef long long int64_t;
|
||||
#endif
|
||||
|
||||
#define CPUID_FEATURE_DEF(bit, desc, description) \
|
||||
{ bit, desc }
|
||||
{ bit, desc }
|
||||
|
||||
typedef struct cpuid_regs {
|
||||
unsigned int eax;
|
||||
unsigned int ebx;
|
||||
unsigned int ecx;
|
||||
unsigned int edx;
|
||||
unsigned int eax;
|
||||
unsigned int ebx;
|
||||
unsigned int ecx;
|
||||
unsigned int edx;
|
||||
} cpuid_regs_t;
|
||||
|
||||
static cpuid_regs_t
|
||||
cpuid(int func) {
|
||||
cpuid_regs_t regs;
|
||||
cpuid_regs_t regs;
|
||||
#define CPUID ".byte 0x0f, 0xa2; "
|
||||
#ifdef __x86_64__
|
||||
__asm__("mov %%rbx, %%rsi\n\t"
|
||||
__asm__("mov %%rbx, %%rsi\n\t"
|
||||
#else
|
||||
__asm__("mov %%ebx, %%esi\n\t"
|
||||
__asm__("mov %%ebx, %%esi\n\t"
|
||||
#endif
|
||||
CPUID"\n\t"
|
||||
CPUID"\n\t"
|
||||
#ifdef __x86_64__
|
||||
"xchg %%rsi, %%rbx\n\t"
|
||||
"xchg %%rsi, %%rbx\n\t"
|
||||
#else
|
||||
"xchg %%esi, %%ebx\n\t"
|
||||
"xchg %%esi, %%ebx\n\t"
|
||||
#endif
|
||||
: "=a" (regs.eax), "=S" (regs.ebx), "=c" (regs.ecx), "=d" (regs.edx)
|
||||
: "0" (func));
|
||||
return regs;
|
||||
: "=a" (regs.eax), "=S" (regs.ebx), "=c" (regs.ecx), "=d" (regs.edx)
|
||||
: "0" (func));
|
||||
return regs;
|
||||
}
|
||||
|
||||
|
||||
static int64_t
|
||||
rdtsc(void)
|
||||
{
|
||||
uint32_t hi, lo;
|
||||
uint32_t hi, lo;
|
||||
#define RDTSC ".byte 0x0f, 0x31; "
|
||||
__asm__ volatile (RDTSC : "=a"(lo), "=d"(hi) : );
|
||||
return (uint64_t) hi << 32 | lo;
|
||||
__asm__ volatile (RDTSC : "=a"(lo), "=d"(hi) : );
|
||||
return (uint64_t) hi << 32 | lo;
|
||||
}
|
||||
|
||||
static const char*
|
||||
brandname(int i)
|
||||
{
|
||||
static const char* brandmap[] = {
|
||||
NULL,
|
||||
"Intel(R) Celeron(R) processor",
|
||||
"Intel(R) Pentium(R) III processor",
|
||||
"Intel(R) Pentium(R) III Xeon(tm) processor",
|
||||
"Intel(R) Pentium(R) III processor",
|
||||
NULL,
|
||||
"Mobile Intel(R) Pentium(R) III processor-M",
|
||||
"Mobile Intel(R) Celeron(R) processor"
|
||||
};
|
||||
static const char* brandmap[] = {
|
||||
NULL,
|
||||
"Intel(R) Celeron(R) processor",
|
||||
"Intel(R) Pentium(R) III processor",
|
||||
"Intel(R) Pentium(R) III Xeon(tm) processor",
|
||||
"Intel(R) Pentium(R) III processor",
|
||||
NULL,
|
||||
"Mobile Intel(R) Pentium(R) III processor-M",
|
||||
"Mobile Intel(R) Celeron(R) processor"
|
||||
};
|
||||
|
||||
if (i >= sizeof(brandmap))
|
||||
return NULL;
|
||||
else
|
||||
return brandmap[i];
|
||||
if (i >= sizeof(brandmap))
|
||||
return NULL;
|
||||
else
|
||||
return brandmap[i];
|
||||
}
|
||||
|
||||
static void
|
||||
store32(char *d, unsigned int v)
|
||||
{
|
||||
d[0] = v & 0xff;
|
||||
d[1] = (v >> 8) & 0xff;
|
||||
d[2] = (v >> 16) & 0xff;
|
||||
d[3] = (v >> 24) & 0xff;
|
||||
d[0] = v & 0xff;
|
||||
d[1] = (v >> 8) & 0xff;
|
||||
d[2] = (v >> 16) & 0xff;
|
||||
d[3] = (v >> 24) & 0xff;
|
||||
}
|
||||
|
||||
|
||||
int
|
||||
main(void)
|
||||
{
|
||||
cpuid_regs_t regs, regs_ext;
|
||||
char idstr[13];
|
||||
unsigned max_cpuid;
|
||||
unsigned max_ext_cpuid;
|
||||
unsigned int amd_flags;
|
||||
unsigned int amd_flags2;
|
||||
const char *model_name = NULL;
|
||||
int i;
|
||||
char processor_name[49];
|
||||
cpuid_regs_t regs, regs_ext;
|
||||
char idstr[13];
|
||||
unsigned max_cpuid;
|
||||
unsigned max_ext_cpuid;
|
||||
unsigned int amd_flags;
|
||||
unsigned int amd_flags2;
|
||||
const char *model_name = NULL;
|
||||
int i;
|
||||
char processor_name[49];
|
||||
|
||||
regs = cpuid(0);
|
||||
max_cpuid = regs.eax;
|
||||
/* printf("%d CPUID function codes\n", max_cpuid+1); */
|
||||
regs = cpuid(0);
|
||||
max_cpuid = regs.eax;
|
||||
/* printf("%d CPUID function codes\n", max_cpuid+1); */
|
||||
|
||||
store32(idstr+0, regs.ebx);
|
||||
store32(idstr+4, regs.edx);
|
||||
store32(idstr+8, regs.ecx);
|
||||
idstr[12] = 0;
|
||||
printf("vendor_id\t: %s\n", idstr);
|
||||
store32(idstr+0, regs.ebx);
|
||||
store32(idstr+4, regs.edx);
|
||||
store32(idstr+8, regs.ecx);
|
||||
idstr[12] = 0;
|
||||
printf("vendor_id\t: %s\n", idstr);
|
||||
|
||||
regs_ext = cpuid((1<<31) + 0);
|
||||
max_ext_cpuid = regs_ext.eax;
|
||||
if (max_ext_cpuid >= (1<<31) + 1) {
|
||||
regs_ext = cpuid((1<<31) + 1);
|
||||
amd_flags = regs_ext.edx;
|
||||
amd_flags2 = regs_ext.ecx;
|
||||
regs_ext = cpuid((1<<31) + 0);
|
||||
max_ext_cpuid = regs_ext.eax;
|
||||
if (max_ext_cpuid >= (1<<31) + 1) {
|
||||
regs_ext = cpuid((1<<31) + 1);
|
||||
amd_flags = regs_ext.edx;
|
||||
amd_flags2 = regs_ext.ecx;
|
||||
|
||||
if (max_ext_cpuid >= (1<<31) + 4) {
|
||||
for (i = 2; i <= 4; i++) {
|
||||
regs_ext = cpuid((1<<31) + i);
|
||||
store32(processor_name + (i-2)*16, regs_ext.eax);
|
||||
store32(processor_name + (i-2)*16 + 4, regs_ext.ebx);
|
||||
store32(processor_name + (i-2)*16 + 8, regs_ext.ecx);
|
||||
store32(processor_name + (i-2)*16 + 12, regs_ext.edx);
|
||||
}
|
||||
processor_name[48] = 0;
|
||||
model_name = processor_name;
|
||||
while (*model_name == ' ') {
|
||||
model_name++;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
amd_flags = 0;
|
||||
amd_flags2 = 0;
|
||||
}
|
||||
|
||||
if (max_cpuid >= 1) {
|
||||
static struct {
|
||||
int bit;
|
||||
char *desc;
|
||||
} cap[] = {
|
||||
CPUID_FEATURE_DEF(0, "fpu", "Floating-point unit on-chip"),
|
||||
CPUID_FEATURE_DEF(1, "vme", "Virtual Mode Enhancements"),
|
||||
CPUID_FEATURE_DEF(2, "de", "Debugging Extension"),
|
||||
CPUID_FEATURE_DEF(3, "pse", "Page Size Extension"),
|
||||
CPUID_FEATURE_DEF(4, "tsc", "Time Stamp Counter"),
|
||||
CPUID_FEATURE_DEF(5, "msr", "Pentium Processor MSR"),
|
||||
CPUID_FEATURE_DEF(6, "pae", "Physical Address Extension"),
|
||||
CPUID_FEATURE_DEF(7, "mce", "Machine Check Exception"),
|
||||
CPUID_FEATURE_DEF(8, "cx8", "CMPXCHG8B Instruction Supported"),
|
||||
CPUID_FEATURE_DEF(9, "apic", "On-chip APIC Hardware Enabled"),
|
||||
CPUID_FEATURE_DEF(11, "sep", "SYSENTER and SYSEXIT"),
|
||||
CPUID_FEATURE_DEF(12, "mtrr", "Memory Type Range Registers"),
|
||||
CPUID_FEATURE_DEF(13, "pge", "PTE Global Bit"),
|
||||
CPUID_FEATURE_DEF(14, "mca", "Machine Check Architecture"),
|
||||
CPUID_FEATURE_DEF(15, "cmov", "Conditional Move/Compare Instruction"),
|
||||
CPUID_FEATURE_DEF(16, "pat", "Page Attribute Table"),
|
||||
CPUID_FEATURE_DEF(17, "pse36", "Page Size Extension 36-bit"),
|
||||
CPUID_FEATURE_DEF(18, "pn", "Processor Serial Number"),
|
||||
CPUID_FEATURE_DEF(19, "clflush", "CFLUSH instruction"),
|
||||
CPUID_FEATURE_DEF(21, "dts", "Debug Store"),
|
||||
CPUID_FEATURE_DEF(22, "acpi", "Thermal Monitor and Clock Ctrl"),
|
||||
CPUID_FEATURE_DEF(23, "mmx", "MMX Technology"),
|
||||
CPUID_FEATURE_DEF(24, "fxsr", "FXSAVE/FXRSTOR"),
|
||||
CPUID_FEATURE_DEF(25, "sse", "SSE Extensions"),
|
||||
CPUID_FEATURE_DEF(26, "sse2", "SSE2 Extensions"),
|
||||
CPUID_FEATURE_DEF(27, "ss", "Self Snoop"),
|
||||
CPUID_FEATURE_DEF(28, "ht", "Multi-threading"),
|
||||
CPUID_FEATURE_DEF(29, "tm", "Therm. Monitor"),
|
||||
CPUID_FEATURE_DEF(30, "ia64", "IA-64 Processor"),
|
||||
CPUID_FEATURE_DEF(31, "pbe", "Pend. Brk. EN."),
|
||||
{ -1 }
|
||||
};
|
||||
static struct {
|
||||
int bit;
|
||||
char *desc;
|
||||
} cap2[] = {
|
||||
CPUID_FEATURE_DEF(0, "pni", "SSE3 Extensions"),
|
||||
CPUID_FEATURE_DEF(1, "pclmulqdq", "Carryless Multiplication"),
|
||||
CPUID_FEATURE_DEF(2, "dtes64", "64-bit Debug Store"),
|
||||
CPUID_FEATURE_DEF(3, "monitor", "MONITOR/MWAIT"),
|
||||
CPUID_FEATURE_DEF(4, "ds_cpl", "CPL Qualified Debug Store"),
|
||||
CPUID_FEATURE_DEF(5, "vmx", "Virtual Machine Extensions"),
|
||||
CPUID_FEATURE_DEF(6, "smx", "Safer Mode Extensions"),
|
||||
CPUID_FEATURE_DEF(7, "est", "Enhanced Intel SpeedStep Technology"),
|
||||
CPUID_FEATURE_DEF(8, "tm2", "Thermal Monitor 2"),
|
||||
CPUID_FEATURE_DEF(9, "ssse3", "Supplemental SSE3"),
|
||||
CPUID_FEATURE_DEF(10, "cid", "L1 Context ID"),
|
||||
CPUID_FEATURE_DEF(12, "fma", "Fused Multiply Add"),
|
||||
CPUID_FEATURE_DEF(13, "cx16", "CMPXCHG16B Available"),
|
||||
CPUID_FEATURE_DEF(14, "xtpr", "xTPR Disable"),
|
||||
CPUID_FEATURE_DEF(15, "pdcm", "Perf/Debug Capability MSR"),
|
||||
CPUID_FEATURE_DEF(18, "dca", "Direct Cache Access"),
|
||||
CPUID_FEATURE_DEF(19, "sse4_1", "SSE4.1 Extensions"),
|
||||
CPUID_FEATURE_DEF(20, "sse4_2", "SSE4.2 Extensions"),
|
||||
CPUID_FEATURE_DEF(21, "x2apic", "x2APIC Feature"),
|
||||
CPUID_FEATURE_DEF(22, "movbe", "MOVBE Instruction"),
|
||||
CPUID_FEATURE_DEF(23, "popcnt", "Pop Count Instruction"),
|
||||
CPUID_FEATURE_DEF(25, "aes", "AES Instruction"),
|
||||
CPUID_FEATURE_DEF(26, "xsave", "XSAVE/XRSTOR Extensions"),
|
||||
CPUID_FEATURE_DEF(27, "osxsave", "XSAVE/XRSTOR Enabled in the OS"),
|
||||
CPUID_FEATURE_DEF(28, "avx", "Advanced Vector Extension"),
|
||||
{ -1 }
|
||||
};
|
||||
static struct {
|
||||
int bit;
|
||||
char *desc;
|
||||
} cap_amd[] = {
|
||||
CPUID_FEATURE_DEF(11, "syscall", "SYSCALL and SYSRET"),
|
||||
CPUID_FEATURE_DEF(19, "mp", "MP Capable"),
|
||||
CPUID_FEATURE_DEF(20, "nx", "No-Execute Page Protection"),
|
||||
CPUID_FEATURE_DEF(22, "mmxext", "MMX Technology (AMD Extensions)"),
|
||||
CPUID_FEATURE_DEF(25, "fxsr_opt", "Fast FXSAVE/FXRSTOR"),
|
||||
CPUID_FEATURE_DEF(26, "pdpe1gb", "PDP Entry for 1GiB Page"),
|
||||
CPUID_FEATURE_DEF(27, "rdtscp", "RDTSCP Instruction"),
|
||||
CPUID_FEATURE_DEF(29, "lm", "Long Mode Capable"),
|
||||
CPUID_FEATURE_DEF(30, "3dnowext", "3DNow! Extensions"),
|
||||
CPUID_FEATURE_DEF(31, "3dnow", "3DNow!"),
|
||||
{ -1 }
|
||||
};
|
||||
static struct {
|
||||
int bit;
|
||||
char *desc;
|
||||
} cap_amd2[] = {
|
||||
CPUID_FEATURE_DEF(0, "lahf_lm", "LAHF/SAHF Supported in 64-bit Mode"),
|
||||
CPUID_FEATURE_DEF(1, "cmp_legacy", "Chip Multi-Core"),
|
||||
CPUID_FEATURE_DEF(2, "svm", "Secure Virtual Machine"),
|
||||
CPUID_FEATURE_DEF(3, "extapic", "Extended APIC Space"),
|
||||
CPUID_FEATURE_DEF(4, "cr8_legacy", "CR8 Available in Legacy Mode"),
|
||||
CPUID_FEATURE_DEF(5, "abm", "Advanced Bit Manipulation"),
|
||||
CPUID_FEATURE_DEF(6, "sse4a", "SSE4A Extensions"),
|
||||
CPUID_FEATURE_DEF(7, "misalignsse", "Misaligned SSE Mode"),
|
||||
CPUID_FEATURE_DEF(8, "3dnowprefetch", "3DNow! Prefetch/PrefetchW"),
|
||||
CPUID_FEATURE_DEF(9, "osvw", "OS Visible Workaround"),
|
||||
CPUID_FEATURE_DEF(10, "ibs", "Instruction Based Sampling"),
|
||||
CPUID_FEATURE_DEF(11, "sse5", "SSE5 Extensions"),
|
||||
CPUID_FEATURE_DEF(12, "skinit", "SKINIT, STGI, and DEV Support"),
|
||||
CPUID_FEATURE_DEF(13, "wdt", "Watchdog Timer Support"),
|
||||
{ -1 }
|
||||
};
|
||||
unsigned int family, model, stepping;
|
||||
|
||||
regs = cpuid(1);
|
||||
family = (regs.eax >> 8) & 0xf;
|
||||
model = (regs.eax >> 4) & 0xf;
|
||||
stepping = regs.eax & 0xf;
|
||||
|
||||
if (family == 0xf)
|
||||
family += (regs.eax >> 20) & 0xff;
|
||||
if (family == 0xf || family == 6)
|
||||
model += ((regs.eax >> 16) & 0xf) << 4;
|
||||
|
||||
printf("cpu family\t: %d\n"
|
||||
"model\t\t: %d\n"
|
||||
"stepping\t: %d\n" ,
|
||||
family,
|
||||
model,
|
||||
stepping);
|
||||
|
||||
if (strstr(idstr, "Intel") && !model_name) {
|
||||
if (family == 6 && model == 0xb && stepping == 1)
|
||||
model_name = "Intel (R) Celeron (R) processor";
|
||||
else
|
||||
model_name = brandname(regs.ebx & 0xf);
|
||||
if (max_ext_cpuid >= (1<<31) + 4) {
|
||||
for (i = 2; i <= 4; i++) {
|
||||
regs_ext = cpuid((1<<31) + i);
|
||||
store32(processor_name + (i-2)*16, regs_ext.eax);
|
||||
store32(processor_name + (i-2)*16 + 4, regs_ext.ebx);
|
||||
store32(processor_name + (i-2)*16 + 8, regs_ext.ecx);
|
||||
store32(processor_name + (i-2)*16 + 12, regs_ext.edx);
|
||||
}
|
||||
processor_name[48] = 0;
|
||||
model_name = processor_name;
|
||||
while (*model_name == ' ') {
|
||||
model_name++;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
amd_flags = 0;
|
||||
amd_flags2 = 0;
|
||||
}
|
||||
|
||||
printf("flags\t\t:");
|
||||
for (i = 0; cap[i].bit >= 0; i++) {
|
||||
if (regs.edx & (1 << cap[i].bit)) {
|
||||
printf(" %s", cap[i].desc);
|
||||
}
|
||||
}
|
||||
for (i = 0; cap2[i].bit >= 0; i++) {
|
||||
if (regs.ecx & (1 << cap2[i].bit)) {
|
||||
printf(" %s", cap2[i].desc);
|
||||
}
|
||||
}
|
||||
/* k6_mtrr is supported by some AMD K6-2/K6-III CPUs but
|
||||
it is not indicated by a CPUID feature bit, so we
|
||||
have to check the family, model and stepping instead. */
|
||||
if (strstr(idstr, "AMD") &&
|
||||
family == 5 &&
|
||||
(model >= 9 || (model == 8 && stepping >= 8)))
|
||||
printf(" %s", "k6_mtrr");
|
||||
/* similar for cyrix_arr. */
|
||||
if (strstr(idstr, "Cyrix") &&
|
||||
(family == 5 && (model < 4 || family == 6)))
|
||||
printf(" %s", "cyrix_arr");
|
||||
/* as well as centaur_mcr. */
|
||||
if (strstr(idstr, "Centaur") &&
|
||||
family == 5)
|
||||
printf(" %s", "centaur_mcr");
|
||||
if (max_cpuid >= 1) {
|
||||
static struct {
|
||||
int bit;
|
||||
char *desc;
|
||||
} cap[] = {
|
||||
CPUID_FEATURE_DEF(0, "fpu", "Floating-point unit on-chip"),
|
||||
CPUID_FEATURE_DEF(1, "vme", "Virtual Mode Enhancements"),
|
||||
CPUID_FEATURE_DEF(2, "de", "Debugging Extension"),
|
||||
CPUID_FEATURE_DEF(3, "pse", "Page Size Extension"),
|
||||
CPUID_FEATURE_DEF(4, "tsc", "Time Stamp Counter"),
|
||||
CPUID_FEATURE_DEF(5, "msr", "Pentium Processor MSR"),
|
||||
CPUID_FEATURE_DEF(6, "pae", "Physical Address Extension"),
|
||||
CPUID_FEATURE_DEF(7, "mce", "Machine Check Exception"),
|
||||
CPUID_FEATURE_DEF(8, "cx8", "CMPXCHG8B Instruction Supported"),
|
||||
CPUID_FEATURE_DEF(9, "apic", "On-chip APIC Hardware Enabled"),
|
||||
CPUID_FEATURE_DEF(11, "sep", "SYSENTER and SYSEXIT"),
|
||||
CPUID_FEATURE_DEF(12, "mtrr", "Memory Type Range Registers"),
|
||||
CPUID_FEATURE_DEF(13, "pge", "PTE Global Bit"),
|
||||
CPUID_FEATURE_DEF(14, "mca", "Machine Check Architecture"),
|
||||
CPUID_FEATURE_DEF(15, "cmov", "Conditional Move/Compare Instruction"),
|
||||
CPUID_FEATURE_DEF(16, "pat", "Page Attribute Table"),
|
||||
CPUID_FEATURE_DEF(17, "pse36", "Page Size Extension 36-bit"),
|
||||
CPUID_FEATURE_DEF(18, "pn", "Processor Serial Number"),
|
||||
CPUID_FEATURE_DEF(19, "clflush", "CFLUSH instruction"),
|
||||
CPUID_FEATURE_DEF(21, "dts", "Debug Store"),
|
||||
CPUID_FEATURE_DEF(22, "acpi", "Thermal Monitor and Clock Ctrl"),
|
||||
CPUID_FEATURE_DEF(23, "mmx", "MMX Technology"),
|
||||
CPUID_FEATURE_DEF(24, "fxsr", "FXSAVE/FXRSTOR"),
|
||||
CPUID_FEATURE_DEF(25, "sse", "SSE Extensions"),
|
||||
CPUID_FEATURE_DEF(26, "sse2", "SSE2 Extensions"),
|
||||
CPUID_FEATURE_DEF(27, "ss", "Self Snoop"),
|
||||
CPUID_FEATURE_DEF(28, "ht", "Multi-threading"),
|
||||
CPUID_FEATURE_DEF(29, "tm", "Therm. Monitor"),
|
||||
CPUID_FEATURE_DEF(30, "ia64", "IA-64 Processor"),
|
||||
CPUID_FEATURE_DEF(31, "pbe", "Pend. Brk. EN."),
|
||||
{ -1 }
|
||||
};
|
||||
static struct {
|
||||
int bit;
|
||||
char *desc;
|
||||
} cap2[] = {
|
||||
CPUID_FEATURE_DEF(0, "pni", "SSE3 Extensions"),
|
||||
CPUID_FEATURE_DEF(1, "pclmulqdq", "Carryless Multiplication"),
|
||||
CPUID_FEATURE_DEF(2, "dtes64", "64-bit Debug Store"),
|
||||
CPUID_FEATURE_DEF(3, "monitor", "MONITOR/MWAIT"),
|
||||
CPUID_FEATURE_DEF(4, "ds_cpl", "CPL Qualified Debug Store"),
|
||||
CPUID_FEATURE_DEF(5, "vmx", "Virtual Machine Extensions"),
|
||||
CPUID_FEATURE_DEF(6, "smx", "Safer Mode Extensions"),
|
||||
CPUID_FEATURE_DEF(7, "est", "Enhanced Intel SpeedStep Technology"),
|
||||
CPUID_FEATURE_DEF(8, "tm2", "Thermal Monitor 2"),
|
||||
CPUID_FEATURE_DEF(9, "ssse3", "Supplemental SSE3"),
|
||||
CPUID_FEATURE_DEF(10, "cid", "L1 Context ID"),
|
||||
CPUID_FEATURE_DEF(12, "fma", "Fused Multiply Add"),
|
||||
CPUID_FEATURE_DEF(13, "cx16", "CMPXCHG16B Available"),
|
||||
CPUID_FEATURE_DEF(14, "xtpr", "xTPR Disable"),
|
||||
CPUID_FEATURE_DEF(15, "pdcm", "Perf/Debug Capability MSR"),
|
||||
CPUID_FEATURE_DEF(18, "dca", "Direct Cache Access"),
|
||||
CPUID_FEATURE_DEF(19, "sse4_1", "SSE4.1 Extensions"),
|
||||
CPUID_FEATURE_DEF(20, "sse4_2", "SSE4.2 Extensions"),
|
||||
CPUID_FEATURE_DEF(21, "x2apic", "x2APIC Feature"),
|
||||
CPUID_FEATURE_DEF(22, "movbe", "MOVBE Instruction"),
|
||||
CPUID_FEATURE_DEF(23, "popcnt", "Pop Count Instruction"),
|
||||
CPUID_FEATURE_DEF(25, "aes", "AES Instruction"),
|
||||
CPUID_FEATURE_DEF(26, "xsave", "XSAVE/XRSTOR Extensions"),
|
||||
CPUID_FEATURE_DEF(27, "osxsave", "XSAVE/XRSTOR Enabled in the OS"),
|
||||
CPUID_FEATURE_DEF(28, "avx", "Advanced Vector Extension"),
|
||||
{ -1 }
|
||||
};
|
||||
static struct {
|
||||
int bit;
|
||||
char *desc;
|
||||
} cap_amd[] = {
|
||||
CPUID_FEATURE_DEF(11, "syscall", "SYSCALL and SYSRET"),
|
||||
CPUID_FEATURE_DEF(19, "mp", "MP Capable"),
|
||||
CPUID_FEATURE_DEF(20, "nx", "No-Execute Page Protection"),
|
||||
CPUID_FEATURE_DEF(22, "mmxext", "MMX Technology (AMD Extensions)"),
|
||||
CPUID_FEATURE_DEF(25, "fxsr_opt", "Fast FXSAVE/FXRSTOR"),
|
||||
CPUID_FEATURE_DEF(26, "pdpe1gb", "PDP Entry for 1GiB Page"),
|
||||
CPUID_FEATURE_DEF(27, "rdtscp", "RDTSCP Instruction"),
|
||||
CPUID_FEATURE_DEF(29, "lm", "Long Mode Capable"),
|
||||
CPUID_FEATURE_DEF(30, "3dnowext", "3DNow! Extensions"),
|
||||
CPUID_FEATURE_DEF(31, "3dnow", "3DNow!"),
|
||||
{ -1 }
|
||||
};
|
||||
static struct {
|
||||
int bit;
|
||||
char *desc;
|
||||
} cap_amd2[] = {
|
||||
CPUID_FEATURE_DEF(0, "lahf_lm", "LAHF/SAHF Supported in 64-bit Mode"),
|
||||
CPUID_FEATURE_DEF(1, "cmp_legacy", "Chip Multi-Core"),
|
||||
CPUID_FEATURE_DEF(2, "svm", "Secure Virtual Machine"),
|
||||
CPUID_FEATURE_DEF(3, "extapic", "Extended APIC Space"),
|
||||
CPUID_FEATURE_DEF(4, "cr8_legacy", "CR8 Available in Legacy Mode"),
|
||||
CPUID_FEATURE_DEF(5, "abm", "Advanced Bit Manipulation"),
|
||||
CPUID_FEATURE_DEF(6, "sse4a", "SSE4A Extensions"),
|
||||
CPUID_FEATURE_DEF(7, "misalignsse", "Misaligned SSE Mode"),
|
||||
CPUID_FEATURE_DEF(8, "3dnowprefetch", "3DNow! Prefetch/PrefetchW"),
|
||||
CPUID_FEATURE_DEF(9, "osvw", "OS Visible Workaround"),
|
||||
CPUID_FEATURE_DEF(10, "ibs", "Instruction Based Sampling"),
|
||||
CPUID_FEATURE_DEF(11, "sse5", "SSE5 Extensions"),
|
||||
CPUID_FEATURE_DEF(12, "skinit", "SKINIT, STGI, and DEV Support"),
|
||||
CPUID_FEATURE_DEF(13, "wdt", "Watchdog Timer Support"),
|
||||
{ -1 }
|
||||
};
|
||||
unsigned int family, model, stepping;
|
||||
|
||||
for (i = 0; cap_amd[i].bit >= 0; i++) {
|
||||
if (amd_flags & (1 << cap_amd[i].bit)) {
|
||||
printf(" %s", cap_amd[i].desc);
|
||||
}
|
||||
}
|
||||
for (i = 0; cap_amd2[i].bit >= 0; i++) {
|
||||
if (amd_flags2 & (1 << cap_amd2[i].bit)) {
|
||||
printf(" %s", cap_amd2[i].desc);
|
||||
}
|
||||
}
|
||||
printf("\n");
|
||||
regs = cpuid(1);
|
||||
family = (regs.eax >> 8) & 0xf;
|
||||
model = (regs.eax >> 4) & 0xf;
|
||||
stepping = regs.eax & 0xf;
|
||||
|
||||
if (regs.edx & (1 << 4)) {
|
||||
int64_t tsc_start, tsc_end;
|
||||
struct timeval tv_start, tv_end;
|
||||
int usec_delay;
|
||||
if (family == 0xf)
|
||||
family += (regs.eax >> 20) & 0xff;
|
||||
if (family == 0xf || family == 6)
|
||||
model += ((regs.eax >> 16) & 0xf) << 4;
|
||||
|
||||
tsc_start = rdtsc();
|
||||
gettimeofday(&tv_start, NULL);
|
||||
printf("cpu family\t: %d\n"
|
||||
"model\t\t: %d\n"
|
||||
"stepping\t: %d\n" ,
|
||||
family,
|
||||
model,
|
||||
stepping);
|
||||
|
||||
if (strstr(idstr, "Intel") && !model_name) {
|
||||
if (family == 6 && model == 0xb && stepping == 1)
|
||||
model_name = "Intel (R) Celeron (R) processor";
|
||||
else
|
||||
model_name = brandname(regs.ebx & 0xf);
|
||||
}
|
||||
|
||||
printf("flags\t\t:");
|
||||
for (i = 0; cap[i].bit >= 0; i++) {
|
||||
if (regs.edx & (1 << cap[i].bit)) {
|
||||
printf(" %s", cap[i].desc);
|
||||
}
|
||||
}
|
||||
for (i = 0; cap2[i].bit >= 0; i++) {
|
||||
if (regs.ecx & (1 << cap2[i].bit)) {
|
||||
printf(" %s", cap2[i].desc);
|
||||
}
|
||||
}
|
||||
/* k6_mtrr is supported by some AMD K6-2/K6-III CPUs but
|
||||
it is not indicated by a CPUID feature bit, so we
|
||||
have to check the family, model and stepping instead. */
|
||||
if (strstr(idstr, "AMD") &&
|
||||
family == 5 &&
|
||||
(model >= 9 || (model == 8 && stepping >= 8)))
|
||||
printf(" %s", "k6_mtrr");
|
||||
/* similar for cyrix_arr. */
|
||||
if (strstr(idstr, "Cyrix") &&
|
||||
(family == 5 && (model < 4 || family == 6)))
|
||||
printf(" %s", "cyrix_arr");
|
||||
/* as well as centaur_mcr. */
|
||||
if (strstr(idstr, "Centaur") &&
|
||||
family == 5)
|
||||
printf(" %s", "centaur_mcr");
|
||||
|
||||
for (i = 0; cap_amd[i].bit >= 0; i++) {
|
||||
if (amd_flags & (1 << cap_amd[i].bit)) {
|
||||
printf(" %s", cap_amd[i].desc);
|
||||
}
|
||||
}
|
||||
for (i = 0; cap_amd2[i].bit >= 0; i++) {
|
||||
if (amd_flags2 & (1 << cap_amd2[i].bit)) {
|
||||
printf(" %s", cap_amd2[i].desc);
|
||||
}
|
||||
}
|
||||
printf("\n");
|
||||
|
||||
if (regs.edx & (1 << 4)) {
|
||||
int64_t tsc_start, tsc_end;
|
||||
struct timeval tv_start, tv_end;
|
||||
int usec_delay;
|
||||
|
||||
tsc_start = rdtsc();
|
||||
gettimeofday(&tv_start, NULL);
|
||||
#ifdef MISSING_USLEEP
|
||||
sleep(1);
|
||||
sleep(1);
|
||||
#else
|
||||
usleep(100000);
|
||||
usleep(100000);
|
||||
#endif
|
||||
tsc_end = rdtsc();
|
||||
gettimeofday(&tv_end, NULL);
|
||||
tsc_end = rdtsc();
|
||||
gettimeofday(&tv_end, NULL);
|
||||
|
||||
usec_delay = 1000000 * (tv_end.tv_sec - tv_start.tv_sec)
|
||||
+ (tv_end.tv_usec - tv_start.tv_usec);
|
||||
usec_delay = 1000000 * (tv_end.tv_sec - tv_start.tv_sec)
|
||||
+ (tv_end.tv_usec - tv_start.tv_usec);
|
||||
|
||||
printf("cpu MHz\t\t: %.3f\n",
|
||||
(double)(tsc_end-tsc_start) / usec_delay);
|
||||
printf("cpu MHz\t\t: %.3f\n",
|
||||
(double)(tsc_end-tsc_start) / usec_delay);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
printf("model name\t: ");
|
||||
if (model_name)
|
||||
printf("%s\n", model_name);
|
||||
else
|
||||
printf("Unknown %s CPU\n", idstr);
|
||||
printf("model name\t: ");
|
||||
if (model_name)
|
||||
printf("%s\n", model_name);
|
||||
else
|
||||
printf("Unknown %s CPU\n", idstr);
|
||||
}
|
||||
|
12
edl.h
12
edl.h
@ -28,12 +28,12 @@
|
||||
#define EDL_MUTE_END 0
|
||||
|
||||
struct edl_record {
|
||||
float start_sec;
|
||||
float stop_sec;
|
||||
float length_sec;
|
||||
short action;
|
||||
struct edl_record* next;
|
||||
struct edl_record* prev;
|
||||
float start_sec;
|
||||
float stop_sec;
|
||||
float length_sec;
|
||||
short action;
|
||||
struct edl_record* next;
|
||||
struct edl_record* prev;
|
||||
};
|
||||
|
||||
typedef struct edl_record* edl_record_ptr;
|
||||
|
Loading…
Reference in New Issue
Block a user