ffmpeg 3.4.1, add libopus, openexr probe tweak, rel path for filelist, avg_frame_rate...
authorGood Guy <good1.2guy@gmail.com>
Tue, 19 Dec 2017 23:37:52 +0000 (16:37 -0700)
committerGood Guy <good1.2guy@gmail.com>
Tue, 19 Dec 2017 23:37:52 +0000 (16:37 -0700)
16 files changed:
cinelerra-5.1/cinelerra/ffmpeg.C
cinelerra-5.1/cinelerra/filelist.C
cinelerra-5.1/cinelerra/preferences.C
cinelerra-5.1/configure.ac
cinelerra-5.1/ffmpeg/plugin.opts
cinelerra-5.1/thirdparty/Makefile
cinelerra-5.1/thirdparty/downloads.txt
cinelerra-5.1/thirdparty/src/ffmpeg-3.3.4.patch1 [deleted file]
cinelerra-5.1/thirdparty/src/ffmpeg-3.4.1.patch1 [moved from cinelerra-5.1/thirdparty/src/ffmpeg-3.3.4.patch2 with 100% similarity]
cinelerra-5.1/thirdparty/src/ffmpeg-3.4.1.patch2 [moved from cinelerra-5.1/thirdparty/src/ffmpeg-3.3.4.patch4 with 96% similarity]
cinelerra-5.1/thirdparty/src/ffmpeg-3.4.1.patch3 [moved from cinelerra-5.1/thirdparty/src/ffmpeg-3.3.4.patch5 with 79% similarity]
cinelerra-5.1/thirdparty/src/ffmpeg-3.4.1.tar.xz [moved from cinelerra-5.1/thirdparty/src/ffmpeg-3.3.4.tar.xz with 51% similarity]
cinelerra-5.1/thirdparty/src/ffmpeg.git.patch1
cinelerra-5.1/thirdparty/src/ffmpeg.git.patch2
cinelerra-5.1/thirdparty/src/ffmpeg.git.patch3
cinelerra-5.1/thirdparty/src/opus-1.2.1.tar.xz [new file with mode: 0644]

index fc3726e222487fece097b629c66b06fb412edac7..66003120eebb2e663947902dacedda0a295f50c7 100644 (file)
@@ -1986,6 +1986,7 @@ int FFMPEG::open_encoder(const char *type, const char *spec)
                                break;
                        }
                        ctx->time_base = (AVRational) { frame_rate.den, frame_rate.num };
+                       st->avg_frame_rate = frame_rate;
                        st->time_base = ctx->time_base;
                        vid->writing = -1;
                        vid->interlaced = asset->interlace_mode == ILACE_MODE_TOP_FIRST ||
index f44d11a8711f196a4eb554b60f6262e99167bacb..b98864f98fcb1ca2ce2561f33a9ce31e1982b23f 100644 (file)
@@ -181,34 +181,29 @@ int FileList::write_list_header()
        FILE *stream = fopen(asset->path, "w");
        if( !stream ) return 1;
 // Use sprintf instead of fprintf for VFS.
