+++ /dev/null
---- a/configure 2018-08-17 11:51:31.066805453 +0200
-+++ b/configure 2018-08-17 12:03:19.617555506 +0200
-@@ -3229,10 +3229,8 @@
- # protocols
- async_protocol_deps="threads"
- bluray_protocol_deps="libbluray"
--ffrtmpcrypt_protocol_conflict="librtmp_protocol"
- ffrtmpcrypt_protocol_deps_any="gcrypt gmp openssl"
- ffrtmpcrypt_protocol_select="tcp_protocol"
--ffrtmphttp_protocol_conflict="librtmp_protocol"
- ffrtmphttp_protocol_select="http_protocol"
- ftp_protocol_select="tcp_protocol"
- gopher_protocol_select="network"
-@@ -3255,20 +3253,18 @@
- mmst_protocol_select="network"
- libsrt_protocol_deps="libsrt"
- libsrt_protocol_select="network"
--rtmp_protocol_conflict="librtmp_protocol"
--rtmp_protocol_select="tcp_protocol"
--rtmp_protocol_suggest="zlib"
--rtmpe_protocol_select="ffrtmpcrypt_protocol"
--rtmpe_protocol_suggest="zlib"
--rtmps_protocol_conflict="librtmp_protocol"
--rtmps_protocol_select="tls_protocol"
--rtmps_protocol_suggest="zlib"
--rtmpt_protocol_select="ffrtmphttp_protocol"
--rtmpt_protocol_suggest="zlib"
--rtmpte_protocol_select="ffrtmpcrypt_protocol ffrtmphttp_protocol"
--rtmpte_protocol_suggest="zlib"
--rtmpts_protocol_select="ffrtmphttp_protocol https_protocol"
--rtmpts_protocol_suggest="zlib"
-+ffrtmp_protocol_select="tcp_protocol"
-+ffrtmp_protocol_suggest="zlib"
-+ffrtmpe_protocol_select="ffrtmpcrypt_protocol"
-+ffrtmpe_protocol_suggest="zlib"
-+ffrtmps_protocol_select="tls_protocol"
-+ffrtmps_protocol_suggest="zlib"
-+ffrtmpt_protocol_select="ffrtmphttp_protocol"
-+ffrtmpt_protocol_suggest="zlib"
-+ffrtmpte_protocol_select="ffrtmpcrypt_protocol ffrtmphttp_protocol"
-+ffrtmpte_protocol_suggest="zlib"
-+ffrtmpts_protocol_select="ffrtmphttp_protocol https_protocol"
-+ffrtmpts_protocol_suggest="zlib"
- rtp_protocol_select="udp_protocol"
- schannel_conflict="openssl gnutls libtls"
- sctp_protocol_deps="struct_sctp_event_subscribe struct_msghdr_msg_flags"
---- a/libavformat/Makefile 2018-07-18 15:52:01.000000000 +0200
-+++ b/libavformat/Makefile 2018-08-17 12:06:16.348291303 +0200
-@@ -594,12 +594,12 @@
- OBJS-$(CONFIG_MMST_PROTOCOL) += mmst.o mms.o asf.o
- OBJS-$(CONFIG_PIPE_PROTOCOL) += file.o
- OBJS-$(CONFIG_PROMPEG_PROTOCOL) += prompeg.o
--OBJS-$(CONFIG_RTMP_PROTOCOL) += rtmpproto.o rtmpdigest.o rtmppkt.o
--OBJS-$(CONFIG_RTMPE_PROTOCOL) += rtmpproto.o rtmpdigest.o rtmppkt.o
--OBJS-$(CONFIG_RTMPS_PROTOCOL) += rtmpproto.o rtmpdigest.o rtmppkt.o
--OBJS-$(CONFIG_RTMPT_PROTOCOL) += rtmpproto.o rtmpdigest.o rtmppkt.o
--OBJS-$(CONFIG_RTMPTE_PROTOCOL) += rtmpproto.o rtmpdigest.o rtmppkt.o
--OBJS-$(CONFIG_RTMPTS_PROTOCOL) += rtmpproto.o rtmpdigest.o rtmppkt.o
-+OBJS-$(CONFIG_FFRTMP_PROTOCOL) += rtmpproto.o rtmpdigest.o rtmppkt.o
-+OBJS-$(CONFIG_FFRTMPE_PROTOCOL) += rtmpproto.o rtmpdigest.o rtmppkt.o
-+OBJS-$(CONFIG_FFRTMPS_PROTOCOL) += rtmpproto.o rtmpdigest.o rtmppkt.o
-+OBJS-$(CONFIG_FFRTMPT_PROTOCOL) += rtmpproto.o rtmpdigest.o rtmppkt.o
-+OBJS-$(CONFIG_FFRTMPTE_PROTOCOL) += rtmpproto.o rtmpdigest.o rtmppkt.o
-+OBJS-$(CONFIG_FFRTMPTS_PROTOCOL) += rtmpproto.o rtmpdigest.o rtmppkt.o
- OBJS-$(CONFIG_RTP_PROTOCOL) += rtpproto.o
- OBJS-$(CONFIG_SCTP_PROTOCOL) += sctp.o
- OBJS-$(CONFIG_SRTP_PROTOCOL) += srtpproto.o srtp.o
---- a/libavformat/protocols.c 2018-08-17 12:07:59.489872867 +0200
-+++ b/libavformat/protocols.c 2018-08-17 12:08:24.450255607 +0200
-@@ -44,12 +44,12 @@
- extern const URLProtocol ff_md5_protocol;
- extern const URLProtocol ff_pipe_protocol;
- extern const URLProtocol ff_prompeg_protocol;
--extern const URLProtocol ff_rtmp_protocol;
--extern const URLProtocol ff_rtmpe_protocol;
--extern const URLProtocol ff_rtmps_protocol;
--extern const URLProtocol ff_rtmpt_protocol;
--extern const URLProtocol ff_rtmpte_protocol;
--extern const URLProtocol ff_rtmpts_protocol;
-+extern const URLProtocol ff_ffrtmp_protocol;
-+extern const URLProtocol ff_ffrtmpe_protocol;
-+extern const URLProtocol ff_ffrtmps_protocol;
-+extern const URLProtocol ff_ffrtmpt_protocol;
-+extern const URLProtocol ff_ffrtmpte_protocol;
-+extern const URLProtocol ff_ffrtmpts_protocol;
- extern const URLProtocol ff_rtp_protocol;
- extern const URLProtocol ff_sctp_protocol;
- extern const URLProtocol ff_srtp_protocol;
---- a/libavformat/rtmpproto.c 2018-07-18 15:52:02.000000000 +0200
-+++ b/libavformat/rtmpproto.c 2018-08-17 12:11:43.844590847 +0200
-@@ -2592,7 +2592,7 @@
- static int rtmp_open(URLContext *s, const char *uri, int flags, AVDictionary **opts)
- {
- RTMPContext *rt = s->priv_data;
-- char proto[8], hostname[256], path[1024], auth[100], *fname;
-+ char *proto, tmpProto[10], hostname[256], path[1024], auth[100], *fname;
- char *old_app, *qmark, *n, fname_buffer[1024];
- uint8_t buf[2048];
- int port;
-@@ -2603,7 +2603,9 @@
-
- rt->is_input = !(flags & AVIO_FLAG_WRITE);
-
-- av_url_split(proto, sizeof(proto), auth, sizeof(auth),
-+ memset(tmpProto, 0, sizeof(tmpProto));
-+ proto = &tmpProto[2];
-+ av_url_split(tmpProto, sizeof(tmpProto), auth, sizeof(auth),
- hostname, sizeof(hostname), &port,
- path, sizeof(path), s->filename);
-
-@@ -3137,9 +3139,9 @@
- };
-
-
--RTMP_PROTOCOL(rtmp)
--RTMP_PROTOCOL(rtmpe)
--RTMP_PROTOCOL(rtmps)
--RTMP_PROTOCOL(rtmpt)
--RTMP_PROTOCOL(rtmpte)
--RTMP_PROTOCOL(rtmpts)
-+RTMP_PROTOCOL(ffrtmp)
-+RTMP_PROTOCOL(ffrtmpe)
-+RTMP_PROTOCOL(ffrtmps)
-+RTMP_PROTOCOL(ffrtmpt)
-+RTMP_PROTOCOL(ffrtmpte)
-+RTMP_PROTOCOL(ffrtmpts)
+++ /dev/null
-Taapat: disable log to fix freezing on edit list parsing intruduced in:
-http://git.videolan.org/gitweb.cgi/ffmpeg.git/?p=ffmpeg.git;a=commitdiff;h=ca6cae73db207f17a0d5507609de12842d8f0ca3
-
---- a/libavformat/mov.c
-+++ b/libavformat/mov.c
-@@ -3542,8 +3542,10 @@
-
- if (ctts_data_old && ctts_index_old < ctts_count_old) {
- curr_ctts = ctts_data_old[ctts_index_old].duration;
-+ /*
- av_log(mov->fc, AV_LOG_DEBUG, "stts: %"PRId64" ctts: %"PRId64", ctts_index: %"PRId64", ctts_count: %"PRId64"\n",
- curr_cts, curr_ctts, ctts_index_old, ctts_count_old);
-+ */
- curr_cts += curr_ctts;
- ctts_sample_old++;
- if (ctts_sample_old == ctts_data_old[ctts_index_old].count) {
+++ /dev/null
---- a/libavformat/hls.c 2018-08-17 13:06:01.428702126 +0200
-+++ b/libavformat/hls.c 2018-08-17 13:06:15.077944569 +0200
-@@ -2079,8 +2079,10 @@
- HLSContext *c = s->priv_data;
- int ret, i, minplaylist = -1;
-
-- recheck_discard_flags(s, c->first_packet);
-- c->first_packet = 0;
-+ if (c->first_packet) {
-+ recheck_discard_flags(s, 1);
-+ c->first_packet = 0;
-+ }
-
- for (i = 0; i < c->n_playlists; i++) {
- struct playlist *pls = c->playlists[i];
+++ /dev/null
-diff -uNr ffmpeg-3.4.2/libavformat/mpegts.c ffmpeg-3.4.2_fix_mpegts/libavformat/mpegts.c
---- ffmpeg-3.4.2/libavformat/mpegts.c 2018-02-12 01:29:06.000000000 +0100
-+++ ffmpeg-3.4.2_fix_mpegts/libavformat/mpegts.c 2018-02-14 19:36:28.175054407 +0100
-@@ -930,10 +930,12 @@
- pes->buffer = NULL;
- reset_pes_packet_state(pes);
-
-+ /*
- sd = av_packet_new_side_data(pkt, AV_PKT_DATA_MPEGTS_STREAM_ID, 1);
- if (!sd)
- return AVERROR(ENOMEM);
- *sd = pes->stream_id;
-+ */
-
- return 0;
- }
+++ /dev/null
---- a/libavformat/hls.c 2018-08-17 13:16:57.721007600 +0200
-+++ b/libavformat/hls.c 2018-08-17 13:33:57.530170057 +0200
-@@ -213,6 +213,8 @@
- int max_reload;
- int http_persistent;
- int http_multiple;
-+ char *key_uri_replace_old;
-+ char *key_uri_replace_new;
- AVIOContext *playlist_pb;
- } HLSContext;
-
-@@ -1196,8 +1198,16 @@
- AVDictionary *opts2 = NULL;
- char iv[33], key[33], url[MAX_URL_SIZE];
- if (strcmp(seg->key, pls->key_url)) {
-+ char *key_url = NULL;
- AVIOContext *pb = NULL;
-- if (open_url(pls->parent, &pb, seg->key, c->avio_opts, opts, NULL) == 0) {
-+ if (NULL != c->key_uri_replace_old && \
-+ NULL != c-> key_uri_replace_new && \
-+ '\0' != c->key_uri_replace_old[0]) {
-+ key_url = av_strireplace(seg->key, c->key_uri_replace_old, c->key_uri_replace_new);
-+ } else {
-+ key_url = seg->key;
-+ }
-+ if (open_url(pls->parent, &pb, key_url, c->avio_opts, opts, NULL) == 0) {
- ret = avio_read(pb, pls->key, sizeof(pls->key));
- if (ret != sizeof(pls->key)) {
- av_log(NULL, AV_LOG_ERROR, "Unable to read key file %s\n",
-@@ -1209,6 +1219,8 @@
- seg->key);
- }
- av_strlcpy(pls->key_url, seg->key, sizeof(pls->key_url));
-+ if (key_url != seg->key)
-+ av_free(key_url);
- }
- ff_data_to_hex(iv, seg->iv, sizeof(seg->iv), 0);
- ff_data_to_hex(key, pls->key, sizeof(pls->key), 0);
-@@ -2332,6 +2344,8 @@
- OFFSET(http_persistent), AV_OPT_TYPE_BOOL, {.i64 = 1}, 0, 1, FLAGS },
- {"http_multiple", "Use multiple HTTP connections for fetching segments",
- OFFSET(http_multiple), AV_OPT_TYPE_BOOL, {.i64 = -1}, -1, 1, FLAGS},
-+ { "key_uri_old", "allow to replace part of AES key uri - old", OFFSET(key_uri_replace_old), AV_OPT_TYPE_STRING, { .str = "" }, 0, 0, FLAGS },
-+ { "key_uri_new", "allow to replace part of AES key uri - new", OFFSET(key_uri_replace_new), AV_OPT_TYPE_STRING, { .str = "" }, 0, 0, FLAGS },
- {NULL}
- };
-
+++ /dev/null
-diff --git a/libavformat/avio.h b/libavformat/avio.h
-index 75912ce..56f0a4d 100644
---- a/libavformat/avio.h
-+++ b/libavformat/avio.h
-@@ -290,12 +290,6 @@ typedef struct AVIOContext {
- */
- int writeout_count;
-
-- /**
-- * Original buffer size
-- * used internally after probing and ensure seekback to reset the buffer size
-- * This field is internal to libavformat and access from outside is not allowed.
-- */
-- int orig_buffer_size;
-
- /**
- * Threshold to favor readahead over seek.
-diff --git a/libavformat/aviobuf.c b/libavformat/aviobuf.c
-index e752d0e..108f089 100644
---- a/libavformat/aviobuf.c
-+++ b/libavformat/aviobuf.c
-@@ -33,7 +33,7 @@
- #include "url.h"
- #include <stdarg.h>
-
--#define IO_BUFFER_SIZE 32768
-+#define IO_BUFFER_SIZE 262144
-
- /**
- * Do seeks within this distance ahead of the current buffer by skipping
-@@ -90,7 +90,6 @@ int ffio_init_context(AVIOContext *s,
- memset(s, 0, sizeof(AVIOContext));
-
- s->buffer = buffer;
-- s->orig_buffer_size =
- s->buffer_size = buffer_size;
- s->buf_ptr = buffer;
- s->buf_ptr_max = buffer;
-@@ -570,16 +569,16 @@ static void fill_buffer(AVIOContext *s)
- }
-
- /* make buffer smaller in case it ended up large after probing */
-- if (s->read_packet && s->orig_buffer_size && s->buffer_size > s->orig_buffer_size) {
-+ if (s->read_packet && s->buffer_size > max_buffer_size) {
- if (dst == s->buffer && s->buf_ptr != dst) {
-- int ret = ffio_set_buf_size(s, s->orig_buffer_size);
-+ int ret = ffio_set_buf_size(s, max_buffer_size);
- if (ret < 0)
- av_log(s, AV_LOG_WARNING, "Failed to decrease buffer size\n");
-
- s->checksum_ptr = dst = s->buffer;
- }
-- av_assert0(len >= s->orig_buffer_size);
-- len = s->orig_buffer_size;
-+ av_assert0(len >= max_buffer_size);
-+ len = max_buffer_size;
- }
-
- len = read_packet_wrapper(s, dst, len);
-@@ -1087,7 +1086,6 @@ int ffio_set_buf_size(AVIOContext *s, int buf_size)
-
- av_free(s->buffer);
- s->buffer = buffer;
-- s->orig_buffer_size =
- s->buffer_size = buf_size;
- s->buf_ptr = s->buf_ptr_max = buffer;
- url_resetbuf(s, s->write_flag ? AVIO_FLAG_WRITE : AVIO_FLAG_READ);
-diff --git a/libavformat/utils.c b/libavformat/utils.c
-index c25eab4..02ce5e2 100644
---- a/libavformat/utils.c
-+++ b/libavformat/utils.c
-@@ -138,6 +138,25 @@ FF_ENABLE_DEPRECATION_WARNINGS
- #endif
- #endif
-
-+void *av_fast_realloc(void *ptr, unsigned int *size, size_t min_size)
-+{
-+ if (min_size < *size)
-+ return ptr;
-+
-+ min_size = FFMAX(17 * min_size / 16 + 32, min_size);
-+
-+ ptr = av_realloc(ptr, min_size);
-+ /* we could set this to the unmodified min_size but this is safer
-+ * if the user lost the ptr and uses NULL now
-+ */
-+ if (!ptr)
-+ min_size = 0;
-+
-+ *size = min_size;
-+
-+ return ptr;
-+}
-+
- int64_t av_stream_get_end_pts(const AVStream *st)
- {
- if (st->internal->priv_pts) {
+++ /dev/null
---- a/libavcodec/mdct_template.c
-+++ b/libavcodec/mdct_template.c
-@@ -102,7 +102,7 @@ av_cold int ff_mdct_init(FFTContext *s, int nbits, int inverse, double scale)
- * @param output N/2 samples
- * @param input N/2 samples
- */
--void ff_imdct_half_c(FFTContext *s, FFTSample *output, const FFTSample *input)
-+void __attribute__((optimize(0))) ff_imdct_half_c(FFTContext *s, FFTSample *output, const FFTSample *input)
- {
- int k, n8, n4, n2, n, j;
- const uint16_t *revtab = s->revtab;
-@@ -110,7 +110,6 @@ void ff_imdct_half_c(FFTContext *s, FFTSample *output, const FFTSample *input)
- const FFTSample *tsin = s->tsin;
- const FFTSample *in1, *in2;
- FFTComplex *z = (FFTComplex *)output;
--
- n = 1 << s->mdct_bits;
- n2 = n >> 1;
- n4 = n >> 2;
---- a/libavcodec/aacps.c 2016-01-16 14:08:47.122752224 +0200
-+++ b/libavcodec/aacps.c 2016-01-16 14:15:59.300895278 +0200
-@@ -659,7 +659,7 @@
- par[ 1] = AAC_HALF_SUM(par[ 0], par[ 1]);
- }
-
--static void decorrelation(PSContext *ps, INTFLOAT (*out)[32][2], const INTFLOAT (*s)[32][2], int is34)
-+static void __attribute__((optimize(0))) decorrelation(PSContext *ps, INTFLOAT (*out)[32][2], const INTFLOAT (*s)[32][2], int is34)
- {
- LOCAL_ALIGNED_16(INTFLOAT, power, [34], [PS_QMF_TIME_SLOTS]);
- LOCAL_ALIGNED_16(INTFLOAT, transient_gain, [34], [PS_QMF_TIME_SLOTS]);
---- a/libavcodec/fft_template.c
-+++ b/libavcodec/fft_template.c
-@@ -536,7 +536,7 @@
- pass(z,FFT_NAME(ff_cos_##n),n4/2);\
- }
-
--static void fft4(FFTComplex *z)
-+static void __attribute__((optimize(0))) fft4(FFTComplex *z)
- {
- FFTDouble t1, t2, t3, t4, t5, t6, t7, t8;
-
-@@ -550,7 +550,7 @@
- BF(z[2].im, z[0].im, t2, t5);
- }
-
--static void fft8(FFTComplex *z)
-+static void __attribute__((optimize(0))) fft8(FFTComplex *z)
- {
- FFTDouble t1, t2, t3, t4, t5, t6;
-
---- a/libavcodec/aacdec_template.c 2018-02-16 09:57:05.180695169 +0100
-+++ b/libavcodec/aacdec_template.c 2018-02-16 09:56:13.430147406 +0100
-@@ -2483,7 +2483,7 @@
- * @param decode 1 if tool is used normally, 0 if tool is used in LTP.
- * @param coef spectral coefficients
- */
--static void apply_tns(INTFLOAT coef_param[1024], TemporalNoiseShaping *tns,
-+static __attribute__((optimize(0))) void apply_tns(INTFLOAT coef_param[1024], TemporalNoiseShaping *tns,
- IndividualChannelStream *ics, int decode)
- {
- const int mmm = FFMIN(ics->tns_max_bands, ics->max_sfb);
+++ /dev/null
---- a/configure 2018-08-17 11:51:31.066805453 +0200
-+++ b/configure 2018-08-17 12:03:19.617555506 +0200
-@@ -3251,10 +3251,8 @@
- # protocols
- async_protocol_deps="threads"
- bluray_protocol_deps="libbluray"
--ffrtmpcrypt_protocol_conflict="librtmp_protocol"
- ffrtmpcrypt_protocol_deps_any="gcrypt gmp openssl"
- ffrtmpcrypt_protocol_select="tcp_protocol"
--ffrtmphttp_protocol_conflict="librtmp_protocol"
- ffrtmphttp_protocol_select="http_protocol"
- ftp_protocol_select="tcp_protocol"
- gopher_protocol_select="network"
-@@ -3277,20 +3275,18 @@
- mmst_protocol_select="network"
- libsrt_protocol_deps="libsrt"
- libsrt_protocol_select="network"
--rtmp_protocol_conflict="librtmp_protocol"
--rtmp_protocol_select="tcp_protocol"
--rtmp_protocol_suggest="zlib"
--rtmpe_protocol_select="ffrtmpcrypt_protocol"
--rtmpe_protocol_suggest="zlib"
--rtmps_protocol_conflict="librtmp_protocol"
--rtmps_protocol_select="tls_protocol"
--rtmps_protocol_suggest="zlib"
--rtmpt_protocol_select="ffrtmphttp_protocol"
--rtmpt_protocol_suggest="zlib"
--rtmpte_protocol_select="ffrtmpcrypt_protocol ffrtmphttp_protocol"
--rtmpte_protocol_suggest="zlib"
--rtmpts_protocol_select="ffrtmphttp_protocol https_protocol"
--rtmpts_protocol_suggest="zlib"
-+ffrtmp_protocol_select="tcp_protocol"
-+ffrtmp_protocol_suggest="zlib"
-+ffrtmpe_protocol_select="ffrtmpcrypt_protocol"
-+ffrtmpe_protocol_suggest="zlib"
-+ffrtmps_protocol_select="tls_protocol"
-+ffrtmps_protocol_suggest="zlib"
-+ffrtmpt_protocol_select="ffrtmphttp_protocol"
-+ffrtmpt_protocol_suggest="zlib"
-+ffrtmpte_protocol_select="ffrtmpcrypt_protocol ffrtmphttp_protocol"
-+ffrtmpte_protocol_suggest="zlib"
-+ffrtmpts_protocol_select="ffrtmphttp_protocol https_protocol"
-+ffrtmpts_protocol_suggest="zlib"
- rtp_protocol_select="udp_protocol"
- schannel_conflict="openssl gnutls libtls"
- sctp_protocol_deps="struct_sctp_event_subscribe struct_msghdr_msg_flags"
---- a/libavformat/Makefile 2018-07-18 15:52:01.000000000 +0200
-+++ b/libavformat/Makefile 2018-08-17 12:06:16.348291303 +0200
-@@ -594,12 +594,12 @@
- OBJS-$(CONFIG_MMST_PROTOCOL) += mmst.o mms.o asf.o
- OBJS-$(CONFIG_PIPE_PROTOCOL) += file.o
- OBJS-$(CONFIG_PROMPEG_PROTOCOL) += prompeg.o
--OBJS-$(CONFIG_RTMP_PROTOCOL) += rtmpproto.o rtmpdigest.o rtmppkt.o
--OBJS-$(CONFIG_RTMPE_PROTOCOL) += rtmpproto.o rtmpdigest.o rtmppkt.o
--OBJS-$(CONFIG_RTMPS_PROTOCOL) += rtmpproto.o rtmpdigest.o rtmppkt.o
--OBJS-$(CONFIG_RTMPT_PROTOCOL) += rtmpproto.o rtmpdigest.o rtmppkt.o
--OBJS-$(CONFIG_RTMPTE_PROTOCOL) += rtmpproto.o rtmpdigest.o rtmppkt.o
--OBJS-$(CONFIG_RTMPTS_PROTOCOL) += rtmpproto.o rtmpdigest.o rtmppkt.o
-+OBJS-$(CONFIG_FFRTMP_PROTOCOL) += rtmpproto.o rtmpdigest.o rtmppkt.o
-+OBJS-$(CONFIG_FFRTMPE_PROTOCOL) += rtmpproto.o rtmpdigest.o rtmppkt.o
-+OBJS-$(CONFIG_FFRTMPS_PROTOCOL) += rtmpproto.o rtmpdigest.o rtmppkt.o
-+OBJS-$(CONFIG_FFRTMPT_PROTOCOL) += rtmpproto.o rtmpdigest.o rtmppkt.o
-+OBJS-$(CONFIG_FFRTMPTE_PROTOCOL) += rtmpproto.o rtmpdigest.o rtmppkt.o
-+OBJS-$(CONFIG_FFRTMPTS_PROTOCOL) += rtmpproto.o rtmpdigest.o rtmppkt.o
- OBJS-$(CONFIG_RTP_PROTOCOL) += rtpproto.o
- OBJS-$(CONFIG_SCTP_PROTOCOL) += sctp.o
- OBJS-$(CONFIG_SRTP_PROTOCOL) += srtpproto.o srtp.o
---- a/libavformat/protocols.c 2018-08-17 12:07:59.489872867 +0200
-+++ b/libavformat/protocols.c 2018-08-17 12:08:24.450255607 +0200
-@@ -44,12 +44,12 @@
- extern const URLProtocol ff_md5_protocol;
- extern const URLProtocol ff_pipe_protocol;
- extern const URLProtocol ff_prompeg_protocol;
--extern const URLProtocol ff_rtmp_protocol;
--extern const URLProtocol ff_rtmpe_protocol;
--extern const URLProtocol ff_rtmps_protocol;
--extern const URLProtocol ff_rtmpt_protocol;
--extern const URLProtocol ff_rtmpte_protocol;
--extern const URLProtocol ff_rtmpts_protocol;
-+extern const URLProtocol ff_ffrtmp_protocol;
-+extern const URLProtocol ff_ffrtmpe_protocol;
-+extern const URLProtocol ff_ffrtmps_protocol;
-+extern const URLProtocol ff_ffrtmpt_protocol;
-+extern const URLProtocol ff_ffrtmpte_protocol;
-+extern const URLProtocol ff_ffrtmpts_protocol;
- extern const URLProtocol ff_rtp_protocol;
- extern const URLProtocol ff_sctp_protocol;
- extern const URLProtocol ff_srtp_protocol;
---- a/libavformat/rtmpproto.c 2018-07-18 15:52:02.000000000 +0200
-+++ b/libavformat/rtmpproto.c 2018-08-17 12:11:43.844590847 +0200
-@@ -2592,7 +2592,7 @@
- static int rtmp_open(URLContext *s, const char *uri, int flags, AVDictionary **opts)
- {
- RTMPContext *rt = s->priv_data;
-- char proto[8], hostname[256], path[1024], auth[100], *fname;
-+ char *proto, tmpProto[10], hostname[256], path[1024], auth[100], *fname;
- char *old_app, *qmark, *n, fname_buffer[1024];
- uint8_t buf[2048];
- int port;
-@@ -2603,7 +2603,9 @@
-
- rt->is_input = !(flags & AVIO_FLAG_WRITE);
-
-- av_url_split(proto, sizeof(proto), auth, sizeof(auth),
-+ memset(tmpProto, 0, sizeof(tmpProto));
-+ proto = &tmpProto[2];
-+ av_url_split(tmpProto, sizeof(tmpProto), auth, sizeof(auth),
- hostname, sizeof(hostname), &port,
- path, sizeof(path), s->filename);
-
-@@ -3137,9 +3139,9 @@
- };
-
-
--RTMP_PROTOCOL(rtmp)
--RTMP_PROTOCOL(rtmpe)
--RTMP_PROTOCOL(rtmps)
--RTMP_PROTOCOL(rtmpt)
--RTMP_PROTOCOL(rtmpte)
--RTMP_PROTOCOL(rtmpts)
-+RTMP_PROTOCOL(ffrtmp)
-+RTMP_PROTOCOL(ffrtmpe)
-+RTMP_PROTOCOL(ffrtmps)
-+RTMP_PROTOCOL(ffrtmpt)
-+RTMP_PROTOCOL(ffrtmpte)
-+RTMP_PROTOCOL(ffrtmpts)
+++ /dev/null
-Taapat: disable log to fix freezing on edit list parsing intruduced in:
-http://git.videolan.org/gitweb.cgi/ffmpeg.git/?p=ffmpeg.git;a=commitdiff;h=ca6cae73db207f17a0d5507609de12842d8f0ca3
-
---- a/libavformat/mov.c
-+++ b/libavformat/mov.c
-@@ -3543,8 +3543,10 @@
-
- if (ctts_data_old && ctts_index_old < ctts_count_old) {
- curr_ctts = ctts_data_old[ctts_index_old].duration;
-+ /*
- av_log(mov->fc, AV_LOG_DEBUG, "stts: %"PRId64" ctts: %"PRId64", ctts_index: %"PRId64", ctts_count: %"PRId64"\n",
- curr_cts, curr_ctts, ctts_index_old, ctts_count_old);
-+ */
- curr_cts += curr_ctts;
- ctts_sample_old++;
- if (ctts_sample_old == ctts_data_old[ctts_index_old].count) {
+++ /dev/null
---- a/libavformat/hls.c 2018-08-17 13:06:01.428702126 +0200
-+++ b/libavformat/hls.c 2018-08-17 13:06:15.077944569 +0200
-@@ -2079,8 +2079,10 @@
- HLSContext *c = s->priv_data;
- int ret, i, minplaylist = -1;
-
-- recheck_discard_flags(s, c->first_packet);
-- c->first_packet = 0;
-+ if (c->first_packet) {
-+ recheck_discard_flags(s, 1);
-+ c->first_packet = 0;
-+ }
-
- for (i = 0; i < c->n_playlists; i++) {
- struct playlist *pls = c->playlists[i];
+++ /dev/null
---- a/libavformat/mpegts.c 2018-02-12 01:29:06.000000000 +0100
-+++ b/libavformat/mpegts.c 2018-02-14 19:36:28.175054407 +0100
-@@ -930,10 +930,12 @@
- pes->buffer = NULL;
- reset_pes_packet_state(pes);
-
-+ /*
- sd = av_packet_new_side_data(pkt, AV_PKT_DATA_MPEGTS_STREAM_ID, 1);
- if (!sd)
- return AVERROR(ENOMEM);
- *sd = pes->stream_id;
-+ */
-
- return 0;
- }
+++ /dev/null
---- a/libavformat/hls.c 2018-08-17 13:16:57.721007600 +0200
-+++ b/libavformat/hls.c 2018-08-17 13:33:57.530170057 +0200
-@@ -213,6 +213,8 @@
- int max_reload;
- int http_persistent;
- int http_multiple;
-+ char *key_uri_replace_old;
-+ char *key_uri_replace_new;
- AVIOContext *playlist_pb;
- } HLSContext;
-
-@@ -1196,8 +1198,16 @@
- AVDictionary *opts2 = NULL;
- char iv[33], key[33], url[MAX_URL_SIZE];
- if (strcmp(seg->key, pls->key_url)) {
-+ char *key_url = NULL;
- AVIOContext *pb = NULL;
-- if (open_url(pls->parent, &pb, seg->key, c->avio_opts, opts, NULL) == 0) {
-+ if (NULL != c->key_uri_replace_old && \
-+ NULL != c-> key_uri_replace_new && \
-+ '\0' != c->key_uri_replace_old[0]) {
-+ key_url = av_strireplace(seg->key, c->key_uri_replace_old, c->key_uri_replace_new);
-+ } else {
-+ key_url = seg->key;
-+ }
-+ if (open_url(pls->parent, &pb, key_url, c->avio_opts, opts, NULL) == 0) {
- ret = avio_read(pb, pls->key, sizeof(pls->key));
- if (ret != sizeof(pls->key)) {
- av_log(NULL, AV_LOG_ERROR, "Unable to read key file %s\n",
-@@ -1209,6 +1219,8 @@
- seg->key);
- }
- av_strlcpy(pls->key_url, seg->key, sizeof(pls->key_url));
-+ if (key_url != seg->key)
-+ av_free(key_url);
- }
- ff_data_to_hex(iv, seg->iv, sizeof(seg->iv), 0);
- ff_data_to_hex(key, pls->key, sizeof(pls->key), 0);
-@@ -2332,6 +2344,8 @@
- OFFSET(http_persistent), AV_OPT_TYPE_BOOL, {.i64 = 1}, 0, 1, FLAGS },
- {"http_multiple", "Use multiple HTTP connections for fetching segments",
- OFFSET(http_multiple), AV_OPT_TYPE_BOOL, {.i64 = -1}, -1, 1, FLAGS},
-+ { "key_uri_old", "allow to replace part of AES key uri - old", OFFSET(key_uri_replace_old), AV_OPT_TYPE_STRING, { .str = "" }, 0, 0, FLAGS },
-+ { "key_uri_new", "allow to replace part of AES key uri - new", OFFSET(key_uri_replace_new), AV_OPT_TYPE_STRING, { .str = "" }, 0, 0, FLAGS },
- {NULL}
- };
-
+++ /dev/null
-From 90aa7aea0baa100719456e6a5b6e6682a5401aa0 Mon Sep 17 00:00:00 2001
-From: Markus Volk <f_l_k@t-online.de>
-Date: Sat, 14 Oct 2017 17:39:14 +0200
-
----
- libavformat/avio.h | 6 ------
- libavformat/aviobuf.c | 12 +++++-------
- libavformat/utils.c | 19 +++++++++++++++++++
- 3 files changed, 24 insertions(+), 13 deletions(-)
-
-diff --git a/libavformat/avio.h b/libavformat/avio.h
-index 75912ce..56f0a4d 100644
---- a/libavformat/avio.h
-+++ b/libavformat/avio.h
-@@ -290,12 +290,6 @@ typedef struct AVIOContext {
- */
- int writeout_count;
-
-- /**
-- * Original buffer size
-- * used internally after probing and ensure seekback to reset the buffer size
-- * This field is internal to libavformat and access from outside is not allowed.
-- */
-- int orig_buffer_size;
-
- /**
- * Threshold to favor readahead over seek.
-diff --git a/libavformat/aviobuf.c b/libavformat/aviobuf.c
-index e752d0e..108f089 100644
---- a/libavformat/aviobuf.c
-+++ b/libavformat/aviobuf.c
-@@ -33,7 +33,7 @@
- #include "url.h"
- #include <stdarg.h>
-
--#define IO_BUFFER_SIZE 32768
-+#define IO_BUFFER_SIZE 262144
-
- /**
- * Do seeks within this distance ahead of the current buffer by skipping
-@@ -90,7 +90,6 @@ int ffio_init_context(AVIOContext *s,
- memset(s, 0, sizeof(AVIOContext));
-
- s->buffer = buffer;
-- s->orig_buffer_size =
- s->buffer_size = buffer_size;
- s->buf_ptr = buffer;
- s->buf_ptr_max = buffer;
-@@ -570,16 +569,16 @@ static void fill_buffer(AVIOContext *s)
- }
-
- /* make buffer smaller in case it ended up large after probing */
-- if (s->read_packet && s->orig_buffer_size && s->buffer_size > s->orig_buffer_size) {
-+ if (s->read_packet && s->buffer_size > max_buffer_size) {
- if (dst == s->buffer && s->buf_ptr != dst) {
-- int ret = ffio_set_buf_size(s, s->orig_buffer_size);
-+ int ret = ffio_set_buf_size(s, max_buffer_size);
- if (ret < 0)
- av_log(s, AV_LOG_WARNING, "Failed to decrease buffer size\n");
-
- s->checksum_ptr = dst = s->buffer;
- }
-- av_assert0(len >= s->orig_buffer_size);
-- len = s->orig_buffer_size;
-+ av_assert0(len >= max_buffer_size);
-+ len = max_buffer_size;
- }
-
- len = read_packet_wrapper(s, dst, len);
-@@ -1087,7 +1086,6 @@ int ffio_set_buf_size(AVIOContext *s, int buf_size)
-
- av_free(s->buffer);
- s->buffer = buffer;
-- s->orig_buffer_size =
- s->buffer_size = buf_size;
- s->buf_ptr = s->buf_ptr_max = buffer;
- url_resetbuf(s, s->write_flag ? AVIO_FLAG_WRITE : AVIO_FLAG_READ);
-diff --git a/libavformat/utils.c b/libavformat/utils.c
-index c25eab4..02ce5e2 100644
---- a/libavformat/utils.c
-+++ b/libavformat/utils.c
-@@ -138,6 +138,25 @@ FF_ENABLE_DEPRECATION_WARNINGS
- #endif
- #endif
-
-+void *av_fast_realloc(void *ptr, unsigned int *size, size_t min_size)
-+{
-+ if (min_size < *size)
-+ return ptr;
-+
-+ min_size = FFMAX(17 * min_size / 16 + 32, min_size);
-+
-+ ptr = av_realloc(ptr, min_size);
-+ /* we could set this to the unmodified min_size but this is safer
-+ * if the user lost the ptr and uses NULL now
-+ */
-+ if (!ptr)
-+ min_size = 0;
-+
-+ *size = min_size;
-+
-+ return ptr;
-+}
-+
- int64_t av_stream_get_end_pts(const AVStream *st)
- {
- if (st->internal->priv_pts) {
+++ /dev/null
---- a/libavcodec/aacdec_template.c
-+++ b/libavcodec/aacdec_template.c
-@@ -2483,7 +2483,7 @@
- * @param decode 1 if tool is used normally, 0 if tool is used in LTP.
- * @param coef spectral coefficients
- */
--static void apply_tns(INTFLOAT coef_param[1024], TemporalNoiseShaping *tns,
-+static __attribute__((optimize(0))) void apply_tns(INTFLOAT coef_param[1024], TemporalNoiseShaping *tns,
- IndividualChannelStream *ics, int decode)
- {
- const int mmm = FFMIN(ics->tns_max_bands, ics->max_sfb);
---- a/libavcodec/mdct_template.c
-+++ b/libavcodec/mdct_template.c
-@@ -102,7 +102,7 @@ av_cold int ff_mdct_init(FFTContext *s, int nbits, int inverse, double scale)
- * @param output N/2 samples
- * @param input N/2 samples
- */
--void ff_imdct_half_c(FFTContext *s, FFTSample *output, const FFTSample *input)
-+void __attribute__((optimize(0))) ff_imdct_half_c(FFTContext *s, FFTSample *output, const FFTSample *input)
- {
- int k, n8, n4, n2, n, j;
- const uint16_t *revtab = s->revtab;
---- a/libavcodec/aacps.c
-+++ b/libavcodec/aacps.c
-@@ -659,7 +659,7 @@
- par[ 1] = AAC_HALF_SUM(par[ 0], par[ 1]);
- }
-
--static void decorrelation(PSContext *ps, INTFLOAT (*out)[32][2], const INTFLOAT (*s)[32][2], int is34)
-+static void __attribute__((optimize(0))) decorrelation(PSContext *ps, INTFLOAT (*out)[32][2], const INTFLOAT (*s)[32][2], int is34)
- {
- LOCAL_ALIGNED_16(INTFLOAT, power, [34], [PS_QMF_TIME_SLOTS]);
- LOCAL_ALIGNED_16(INTFLOAT, transient_gain, [34], [PS_QMF_TIME_SLOTS]);
---- a/libavcodec/fft_template.c
-+++ b/libavcodec/fft_template.c
-@@ -536,7 +536,7 @@
- pass(z,FFT_NAME(ff_cos_##n),n4/2);\
- }
-
--static void fft4(FFTComplex *z)
-+static void __attribute__((optimize(0))) fft4(FFTComplex *z)
- {
- FFTDouble t1, t2, t3, t4, t5, t6, t7, t8;
-
-@@ -550,7 +550,7 @@
- BF(z[2].im, z[0].im, t2, t5);
- }
-
--static void fft8(FFTComplex *z)
-+static void __attribute__((optimize(0))) fft8(FFTComplex *z)
- {
- FFTDouble t1, t2, t3, t4, t5, t6;
-
+++ /dev/null
---- a/configure 2018-08-17 11:51:31.066805453 +0200
-+++ b/configure 2018-08-17 12:03:19.617555506 +0200
-@@ -3290,10 +3290,8 @@
- # protocols
- async_protocol_deps="threads"
- bluray_protocol_deps="libbluray"
--ffrtmpcrypt_protocol_conflict="librtmp_protocol"
- ffrtmpcrypt_protocol_deps_any="gcrypt gmp openssl mbedtls"
- ffrtmpcrypt_protocol_select="tcp_protocol"
--ffrtmphttp_protocol_conflict="librtmp_protocol"
- ffrtmphttp_protocol_select="http_protocol"
- ftp_protocol_select="tcp_protocol"
- gopher_protocol_select="network"
-@@ -3306,20 +3304,18 @@
- icecast_protocol_select="http_protocol"
- mmsh_protocol_select="http_protocol"
- mmst_protocol_select="network"
--rtmp_protocol_conflict="librtmp_protocol"
--rtmp_protocol_select="tcp_protocol"
--rtmp_protocol_suggest="zlib"
--rtmpe_protocol_select="ffrtmpcrypt_protocol"
--rtmpe_protocol_suggest="zlib"
--rtmps_protocol_conflict="librtmp_protocol"
--rtmps_protocol_select="tls_protocol"
--rtmps_protocol_suggest="zlib"
--rtmpt_protocol_select="ffrtmphttp_protocol"
--rtmpt_protocol_suggest="zlib"
--rtmpte_protocol_select="ffrtmpcrypt_protocol ffrtmphttp_protocol"
--rtmpte_protocol_suggest="zlib"
--rtmpts_protocol_select="ffrtmphttp_protocol https_protocol"
--rtmpts_protocol_suggest="zlib"
-+ffrtmp_protocol_select="tcp_protocol"
-+ffrtmp_protocol_suggest="zlib"
-+ffrtmpe_protocol_select="ffrtmpcrypt_protocol"
-+ffrtmpe_protocol_suggest="zlib"
-+ffrtmps_protocol_select="tls_protocol"
-+ffrtmps_protocol_suggest="zlib"
-+ffrtmpt_protocol_select="ffrtmphttp_protocol"
-+ffrtmpt_protocol_suggest="zlib"
-+ffrtmpte_protocol_select="ffrtmpcrypt_protocol ffrtmphttp_protocol"
-+ffrtmpte_protocol_suggest="zlib"
-+ffrtmpts_protocol_select="ffrtmphttp_protocol https_protocol"
-+ffrtmpts_protocol_suggest="zlib"
- rtp_protocol_select="udp_protocol"
- schannel_conflict="openssl gnutls libtls mbedtls"
- sctp_protocol_deps="struct_sctp_event_subscribe struct_msghdr_msg_flags"
---- a/libavformat/Makefile 2018-07-18 15:52:01.000000000 +0200
-+++ b/libavformat/Makefile 2018-08-17 12:06:16.348291303 +0200
-@@ -593,12 +593,12 @@
- OBJS-$(CONFIG_MMST_PROTOCOL) += mmst.o mms.o asf.o
- OBJS-$(CONFIG_PIPE_PROTOCOL) += file.o
- OBJS-$(CONFIG_PROMPEG_PROTOCOL) += prompeg.o
--OBJS-$(CONFIG_RTMP_PROTOCOL) += rtmpproto.o rtmpdigest.o rtmppkt.o
--OBJS-$(CONFIG_RTMPE_PROTOCOL) += rtmpproto.o rtmpdigest.o rtmppkt.o
--OBJS-$(CONFIG_RTMPS_PROTOCOL) += rtmpproto.o rtmpdigest.o rtmppkt.o
--OBJS-$(CONFIG_RTMPT_PROTOCOL) += rtmpproto.o rtmpdigest.o rtmppkt.o
--OBJS-$(CONFIG_RTMPTE_PROTOCOL) += rtmpproto.o rtmpdigest.o rtmppkt.o
--OBJS-$(CONFIG_RTMPTS_PROTOCOL) += rtmpproto.o rtmpdigest.o rtmppkt.o
-+OBJS-$(CONFIG_FFRTMP_PROTOCOL) += rtmpproto.o rtmpdigest.o rtmppkt.o
-+OBJS-$(CONFIG_FFRTMPE_PROTOCOL) += rtmpproto.o rtmpdigest.o rtmppkt.o
-+OBJS-$(CONFIG_FFRTMPS_PROTOCOL) += rtmpproto.o rtmpdigest.o rtmppkt.o
-+OBJS-$(CONFIG_FFRTMPT_PROTOCOL) += rtmpproto.o rtmpdigest.o rtmppkt.o
-+OBJS-$(CONFIG_FFRTMPTE_PROTOCOL) += rtmpproto.o rtmpdigest.o rtmppkt.o
-+OBJS-$(CONFIG_FFRTMPTS_PROTOCOL) += rtmpproto.o rtmpdigest.o rtmppkt.o
- OBJS-$(CONFIG_RTP_PROTOCOL) += rtpproto.o ip.o
- OBJS-$(CONFIG_SCTP_PROTOCOL) += sctp.o
- OBJS-$(CONFIG_SRTP_PROTOCOL) += srtpproto.o srtp.o
---- a/libavformat/protocols.c 2018-08-17 12:07:59.489872867 +0200
-+++ b/libavformat/protocols.c 2018-08-17 12:08:24.450255607 +0200
-@@ -44,12 +44,12 @@
- extern const URLProtocol ff_md5_protocol;
- extern const URLProtocol ff_pipe_protocol;
- extern const URLProtocol ff_prompeg_protocol;
--extern const URLProtocol ff_rtmp_protocol;
--extern const URLProtocol ff_rtmpe_protocol;
--extern const URLProtocol ff_rtmps_protocol;
--extern const URLProtocol ff_rtmpt_protocol;
--extern const URLProtocol ff_rtmpte_protocol;
--extern const URLProtocol ff_rtmpts_protocol;
-+extern const URLProtocol ff_ffrtmp_protocol;
-+extern const URLProtocol ff_ffrtmpe_protocol;
-+extern const URLProtocol ff_ffrtmps_protocol;
-+extern const URLProtocol ff_ffrtmpt_protocol;
-+extern const URLProtocol ff_ffrtmpte_protocol;
-+extern const URLProtocol ff_ffrtmpts_protocol;
- extern const URLProtocol ff_rtp_protocol;
- extern const URLProtocol ff_sctp_protocol;
- extern const URLProtocol ff_srtp_protocol;
---- a/libavformat/rtmpproto.c 2018-07-18 15:52:02.000000000 +0200
-+++ b/libavformat/rtmpproto.c 2018-08-17 12:11:43.844590847 +0200
-@@ -2592,7 +2592,7 @@
- static int rtmp_open(URLContext *s, const char *uri, int flags, AVDictionary **opts)
- {
- RTMPContext *rt = s->priv_data;
-- char proto[8], hostname[256], path[1024], auth[100], *fname;
-+ char *proto, tmpProto[10], hostname[256], path[1024], auth[100], *fname;
- char *old_app, *qmark, *n, fname_buffer[1024];
- uint8_t buf[2048];
- int port;
-@@ -2603,7 +2603,9 @@
-
- rt->is_input = !(flags & AVIO_FLAG_WRITE);
-
-- av_url_split(proto, sizeof(proto), auth, sizeof(auth),
-+ memset(tmpProto, 0, sizeof(tmpProto));
-+ proto = &tmpProto[2];
-+ av_url_split(tmpProto, sizeof(tmpProto), auth, sizeof(auth),
- hostname, sizeof(hostname), &port,
- path, sizeof(path), s->filename);
-
-@@ -3137,9 +3139,9 @@
- };
-
-
--RTMP_PROTOCOL(rtmp)
--RTMP_PROTOCOL(rtmpe)
--RTMP_PROTOCOL(rtmps)
--RTMP_PROTOCOL(rtmpt)
--RTMP_PROTOCOL(rtmpte)
--RTMP_PROTOCOL(rtmpts)
-+RTMP_PROTOCOL(ffrtmp)
-+RTMP_PROTOCOL(ffrtmpe)
-+RTMP_PROTOCOL(ffrtmps)
-+RTMP_PROTOCOL(ffrtmpt)
-+RTMP_PROTOCOL(ffrtmpte)
-+RTMP_PROTOCOL(ffrtmpts)
+++ /dev/null
-Taapat: disable log to fix freezing on edit list parsing intruduced in:
-http://git.videolan.org/gitweb.cgi/ffmpeg.git/?p=ffmpeg.git;a=commitdiff;h=ca6cae73db207f17a0d5507609de12842d8f0ca3
-
---- a/libavformat/mov.c
-+++ b/libavformat/mov.c
-@@ -3548,8 +3548,10 @@
-
- if (ctts_data_old && ctts_index_old < ctts_count_old) {
- curr_ctts = ctts_data_old[ctts_index_old].duration;
-+ /*
- av_log(mov->fc, AV_LOG_DEBUG, "stts: %"PRId64" ctts: %"PRId64", ctts_index: %"PRId64", ctts_count: %"PRId64"\n",
- curr_cts, curr_ctts, ctts_index_old, ctts_count_old);
-+ */
- curr_cts += curr_ctts;
- ctts_sample_old++;
- if (ctts_sample_old == ctts_data_old[ctts_index_old].count) {
+++ /dev/null
---- a/libavformat/hls.c 2018-08-17 13:06:01.428702126 +0200
-+++ b/libavformat/hls.c 2018-08-17 13:06:15.077944569 +0200
-@@ -2062,8 +2062,10 @@
- HLSContext *c = s->priv_data;
- int ret, i, minplaylist = -1;
-
-- recheck_discard_flags(s, c->first_packet);
-- c->first_packet = 0;
-+ if (c->first_packet) {
-+ recheck_discard_flags(s, 1);
-+ c->first_packet = 0;
-+ }
-
- for (i = 0; i < c->n_playlists; i++) {
- struct playlist *pls = c->playlists[i];
+++ /dev/null
---- a/libavformat/mpegts.c 2018-02-12 01:29:06.000000000 +0100
-+++ b/libavformat/mpegts.c 2018-02-14 19:36:28.175054407 +0100
-@@ -948,10 +948,12 @@
- pes->buffer = NULL;
- reset_pes_packet_state(pes);
-
-+ /*
- sd = av_packet_new_side_data(pkt, AV_PKT_DATA_MPEGTS_STREAM_ID, 1);
- if (!sd)
- return AVERROR(ENOMEM);
- *sd = pes->stream_id;
-+ */
-
- return 0;
- }
+++ /dev/null
---- a/libavformat/hls.c 2018-08-17 13:16:57.721007600 +0200
-+++ b/libavformat/hls.c 2018-08-17 13:33:57.530170057 +0200
-@@ -208,6 +208,8 @@
- int max_reload;
- int http_persistent;
- int http_multiple;
-+ char *key_uri_replace_old;
-+ char *key_uri_replace_new;
- AVIOContext *playlist_pb;
- } HLSContext;
-
-@@ -1198,8 +1200,16 @@
- } else if (seg->key_type == KEY_AES_128) {
- char iv[33], key[33], url[MAX_URL_SIZE];
- if (strcmp(seg->key, pls->key_url)) {
-+ char *key_url = NULL;
- AVIOContext *pb = NULL;
-- if (open_url(pls->parent, &pb, seg->key, c->avio_opts, opts, NULL) == 0) {
-+ if (NULL != c->key_uri_replace_old && \
-+ NULL != c-> key_uri_replace_new && \
-+ '\0' != c->key_uri_replace_old[0]) {
-+ key_url = av_strireplace(seg->key, c->key_uri_replace_old, c->key_uri_replace_new);
-+ } else {
-+ key_url = seg->key;
-+ }
-+ if (open_url(pls->parent, &pb, key_url, c->avio_opts, opts, NULL) == 0) {
- ret = avio_read(pb, pls->key, sizeof(pls->key));
- if (ret != sizeof(pls->key)) {
- av_log(NULL, AV_LOG_ERROR, "Unable to read key file %s\n",
-@@ -1211,6 +1221,8 @@
- seg->key);
- }
- av_strlcpy(pls->key_url, seg->key, sizeof(pls->key_url));
-+ if (key_url != seg->key)
-+ av_free(key_url);
- }
- ff_data_to_hex(iv, seg->iv, sizeof(seg->iv), 0);
- ff_data_to_hex(key, pls->key, sizeof(pls->key), 0);
-@@ -2315,6 +2327,8 @@
- OFFSET(http_persistent), AV_OPT_TYPE_BOOL, {.i64 = 1}, 0, 1, FLAGS },
- {"http_multiple", "Use multiple HTTP connections for fetching segments",
- OFFSET(http_multiple), AV_OPT_TYPE_BOOL, {.i64 = -1}, -1, 1, FLAGS},
-+ { "key_uri_old", "allow to replace part of AES key uri - old", OFFSET(key_uri_replace_old), AV_OPT_TYPE_STRING, { .str = "" }, 0, 0, FLAGS },
-+ { "key_uri_new", "allow to replace part of AES key uri - new", OFFSET(key_uri_replace_new), AV_OPT_TYPE_STRING, { .str = "" }, 0, 0, FLAGS },
- {NULL}
- };
-
+++ /dev/null
-From 90aa7aea0baa100719456e6a5b6e6682a5401aa0 Mon Sep 17 00:00:00 2001
-From: Markus Volk <f_l_k@t-online.de>
-Date: Sat, 14 Oct 2017 17:39:14 +0200
-
----
- libavformat/avio.h | 6 ------
- libavformat/aviobuf.c | 12 +++++-------
- libavformat/utils.c | 19 +++++++++++++++++++
- 3 files changed, 24 insertions(+), 13 deletions(-)
-
-diff --git a/libavformat/avio.h b/libavformat/avio.h
-index 75912ce..56f0a4d 100644
---- a/libavformat/avio.h
-+++ b/libavformat/avio.h
-@@ -290,12 +290,6 @@ typedef struct AVIOContext {
- */
- int writeout_count;
-
-- /**
-- * Original buffer size
-- * used internally after probing and ensure seekback to reset the buffer size
-- * This field is internal to libavformat and access from outside is not allowed.
-- */
-- int orig_buffer_size;
-
- /**
- * Threshold to favor readahead over seek.
-diff --git a/libavformat/aviobuf.c b/libavformat/aviobuf.c
-index e752d0e..108f089 100644
---- a/libavformat/aviobuf.c
-+++ b/libavformat/aviobuf.c
-@@ -33,7 +33,7 @@
- #include "url.h"
- #include <stdarg.h>
-
--#define IO_BUFFER_SIZE 32768
-+#define IO_BUFFER_SIZE 262144
-
- /**
- * Do seeks within this distance ahead of the current buffer by skipping
-@@ -90,7 +90,6 @@ int ffio_init_context(AVIOContext *s,
- memset(s, 0, sizeof(AVIOContext));
-
- s->buffer = buffer;
-- s->orig_buffer_size =
- s->buffer_size = buffer_size;
- s->buf_ptr = buffer;
- s->buf_ptr_max = buffer;
-@@ -570,16 +569,16 @@ static void fill_buffer(AVIOContext *s)
- }
-
- /* make buffer smaller in case it ended up large after probing */
-- if (s->read_packet && s->orig_buffer_size && s->buffer_size > s->orig_buffer_size) {
-+ if (s->read_packet && s->buffer_size > max_buffer_size) {
- if (dst == s->buffer && s->buf_ptr != dst) {
-- int ret = ffio_set_buf_size(s, s->orig_buffer_size);
-+ int ret = ffio_set_buf_size(s, max_buffer_size);
- if (ret < 0)
- av_log(s, AV_LOG_WARNING, "Failed to decrease buffer size\n");
-
- s->checksum_ptr = dst = s->buffer;
- }
-- av_assert0(len >= s->orig_buffer_size);
-- len = s->orig_buffer_size;
-+ av_assert0(len >= max_buffer_size);
-+ len = max_buffer_size;
- }
-
- len = read_packet_wrapper(s, dst, len);
-@@ -1087,7 +1086,6 @@ int ffio_set_buf_size(AVIOContext *s, int buf_size)
-
- av_free(s->buffer);
- s->buffer = buffer;
-- s->orig_buffer_size =
- s->buffer_size = buf_size;
- s->buf_ptr = s->buf_ptr_max = buffer;
- url_resetbuf(s, s->write_flag ? AVIO_FLAG_WRITE : AVIO_FLAG_READ);
-diff --git a/libavformat/utils.c b/libavformat/utils.c
-index c25eab4..02ce5e2 100644
---- a/libavformat/utils.c
-+++ b/libavformat/utils.c
-@@ -138,6 +138,25 @@ FF_ENABLE_DEPRECATION_WARNINGS
- #endif
- #endif
-
-+void *av_fast_realloc(void *ptr, unsigned int *size, size_t min_size)
-+{
-+ if (min_size < *size)
-+ return ptr;
-+
-+ min_size = FFMAX(17 * min_size / 16 + 32, min_size);
-+
-+ ptr = av_realloc(ptr, min_size);
-+ /* we could set this to the unmodified min_size but this is safer
-+ * if the user lost the ptr and uses NULL now
-+ */
-+ if (!ptr)
-+ min_size = 0;
-+
-+ *size = min_size;
-+
-+ return ptr;
-+}
-+
- int64_t av_stream_get_end_pts(const AVStream *st)
- {
- if (st->internal->priv_pts) {
+++ /dev/null
---- a/libavcodec/aacdec_template.c
-+++ b/libavcodec/aacdec_template.c
-@@ -2483,7 +2483,7 @@
- * @param decode 1 if tool is used normally, 0 if tool is used in LTP.
- * @param coef spectral coefficients
- */
--static void apply_tns(INTFLOAT coef_param[1024], TemporalNoiseShaping *tns,
-+static __attribute__((optimize(0))) void apply_tns(INTFLOAT coef_param[1024], TemporalNoiseShaping *tns,
- IndividualChannelStream *ics, int decode)
- {
- const int mmm = FFMIN(ics->tns_max_bands, ics->max_sfb);
---- a/libavcodec/mdct_template.c
-+++ b/libavcodec/mdct_template.c
-@@ -102,7 +102,7 @@ av_cold int ff_mdct_init(FFTContext *s, int nbits, int inverse, double scale)
- * @param output N/2 samples
- * @param input N/2 samples
- */
--void ff_imdct_half_c(FFTContext *s, FFTSample *output, const FFTSample *input)
-+void __attribute__((optimize(0))) ff_imdct_half_c(FFTContext *s, FFTSample *output, const FFTSample *input)
- {
- int k, n8, n4, n2, n, j;
- const uint16_t *revtab = s->revtab;
---- a/libavcodec/aacps.c
-+++ b/libavcodec/aacps.c
-@@ -659,7 +659,7 @@
- par[ 1] = AAC_HALF_SUM(par[ 0], par[ 1]);
- }
-
--static void decorrelation(PSContext *ps, INTFLOAT (*out)[32][2], const INTFLOAT (*s)[32][2], int is34)
-+static void __attribute__((optimize(0))) decorrelation(PSContext *ps, INTFLOAT (*out)[32][2], const INTFLOAT (*s)[32][2], int is34)
- {
- LOCAL_ALIGNED_16(INTFLOAT, power, [34], [PS_QMF_TIME_SLOTS]);
- LOCAL_ALIGNED_16(INTFLOAT, transient_gain, [34], [PS_QMF_TIME_SLOTS]);
---- a/libavcodec/fft_template.c
-+++ b/libavcodec/fft_template.c
-@@ -538,7 +538,7 @@
- pass(z,FFT_NAME(ff_cos_##n),n4/2);\
- }
-
--static void fft4(FFTComplex *z)
-+static void __attribute__((optimize(0))) fft4(FFTComplex *z)
- {
- FFTDouble t1, t2, t3, t4, t5, t6, t7, t8;
-
-@@ -552,7 +552,7 @@
- BF(z[2].im, z[0].im, t2, t5);
- }
-
--static void fft8(FFTComplex *z)
-+static void __attribute__((optimize(0))) fft8(FFTComplex *z)
- {
- FFTDouble t1, t2, t3, t4, t5, t6;
-