Credit Terje with 2 new render formats + reverse titler and blur MAX_FLT causing...
[goodguy/cinelerra.git] / cinelerra-5.1 / thirdparty / src / ffmpeg.git.patch3
1 --- a/libavformat/avformat.h    2025-05-08 15:58:37.933172640 -0600
2 +++ b/libavformat/avformat.h    2025-05-08 15:57:46.964410825 -0600
3 @@ -496,6 +496,9 @@
4                                          The user or muxer can override this through
5                                          AVFormatContext.avoid_negative_ts
6                                          */
7 +#define AVFMT_SEEK_NOSTREAMS  0x80000 /**< Stream index ignored by seek,
8 +                                           or some streams fail to seek
9 +                                           */
10  
11  #define AVFMT_SEEK_TO_PTS   0x4000000 /**< Seeking is based on PTS */
12  
13 @@ -559,7 +562,8 @@
14      /**
15       * Can use flags: AVFMT_NOFILE, AVFMT_NEEDNUMBER, AVFMT_SHOW_IDS,
16       * AVFMT_NOTIMESTAMPS, AVFMT_GENERIC_INDEX, AVFMT_TS_DISCONT, AVFMT_NOBINSEARCH,
17 -     * AVFMT_NOGENSEARCH, AVFMT_NO_BYTE_SEEK, AVFMT_SEEK_TO_PTS.
18 +     * AVFMT_NOGENSEARCH, AVFMT_NO_BYTE_SEEK, AVFMT_SEEK_TO_PTS,
19 +     * AVFMT_SEEK_NOSTREAMS
20       */
21      int flags;
22  
23 --- a/libavformat/dv.c  2025-05-08 15:59:26.143851727 -0600
24 +++ b/libavformat/dv.c  2025-05-08 15:59:01.103509955 -0600
25 @@ -714,6 +714,7 @@
26  const FFInputFormat ff_dv_demuxer = {
27      .p.name         = "dv",
28      .p.long_name    = NULL_IF_CONFIG_SMALL("DV (Digital Video)"),
29 +    .p.flags        = AVFMT_SEEK_NOSTREAMS,
30      .p.extensions   = "dv,dif",
31      .priv_data_size = sizeof(RawDVContext),
32      .read_probe     = dv_probe,
33
34 --- a/libavformat/matroskadec.c 2025-05-08 16:00:34.406740107 -0600
35 +++ b/libavformat/matroskadec.c 2025-05-08 15:59:37.777003123 -0600
36 @@ -4832,6 +4832,7 @@
37  const FFInputFormat ff_webm_dash_manifest_demuxer = {
38      .p.name         = "webm_dash_manifest",
39      .p.long_name    = NULL_IF_CONFIG_SMALL("WebM DASH Manifest"),
40 +    .p.flags        = AVFMT_SEEK_NOSTREAMS,
41      .p.priv_class   = &webm_dash_class,
42      .priv_data_size = sizeof(MatroskaDemuxContext),
43      .flags_internal = FF_INFMT_FLAG_INIT_CLEANUP,
44 @@ -4844,6 +4845,7 @@
45  const FFInputFormat ff_matroska_demuxer = {
46      .p.name         = "matroska,webm",
47      .p.long_name    = NULL_IF_CONFIG_SMALL("Matroska / WebM"),
48 +    .p.flags        = AVFMT_SEEK_NOSTREAMS,
49      .p.extensions   = "mkv,mk3d,mka,mks,webm",
50      .p.mime_type    = "audio/webm,audio/x-matroska,video/webm,video/x-matroska",
51      .priv_data_size = sizeof(MatroskaDemuxContext),
52
53 --- a/libavformat/seek.c        2025-05-08 16:01:47.828700137 -0600
54 +++ b/libavformat/seek.c        2025-05-08 16:00:44.845875964 -0600
55 @@ -607,6 +607,13 @@
56          return seek_frame_byte(s, stream_index, timestamp, flags);
57      }
58  
59 +    if (stream_index != -1 && (s->iformat->flags & AVFMT_SEEK_NOSTREAMS)) {
60 +            timestamp = av_rescale_q(timestamp,
61 +                    s->streams[stream_index]->time_base,
62 +                    AV_TIME_BASE_Q);
63 +            stream_index = -1;
64 +    }
65 +
66      if (stream_index < 0) {
67          stream_index = av_find_default_stream_index(s);
68          if (stream_index < 0)