-       char string[BCTEXTLEN];
-       sprintf(string, "%s\n", list_prefix);
-       fwrite(string, strlen(string), 1, stream);
-       sprintf(string, "# First line is always %s\n", list_prefix);
-       fwrite(string, strlen(string), 1, stream);
-       sprintf(string, "# Frame rate:\n");
-       fwrite(string, strlen(string), 1, stream);
-       sprintf(string, "%f\n", asset->frame_rate);
-       fwrite(string, strlen(string), 1, stream);
-       sprintf(string, "# Width:\n");
-       fwrite(string, strlen(string), 1, stream);
-       sprintf(string, "%d\n", asset->width);
-       fwrite(string, strlen(string), 1, stream);
-       sprintf(string, "# Height:\n");
-       fwrite(string, strlen(string), 1, stream);
-       sprintf(string, "%d\n", asset->height);
-       fwrite(string, strlen(string), 1, stream);
-       sprintf(string, "# List of image files follows\n");
-       fwrite(string, strlen(string), 1, stream);
-
-       for(int i = 0; i < path_list.total; i++)
-       {
+       fprintf(stream, "%s\n", list_prefix);
+       fprintf(stream, "# First line is always %s\n", list_prefix);
+       fprintf(stream, "# Frame rate:\n");
+       fprintf(stream, "%f\n", asset->frame_rate);
+       fprintf(stream, "# Width:\n");
+       fprintf(stream, "%d\n", asset->width);
+       fprintf(stream, "# Height:\n");
+       fprintf(stream, "%d\n", asset->height);
+       fprintf(stream, "# List of image files follows\n");
+
+       char *cp = strrchr(asset->path, '/');
+       int dir_len = !cp ? 0 : cp - asset->path;
+
+       for(int i = 0; i < path_list.total; i++) {
+               const char *path = path_list.values[i];
 // Fix path for VFS but leave leading slash
-               if(!strncmp(path_list.values[i], RENDERFARM_FS_PREFIX, strlen(RENDERFARM_FS_PREFIX)))
-                       sprintf(string, "%s\n", path_list.values[i] + strlen(RENDERFARM_FS_PREFIX));
-               else
-                       sprintf(string, "%s\n", path_list.values[i]);
-               fwrite(string, strlen(string), 1, stream);
+               if( !strncmp(path, RENDERFARM_FS_PREFIX, strlen(RENDERFARM_FS_PREFIX)) )
+                       path += strlen(RENDERFARM_FS_PREFIX);
+// ./path for relative list access
+               else if( dir_len > 0 && !strncmp(path, asset->path, dir_len) ) {
+                       fprintf(stream, ".");  path += dir_len;
+               }
+               fprintf(stream, "%s\n", path);
        }
        fclose(stream);
        return 0;
@@ -244,15 +239,23 @@ int FileList::read_list_header()
        asset->audio_data = 0;
        asset->video_data = 1;
 
-// Get all the paths
+       char prefix[BCTEXTLEN], *bp = prefix, *cp = strrchr(asset->path, '/');
+       for( int i=0, n=!cp ? 0 : cp-asset->path; i<n; ++i ) *bp++ = asset->path[i];
+       *bp = 0;
+
+// Get all the paths, expand relative paths
        int missing = 0;
-       while(!feof(stream) && fgets(string, BCTEXTLEN, stream) ) {
+       while( !feof(stream) && fgets(string, BCTEXTLEN, stream) ) {
                int len = strlen(string);
-               if( !len || string[0] == '#' || string[0] == ' ') continue;
-               string[len-1] = 0;
-               if( access(string,R_OK) && !missing++ )
-                       eprintf(_("%s:no such file"), string);
-               path_list.append(cstrdup(string));
+               if( !len || string[0] == '#' || string[0] == ' ' ) continue;
+               if( string[len-1] == '\n' ) string[len-1] = 0;
+               char path[BCTEXTLEN], *pp = path, *ep = pp + sizeof(path)-1;
+               if( string[0] == '.' && string[1] == '/' && prefix[0] )
+                       pp += snprintf(pp, ep-pp, "%s/", prefix);
+               snprintf(pp, ep-pp, "%s", string);
+               if( access(path, R_OK) && !missing++ )
+                       eprintf(_("%s:no such file"), path);
+               path_list.append(cstrdup(path));
        }
 
 //for(int i = 0; i < path_list.total; i++) printf("%s\n", path_list.values[i]);
index b44319be24a0c32d8aaacf0d41f819853e5f54a5..029feba532414a0dede0682c97d33e2909da5846 100644 (file)
@@ -60,7 +60,7 @@ Preferences::Preferences()
        sprintf(index_directory, "%s/", File::get_config_path());
        if(strlen(index_directory))
                fs.complete_path(index_directory);
-       cache_size = 0x1000000;
+       cache_size = 0x10000000;
        index_size = 0x400000;
        index_count = 500;
        use_thumbnails = 1;
index 4fe5c0f00c12ae664999e0f20b97fba8d556056c..dcfd41d4e82f5b2247cd016dec432b4dc353dec3 100644 (file)
@@ -126,7 +126,7 @@ PKG_3RD([fdk],[auto],
   [ libAACdec/include libAACenc/include libSYS/include ])
 
 PKG_3RD([ffmpeg],[yes],
-  [ffmpeg-3.3.4],
+  [ffmpeg-3.4.1],
   [ libavutil/libavutil.a \
     libavcodec/libavcodec.a \
     libpostproc/libpostproc.a \
@@ -223,6 +223,11 @@ PKG_3RD([libjpeg],[auto],
     simd/.libs/libsimd.a ],
   [ . ])
 
+PKG_3RD([opus],[auto],
+  [opus-1.2.1],
+  [ .libs/libopus.a ],
+  [ include ])
+
 PKG_3RD([openjpeg],[auto],
   [openjpeg-2.1.0-20160221],
   [ bin/libopenjp2.a ],
@@ -453,8 +458,6 @@ CHECK_LIB([fdk], [fdk-aac], [faacDecInit])
 CHECK_HEADERS([fdk], [fdk headers], [fdk-aac/genericStds.h])
 CHECK_LIB([jbig], [jbig], [jbg_dec_init])
 CHECK_LIB([vdpau], [vdpau], [vdp_device_create_x11])
-CHECK_LIB([opus], [opus], [opus_multistream_decoder_create])
-CHECK_HEADERS([opus], [libopus headers], [opus/opus_multistream.h])
 
 #if test "x$HAVE_mjpegtools" = "xyes"; then
 #CFG_CFLAGS+=" -I/usr/include/mjpegtools"
@@ -524,6 +527,10 @@ CHECK_WANT([ESOUND], [no], [use esd], [
  CHECK_LIB([audiofile], [audiofile], [afOpenFile])
  CHECK_HEADERS([audiofile], [audiofile headers], [audiofile.h])])
 
+CHECK_WANT([LIBOPUS], [auto], [use libopus], [
+ CHECK_LIB([opus], [opus], [opus_multistream_decoder_create])
+ CHECK_HEADERS([opus], [libopus headers], [opus/opus_multistream.h])])
+
 CHECK_WANT([DL], [auto], [system has libdl], [
  CHECK_LIB([DL], [dl], [dlopen])])
 
@@ -540,7 +547,7 @@ CHECK_WANT([OPENEXR], [auto], [use openexr], [
  saved_LIBS="$LIBS"
  saved_CXXFLAGS="$CXXFLAGS"
  # ilmbase libs
- LIBS=" -lIlmImf -lIlmThread -lIex"
+ LIBS=" -lIlmImf -lIlmThread -lIex -lpthread"
  CXXFLAGS="-I/usr/include/OpenEXR"
  AC_LANG_PUSH(C++)
  AC_LINK_IFELSE([AC_LANG_PROGRAM([[
@@ -660,6 +667,7 @@ PKG_PROVIDE([twolame])
 PKG_PROVIDE([x264])
 PKG_PROVIDE([x265])
 PKG_PROVIDE([libvpx])
+PKG_PROVIDE([opus], [$WANT_OPUS])
 
 AC_SUBST(STATIC_BLDS)
 AC_SUBST(SHARED_LIBS)
index 173a5a9ebe5a7c94f19d1cb4aa8a28f3418f11aa..95236fdba6d0e91c0f9ed64819a8c45e8ca70af5 100644 (file)
@@ -50,12 +50,9 @@ aresample sample_rate=48000
 #asettb
 #ashowinfo
 #asidedata
-#asilencedetect
-#asilenceremove
 #asplit
 astats
 #astreamselect
-#astreamsync
 atadenoise
 atempo
 atrim start=1:end=240:start_pts=1:end_pts=2:duration=1:start_sample=1:end_sample=2
@@ -67,11 +64,10 @@ bass
 bbox
 bench
 biquad
-bitplaneoise
 blackdetect
 blackframe
 #blend
-boxblue
+boxblur
 #buffer
 #buffersink
 bwdif
@@ -124,8 +120,6 @@ erosion
 #extractplanes
 extrastereo
 fade
-#ffabuffersink
-#ffbuffersink
 fftfilt
 field
 #fieldhint
@@ -135,7 +129,6 @@ fieldorder
 #find_rect
 #firequalizer
 flanger
-#fliporder
 #format
 #fps
 #framepack
@@ -166,7 +159,6 @@ il
 inflate
 interlace
 #interleave
-#isdesctest
 #join
 kerndeint
 lenscorrection
@@ -258,7 +250,7 @@ signalstats
 #silencedetect
 silenceremove
 sine
-smartblue
+smartblur
 #smptebars
 #smptehdbars
 sobel
@@ -302,6 +294,30 @@ xbr
 yadif
 #yuvtestsrc
 zoompan
+; new in 3.4.1
+#acopy
+bitplanenoise
+boxblur
+ciescope
+crossfeed
+deflicker
+despill
+doubleweave
+floodfill
+haas
+limiter
+loop
+lumakey
+oscilloscope
+pixscope
+pseudocolor
+roberts
+smartblur
+#superequalizer
+#surround
+tlut2
+tonemap
+#vmafmotion
 ; in git
 #afir
 #headphone
index 7268028bdbf72a26e53cb269244af0543ca9af29..e2d2d4d483b0ea062283301ee0ddd2daeca084aa 100644 (file)
@@ -130,6 +130,7 @@ ffmpeg.cfg_params= \
                $(call inc_path,lame,include) \
                $(call inc_path,openjpeg,src/lib/openjp2) \
                $(call inc_path,libogg,include) \
+               $(call inc_path,opus,include) \
                $(call inc_path,libvorbis,include) \
                $(call inc_path,libtheora,include) \
                $(call inc_path,libvpx) \
@@ -146,6 +147,7 @@ ffmpeg.cfg_params= \
                $(call ld_path,twolame,libtwolame/.libs) \
                $(call ld_path,lame,libmp3lame/.libs) \
                $(call ld_path,openjpeg,bin) \
+               $(call ld_path,opus,.libs) \
                $(call ld_path,libogg,lib/.libs) \
                $(call ld_path,libvorbis,lib/.libs) \
                $(call ld_path,libtheora,lib/.libs) \
@@ -243,7 +245,7 @@ $(call rules,$(call std-build,esound,audiofile))
 $(call rules,$(call std-build,faac))
 $(call rules,$(call std-build,faad2))
 $(call rules,$(call std-build,fdk))
-$(call rules,$(call std-build,ffmpeg, faad2 faac fdk twolame lame openjpeg libtheora x264 x265 libvpx))
+$(call rules,$(call std-build,ffmpeg, faad2 faac fdk twolame lame openjpeg opus libtheora x264 x265 libvpx))
 $(call rules,$(call std-build,fftw))
 $(call rules,$(call std-build,flac,libogg))
 $(call rules,$(call std-build,giflib))
@@ -264,6 +266,7 @@ $(call rules,$(call std-build,mjpegtools, libjpeg))
 $(call rules,$(call std-build,opencv))
 $(call rules,$(call std-build,openexr, ilmbase))
 $(call rules,$(call std-build,openjpeg))
+$(call rules,$(call std-build,opus))
 $(call rules,$(call std-build,speech_tools))
 $(call rules,$(call std-build,tiff))
 $(call rules,$(call std-build,twolame))
index 579810c5746fb29c776640336254a304722b51c8..47936c5f0f8cf66789a1089d94b333286112a0a2 100644 (file)
@@ -33,3 +33,4 @@ https://bitbucket.org/multicoreware/x265/downloads/x265_2.4.tar.gz
 http://ffmpeg.org/releases/ffmpeg-3.3.tar.bz2
 https://chromium.googlesource.com/webm/libvpx/+archive/0c0a05046db1c0b59a7fcc29785a190fdbbe39c2.tar.gz = 1,6,1
 https://github.com/swh/ladspa/releases/tag/v0.4.17, plugin.org.uk
+https://archive.mozilla.org/pub/opus/opus-1.2.1.tar.gz
diff --git a/cinelerra-5.1/thirdparty/src/ffmpeg-3.3.4.patch1 b/cinelerra-5.1/thirdparty/src/ffmpeg-3.3.4.patch1
deleted file mode 100644 (file)
index 40d7edd..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-diff -urN a/configure b/configure
---- a/configure        2017-04-12 19:55:54.000000000 -0600
-+++ b/configure        2017-04-16 16:12:23.518837543 -0600
-@@ -5812,7 +5812,7 @@
-                                { check_lib openjpeg.h opj_version -lopenjpeg -DOPJ_STATIC && add_cppflags -DOPJ_STATIC; } ||
-                                die "ERROR: libopenjpeg not found"; }
- enabled libopenmpt        && require_pkg_config "libopenmpt >= 0.2.6557" libopenmpt/libopenmpt.h openmpt_module_create
--enabled libopus           && require_pkg_config opus opus_multistream.h opus_multistream_decoder_create
-+enabled libopus           && use_pkg_config opus opus_multistream.h opus_multistream_decoder_create
- enabled libpulse          && require_pkg_config libpulse pulse/pulseaudio.h pa_context_new
- enabled librtmp           && require_pkg_config librtmp librtmp/rtmp.h RTMP_Socket
- enabled librubberband     && require_pkg_config "rubberband >= 1.8.1" rubberband/rubberband-c.h rubberband_new
-@@ -5871,7 +5871,9 @@
-                                die "ERROR: libx264 must be installed and version must be >= 0.118."; } &&
-                              { check_cpp_condition x264.h "X264_MPEG2" &&
-                                enable libx262; }
--enabled libx265           && require_pkg_config x265 x265.h x265_api_get &&
-+enabled libx265           && { use_pkg_config x265 "stdint.h x265.h" x265_api_get ||
-+                               { require libx265 x265.h x265_encoder_encode -lx265 -lstdc++ &&
-+                                 warn "using libx265 without pkg-config"; } } &&
-                              { check_cpp_condition x265.h "X265_BUILD >= 68" ||
-                                die "ERROR: libx265 version must be >= 68."; }
- enabled libxavs           && require libxavs "stdint.h xavs.h" xavs_encoder_encode -lxavs
similarity index 96%
rename from cinelerra-5.1/thirdparty/src/ffmpeg-3.3.4.patch4
rename to cinelerra-5.1/thirdparty/src/ffmpeg-3.4.1.patch2
index 66edd3db49ffd6a5972e0987c966539ff2cac499..bb628d933ab56c3644aacf12697c4272cb3ca767 100644 (file)
@@ -1,6 +1,6 @@
-diff -urN a/libavformat/mpegtsenc.c b/libavformat/mpegtsenc.c
---- a/libavformat/mpegtsenc.c  2017-04-12 19:55:55.000000000 -0600
-+++ b/libavformat/mpegtsenc.c  2017-04-16 16:40:18.488361991 -0600
+diff -ur a/libavformat/mpegtsenc.c b/libavformat/mpegtsenc.c
+--- a/libavformat/mpegtsenc.c  2017-12-10 14:35:10.000000000 -0700
++++ b/libavformat/mpegtsenc.c  2017-12-18 10:54:14.260167666 -0700
 @@ -56,9 +56,8 @@
      int sid;           /* service ID */
      char *name;
@@ -69,7 +69,7 @@ diff -urN a/libavformat/mpegtsenc.c b/libavformat/mpegtsenc.c
  
  typedef struct MpegTSWriteStream {
      struct MpegTSService *service;
-@@ -717,6 +714,7 @@
+@@ -721,6 +718,7 @@
      service->pmt.pid       = ts->pmt_start_pid + ts->nb_services;
      service->sid           = sid;
      service->pcr_pid       = 0x1fff;
@@ -77,7 +77,7 @@ diff -urN a/libavformat/mpegtsenc.c b/libavformat/mpegtsenc.c
      service->provider_name = av_strdup(provider_name);
      service->name          = av_strdup(name);
      if (!service->provider_name || !service->name)
-@@ -732,18 +730,11 @@
+@@ -736,18 +734,11 @@
      return NULL;
  }
  
@@ -97,7 +97,7 @@ diff -urN a/libavformat/mpegtsenc.c b/libavformat/mpegtsenc.c
          tp_extra_header = AV_RB32(&tp_extra_header);
          avio_write(s->pb, (unsigned char *) &tp_extra_header,
                     sizeof(tp_extra_header));
-@@ -764,6 +755,7 @@
+@@ -768,6 +759,7 @@
      MpegTSService *service;
      AVStream *st, *pcr_st = NULL;
      AVDictionaryEntry *title, *provider;
@@ -105,7 +105,7 @@ diff -urN a/libavformat/mpegtsenc.c b/libavformat/mpegtsenc.c
      int i, j;
      const char *service_name;
      const char *provider_name;
-@@ -772,6 +764,15 @@
+@@ -776,6 +768,15 @@
  
      if (s->max_delay < 0) /* Not set by the caller */
          s->max_delay = 0;
@@ -121,7 +121,7 @@ diff -urN a/libavformat/mpegtsenc.c b/libavformat/mpegtsenc.c
  
      // round up to a whole number of TS packets
      ts->pes_payload_size = (ts->pes_payload_size + 14 + 183) / 184 * 184 - 14;
-@@ -818,6 +819,8 @@
+@@ -822,6 +823,8 @@
              service->program          = program;
          }
      }
@@ -130,7 +130,7 @@ diff -urN a/libavformat/mpegtsenc.c b/libavformat/mpegtsenc.c
  
      ts->pat.pid          = PAT_PID;
      /* Initialize at 15 so that it wraps and is equal to 0 for the
-@@ -903,10 +906,9 @@
+@@ -907,10 +910,9 @@
          ts_st->discontinuity   = ts->flags & MPEGTS_FLAG_DISCONT;
          /* update PCR pid by using the first video stream */
          if (st->codecpar->codec_type == AVMEDIA_TYPE_VIDEO &&
@@ -143,7 +143,7 @@ diff -urN a/libavformat/mpegtsenc.c b/libavformat/mpegtsenc.c
          if (st->codecpar->codec_id == AV_CODEC_ID_AAC &&
              st->codecpar->extradata_size > 0) {
              AVStream *ast;
-@@ -942,78 +944,47 @@
+@@ -946,78 +948,47 @@
      av_freep(&pids);
  
      /* if no video stream, use the first stream as PCR */
@@ -254,7 +254,7 @@ diff -urN a/libavformat/mpegtsenc.c b/libavformat/mpegtsenc.c
  
      return 0;
  
-@@ -1028,22 +999,12 @@
+@@ -1032,22 +1003,12 @@
      MpegTSWrite *ts = s->priv_data;
      int i;
  
@@ -281,7 +281,7 @@ diff -urN a/libavformat/mpegtsenc.c b/libavformat/mpegtsenc.c
          mpegts_write_pat(s);
          for (i = 0; i < ts->nb_services; i++)
              mpegts_write_pmt(s, ts->services[i]);
-@@ -1085,13 +1046,14 @@
+@@ -1089,13 +1050,14 @@
  {
      MpegTSWrite *ts = s->priv_data;
      MpegTSWriteStream *ts_st = st->priv_data;
@@ -298,7 +298,7 @@ diff -urN a/libavformat/mpegtsenc.c b/libavformat/mpegtsenc.c
      *q++ = 0x20 | ts_st->cc;   /* Adaptation only */
      /* Continuity Count field does not increment (see 13818-1 section 2.4.3.3) */
      *q++ = TS_PACKET_SIZE - 5; /* Adaptation Field Length */
-@@ -1102,7 +1064,7 @@
+@@ -1106,7 +1068,7 @@
      }
  
      /* PCR coded into 6 bytes */
@@ -307,7 +307,7 @@ diff -urN a/libavformat/mpegtsenc.c b/libavformat/mpegtsenc.c
  
      /* stuffing bytes */
      memset(q, 0xFF, TS_PACKET_SIZE - (q - buf));
-@@ -1171,8 +1133,6 @@
+@@ -1175,8 +1137,6 @@
      uint8_t *q;
      int val, is_start, len, header_len, write_pcr, is_dvb_subtitle, is_dvb_teletext, flags;
      int afc_len, stuffing_len;
@@ -316,7 +316,7 @@ diff -urN a/libavformat/mpegtsenc.c b/libavformat/mpegtsenc.c
      int force_pat = st->codecpar->codec_type == AVMEDIA_TYPE_VIDEO && key && !ts_st->prev_payload_key;
  
      av_assert0(ts_st->payload != buf || st->codecpar->codec_type != AVMEDIA_TYPE_VIDEO);
-@@ -1182,28 +1142,33 @@
+@@ -1186,28 +1146,33 @@
  
      is_start = 1;
      while (payload_size > 0) {
@@ -363,7 +363,7 @@ diff -urN a/libavformat/mpegtsenc.c b/libavformat/mpegtsenc.c
              continue;
          }
  
-@@ -1213,6 +1178,10 @@
+@@ -1217,6 +1182,10 @@
          val  = ts_st->pid >> 8;
          if (is_start)
              val |= 0x40;
@@ -374,7 +374,7 @@ diff -urN a/libavformat/mpegtsenc.c b/libavformat/mpegtsenc.c
          *q++      = val;
          *q++      = ts_st->pid;
          ts_st->cc = ts_st->cc + 1 & 0xf;
-@@ -1224,7 +1193,7 @@
+@@ -1228,7 +1197,7 @@
          }
          if (key && is_start && pts != AV_NOPTS_VALUE) {
              // set Random Access for key frames
@@ -383,7 +383,7 @@ diff -urN a/libavformat/mpegtsenc.c b/libavformat/mpegtsenc.c
                  write_pcr = 1;
              set_af_flag(buf, 0x40);
              q = get_ts_payload_start(buf);
-@@ -1232,14 +1201,10 @@
+@@ -1236,14 +1205,10 @@
          if (write_pcr) {
              set_af_flag(buf, 0x10);
              q = get_ts_payload_start(buf);
@@ -400,7 +400,7 @@ diff -urN a/libavformat/mpegtsenc.c b/libavformat/mpegtsenc.c
              q = get_ts_payload_start(buf);
          }
          if (is_start) {
-@@ -1340,11 +1305,13 @@
+@@ -1344,11 +1309,13 @@
              *q++ = flags;
              *q++ = header_len;
              if (pts != AV_NOPTS_VALUE) {
@@ -416,7 +416,7 @@ diff -urN a/libavformat/mpegtsenc.c b/libavformat/mpegtsenc.c
                  q += 5;
              }
              if (pes_extension && st->codecpar->codec_id == AV_CODEC_ID_DIRAC) {
-@@ -1515,7 +1482,6 @@
+@@ -1519,7 +1486,6 @@
      uint8_t *data = NULL;
      MpegTSWrite *ts = s->priv_data;
      MpegTSWriteStream *ts_st = st->priv_data;
@@ -424,7 +424,7 @@ diff -urN a/libavformat/mpegtsenc.c b/libavformat/mpegtsenc.c
      int64_t dts = pkt->dts, pts = pkt->pts;
      int opus_samples = 0;
      int side_data_size;
-@@ -1536,16 +1502,15 @@
+@@ -1540,16 +1506,15 @@
      }
  
      if (ts->flags & MPEGTS_FLAG_REEMIT_PAT_PMT) {
@@ -444,7 +444,7 @@ diff -urN a/libavformat/mpegtsenc.c b/libavformat/mpegtsenc.c
      }
  
      if (ts_st->first_pts_check && pts == AV_NOPTS_VALUE) {
-@@ -1733,7 +1698,7 @@
+@@ -1737,7 +1702,7 @@
              AVStream *st2 = s->streams[i];
              MpegTSWriteStream *ts_st2 = st2->priv_data;
              if (   ts_st2->payload_size
@@ -453,7 +453,7 @@ diff -urN a/libavformat/mpegtsenc.c b/libavformat/mpegtsenc.c
                  mpegts_write_pes(s, st2, ts_st2->payload, ts_st2->payload_size,
                                   ts_st2->payload_pts, ts_st2->payload_dts,
                                   ts_st2->payload_flags & AV_PKT_FLAG_KEY, stream_id);
-@@ -1904,12 +1869,18 @@
+@@ -1908,12 +1873,18 @@
      { "mpegts_pmt_start_pid", "Set the first pid of the PMT.",
        offsetof(MpegTSWrite, pmt_start_pid), AV_OPT_TYPE_INT,
        { .i64 = 0x1000 }, 0x0010, 0x1f00, AV_OPT_FLAG_ENCODING_PARAM },
@@ -473,7 +473,7 @@ diff -urN a/libavformat/mpegtsenc.c b/libavformat/mpegtsenc.c
      { "muxrate", NULL,
        offsetof(MpegTSWrite, mux_rate), AV_OPT_TYPE_INT,
        { .i64 = 1 }, 0, INT_MAX, AV_OPT_FLAG_ENCODING_PARAM },
-@@ -1947,15 +1918,15 @@
+@@ -1951,15 +1922,15 @@
      { "omit_video_pes_length", "Omit the PES packet length for video packets",
        offsetof(MpegTSWrite, omit_video_pes_length), AV_OPT_TYPE_BOOL,
        { .i64 = 1 }, 0, 1, AV_OPT_FLAG_ENCODING_PARAM },
similarity index 79%
rename from cinelerra-5.1/thirdparty/src/ffmpeg-3.3.4.patch5
rename to cinelerra-5.1/thirdparty/src/ffmpeg-3.4.1.patch3
index 55cc48b8984b8f1d29e07effe274ee1ac6aa8c5a..a96cf1cd88fd92cff3222797586c201e3d29285c 100644 (file)
@@ -1,6 +1,6 @@
 diff -ur a/libavformat/avformat.h b/libavformat/avformat.h
---- a/libavformat/avformat.h   2017-06-06 20:03:55.000000000 -0600
-+++ b/libavformat/avformat.h   2017-07-20 09:10:40.434571231 -0600
+--- a/libavformat/avformat.h   2017-12-10 14:35:10.000000000 -0700
++++ b/libavformat/avformat.h   2017-12-18 11:11:31.791996302 -0700
 @@ -504,6 +504,9 @@
                                          The user or muxer can override this through
                                          AVFormatContext.avoid_negative_ts
@@ -22,8 +22,8 @@ diff -ur a/libavformat/avformat.h b/libavformat/avformat.h
      int flags;
  
 diff -ur a/libavformat/dv.c b/libavformat/dv.c
---- a/libavformat/dv.c 2017-06-06 20:03:55.000000000 -0600
-+++ b/libavformat/dv.c 2017-07-20 09:12:00.277148325 -0600
+--- a/libavformat/dv.c 2017-12-10 14:35:10.000000000 -0700
++++ b/libavformat/dv.c 2017-12-18 11:11:31.792996246 -0700
 @@ -632,6 +632,7 @@
  AVInputFormat ff_dv_demuxer = {
      .name           = "dv",
@@ -33,9 +33,9 @@ diff -ur a/libavformat/dv.c b/libavformat/dv.c
      .read_probe     = dv_probe,
      .read_header    = dv_read_header,
 diff -ur a/libavformat/matroskadec.c b/libavformat/matroskadec.c
---- a/libavformat/matroskadec.c        2017-06-06 20:03:55.000000000 -0600
-+++ b/libavformat/matroskadec.c        2017-07-20 12:29:39.804273095 -0600
-@@ -3936,6 +3936,7 @@
+--- a/libavformat/matroskadec.c        2017-12-10 14:35:10.000000000 -0700
++++ b/libavformat/matroskadec.c        2017-12-18 11:11:31.793996189 -0700
+@@ -3984,6 +3984,7 @@
  AVInputFormat ff_matroska_demuxer = {
      .name           = "matroska,webm",
      .long_name      = NULL_IF_CONFIG_SMALL("Matroska / WebM"),
@@ -43,7 +43,7 @@ diff -ur a/libavformat/matroskadec.c b/libavformat/matroskadec.c
      .extensions     = "mkv,mk3d,mka,mks",
      .priv_data_size = sizeof(MatroskaDemuxContext),
      .read_probe     = matroska_probe,
-@@ -3949,6 +3950,7 @@
+@@ -3997,6 +3998,7 @@
  AVInputFormat ff_webm_dash_manifest_demuxer = {
      .name           = "webm_dash_manifest",
      .long_name      = NULL_IF_CONFIG_SMALL("WebM DASH Manifest"),
@@ -51,10 +51,10 @@ diff -ur a/libavformat/matroskadec.c b/libavformat/matroskadec.c
      .priv_data_size = sizeof(MatroskaDemuxContext),
      .read_header    = webm_dash_manifest_read_header,
      .read_packet    = webm_dash_manifest_read_packet,
-diff -ur a/libavformat/utils.c b/libavformat/utils.c
---- a/libavformat/utils.c      2017-06-06 20:04:02.000000000 -0600
-+++ b/libavformat/utils.c      2017-07-20 09:53:28.684729516 -0600
-@@ -2412,6 +2412,13 @@
+diff -ur a/libavformat/utils.c ./libavformat/utils.c
+--- a/libavformat/utils.c      2017-12-10 14:35:18.000000000 -0700
++++ b/libavformat/utils.c      2017-12-18 11:11:31.795996077 -0700
+@@ -2416,6 +2416,13 @@
          return seek_frame_byte(s, stream_index, timestamp, flags);
      }
  
similarity index 51%
rename from cinelerra-5.1/thirdparty/src/ffmpeg-3.3.4.tar.xz
rename to cinelerra-5.1/thirdparty/src/ffmpeg-3.4.1.tar.xz
index 671b6197a39ebab4bf2c2905bc1e2859fa8b81e2..8970943ccc92547d6fcee5bdaa23a63aff2253a6 100644 (file)
Binary files a/cinelerra-5.1/thirdparty/src/ffmpeg-3.3.4.tar.xz and b/cinelerra-5.1/thirdparty/src/ffmpeg-3.4.1.tar.xz differ
index 2e9797e73975bb493816d71d7db64560a7891f2c..daa9953880fd0b326f34cd17c68f50f0dcdc5a93 100644 (file)
@@ -1,6 +1,6 @@
-diff -ur a/libavformat/bluray.c b/libavformat/bluray.c
---- a/libavformat/bluray.c     2017-10-13 16:31:25.000000000 -0600
-+++ b/libavformat/bluray.c     2017-10-13 20:05:45.910046165 -0600
+diff -ru ffmpeg-3.0.orig/libavformat/bluray.c ffmpeg-3.0/libavformat/bluray.c
+--- ffmpeg-3.0.orig/libavformat/bluray.c       2015-03-13 11:34:50.000000000 -0600
++++ ffmpeg-3.0/libavformat/bluray.c    2016-05-09 14:07:34.758713307 -0600
 @@ -28,7 +28,7 @@
  #include "libavutil/opt.h"
  
index fac116493e1388162e86911f2b62ec0d3009818d..bb628d933ab56c3644aacf12697c4272cb3ca767 100644 (file)
@@ -1,6 +1,6 @@
 diff -ur a/libavformat/mpegtsenc.c b/libavformat/mpegtsenc.c
---- a/libavformat/mpegtsenc.c  2017-10-13 16:31:25.000000000 -0600
-+++ b/libavformat/mpegtsenc.c  2017-10-13 20:06:27.930649088 -0600
+--- a/libavformat/mpegtsenc.c  2017-12-10 14:35:10.000000000 -0700
++++ b/libavformat/mpegtsenc.c  2017-12-18 10:54:14.260167666 -0700
 @@ -56,9 +56,8 @@
      int sid;           /* service ID */
      char *name;
@@ -496,4 +496,3 @@ diff -ur a/libavformat/mpegtsenc.c b/libavformat/mpegtsenc.c
      { NULL },
  };
  
-Only in b/libavformat: mpegtsenc.c.orig
index c774d19a40d88325300cf4f338bb0f57572ca23f..a96cf1cd88fd92cff3222797586c201e3d29285c 100644 (file)
@@ -1,6 +1,6 @@
 diff -ur a/libavformat/avformat.h b/libavformat/avformat.h
---- a/libavformat/avformat.h   2017-10-13 16:31:25.000000000 -0600
-+++ b/libavformat/avformat.h   2017-10-13 20:07:24.178440418 -0600
+--- a/libavformat/avformat.h   2017-12-10 14:35:10.000000000 -0700
++++ b/libavformat/avformat.h   2017-12-18 11:11:31.791996302 -0700
 @@ -504,6 +504,9 @@
                                          The user or muxer can override this through
                                          AVFormatContext.avoid_negative_ts
@@ -22,8 +22,8 @@ diff -ur a/libavformat/avformat.h b/libavformat/avformat.h
      int flags;
  
 diff -ur a/libavformat/dv.c b/libavformat/dv.c
---- a/libavformat/dv.c 2017-10-13 16:31:25.000000000 -0600
-+++ b/libavformat/dv.c 2017-10-13 20:07:24.178440418 -0600
+--- a/libavformat/dv.c 2017-12-10 14:35:10.000000000 -0700
++++ b/libavformat/dv.c 2017-12-18 11:11:31.792996246 -0700
 @@ -632,6 +632,7 @@
  AVInputFormat ff_dv_demuxer = {
      .name           = "dv",
@@ -33,8 +33,8 @@ diff -ur a/libavformat/dv.c b/libavformat/dv.c
      .read_probe     = dv_probe,
      .read_header    = dv_read_header,
 diff -ur a/libavformat/matroskadec.c b/libavformat/matroskadec.c
---- a/libavformat/matroskadec.c        2017-10-13 16:31:25.000000000 -0600
-+++ b/libavformat/matroskadec.c        2017-10-13 20:07:24.180440304 -0600
+--- a/libavformat/matroskadec.c        2017-12-10 14:35:10.000000000 -0700
++++ b/libavformat/matroskadec.c        2017-12-18 11:11:31.793996189 -0700
 @@ -3984,6 +3984,7 @@
  AVInputFormat ff_matroska_demuxer = {
      .name           = "matroska,webm",
@@ -51,11 +51,10 @@ diff -ur a/libavformat/matroskadec.c b/libavformat/matroskadec.c
      .priv_data_size = sizeof(MatroskaDemuxContext),
      .read_header    = webm_dash_manifest_read_header,
      .read_packet    = webm_dash_manifest_read_packet,
-Only in b/libavformat: matroskadec.c.orig
-diff -ur a/libavformat/utils.c b/libavformat/utils.c
---- a/libavformat/utils.c      2017-10-13 16:31:25.000000000 -0600
-+++ b/libavformat/utils.c      2017-10-13 20:07:24.182440190 -0600
-@@ -2415,6 +2415,13 @@
+diff -ur a/libavformat/utils.c ./libavformat/utils.c
+--- a/libavformat/utils.c      2017-12-10 14:35:18.000000000 -0700
++++ b/libavformat/utils.c      2017-12-18 11:11:31.795996077 -0700
+@@ -2416,6 +2416,13 @@
          return seek_frame_byte(s, stream_index, timestamp, flags);
      }
  
@@ -69,4 +68,3 @@ diff -ur a/libavformat/utils.c b/libavformat/utils.c
      if (stream_index < 0) {
          stream_index = av_find_default_stream_index(s);
          if (stream_index < 0)
-Only in b/libavformat: utils.c.orig
diff --git a/cinelerra-5.1/thirdparty/src/opus-1.2.1.tar.xz b/cinelerra-5.1/thirdparty/src/opus-1.2.1.tar.xz
new file mode 100644 (file)
index 0000000..c2f3c81
Binary files /dev/null and b/cinelerra-5.1/thirdparty/src/opus-1.2.1.tar.xz differ