Add AVFMT_VARIABLE_FPS to specify which muxers do not need duplicated frames.

Originally committed as revision 17554 to svn://svn.ffmpeg.org/ffmpeg/trunk
pull/126/head
Michael Niedermayer 16 years ago
parent 75d873314a
commit 2591821213
  1. 1
      libavformat/avformat.h
  2. 1
      libavformat/avienc.c
  3. 2
      libavformat/matroskaenc.c
  4. 4
      libavformat/movenc.c
  5. 2
      libavformat/nutenc.c

@ -265,6 +265,7 @@ typedef struct AVFormatParameters {
#define AVFMT_NOTIMESTAMPS 0x0080 /**< Format does not need / have any timestamps. */ #define AVFMT_NOTIMESTAMPS 0x0080 /**< Format does not need / have any timestamps. */
#define AVFMT_GENERIC_INDEX 0x0100 /**< Use generic index building code. */ #define AVFMT_GENERIC_INDEX 0x0100 /**< Use generic index building code. */
#define AVFMT_TS_DISCONT 0x0200 /**< Format allows timestamp discontinuities. */ #define AVFMT_TS_DISCONT 0x0200 /**< Format allows timestamp discontinuities. */
#define AVFMT_VARIABLE_FPS 0x0400 /**< Format allows variable fps. */
typedef struct AVOutputFormat { typedef struct AVOutputFormat {
const char *name; const char *name;

@ -606,4 +606,5 @@ AVOutputFormat avi_muxer = {
avi_write_packet, avi_write_packet,
avi_write_trailer, avi_write_trailer,
.codec_tag= (const AVCodecTag* const []){codec_bmp_tags, codec_wav_tags, 0}, .codec_tag= (const AVCodecTag* const []){codec_bmp_tags, codec_wav_tags, 0},
.flags= AVFMT_VARIABLE_FPS,
}; };

@ -909,7 +909,7 @@ AVOutputFormat matroska_muxer = {
mkv_write_header, mkv_write_header,
mkv_write_packet, mkv_write_packet,
mkv_write_trailer, mkv_write_trailer,
.flags = AVFMT_GLOBALHEADER, .flags = AVFMT_GLOBALHEADER | AVFMT_VARIABLE_FPS,
.codec_tag = (const AVCodecTag* const []){codec_bmp_tags, codec_wav_tags, 0}, .codec_tag = (const AVCodecTag* const []){codec_bmp_tags, codec_wav_tags, 0},
.subtitle_codec = CODEC_ID_TEXT, .subtitle_codec = CODEC_ID_TEXT,
}; };

@ -1841,7 +1841,7 @@ AVOutputFormat mov_muxer = {
mov_write_header, mov_write_header,
mov_write_packet, mov_write_packet,
mov_write_trailer, mov_write_trailer,
.flags = AVFMT_GLOBALHEADER, .flags = AVFMT_GLOBALHEADER | AVFMT_VARIABLE_FPS,
.codec_tag = (const AVCodecTag* const []){codec_movvideo_tags, codec_movaudio_tags, 0}, .codec_tag = (const AVCodecTag* const []){codec_movvideo_tags, codec_movaudio_tags, 0},
}; };
#endif #endif
@ -1873,7 +1873,7 @@ AVOutputFormat mp4_muxer = {
mov_write_header, mov_write_header,
mov_write_packet, mov_write_packet,
mov_write_trailer, mov_write_trailer,
.flags = AVFMT_GLOBALHEADER, .flags = AVFMT_GLOBALHEADER | AVFMT_VARIABLE_FPS,
.codec_tag = (const AVCodecTag* const []){ff_mp4_obj_type, 0}, .codec_tag = (const AVCodecTag* const []){ff_mp4_obj_type, 0},
}; };
#endif #endif

@ -820,6 +820,6 @@ AVOutputFormat nut_muxer = {
write_header, write_header,
write_packet, write_packet,
write_trailer, write_trailer,
.flags = AVFMT_GLOBALHEADER, .flags = AVFMT_GLOBALHEADER | AVFMT_VARIABLE_FPS,
.codec_tag= (const AVCodecTag* const []){codec_bmp_tags, codec_wav_tags, ff_nut_subtitle_tags, 0}, .codec_tag= (const AVCodecTag* const []){codec_bmp_tags, codec_wav_tags, ff_nut_subtitle_tags, 0},
}; };

Loading…
Cancel
Save