diff --git a/doc/muxers.texi b/doc/muxers.texi index 0ca8d3fc9314b75c9aee0bfa9c1a3e44d0d40199..54109c7fd23247da9f0c7c3621d8a3aefef9ab95 100644 --- a/doc/muxers.texi +++ b/doc/muxers.texi @@ -330,6 +330,11 @@ This option is implicitly set when writing ismv (Smooth Streaming) files. Run a second pass moving the index (moov atom) to the beginning of the file. This operation can take a while, and will not work in various situations such as fragmented output, thus it is not enabled by default. +@item -movflags disable_chpl +Disable Nero chapter markers (chpl atom). Normally, both Nero chapters +and a QuickTime chapter track are written to the file. With this option +set, only the QuickTime chapter track will be written. Nero chapters can +cause failures when the file is reprocessed with certain tagging programs. @end table Smooth Streaming content can be pushed in real time to a publishing diff --git a/libavformat/movenc.c b/libavformat/movenc.c index f16e85124553bfec308a8d668221807b0ab27e95..73a78d801081dd938e55c06349cf7c6cc5984e0c 100644 --- a/libavformat/movenc.c +++ b/libavformat/movenc.c @@ -57,6 +57,7 @@ static const AVOption options[] = { { "isml", "Create a live smooth streaming feed (for pushing to a publishing point)", 0, AV_OPT_TYPE_CONST, {.i64 = FF_MOV_FLAG_ISML}, INT_MIN, INT_MAX, AV_OPT_FLAG_ENCODING_PARAM, "movflags" }, { "faststart", "Run a second pass to put the index (moov atom) at the beginning of the file", 0, AV_OPT_TYPE_CONST, {.i64 = FF_MOV_FLAG_FASTSTART}, INT_MIN, INT_MAX, AV_OPT_FLAG_ENCODING_PARAM, "movflags" }, { "omit_tfhd_offset", "Omit the base data offset in tfhd atoms", 0, AV_OPT_TYPE_CONST, {.i64 = FF_MOV_FLAG_OMIT_TFHD_OFFSET}, INT_MIN, INT_MAX, AV_OPT_FLAG_ENCODING_PARAM, "movflags" }, + { "disable_chpl", "Disable Nero chapter atom", 0, AV_OPT_TYPE_CONST, {.i64 = FF_MOV_FLAG_DISABLE_CHPL}, INT_MIN, INT_MAX, AV_OPT_FLAG_ENCODING_PARAM, "movflags" }, FF_RTP_FLAG_OPTS(MOVMuxContext, rtp_flags), { "skip_iods", "Skip writing iods atom.", offsetof(MOVMuxContext, iods_skip), AV_OPT_TYPE_INT, {.i64 = 0}, 0, 1, AV_OPT_FLAG_ENCODING_PARAM}, { "iods_audio_profile", "iods audio profile atom.", offsetof(MOVMuxContext, iods_audio_profile), AV_OPT_TYPE_INT, {.i64 = -1}, -1, 255, AV_OPT_FLAG_ENCODING_PARAM}, @@ -2076,7 +2077,7 @@ static int mov_write_udta_tag(AVIOContext *pb, MOVMuxContext *mov, mov_write_meta_tag(pb_buf, mov, s); } - if (s->nb_chapters) + if (s->nb_chapters && !(mov->flags & FF_MOV_FLAG_DISABLE_CHPL)) mov_write_chpl_tag(pb_buf, s); if ((size = avio_close_dyn_buf(pb_buf, &buf)) > 0) { diff --git a/libavformat/movenc.h b/libavformat/movenc.h index 35be7818ed92be27030478b8e473a92892438799..0d3eb34c5e6d69211643d552cf45fee8763ca927 100644 --- a/libavformat/movenc.h +++ b/libavformat/movenc.h @@ -175,6 +175,7 @@ typedef struct MOVMuxContext { #define FF_MOV_FLAG_ISML 64 #define FF_MOV_FLAG_FASTSTART 128 #define FF_MOV_FLAG_OMIT_TFHD_OFFSET 256 +#define FF_MOV_FLAG_DISABLE_CHPL 512 int ff_mov_write_packet(AVFormatContext *s, AVPacket *pkt);