1
0
mirror of https://github.com/mpv-player/mpv synced 2025-03-24 04:08:19 +00:00

Allow user to disable writing of ODML index

git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@12364 b3059339-0415-0410-9bf9-f77b7e298cf2
This commit is contained in:
ranma 2004-04-30 21:33:53 +00:00
parent 4058e90588
commit feaead4393
3 changed files with 23 additions and 10 deletions

View File

@ -3974,6 +3974,10 @@ Do not automatically insert the expand filter into the MEncoder filter chain.
Useful to control at which point of the filter chain subtitles are rendered Useful to control at which point of the filter chain subtitles are rendered
when hardcoding subtitles onto a movie. when hardcoding subtitles onto a movie.
.TP .TP
.B \-noodml
Do not write OpenDML index for files >1GB.
Applies to \-of avi only.
.TP
.B \-noskip .B \-noskip
Do not skip frames. Do not skip frames.
.TP .TP

View File

@ -161,6 +161,7 @@ m_option_t of_conf[]={
}; };
extern float avi_aspect_override; /* defined in libmpdemux/muxer_avi.c */ extern float avi_aspect_override; /* defined in libmpdemux/muxer_avi.c */
extern int write_odml; /* defined in libmpdemux/muxer_avi.c */
m_option_t mencoder_opts[]={ m_option_t mencoder_opts[]={
/* name, pointer, type, flags, min, max */ /* name, pointer, type, flags, min, max */
@ -210,6 +211,9 @@ m_option_t mencoder_opts[]={
{"encodedups", &encode_duplicates, CONF_TYPE_FLAG, 0, 0, 1, NULL}, {"encodedups", &encode_duplicates, CONF_TYPE_FLAG, 0, 0, 1, NULL},
{"noencodedups", &encode_duplicates, CONF_TYPE_FLAG, 0, 1, 0, NULL}, {"noencodedups", &encode_duplicates, CONF_TYPE_FLAG, 0, 1, 0, NULL},
{"odml", &write_odml, CONF_TYPE_FLAG, 0, 0, 1, NULL},
{"noodml", &write_odml, CONF_TYPE_FLAG, 0, 1, 0, NULL},
// info header strings // info header strings
{"info", info_conf, CONF_TYPE_SUBCONFIG, 0, 0, 0, NULL}, {"info", info_conf, CONF_TYPE_SUBCONFIG, 0, 0, 0, NULL},

View File

@ -33,6 +33,7 @@ extern char *info_comment;
#define MOVIALIGN 0x00001000 #define MOVIALIGN 0x00001000
float avi_aspect_override = -1.0; float avi_aspect_override = -1.0;
int write_odml = 1;
struct avi_odmlidx_entry { struct avi_odmlidx_entry {
uint64_t ofs; uint64_t ofs;
@ -159,7 +160,7 @@ if(len>0){
} }
static void write_avi_list(FILE *f,unsigned int id,int len); static void write_avi_list(FILE *f,unsigned int id,int len);
static void avifile_write_index(muxer_t *muxer); static void avifile_write_standard_index(muxer_t *muxer);
static void avifile_odml_new_riff(muxer_t *muxer) static void avifile_odml_new_riff(muxer_t *muxer)
{ {
@ -198,9 +199,9 @@ static void avifile_write_chunk(muxer_stream_t *s,size_t len,unsigned int flags)
if (vsi->riffofspos == 0) { if (vsi->riffofspos == 0) {
rifflen += 8+muxer->idx_pos*sizeof(AVIINDEXENTRY); rifflen += 8+muxer->idx_pos*sizeof(AVIINDEXENTRY);
} }
if (rifflen + paddedlen > ODML_CHUNKLEN) { if (rifflen + paddedlen > ODML_CHUNKLEN && write_odml == 1) {
if (vsi->riffofspos == 0) { if (vsi->riffofspos == 0) {
avifile_write_index(muxer); avifile_write_standard_index(muxer);
} }
avifile_odml_new_riff(muxer); avifile_odml_new_riff(muxer);
} }
@ -624,13 +625,7 @@ static void avifile_odml_write_index(muxer_t *muxer){
muxer->file_end=ftello(muxer->file); muxer->file_end=ftello(muxer->file);
} }
static void avifile_write_index(muxer_t *muxer){ static void avifile_write_standard_index(muxer_t *muxer){
if(muxer->file_end > ODML_CHUNKLEN &&
muxer->idx && muxer->idx_pos>0) {
avifile_odml_write_index(muxer);
return;
}
muxer->movi_end=ftello(muxer->file); muxer->movi_end=ftello(muxer->file);
if(muxer->idx && muxer->idx_pos>0){ if(muxer->idx && muxer->idx_pos>0){
@ -646,6 +641,16 @@ static void avifile_write_index(muxer_t *muxer){
muxer->file_end=ftello(muxer->file); muxer->file_end=ftello(muxer->file);
} }
static void avifile_write_index(muxer_t *muxer){
struct avi_stream_info *vsi = muxer->def_v->priv;
if (vsi->riffofspos > 0){
avifile_odml_write_index(muxer);
} else {
avifile_write_standard_index(muxer);
}
}
void muxer_init_muxer_avi(muxer_t *muxer){ void muxer_init_muxer_avi(muxer_t *muxer){
muxer->cont_new_stream = &avifile_new_stream; muxer->cont_new_stream = &avifile_new_stream;
muxer->cont_write_chunk = &avifile_write_chunk; muxer->cont_write_chunk = &avifile_write_chunk;