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:
parent
4058e90588
commit
feaead4393
@ -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
|
||||||
|
@ -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},
|
||||||
|
|
||||||
|
@ -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;
|
||||||
|
Loading…
Reference in New Issue
Block a user