From: Good Guy Date: Tue, 7 Dec 2021 22:47:19 +0000 (-0700) Subject: remove previous editions X-Git-Tag: 2021-12~7 X-Git-Url: http://git.cinelerra-gg.org/git/?p=goodguy%2Fcinelerra.git;a=commitdiff_plain;h=2fe67cfa464774dab67f31ec6a2b8a6775b17853 remove previous editions --- diff --git a/cinelerra-5.1/thirdparty/src/ffmpeg-4.3.patch0 b/cinelerra-5.1/thirdparty/src/ffmpeg-4.3.patch0 deleted file mode 100644 index a8e05fc5..00000000 --- a/cinelerra-5.1/thirdparty/src/ffmpeg-4.3.patch0 +++ /dev/null @@ -1,11 +0,0 @@ -diff -ruN a/fftools/cmdutils.c b/fftools/cmdutils.c ---- a/fftools/cmdutils.c 2020-06-15 12:54:23.000000000 -0600 -+++ b/fftools/cmdutils.c 2020-07-10 09:18:59.703677305 -0600 -@@ -1183,6 +1183,7 @@ - - void show_banner(int argc, char **argv, const OptionDef *options) - { -+ return; - int idx = locate_option(argc, argv, options, "version"); - if (hide_banner || idx) - return; diff --git a/cinelerra-5.1/thirdparty/src/ffmpeg-4.3.patch1 b/cinelerra-5.1/thirdparty/src/ffmpeg-4.3.patch1 deleted file mode 100644 index d2784664..00000000 --- a/cinelerra-5.1/thirdparty/src/ffmpeg-4.3.patch1 +++ /dev/null @@ -1,12 +0,0 @@ -diff -ru a/libavformat/bluray.c b/libavformat/bluray.c ---- a/libavformat/bluray.c 2019-07-08 11:45:25.000000000 -0600 -+++ b/libavformat/bluray.c 2019-08-08 17:20:07.011299703 -0600 -@@ -28,7 +28,7 @@ - #include "libavutil/opt.h" - - #define BLURAY_PROTO_PREFIX "bluray:" --#define MIN_PLAYLIST_LENGTH 180 /* 3 min */ -+#define MIN_PLAYLIST_LENGTH 0 - - typedef struct { - const AVClass *class; diff --git a/cinelerra-5.1/thirdparty/src/ffmpeg-4.3.patch2 b/cinelerra-5.1/thirdparty/src/ffmpeg-4.3.patch2 deleted file mode 100644 index d54c6d59..00000000 --- a/cinelerra-5.1/thirdparty/src/ffmpeg-4.3.patch2 +++ /dev/null @@ -1,364 +0,0 @@ -diff -u a/libavformat/mpegtsenc.c b/libavformat/mpegtsenc.c ---- a/libavformat/mpegtsenc.c 2020-06-15 12:54:24.000000000 -0600 -+++ b/libavformat/mpegtsenc.c 2020-10-15 12:16:07.300442476 -0600 -@@ -79,8 +79,10 @@ - int64_t sdt_period; /* SDT period in PCR time base */ - int64_t pat_period; /* PAT/PMT period in PCR time base */ - int nb_services; -- int64_t first_pcr; -- int64_t next_pcr; -+ int64_t pcr_pos, pcr; -+ int64_t first_pcr, next_pcr; -+ int64_t delay; -+ int pcr_stream_pid; - int mux_rate; ///< set to 1 when VBR - int pes_payload_size; - -@@ -239,7 +241,7 @@ - int data_st_warning; - - int64_t pcr_period; /* PCR period in PCR time base */ -- int64_t last_pcr; -+ int64_t pcr_timer; - - /* For Opus */ - int opus_queued_samples; -@@ -804,16 +806,16 @@ - - static int64_t get_pcr(const MpegTSWrite *ts, AVIOContext *pb) - { -- return av_rescale(avio_tell(pb) + 11, 8 * PCR_TIME_BASE, ts->mux_rate) + -- ts->first_pcr; -+ int64_t pos = avio_tell(pb) + 11; -+ return ts->pcr + (ts->mux_rate == 1 ? (pos - ts->pcr_pos) * 8 : -+ av_rescale(pos - ts->pcr_pos, 8 * PCR_TIME_BASE, ts->mux_rate)); - } - - static void write_packet(AVFormatContext *s, const uint8_t *packet) - { - MpegTSWrite *ts = s->priv_data; - if (ts->m2ts_mode) { -- int64_t pcr = get_pcr(s->priv_data, s->pb); -- uint32_t tp_extra_header = pcr % 0x3fffffff; -+ uint32_t tp_extra_header = get_pcr(ts, s->pb) % 0x3fffffff; - tp_extra_header = AV_RB32(&tp_extra_header); - avio_write(s->pb, (unsigned char *) &tp_extra_header, - sizeof(tp_extra_header)); -@@ -898,9 +900,6 @@ - else - ts_st->pcr_period = 1; - } -- -- // output a PCR as soon as possible -- ts_st->last_pcr = ts->first_pcr - ts_st->pcr_period; - } - - static void select_pcr_streams(AVFormatContext *s) -@@ -961,6 +960,7 @@ - - if (s->max_delay < 0) /* Not set by the caller */ - s->max_delay = 0; -+ ts->delay = av_rescale(s->max_delay, 90000, AV_TIME_BASE); - - // round up to a whole number of TS packets - ts->pes_payload_size = (ts->pes_payload_size + 14 + 183) / 184 * 184 - 14; -@@ -1012,7 +1012,9 @@ - /* MPEG pid values < 16 are reserved. Applications which set st->id in - * this range are assigned a calculated pid. */ - if (st->id < 16) { -- if (ts->m2ts_mode) { -+ if (ts->start_pid >= 0) -+ ts_st->pid = ts->start_pid + i; -+ else if (ts->m2ts_mode) { - switch (st->codecpar->codec_type) { - case AVMEDIA_TYPE_VIDEO: - ts_st->pid = ts->m2ts_video_pid++; -@@ -1039,9 +1041,9 @@ - av_log(s, AV_LOG_ERROR, "Cannot automatically assign PID for stream %d\n", st->index); - return AVERROR(EINVAL); - } -- } else { -- ts_st->pid = ts->start_pid + i; - } -+ else -+ ts_st->pid = START_PID + i; - } else { - ts_st->pid = st->id; - } -@@ -1109,8 +1111,12 @@ - - ts->last_pat_ts = AV_NOPTS_VALUE; - ts->last_sdt_ts = AV_NOPTS_VALUE; -- ts->pat_period = av_rescale(ts->pat_period_us, PCR_TIME_BASE, AV_TIME_BASE); -- ts->sdt_period = av_rescale(ts->sdt_period_us, PCR_TIME_BASE, AV_TIME_BASE); -+ ts->pat_period = ts->pat_period_us < 0 ? -1 : -+ av_rescale(ts->pat_period_us, PCR_TIME_BASE, AV_TIME_BASE); -+ ts->sdt_period = ts->sdt_period_us < 0 ? -1 : -+ av_rescale(ts->sdt_period_us, PCR_TIME_BASE, AV_TIME_BASE); -+ ts->pcr = 0; -+ ts->pcr_pos = 0; - - if (ts->mux_rate == 1) - av_log(s, AV_LOG_VERBOSE, "muxrate VBR, "); -@@ -1118,34 +1124,37 @@ - av_log(s, AV_LOG_VERBOSE, "muxrate %d, ", ts->mux_rate); - av_log(s, AV_LOG_VERBOSE, - "sdt every %"PRId64" ms, pat/pmt every %"PRId64" ms\n", -- av_rescale(ts->sdt_period, 1000, PCR_TIME_BASE), -- av_rescale(ts->pat_period, 1000, PCR_TIME_BASE)); -+ ts->sdt_period < 0 ? -1 : av_rescale(ts->sdt_period, 1000, PCR_TIME_BASE), -+ ts->pat_period < 0 ? -1 : av_rescale(ts->pat_period, 1000, PCR_TIME_BASE)); - - return 0; - } - - /* send SDT, PAT and PMT tables regularly */ --static void retransmit_si_info(AVFormatContext *s, int force_pat, int force_sdt, int64_t pcr) -+static void retransmit_si_info(AVFormatContext *s, int force_pat, int force_sdt) - { - MpegTSWrite *ts = s->priv_data; - int i; - -- if ((pcr != AV_NOPTS_VALUE && ts->last_sdt_ts == AV_NOPTS_VALUE) || -- (pcr != AV_NOPTS_VALUE && pcr - ts->last_sdt_ts >= ts->sdt_period) || -- force_sdt -- ) { -- if (pcr != AV_NOPTS_VALUE) -- ts->last_sdt_ts = FFMAX(pcr, ts->last_sdt_ts); -- mpegts_write_sdt(s); -- } -- if ((pcr != AV_NOPTS_VALUE && ts->last_pat_ts == AV_NOPTS_VALUE) || -- (pcr != AV_NOPTS_VALUE && pcr - ts->last_pat_ts >= ts->pat_period) || -- force_pat) { -- if (pcr != AV_NOPTS_VALUE) -- ts->last_pat_ts = FFMAX(pcr, ts->last_pat_ts); -- mpegts_write_pat(s); -- for (i = 0; i < ts->nb_services; i++) -- mpegts_write_pmt(s, ts->services[i]); -+ if (ts->sdt_period >= 0) { -+ int64_t pcr = get_pcr(ts, s->pb); -+ if (ts->last_sdt_ts == AV_NOPTS_VALUE || pcr >= ts->last_sdt_ts + ts->sdt_period) -+ force_sdt = 1; -+ if (force_sdt) { -+ ts->last_sdt_ts = pcr; -+ mpegts_write_sdt(s); -+ } -+ } -+ if (ts->pat_period >= 0) { -+ int64_t pcr = get_pcr(ts, s->pb); -+ if (ts->last_pat_ts == AV_NOPTS_VALUE || pcr >= ts->last_pat_ts + ts->pat_period) -+ force_pat = 1; -+ if (force_pat) { -+ ts->last_pat_ts = pcr; -+ mpegts_write_pat(s); -+ for (i = 0; i < ts->nb_services; i++) -+ mpegts_write_pmt(s, ts->services[i]); -+ } - } - } - -@@ -1182,25 +1191,29 @@ - static void mpegts_insert_pcr_only(AVFormatContext *s, AVStream *st) - { - MpegTSWrite *ts = s->priv_data; -- MpegTSWriteStream *ts_st = st->priv_data; -+ int64_t pcr = get_pcr(ts, s->pb); -+ MpegTSWriteStream *ts_st = st ? st->priv_data : 0; -+ uint32_t pcr_pid = ts_st ? ts_st->pid : ts->pcr_stream_pid; - uint8_t *q; - uint8_t buf[TS_PACKET_SIZE]; - - q = buf; - *q++ = 0x47; -- *q++ = ts_st->pid >> 8; -- *q++ = ts_st->pid; -- *q++ = 0x20 | ts_st->cc; /* Adaptation only */ -+ *q++ = pcr_pid >> 8; -+ *q++ = pcr_pid; -+ uint32_t flags = 0x20; /* Adaptation only */ - /* Continuity Count field does not increment (see 13818-1 section 2.4.3.3) */ -+ if(ts_st) flags |= ts_st->cc; -+ *q++ = flags; - *q++ = TS_PACKET_SIZE - 5; /* Adaptation Field Length */ - *q++ = 0x10; /* Adaptation flags: PCR present */ -- if (ts_st->discontinuity) { -+ if (ts_st && ts_st->discontinuity) { - q[-1] |= 0x80; - ts_st->discontinuity = 0; - } - - /* PCR coded into 6 bytes */ -- q += write_pcr_bits(q, get_pcr(ts, s->pb)); -+ q += write_pcr_bits(q, pcr); - - /* stuffing bytes */ - memset(q, 0xFF, TS_PACKET_SIZE - (q - buf)); -@@ -1268,9 +1281,9 @@ - uint8_t *q; - int val, is_start, len, header_len, write_pcr, is_dvb_subtitle, is_dvb_teletext, flags; - int afc_len, stuffing_len; -- int64_t delay = av_rescale(s->max_delay, 90000, AV_TIME_BASE); - int force_pat = st->codecpar->codec_type == AVMEDIA_TYPE_VIDEO && key && !ts_st->prev_payload_key; - int force_sdt = 0; -+ int64_t pcr; - - av_assert0(ts_st->payload != buf || st->codecpar->codec_type != AVMEDIA_TYPE_VIDEO); - if (ts->flags & MPEGTS_FLAG_PAT_PMT_AT_FRAMES && st->codecpar->codec_type == AVMEDIA_TYPE_VIDEO) { -@@ -1285,20 +1298,19 @@ - - is_start = 1; - while (payload_size > 0) { -- int64_t pcr = AV_NOPTS_VALUE; -- if (ts->mux_rate > 1) -- pcr = get_pcr(ts, s->pb); -- else if (dts != AV_NOPTS_VALUE) -- pcr = (dts - delay) * 300; -- -- retransmit_si_info(s, force_pat, force_sdt, pcr); -- force_pat = 0; -- force_sdt = 0; -+ // add 11, pcr references the last byte of program clock reference base -+ ts->pcr_pos = avio_tell(s->pb) + 11; -+ pcr = ts->pcr = ts->mux_rate != 1 ? -+ av_rescale(ts->pcr_pos, 8 * PCR_TIME_BASE, ts->mux_rate) : -+ (dts == AV_NOPTS_VALUE ? 0 : (dts - ts->delay) * 300); -+ if (force_pat || force_sdt) { -+ retransmit_si_info(s, force_pat, force_sdt); -+ force_pat = force_sdt = 0; -+ } - - write_pcr = 0; - if (ts->mux_rate > 1) { - /* Send PCR packets for all PCR streams if needed */ -- pcr = get_pcr(ts, s->pb); - if (pcr >= ts->next_pcr) { - int64_t next_pcr = INT64_MAX; - for (int i = 0; i < s->nb_streams; i++) { -@@ -1308,36 +1320,43 @@ - AVStream *st2 = s->streams[st2_index]; - MpegTSWriteStream *ts_st2 = st2->priv_data; - if (ts_st2->pcr_period) { -- if (pcr - ts_st2->last_pcr >= ts_st2->pcr_period) { -- ts_st2->last_pcr = FFMAX(pcr - ts_st2->pcr_period, ts_st2->last_pcr + ts_st2->pcr_period); -+ if (pcr >= ts_st2->pcr_timer) { -+ ts_st2->pcr_timer = pcr + ts_st2->pcr_period; - if (st2 != st) { - mpegts_insert_pcr_only(s, st2); -- pcr = get_pcr(ts, s->pb); - } else { - write_pcr = 1; - } - } -- next_pcr = FFMIN(next_pcr, ts_st2->last_pcr + ts_st2->pcr_period); -+ next_pcr = FFMIN(next_pcr, ts_st2->pcr_timer); - } - } - ts->next_pcr = next_pcr; - } -- if (dts != AV_NOPTS_VALUE && (dts - pcr / 300) > delay) { -- /* pcr insert gets priority over null packet insert */ -- if (write_pcr) -- mpegts_insert_pcr_only(s, st); -- else -- mpegts_insert_null_packet(s); -- /* recalculate write_pcr and possibly retransmit si_info */ -- continue; -- } -- } else if (ts_st->pcr_period && pcr != AV_NOPTS_VALUE) { -- if (pcr - ts_st->last_pcr >= ts_st->pcr_period && is_start) { -- ts_st->last_pcr = FFMAX(pcr - ts_st->pcr_period, ts_st->last_pcr + ts_st->pcr_period); -+ } -+ else if (ts_st->pcr_period) { -+ if (pcr >= ts_st->pcr_timer) { -+ ts_st->pcr_timer = pcr + ts_st->pcr_period; - write_pcr = 1; - } - } - -+ if (write_pcr && ts->pcr_stream_pid >= 0) { -+ mpegts_insert_pcr_only(s, 0); -+ continue; -+ } -+ -+ if (ts->mux_rate > 1 && dts != AV_NOPTS_VALUE && -+ (dts - pcr / 300) > ts->delay) { -+ /* pcr insert gets priority over null packet insert */ -+ if (write_pcr) -+ mpegts_insert_pcr_only(s, st); -+ else -+ mpegts_insert_null_packet(s); -+ /* recalculate write_pcr and possibly retransimit si_info */ -+ continue; -+ } -+ - /* prepare packet header */ - q = buf; - *q++ = 0x47; -@@ -1365,7 +1384,6 @@ - if (write_pcr) { - set_af_flag(buf, 0x10); - q = get_ts_payload_start(buf); -- // add 11, pcr references the last byte of program clock reference base - if (dts != AV_NOPTS_VALUE && dts < pcr / 300) - av_log(s, AV_LOG_WARNING, "dts < pcr, TS is invalid\n"); - extend_af(buf, write_pcr_bits(q, pcr)); -@@ -1643,8 +1661,8 @@ - uint8_t *data = NULL; - MpegTSWrite *ts = s->priv_data; - MpegTSWriteStream *ts_st = st->priv_data; -- const int64_t delay = av_rescale(s->max_delay, 90000, AV_TIME_BASE) * 2; -- const int64_t max_audio_delay = av_rescale(s->max_delay, 90000, AV_TIME_BASE) / 2; -+ const int64_t delay_ticks2 = ts->delay * 2; -+ const int64_t max_audio_delay = ts->delay / 2; - int64_t dts = pkt->dts, pts = pkt->pts; - int opus_samples = 0; - int side_data_size; -@@ -1659,9 +1677,9 @@ - - if (ts->copyts < 1) { - if (pts != AV_NOPTS_VALUE) -- pts += delay; -+ pts += delay_ticks2; - if (dts != AV_NOPTS_VALUE) -- dts += delay; -+ dts += delay_ticks2; - } - - if (ts_st->first_pts_check && pts == AV_NOPTS_VALUE) { -@@ -1998,8 +2016,10 @@ - 0, AV_OPT_TYPE_CONST, { .i64 = MPEGTS_SERVICE_TYPE_HEVC_DIGITAL_HDTV }, 0x01, 0xff, ENC, "mpegts_service_type" }, - { "mpegts_pmt_start_pid", "Set the first pid of the PMT.", - OFFSET(pmt_start_pid), AV_OPT_TYPE_INT, { .i64 = 0x1000 }, FIRST_OTHER_PID, LAST_OTHER_PID, ENC }, -+ { "mpegts_pcr_stream_pid", "create seperate PCR stream on this pid.", -+ offsetof(MpegTSWrite, pcr_stream_pid), AV_OPT_TYPE_INT, { .i64 = -1 }, -1, 0x1f00, ENC }, - { "mpegts_start_pid", "Set the first pid.", -- OFFSET(start_pid), AV_OPT_TYPE_INT, { .i64 = 0x0100 }, FIRST_OTHER_PID, LAST_OTHER_PID, ENC }, -+ OFFSET(start_pid), AV_OPT_TYPE_INT, { .i64 = -1 }, -1, LAST_OTHER_PID, ENC }, - { "mpegts_m2ts_mode", "Enable m2ts mode.", OFFSET(m2ts_mode), AV_OPT_TYPE_BOOL, { .i64 = -1 }, -1, 1, ENC }, - { "muxrate", NULL, OFFSET(mux_rate), AV_OPT_TYPE_INT, { .i64 = 1 }, 0, INT_MAX, ENC }, - { "pes_payload_size", "Minimum PES packet payload in bytes", -@@ -2021,10 +2041,10 @@ - OFFSET(omit_video_pes_length), AV_OPT_TYPE_BOOL, { .i64 = 1 }, 0, 1, ENC }, - { "pcr_period", "PCR retransmission time in milliseconds", - OFFSET(pcr_period_ms), AV_OPT_TYPE_INT, { .i64 = -1 }, -1, INT_MAX, ENC }, -- { "pat_period", "PAT/PMT retransmission time limit in seconds", -+ { "pat_period", "PAT/PMT retransmission time limit in ms, -1 no pat", - OFFSET(pat_period_us), AV_OPT_TYPE_DURATION, { .i64 = PAT_RETRANS_TIME * 1000LL }, 0, INT64_MAX, ENC }, -- { "sdt_period", "SDT retransmission time limit in seconds", -- OFFSET(sdt_period_us), AV_OPT_TYPE_DURATION, { .i64 = SDT_RETRANS_TIME * 1000LL }, 0, INT64_MAX, ENC }, -+ { "sdt_period", "SDT retransmission time limit in ms, -1 no sdt", -+ OFFSET(sdt_period_us), AV_OPT_TYPE_INT64, { .i64 = SDT_RETRANS_TIME * 1000LL }, -1, INT64_MAX, ENC }, - { NULL }, - }; - -diff -u a/libavformat/mpegts.h b/libavformat/mpegts.h ---- a/libavformat/mpegts.h 2020-10-15 12:32:22.417967898 -0600 -+++ b/libavformat/mpegts.h 2020-10-15 12:32:46.463055553 -0600 -@@ -64,6 +64,7 @@ - /* PID from 0x1FFC to 0x1FFE may be assigned as needed to PMT, elementary - * streams and other data tables */ - #define NULL_PID 0x1FFF /* Null packet (used for fixed bandwidth padding) */ -+#define START_PID 0x0400 - - /* m2ts pids */ - #define M2TS_PMT_PID 0x0100 diff --git a/cinelerra-5.1/thirdparty/src/ffmpeg-4.3.patch3 b/cinelerra-5.1/thirdparty/src/ffmpeg-4.3.patch3 deleted file mode 100644 index e8689455..00000000 --- a/cinelerra-5.1/thirdparty/src/ffmpeg-4.3.patch3 +++ /dev/null @@ -1,70 +0,0 @@ -diff -ruN a/libavformat/avformat.h b/libavformat/avformat.h ---- a/libavformat/avformat.h 2020-06-15 12:54:24.000000000 -0600 -+++ b/libavformat/avformat.h 2020-07-10 09:22:38.176711618 -0600 -@@ -480,6 +480,9 @@ - The user or muxer can override this through - AVFormatContext.avoid_negative_ts - */ -+#define AVFMT_SEEK_NOSTREAMS 0x80000 /**< Stream index ignored by seek, -+ or some streams fail to seek -+ */ - - #define AVFMT_SEEK_TO_PTS 0x4000000 /**< Seeking is based on PTS */ - -@@ -650,7 +653,8 @@ - /** - * Can use flags: AVFMT_NOFILE, AVFMT_NEEDNUMBER, AVFMT_SHOW_IDS, - * AVFMT_NOTIMESTAMPS, AVFMT_GENERIC_INDEX, AVFMT_TS_DISCONT, AVFMT_NOBINSEARCH, -- * AVFMT_NOGENSEARCH, AVFMT_NO_BYTE_SEEK, AVFMT_SEEK_TO_PTS. -+ * AVFMT_NOGENSEARCH, AVFMT_NO_BYTE_SEEK, AVFMT_SEEK_TO_PTS, -+ * AVFMT_SEEK_NOSTREAMS - */ - int flags; - -diff -ruN a/libavformat/dv.c b/libavformat/dv.c ---- a/libavformat/dv.c 2020-06-15 12:54:24.000000000 -0600 -+++ b/libavformat/dv.c 2020-07-10 09:22:38.177711618 -0600 -@@ -642,6 +642,7 @@ - AVInputFormat ff_dv_demuxer = { - .name = "dv", - .long_name = NULL_IF_CONFIG_SMALL("DV (Digital Video)"), -+ .flags = AVFMT_SEEK_NOSTREAMS, - .priv_data_size = sizeof(RawDVContext), - .read_probe = dv_probe, - .read_header = dv_read_header, -diff -ruN a/libavformat/matroskadec.c b/libavformat/matroskadec.c ---- a/libavformat/matroskadec.c 2020-06-15 12:54:24.000000000 -0600 -+++ b/libavformat/matroskadec.c 2020-07-10 09:22:38.178711618 -0600 -@@ -4251,6 +4251,7 @@ - AVInputFormat ff_matroska_demuxer = { - .name = "matroska,webm", - .long_name = NULL_IF_CONFIG_SMALL("Matroska / WebM"), -+ .flags = AVFMT_SEEK_NOSTREAMS, - .extensions = "mkv,mk3d,mka,mks", - .priv_data_size = sizeof(MatroskaDemuxContext), - .read_probe = matroska_probe, -@@ -4264,6 +4265,7 @@ - AVInputFormat ff_webm_dash_manifest_demuxer = { - .name = "webm_dash_manifest", - .long_name = NULL_IF_CONFIG_SMALL("WebM DASH Manifest"), -+ .flags = AVFMT_SEEK_NOSTREAMS, - .priv_data_size = sizeof(MatroskaDemuxContext), - .read_header = webm_dash_manifest_read_header, - .read_packet = webm_dash_manifest_read_packet, -diff -ruN a/libavformat/utils.c b/libavformat/utils.c ---- a/libavformat/utils.c 2020-06-15 12:54:24.000000000 -0600 -+++ b/libavformat/utils.c 2020-07-10 09:22:38.179711619 -0600 -@@ -2486,6 +2486,13 @@ - return seek_frame_byte(s, stream_index, timestamp, flags); - } - -+ if (stream_index != -1 && (s->iformat->flags & AVFMT_SEEK_NOSTREAMS)) { -+ timestamp = av_rescale_q(timestamp, -+ s->streams[stream_index]->time_base, -+ AV_TIME_BASE_Q); -+ stream_index = -1; -+ } -+ - if (stream_index < 0) { - stream_index = av_find_default_stream_index(s); - if (stream_index < 0) diff --git a/cinelerra-5.1/thirdparty/src/ffmpeg-4.3.patch5 b/cinelerra-5.1/thirdparty/src/ffmpeg-4.3.patch5 deleted file mode 100644 index 0584b399..00000000 --- a/cinelerra-5.1/thirdparty/src/ffmpeg-4.3.patch5 +++ /dev/null @@ -1,29 +0,0 @@ -diff -ru a/libavfilter/formats.c b/libavfilter/formats.c ---- a/libavfilter/formats.c 2019-07-08 11:45:25.000000000 -0600 -+++ b/libavfilter/formats.c 2019-08-08 18:20:27.709164671 -0600 -@@ -107,11 +107,13 @@ - possibly causing a lossy conversion elsewhere in the graph. - To avoid that, pretend that there are no common formats to force the - insertion of a conversion filter. */ -- if (type == AVMEDIA_TYPE_VIDEO) -- for (i = 0; i < a->nb_formats; i++) -+ if (type == AVMEDIA_TYPE_VIDEO) { -+ for (i = 0; i < a->nb_formats; i++) { -+ const AVPixFmtDescriptor *adesc = av_pix_fmt_desc_get(a->formats[i]); -+ if( !adesc ) continue; - for (j = 0; j < b->nb_formats; j++) { -- const AVPixFmtDescriptor *adesc = av_pix_fmt_desc_get(a->formats[i]); - const AVPixFmtDescriptor *bdesc = av_pix_fmt_desc_get(b->formats[j]); -+ if( !bdesc ) continue; - alpha2 |= adesc->flags & bdesc->flags & AV_PIX_FMT_FLAG_ALPHA; - chroma2|= adesc->nb_components > 1 && bdesc->nb_components > 1; - if (a->formats[i] == b->formats[j]) { -@@ -119,6 +121,8 @@ - chroma1|= adesc->nb_components > 1; - } - } -+ } -+ } - - // If chroma or alpha can be lost through merging then do not merge - if (alpha2 > alpha1 || chroma2 > chroma1) diff --git a/cinelerra-5.1/thirdparty/src/ffmpeg-4.3.patch6 b/cinelerra-5.1/thirdparty/src/ffmpeg-4.3.patch6 deleted file mode 100644 index e89e2b62..00000000 --- a/cinelerra-5.1/thirdparty/src/ffmpeg-4.3.patch6 +++ /dev/null @@ -1,11 +0,0 @@ -diff -ru a/libavcodec/vdpau_mpeg12.c b/libavcodec/vdpau_mpeg12.c ---- a/libavcodec/vdpau_mpeg12.c 2019-07-08 11:45:25.000000000 -0600 -+++ b/libavcodec/vdpau_mpeg12.c 2019-08-08 18:20:33.488773439 -0600 -@@ -114,6 +114,7 @@ - .frame_priv_data_size = sizeof(struct vdpau_picture_context), - .init = vdpau_mpeg1_init, - .uninit = ff_vdpau_common_uninit, -+ .frame_params = ff_vdpau_common_frame_params, - .priv_data_size = sizeof(VDPAUContext), - .caps_internal = HWACCEL_CAP_ASYNC_SAFE, - }; diff --git a/cinelerra-5.1/thirdparty/src/ffmpeg-4.3.patch7 b/cinelerra-5.1/thirdparty/src/ffmpeg-4.3.patch7 deleted file mode 100644 index 55d918a8..00000000 --- a/cinelerra-5.1/thirdparty/src/ffmpeg-4.3.patch7 +++ /dev/null @@ -1,12 +0,0 @@ -diff -ru a/libavcodec/h263dec.c b/libavcodec/h263dec.c ---- a/libavcodec/h263dec.c 2019-08-05 14:52:21.000000000 -0600 -+++ b/libavcodec/h263dec.c 2019-08-08 18:20:39.255383087 -0600 -@@ -684,7 +684,7 @@ - if (CONFIG_MPEG4_DECODER && avctx->codec_id == AV_CODEC_ID_MPEG4) - ff_mpeg4_frame_end(avctx, buf, buf_size); - -- if (!s->divx_packed && avctx->hwaccel) -+ if (s->divx_packed && avctx->hwaccel) - ff_thread_finish_setup(avctx); - - av_assert1(s->current_picture.f->pict_type == s->current_picture_ptr->f->pict_type); diff --git a/cinelerra-5.1/thirdparty/src/ffmpeg-4.3.patch8 b/cinelerra-5.1/thirdparty/src/ffmpeg-4.3.patch8 deleted file mode 100644 index 83729627..00000000 --- a/cinelerra-5.1/thirdparty/src/ffmpeg-4.3.patch8 +++ /dev/null @@ -1,15 +0,0 @@ -diff -ruN a/libavformat/mpegenc.c b/libavformat/mpegenc.c ---- a/libavformat/mpegenc.c 2020-07-10 09:26:57.257744879 -0600 -+++ b/libavformat/mpegenc.c 2020-07-10 09:27:14.528745779 -0600 -@@ -976,9 +976,9 @@ - PacketDesc *pkt_desc; - - while ((pkt_desc = stream->predecode_packet) && -+ pkt_desc != stream->premux_packet && - scr > pkt_desc->dts) { // FIXME: > vs >= -- if (stream->buffer_index < pkt_desc->size || -- stream->predecode_packet == stream->premux_packet) { -+ if (stream->buffer_index < pkt_desc->size) { - av_log(ctx, AV_LOG_ERROR, - "buffer underflow st=%d bufi=%d size=%d\n", - i, stream->buffer_index, pkt_desc->size); diff --git a/cinelerra-5.1/thirdparty/src/ffmpeg-4.3.patchA b/cinelerra-5.1/thirdparty/src/ffmpeg-4.3.patchA deleted file mode 100644 index 6d175cb6..00000000 --- a/cinelerra-5.1/thirdparty/src/ffmpeg-4.3.patchA +++ /dev/null @@ -1,23 +0,0 @@ -diff -ru a/libavutil/hwcontext_vdpau.c b/libavutil/hwcontext_vdpau.c ---- a/libavutil/hwcontext_vdpau.c 2019-08-05 14:52:21.000000000 -0600 -+++ b/libavutil/hwcontext_vdpau.c 2020-04-15 10:59:45.793687570 -0600 -@@ -64,6 +64,11 @@ - { 0, AV_PIX_FMT_NONE, }, - }; - -+static const VDPAUPixFmtMap pix_fmts_420j[] = { -+ { VDP_YCBCR_FORMAT_YV12, AV_PIX_FMT_YUVJ420P }, -+ { 0, AV_PIX_FMT_NONE, }, -+}; -+ - static const VDPAUPixFmtMap pix_fmts_422[] = { - { VDP_YCBCR_FORMAT_NV12, AV_PIX_FMT_NV16 }, - { VDP_YCBCR_FORMAT_YV12, AV_PIX_FMT_YUV422P }, -@@ -85,6 +90,7 @@ - const VDPAUPixFmtMap *map; - } vdpau_pix_fmts[] = { - { VDP_CHROMA_TYPE_420, AV_PIX_FMT_YUV420P, pix_fmts_420 }, -+ { VDP_CHROMA_TYPE_420, AV_PIX_FMT_YUVJ420P, pix_fmts_420j }, - { VDP_CHROMA_TYPE_422, AV_PIX_FMT_YUV422P, pix_fmts_422 }, - { VDP_CHROMA_TYPE_444, AV_PIX_FMT_YUV444P, pix_fmts_444 }, - }; diff --git a/cinelerra-5.1/thirdparty/src/ffmpeg-4.3.patchB b/cinelerra-5.1/thirdparty/src/ffmpeg-4.3.patchB deleted file mode 100644 index cac742db..00000000 --- a/cinelerra-5.1/thirdparty/src/ffmpeg-4.3.patchB +++ /dev/null @@ -1,43 +0,0 @@ -diff --git a/libswscale/x86/yuv_2_rgb.asm b/libswscale/x86/yuv_2_rgb.asm -index 575a84d921..003dff1f25 100644 ---- a/libswscale/x86/yuv_2_rgb.asm -+++ b/libswscale/x86/yuv_2_rgb.asm -@@ -268,9 +268,9 @@ cglobal %1_420_%2%3, GPR_num, GPR_num, reg_num, parameters - por m2, m7 - por m1, m6 ; g5 b5 r6 g6 b6 r7 g7 b7 r8 g8 b8 r9 g9 b9 r10 g10 - por m2, m3 ; b10 r11 g11 b11 r12 g12 b12 r13 g13 b13 r14 g14 b14 r15 g15 b15 -- mova [imageq], m0 -- mova [imageq + 16], m1 -- mova [imageq + 32], m2 -+ movu [imageq], m0 -+ movu [imageq + 16], m1 -+ movu [imageq + 32], m2 - %endif ; mmsize = 16 - %else ; PACK RGB15/16/32 - packuswb m0, m1 -@@ -300,10 +300,10 @@ cglobal %1_420_%2%3, GPR_num, GPR_num, reg_num, parameters - punpckhwd m_green, m_red - punpcklwd m5, m6 - punpckhwd m_alpha, m6 -- mova [imageq + 0], m_blue -- mova [imageq + 8 * time_num], m_green -- mova [imageq + 16 * time_num], m5 -- mova [imageq + 24 * time_num], m_alpha -+ movu [imageq + 0], m_blue -+ movu [imageq + 8 * time_num], m_green -+ movu [imageq + 16 * time_num], m5 -+ movu [imageq + 24 * time_num], m_alpha - %else ; PACK RGB15/16 - %define depth 2 - %if cpuflag(ssse3) -@@ -342,8 +342,8 @@ cglobal %1_420_%2%3, GPR_num, GPR_num, reg_num, parameters - mova m2, m0 - punpcklbw m0, m1 - punpckhbw m2, m1 -- mova [imageq], m0 -- mova [imageq + 8 * time_num], m2 -+ movu [imageq], m0 -+ movu [imageq + 8 * time_num], m2 - %endif ; PACK RGB15/16 - %endif ; PACK RGB15/16/32 - diff --git a/cinelerra-5.1/thirdparty/src/ffmpeg-4.3.tar.xz b/cinelerra-5.1/thirdparty/src/ffmpeg-4.3.tar.xz deleted file mode 100644 index 98f68fd5..00000000 Binary files a/cinelerra-5.1/thirdparty/src/ffmpeg-4.3.tar.xz and /dev/null differ diff --git a/cinelerra-5.1/thirdparty/src/libbthread.patch1 b/cinelerra-5.1/thirdparty/src/libbthread.patch1 deleted file mode 100644 index 852d568a..00000000 --- a/cinelerra-5.1/thirdparty/src/libbthread.patch1 +++ /dev/null @@ -1,8 +0,0 @@ ---- /dev/null 2021-05-22 06:52:04.572000000 +0300 -+++ libbthread-master/Makefile 2021-05-23 10:18:06.719050843 +0300 -@@ -0,0 +1,4 @@ -+all: -+ cat `ls *.c` > just-pt.c -+ g++ -c -o jpt.o just-pt.c -I. -+ ar crs jpt.a jpt.o -\ No newline at end of file diff --git a/cinelerra-5.1/thirdparty/src/x264-snapshot-20190117-2245-stable.patch1 b/cinelerra-5.1/thirdparty/src/x264-snapshot-20190117-2245-stable.patch1 deleted file mode 100644 index 9cd14f26..00000000 --- a/cinelerra-5.1/thirdparty/src/x264-snapshot-20190117-2245-stable.patch1 +++ /dev/null @@ -1,19 +0,0 @@ -diff -ur a/encoder/encoder.c b/encoder/encoder.c ---- a/encoder/encoder.c 2016-02-20 14:45:07.000000000 -0700 -+++ b/encoder/encoder.c 2016-12-29 07:08:32.247434972 -0700 -@@ -614,6 +614,7 @@ - return -1; - } - -+#if 0 - /* Detect default ffmpeg settings and terminate with an error. */ - if( b_open ) - { -@@ -637,6 +638,7 @@ - return -1; - } - } -+#endif - - if( h->param.rc.i_rc_method < 0 || h->param.rc.i_rc_method > 2 ) - { diff --git a/cinelerra-5.1/thirdparty/src/x264-snapshot-20191217-2245-stable.tar.xz b/cinelerra-5.1/thirdparty/src/x264-snapshot-20191217-2245-stable.tar.xz deleted file mode 100644 index 15f97501..00000000 Binary files a/cinelerra-5.1/thirdparty/src/x264-snapshot-20191217-2245-stable.tar.xz and /dev/null differ