History

avformat/avformat: Deprecate AVFMT_ALLOW_FLUSH

It is of no value to the user, because every muxer can always be flushed with a NULL packet. As its documentation shows ("If not set, the muxer will not receive a NULL packet in the write_packet function") it is actually an internal flag that has been publically exposed because there was no internal flags field for output formats for a long time. But now there is and so use it by replacing the public flag with a private one.

Andreas Rheinhardt committed 3 years ago

Commit dd48e491 parent 0d5967715 files · +135 −5Browse files

Unified · Split

15 files
  1. doc/APIchanges +4 −0
  2. libavdevice/pulse_audio_enc.c +5 −0
  3. libavformat/avformat.h +4 −2
  4. libavformat/fifo.c +5 −0
  5. libavformat/fifo_test.c +5 −0
  6. libavformat/hlsenc.c +5 −0
  7. libavformat/matroskaenc.c +15 −0
  8. libavformat/movenc.c +45 −0
  9. libavformat/mpegtsenc.c +5 −0
  10. libavformat/mux.c +6 −0
  11. libavformat/mux.h +4 −2
  12. libavformat/oggenc.c +25 −0
  13. libavformat/tee.c +5 −0
  14. libavformat/version.h +1 −1
  15. libavformat/version_major.h +1 −0
doc/APIchanges+4−0
@@ -2,6 +2,10 @@ The last version increases of all libraries were on 2023-02-09 · 1 unmodified line
22
33 API changes, most recent first:
44
5+2023-10-03 - xxxxxxxxxx - lavf 60.14.100 - avformat.h
6+ Deprecate AVFMT_ALLOW_FLUSH without replacement. Users can always
7+ flush any muxer by sending a NULL packet.
8+
59 2023-09-28 - xxxxxxxxxx - lavu 58.27.100 - pixfmt.h
610 Add AV_PIX_FMT_GBRAP14BE, AV_PIX_FMT_GBRAP14LE pixel formats.
711
libavdevice/pulse_audio_enc.c+5−0
@@ -802,6 +802,11 @@ const FFOutputFormat ff_pulse_muxer = { · 801 unmodified lines
802802 .get_output_timestamp = pulse_get_output_timestamp,
803803 .get_device_list = pulse_get_device_list,
804804 .control_message = pulse_control_message,
805+#if FF_API_ALLOW_FLUSH
805806 .p.flags = AVFMT_NOFILE | AVFMT_ALLOW_FLUSH,
807+#else
808+ .p.flags = AVFMT_NOFILE,
809+#endif
806810 .p.priv_class = &pulse_muxer_class,
811+ .flags_internal = FF_FMT_ALLOW_FLUSH,
807812 };
libavformat/avformat.h+4−2
@@ -486,7 +486,9 @@ typedef struct AVProbeData { · 485 unmodified lines
486486 #define AVFMT_NOBINSEARCH 0x2000 /**< Format does not allow to fall back on binary search via read_timestamp */
487487 #define AVFMT_NOGENSEARCH 0x4000 /**< Format does not allow to fall back on generic search */
488488 #define AVFMT_NO_BYTE_SEEK 0x8000 /**< Format does not allow seeking by bytes */
489−#define AVFMT_ALLOW_FLUSH 0x10000 /**< Format allows flushing. If not set, the muxer will not receive a NULL packet in the write_packet function. */
489+#if FF_API_ALLOW_FLUSH
490+#define AVFMT_ALLOW_FLUSH 0x10000 /**< @deprecated: Just send a NULL packet if you want to flush a muxer. */
491+#endif
490492 #define AVFMT_TS_NONSTRICT 0x20000 /**< Format does not require strictly
491493 increasing timestamps, but they must
492494 still be monotonic */
@@ -522,7 +524,7 @@ typedef struct AVOutputFormat { · 29 unmodified lines
522524 /**
523525 * can use flags: AVFMT_NOFILE, AVFMT_NEEDNUMBER,
524526 * AVFMT_GLOBALHEADER, AVFMT_NOTIMESTAMPS, AVFMT_VARIABLE_FPS,
525− * AVFMT_NODIMENSIONS, AVFMT_NOSTREAMS, AVFMT_ALLOW_FLUSH,
527+ * AVFMT_NODIMENSIONS, AVFMT_NOSTREAMS,
526528 * AVFMT_TS_NONSTRICT, AVFMT_TS_NEGATIVE
527529 */
528530 int flags;
libavformat/fifo.c+5−0
@@ -715,11 +715,16 @@ const FFOutputFormat ff_fifo_muxer = { · 714 unmodified lines
715715 .p.name = "fifo",
716716 .p.long_name = NULL_IF_CONFIG_SMALL("FIFO queue pseudo-muxer"),
717717 .p.priv_class = &fifo_muxer_class,
718+#if FF_API_ALLOW_FLUSH
718719 .p.flags = AVFMT_NOFILE | AVFMT_ALLOW_FLUSH | AVFMT_TS_NEGATIVE,
720+#else
721+ .p.flags = AVFMT_NOFILE | AVFMT_TS_NEGATIVE,
722+#endif
719723 .priv_data_size = sizeof(FifoContext),
720724 .init = fifo_init,
721725 .write_header = fifo_write_header,
722726 .write_packet = fifo_write_packet,
723727 .write_trailer = fifo_write_trailer,
724728 .deinit = fifo_deinit,
729+ .flags_internal = FF_FMT_ALLOW_FLUSH,
725730 };
libavformat/fifo_test.c+5−0
@@ -147,6 +147,11 @@ const FFOutputFormat ff_fifo_test_muxer = { · 146 unmodified lines
147147 .write_trailer = failing_write_trailer,
148148 .deinit = failing_deinit,
149149 .p.priv_class = &failing_muxer_class,
150+#if FF_API_ALLOW_FLUSH
150151 .p.flags = AVFMT_NOFILE | AVFMT_ALLOW_FLUSH,
152+#else
153+ .p.flags = AVFMT_NOFILE,
154+#endif
155+ .flags_internal = FF_FMT_ALLOW_FLUSH,
151156 };
152157
libavformat/hlsenc.c+5−0
@@ -3184,8 +3184,13 @@ const FFOutputFormat ff_hls_muxer = { · 3183 unmodified lines
31843184 .p.audio_codec = AV_CODEC_ID_AAC,
31853185 .p.video_codec = AV_CODEC_ID_H264,
31863186 .p.subtitle_codec = AV_CODEC_ID_WEBVTT,
3187+#if FF_API_ALLOW_FLUSH
31873188 .p.flags = AVFMT_NOFILE | AVFMT_GLOBALHEADER | AVFMT_ALLOW_FLUSH | AVFMT_NODIMENSIONS,
3189+#else
3190+ .p.flags = AVFMT_NOFILE | AVFMT_GLOBALHEADER | AVFMT_NODIMENSIONS,
3191+#endif
31883192 .p.priv_class = &hls_class,
3193+ .flags_internal = FF_FMT_ALLOW_FLUSH,
31893194 .priv_data_size = sizeof(HLSContext),
31903195 .init = hls_init,
31913196 .write_header = hls_write_header,
libavformat/matroskaenc.c+15−0
@@ -3539,7 +3539,11 @@ const FFOutputFormat ff_matroska_muxer = { · 3538 unmodified lines
35393539 .write_packet = mkv_write_flush_packet,
35403540 .write_trailer = mkv_write_trailer,
35413541 .p.flags = AVFMT_GLOBALHEADER | AVFMT_VARIABLE_FPS |
3542+#if FF_API_ALLOW_FLUSH
35423543 AVFMT_TS_NONSTRICT | AVFMT_ALLOW_FLUSH,
3544+#else
3545+ AVFMT_TS_NONSTRICT,
3546+#endif
35433547 .p.codec_tag = (const AVCodecTag* const []){
35443548 ff_codec_bmp_tags, ff_codec_wav_tags,
35453549 additional_audio_tags, additional_subtitle_tags, 0
@@ -3548,6 +3552,7 @@ const FFOutputFormat ff_matroska_muxer = { · 2 unmodified lines
35483552 .query_codec = mkv_query_codec,
35493553 .check_bitstream = mkv_check_bitstream,
35503554 .p.priv_class = &matroska_webm_class,
3555+ .flags_internal = FF_FMT_ALLOW_FLUSH,
35513556 };
35523557 #endif
35533558
@@ -3578,8 +3583,13 @@ const FFOutputFormat ff_webm_muxer = { · 24 unmodified lines
35783583 .query_codec = webm_query_codec,
35793584 .check_bitstream = mkv_check_bitstream,
35803585 .p.flags = AVFMT_GLOBALHEADER | AVFMT_VARIABLE_FPS |
3586+#if FF_API_ALLOW_FLUSH
35813587 AVFMT_TS_NONSTRICT | AVFMT_ALLOW_FLUSH,
3588+#else
3589+ AVFMT_TS_NONSTRICT,
3590+#endif
35823591 .p.priv_class = &matroska_webm_class,
3592+ .flags_internal = FF_FMT_ALLOW_FLUSH,
35833593 };
35843594 #endif
35853595
@@ -3599,11 +3609,16 @@ const FFOutputFormat ff_matroska_audio_muxer = { · 13 unmodified lines
35993609 .write_packet = mkv_write_flush_packet,
36003610 .write_trailer = mkv_write_trailer,
36013611 .check_bitstream = mkv_check_bitstream,
3612+#if FF_API_ALLOW_FLUSH
36023613 .p.flags = AVFMT_GLOBALHEADER | AVFMT_TS_NONSTRICT |
36033614 AVFMT_ALLOW_FLUSH,
3615+#else
3616+ .p.flags = AVFMT_GLOBALHEADER | AVFMT_TS_NONSTRICT,
3617+#endif
36043618 .p.codec_tag = (const AVCodecTag* const []){
36053619 ff_codec_wav_tags, additional_audio_tags, 0
36063620 },
36073621 .p.priv_class = &matroska_webm_class,
3622+ .flags_internal = FF_FMT_ALLOW_FLUSH,
36083623 };
36093624 #endif
libavformat/movenc.c+45−0
@@ -7932,12 +7932,17 @@ const FFOutputFormat ff_mov_muxer = { · 7931 unmodified lines
79327932 .write_packet = mov_write_packet,
79337933 .write_trailer = mov_write_trailer,
79347934 .deinit = mov_free,
7935+#if FF_API_ALLOW_FLUSH
79357936 .p.flags = AVFMT_GLOBALHEADER | AVFMT_ALLOW_FLUSH | AVFMT_TS_NEGATIVE,
7937+#else
7938+ .p.flags = AVFMT_GLOBALHEADER | AVFMT_TS_NEGATIVE,
7939+#endif
79367940 .p.codec_tag = (const AVCodecTag* const []){
79377941 ff_codec_movvideo_tags, ff_codec_movaudio_tags, ff_codec_movsubtitle_tags, 0
79387942 },
79397943 .check_bitstream = mov_check_bitstream,
79407944 .p.priv_class = &mov_isobmff_muxer_class,
7945+ .flags_internal = FF_FMT_ALLOW_FLUSH,
79417946 };
79427947 #endif
79437948 #if CONFIG_TGP_MUXER
@@ -7953,10 +7958,15 @@ const FFOutputFormat ff_tgp_muxer = { · 9 unmodified lines
79537958 .write_packet = mov_write_packet,
79547959 .write_trailer = mov_write_trailer,
79557960 .deinit = mov_free,
7961+#if FF_API_ALLOW_FLUSH
79567962 .p.flags = AVFMT_GLOBALHEADER | AVFMT_ALLOW_FLUSH | AVFMT_TS_NEGATIVE,
7963+#else
7964+ .p.flags = AVFMT_GLOBALHEADER | AVFMT_TS_NEGATIVE,
7965+#endif
79577966 .p.codec_tag = codec_3gp_tags_list,
79587967 .check_bitstream = mov_check_bitstream,
79597968 .p.priv_class = &mov_isobmff_muxer_class,
7969+ .flags_internal = FF_FMT_ALLOW_FLUSH,
79607970 };
79617971 #endif
79627972 #if CONFIG_MP4_MUXER
@@ -7974,10 +7984,15 @@ const FFOutputFormat ff_mp4_muxer = { · 11 unmodified lines
79747984 .write_packet = mov_write_packet,
79757985 .write_trailer = mov_write_trailer,
79767986 .deinit = mov_free,
7987+#if FF_API_ALLOW_FLUSH
79777988 .p.flags = AVFMT_GLOBALHEADER | AVFMT_ALLOW_FLUSH | AVFMT_TS_NEGATIVE,
7989+#else
7990+ .p.flags = AVFMT_GLOBALHEADER | AVFMT_TS_NEGATIVE,
7991+#endif
79787992 .p.codec_tag = mp4_codec_tags_list,
79797993 .check_bitstream = mov_check_bitstream,
79807994 .p.priv_class = &mov_isobmff_muxer_class,
7995+ .flags_internal = FF_FMT_ALLOW_FLUSH,
79817996 };
79827997 #endif
79837998 #if CONFIG_PSP_MUXER
@@ -7994,10 +8009,15 @@ const FFOutputFormat ff_psp_muxer = { · 10 unmodified lines
79948009 .write_packet = mov_write_packet,
79958010 .write_trailer = mov_write_trailer,
79968011 .deinit = mov_free,
8012+#if FF_API_ALLOW_FLUSH
79978013 .p.flags = AVFMT_GLOBALHEADER | AVFMT_ALLOW_FLUSH | AVFMT_TS_NEGATIVE,
8014+#else
8015+ .p.flags = AVFMT_GLOBALHEADER | AVFMT_TS_NEGATIVE,
8016+#endif
79988017 .p.codec_tag = mp4_codec_tags_list,
79998018 .check_bitstream = mov_check_bitstream,
80008019 .p.priv_class = &mov_isobmff_muxer_class,
8020+ .flags_internal = FF_FMT_ALLOW_FLUSH,
80018021 };
80028022 #endif
80038023 #if CONFIG_TG2_MUXER
@@ -8013,10 +8033,15 @@ const FFOutputFormat ff_tg2_muxer = { · 9 unmodified lines
80138033 .write_packet = mov_write_packet,
80148034 .write_trailer = mov_write_trailer,
80158035 .deinit = mov_free,
8036+#if FF_API_ALLOW_FLUSH
80168037 .p.flags = AVFMT_GLOBALHEADER | AVFMT_ALLOW_FLUSH | AVFMT_TS_NEGATIVE,
8038+#else
8039+ .p.flags = AVFMT_GLOBALHEADER | AVFMT_TS_NEGATIVE,
8040+#endif
80178041 .p.codec_tag = codec_3gp_tags_list,
80188042 .check_bitstream = mov_check_bitstream,
80198043 .p.priv_class = &mov_isobmff_muxer_class,
8044+ .flags_internal = FF_FMT_ALLOW_FLUSH,
80208045 };
80218046 #endif
80228047 #if CONFIG_IPOD_MUXER
@@ -8033,10 +8058,15 @@ const FFOutputFormat ff_ipod_muxer = { · 10 unmodified lines
80338058 .write_packet = mov_write_packet,
80348059 .write_trailer = mov_write_trailer,
80358060 .deinit = mov_free,
8061+#if FF_API_ALLOW_FLUSH
80368062 .p.flags = AVFMT_GLOBALHEADER | AVFMT_ALLOW_FLUSH | AVFMT_TS_NEGATIVE,
8063+#else
8064+ .p.flags = AVFMT_GLOBALHEADER | AVFMT_TS_NEGATIVE,
8065+#endif
80378066 .p.codec_tag = (const AVCodecTag* const []){ codec_ipod_tags, 0 },
80388067 .check_bitstream = mov_check_bitstream,
80398068 .p.priv_class = &mov_isobmff_muxer_class,
8069+ .flags_internal = FF_FMT_ALLOW_FLUSH,
80408070 };
80418071 #endif
80428072 #if CONFIG_ISMV_MUXER
@@ -8053,11 +8083,16 @@ const FFOutputFormat ff_ismv_muxer = { · 10 unmodified lines
80538083 .write_packet = mov_write_packet,
80548084 .write_trailer = mov_write_trailer,
80558085 .deinit = mov_free,
8086+#if FF_API_ALLOW_FLUSH
80568087 .p.flags = AVFMT_GLOBALHEADER | AVFMT_ALLOW_FLUSH | AVFMT_TS_NEGATIVE,
8088+#else
8089+ .p.flags = AVFMT_GLOBALHEADER | AVFMT_TS_NEGATIVE,
8090+#endif
80578091 .p.codec_tag = (const AVCodecTag* const []){
80588092 codec_mp4_tags, codec_ism_tags, 0 },
80598093 .check_bitstream = mov_check_bitstream,
80608094 .p.priv_class = &mov_isobmff_muxer_class,
8095+ .flags_internal = FF_FMT_ALLOW_FLUSH,
80618096 };
80628097 #endif
80638098 #if CONFIG_F4V_MUXER
@@ -8074,10 +8109,15 @@ const FFOutputFormat ff_f4v_muxer = { · 10 unmodified lines
80748109 .write_packet = mov_write_packet,
80758110 .write_trailer = mov_write_trailer,
80768111 .deinit = mov_free,
8112+#if FF_API_ALLOW_FLUSH
80778113 .p.flags = AVFMT_GLOBALHEADER | AVFMT_ALLOW_FLUSH,
8114+#else
8115+ .p.flags = AVFMT_GLOBALHEADER,
8116+#endif
80788117 .p.codec_tag = (const AVCodecTag* const []){ codec_f4v_tags, 0 },
80798118 .check_bitstream = mov_check_bitstream,
80808119 .p.priv_class = &mov_isobmff_muxer_class,
8120+ .flags_internal = FF_FMT_ALLOW_FLUSH,
80818121 };
80828122 #endif
80838123 #if CONFIG_AVIF_MUXER
@@ -8093,8 +8133,13 @@ const FFOutputFormat ff_avif_muxer = { · 9 unmodified lines
80938133 .write_packet = mov_write_packet,
80948134 .write_trailer = avif_write_trailer,
80958135 .deinit = mov_free,
8136+#if FF_API_ALLOW_FLUSH
80968137 .p.flags = AVFMT_GLOBALHEADER | AVFMT_ALLOW_FLUSH,
8138+#else
8139+ .p.flags = AVFMT_GLOBALHEADER,
8140+#endif
80978141 .p.codec_tag = codec_avif_tags_list,
80988142 .p.priv_class = &mov_avif_muxer_class,
8143+ .flags_internal = FF_FMT_ALLOW_FLUSH,
80998144 };
81008145 #endif
libavformat/mpegtsenc.c+5−0
@@ -2361,6 +2361,11 @@ const FFOutputFormat ff_mpegts_muxer = { · 2360 unmodified lines
23612361 .write_trailer = mpegts_write_end,
23622362 .deinit = mpegts_deinit,
23632363 .check_bitstream = mpegts_check_bitstream,
2364+#if FF_API_ALLOW_FLUSH
23642365 .p.flags = AVFMT_ALLOW_FLUSH | AVFMT_VARIABLE_FPS | AVFMT_NODIMENSIONS,
2366+#else
2367+ .p.flags = AVFMT_VARIABLE_FPS | AVFMT_NODIMENSIONS,
2368+#endif
2369+ .flags_internal = FF_FMT_ALLOW_FLUSH,
23652370 .p.priv_class = &mpegts_muxer_class,
23662371 };
libavformat/mux.c+6−0
@@ -1206,7 +1206,13 @@ int av_write_frame(AVFormatContext *s, AVPacket *in) · 1205 unmodified lines
12061206 int ret;
12071207
12081208 if (!in) {
1209+#if FF_API_ALLOW_FLUSH || LIBAVFORMAT_VERSION_MAJOR >= 61
1210+ // Hint: The pulse audio output device has this set,
1211+ // so we can't switch the check to FF_FMT_ALLOW_FLUSH immediately.
12091212 if (s->oformat->flags & AVFMT_ALLOW_FLUSH) {
1213+#else
1214+ if (ffofmt(s->oformat)->flags_internal & FF_FMT_ALLOW_FLUSH) {
1215+#endif
12101216 ret = ffofmt(s->oformat)->write_packet(s, NULL);
12111217 flush_if_needed(s);
12121218 if (ret >= 0 && s->pb && s->pb->error < 0)
libavformat/mux.h+4−2
@@ -27,6 +27,8 @@ · 26 unmodified lines
2727
2828 struct AVDeviceInfoList;
2929
30+#define FF_FMT_ALLOW_FLUSH (1 << 1)
31+
3032 typedef struct FFOutputFormat {
3133 /**
3234 * The public AVOutputFormat. See avformat.h for it.
@@ -38,13 +40,13 @@ typedef struct FFOutputFormat { · 5 unmodified lines
3840 int priv_data_size;
3941
4042 /**
41− * Internal flags. See FF_FMT_FLAG_* in internal.h.
43+ * Internal flags. See FF_FMT_* in internal.h and mux.h.
4244 */
4345 int flags_internal;
4446
4547 int (*write_header)(AVFormatContext *);
4648 /**
47− * Write a packet. If AVFMT_ALLOW_FLUSH is set in flags,
49+ * Write a packet. If FF_FMT_ALLOW_FLUSH is set in flags_internal,
4850 * pkt can be NULL in order to flush data buffered in the muxer.
4951 * When flushing, return 0 if there still is more data to flush,
5052 * or 1 if everything was flushed and there is no more buffered
libavformat/oggenc.c+25−0
@@ -771,8 +771,13 @@ const FFOutputFormat ff_ogg_muxer = { · 770 unmodified lines
771771 .write_packet = ogg_write_packet,
772772 .write_trailer = ogg_write_trailer,
773773 .deinit = ogg_free,
774+#if FF_API_ALLOW_FLUSH
774775 .p.flags = AVFMT_TS_NEGATIVE | AVFMT_TS_NONSTRICT | AVFMT_ALLOW_FLUSH,
776+#else
777+ .p.flags = AVFMT_TS_NEGATIVE | AVFMT_TS_NONSTRICT,
778+#endif
775779 .p.priv_class = &ogg_muxer_class,
780+ .flags_internal = FF_FMT_ALLOW_FLUSH,
776781 };
777782 #endif
778783
@@ -789,8 +794,13 @@ const FFOutputFormat ff_oga_muxer = { · 10 unmodified lines
789794 .write_packet = ogg_write_packet,
790795 .write_trailer = ogg_write_trailer,
791796 .deinit = ogg_free,
797+#if FF_API_ALLOW_FLUSH
792798 .p.flags = AVFMT_TS_NEGATIVE | AVFMT_ALLOW_FLUSH,
799+#else
800+ .p.flags = AVFMT_TS_NEGATIVE,
801+#endif
793802 .p.priv_class = &ogg_muxer_class,
803+ .flags_internal = FF_FMT_ALLOW_FLUSH,
794804 };
795805 #endif
796806
@@ -810,8 +820,13 @@ const FFOutputFormat ff_ogv_muxer = { · 13 unmodified lines
810820 .write_packet = ogg_write_packet,
811821 .write_trailer = ogg_write_trailer,
812822 .deinit = ogg_free,
823+#if FF_API_ALLOW_FLUSH
813824 .p.flags = AVFMT_TS_NEGATIVE | AVFMT_TS_NONSTRICT | AVFMT_ALLOW_FLUSH,
825+#else
826+ .p.flags = AVFMT_TS_NEGATIVE | AVFMT_TS_NONSTRICT,
827+#endif
814828 .p.priv_class = &ogg_muxer_class,
829+ .flags_internal = FF_FMT_ALLOW_FLUSH,
815830 };
816831 #endif
817832
@@ -828,8 +843,13 @@ const FFOutputFormat ff_spx_muxer = { · 10 unmodified lines
828843 .write_packet = ogg_write_packet,
829844 .write_trailer = ogg_write_trailer,
830845 .deinit = ogg_free,
846+#if FF_API_ALLOW_FLUSH
831847 .p.flags = AVFMT_TS_NEGATIVE | AVFMT_ALLOW_FLUSH,
848+#else
849+ .p.flags = AVFMT_TS_NEGATIVE,
850+#endif
832851 .p.priv_class = &ogg_muxer_class,
852+ .flags_internal = FF_FMT_ALLOW_FLUSH,
833853 };
834854 #endif
835855
@@ -846,7 +866,12 @@ const FFOutputFormat ff_opus_muxer = { · 10 unmodified lines
846866 .write_packet = ogg_write_packet,
847867 .write_trailer = ogg_write_trailer,
848868 .deinit = ogg_free,
869+#if FF_API_ALLOW_FLUSH
849870 .p.flags = AVFMT_TS_NEGATIVE | AVFMT_ALLOW_FLUSH,
871+#else
872+ .p.flags = AVFMT_TS_NEGATIVE,
873+#endif
850874 .p.priv_class = &ogg_muxer_class,
875+ .flags_internal = FF_FMT_ALLOW_FLUSH,
851876 };
852877 #endif
libavformat/tee.c+5−0
@@ -614,5 +614,10 @@ const FFOutputFormat ff_tee_muxer = { · 613 unmodified lines
614614 .write_trailer = tee_write_trailer,
615615 .write_packet = tee_write_packet,
616616 .p.priv_class = &tee_muxer_class,
617+#if FF_API_ALLOW_FLUSH
617618 .p.flags = AVFMT_NOFILE | AVFMT_ALLOW_FLUSH | AVFMT_TS_NEGATIVE,
619+#else
620+ .p.flags = AVFMT_NOFILE | AVFMT_TS_NEGATIVE,
621+#endif
622+ .flags_internal = FF_FMT_ALLOW_FLUSH,
618623 };
libavformat/version.h+1−1
@@ -31,7 +31,7 @@ · 30 unmodified lines
3131
3232 #include "version_major.h"
3333
34−#define LIBAVFORMAT_VERSION_MINOR 13
34+#define LIBAVFORMAT_VERSION_MINOR 14
3535 #define LIBAVFORMAT_VERSION_MICRO 100
3636
3737 #define LIBAVFORMAT_VERSION_INT AV_VERSION_INT(LIBAVFORMAT_VERSION_MAJOR, \
libavformat/version_major.h+1−0
@@ -47,6 +47,7 @@ · 46 unmodified lines
4747 #define FF_API_AVFORMAT_IO_CLOSE (LIBAVFORMAT_VERSION_MAJOR < 61)
4848 #define FF_API_AVIO_WRITE_NONCONST (LIBAVFORMAT_VERSION_MAJOR < 61)
4949 #define FF_API_LAVF_SHORTEST (LIBAVFORMAT_VERSION_MAJOR < 61)
50+#define FF_API_ALLOW_FLUSH (LIBAVFORMAT_VERSION_MAJOR < 61)
5051
5152
5253 #define FF_API_R_FRAME_RATE 1

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t