Package: octave-video Followup-For: Bug #1004770 User: ubuntu-de...@lists.ubuntu.com Usertags: origin-ubuntu kinetic ubuntu-patch Control: tags -1 patch
Dear Maintainer, As noted in this bug, octave-video FTBFS with ffmpeg 5. This patch resolves that failure. In Ubuntu, the attached patch was applied to achieve the following: * d/patches/ffmpeg5.patch: Update to FFMPEG 5 API. Thanks for considering the patch. -- System Information: Debian Release: bookworm/sid APT prefers kinetic APT policy: (500, 'kinetic') Architecture: amd64 (x86_64) Foreign Architectures: i386 Kernel: Linux 5.15.0-27-generic (SMP w/32 CPU threads) Kernel taint flags: TAINT_PROPRIETARY_MODULE, TAINT_OOT_MODULE, TAINT_UNSIGNED_MODULE Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8), LANGUAGE not set Shell: /bin/sh linked to /usr/bin/dash Init: systemd (via /run/systemd/system) LSM: AppArmor: enabled
diff -Nru octave-video-2.0.2/debian/control octave-video-2.0.2/debian/control --- octave-video-2.0.2/debian/control 2022-07-19 08:01:01.000000000 -0500 +++ octave-video-2.0.2/debian/control 2022-08-01 14:26:51.000000000 -0500 @@ -1,8 +1,7 @@ Source: octave-video Section: math Priority: optional -Maintainer: Ubuntu Developers <ubuntu-devel-disc...@lists.ubuntu.com> -XSBC-Original-Maintainer: Debian Octave Group <team+pkg-octave-t...@tracker.debian.org> +Maintainer: Debian Octave Group <team+pkg-octave-t...@tracker.debian.org> Uploaders: Rafael Laboissière <raf...@debian.org> Build-Depends: debhelper-compat (= 13), dh-octave (>= 0.7.1), diff -Nru octave-video-2.0.2/debian/patches/ffmpeg5.patch octave-video-2.0.2/debian/patches/ffmpeg5.patch --- octave-video-2.0.2/debian/patches/ffmpeg5.patch 1969-12-31 18:00:00.000000000 -0600 +++ octave-video-2.0.2/debian/patches/ffmpeg5.patch 2022-08-01 14:26:51.000000000 -0500 @@ -0,0 +1,545 @@ +Index: octave-video-2.0.2/src/cap_ffmpeg_impl_ov.hpp +=================================================================== +--- octave-video-2.0.2.orig/src/cap_ffmpeg_impl_ov.hpp ++++ octave-video-2.0.2/src/cap_ffmpeg_impl_ov.hpp +@@ -110,6 +110,8 @@ + #define CV_WARN(message) fprintf(stderr, "warning: %s (%s:%d)\n", message, __FILE__, __LINE__) + #endif + ++#define FF_API_LOCKMGR 1 ++ + static int global_err; + + std::string get_last_err_msg () +@@ -526,9 +528,9 @@ + const char* get_video_codec_name () const + { + #if LIBAVFORMAT_BUILD > 4628 +- return _opencv_avcodec_get_name(video_st->codec->codec_id); ++ return _opencv_avcodec_get_name(video_st->codecpar->codec_id); + #else +- return _opencv_avcodec_get_name(video_st->codec.codec_id); ++ return _opencv_avcodec_get_name(video_st->codecpar.codec_id); + #endif + } + +@@ -604,7 +606,6 @@ + + void CvCapture_FFMPEG::init() + { +- av_register_all(); + ic = 0; + video_stream = -1; + video_st = 0; +@@ -651,11 +652,13 @@ + + if( video_st ) + { ++ AVCodecContext *codec; ++ avcodec_parameters_to_context(codec, video_st->codecpar); + #if LIBAVFORMAT_BUILD > 4628 +- avcodec_close( video_st->codec ); ++ avcodec_close( codec ); + + #else +- avcodec_close( &(video_st->codec) ); ++ avcodec_close( &codec ); + + #endif + video_st = NULL; +@@ -842,38 +845,6 @@ + + static ImplMutex _mutex; + +-static int LockCallBack(void **mutex, AVLockOp op) +-{ +- ImplMutex* localMutex = reinterpret_cast<ImplMutex*>(*mutex); +- switch (op) +- { +- case AV_LOCK_CREATE: +- localMutex = new ImplMutex(); +- if (!localMutex) +- return 1; +- *mutex = localMutex; +- if (!*mutex) +- return 1; +- break; +- +- case AV_LOCK_OBTAIN: +- localMutex->lock(); +- break; +- +- case AV_LOCK_RELEASE: +- localMutex->unlock(); +- break; +- +- case AV_LOCK_DESTROY: +- delete localMutex; +- localMutex = NULL; +- *mutex = NULL; +- break; +- } +- return 0; +-} +- +- + static void ffmpeg_log_callback(void *ptr, int level, const char *fmt, va_list vargs) + { + static bool skip_header = false; +@@ -900,12 +871,6 @@ + avformat_network_init(); + #endif + +- /* register all codecs, demux and protocols */ +- av_register_all(); +- +- /* register a callback function for synchronization */ +- av_lockmgr_register(&LockCallBack); +- + #ifndef NO_GETENV + char* debug_option = getenv("OPENCV_FFMPEG_DEBUG"); + if (debug_option != NULL) +@@ -919,10 +884,6 @@ + av_log_set_level(AV_LOG_ERROR); + } + } +- ~InternalFFMpegRegister() +- { +- av_lockmgr_register(NULL); +- } + }; + + bool CvCapture_FFMPEG::open( const char* _filename ) +@@ -962,7 +923,7 @@ + #else + av_dict_set(&dict, "rtsp_transport", "tcp", 0); + #endif +- AVInputFormat* input_format = NULL; ++ const AVInputFormat* input_format = NULL; + AVDictionaryEntry* entry = av_dict_get(dict, "input_format", NULL, 0); + if (entry != 0) + { +@@ -994,7 +955,8 @@ + for(i = 0; i < ic->nb_streams; i++) + { + #if LIBAVFORMAT_BUILD > 4628 +- AVCodecContext *enc = ic->streams[i]->codec; ++ AVCodecContext *enc; ++ avcodec_parameters_to_context(enc, ic->streams[i]->codecpar); + #else + AVCodecContext *enc = &ic->streams[i]->codec; + #endif +@@ -1015,7 +977,7 @@ + int enc_width = enc->width; + int enc_height = enc->height; + +- AVCodec *codec; ++ const AVCodec *codec; + if(av_dict_get(dict, "video_codec", NULL, 0) == NULL) { + codec = avcodec_find_decoder(enc->codec_id); + } else { +@@ -1119,7 +1081,12 @@ + } + + // Decode video frame +- #if LIBAVFORMAT_BUILD >= CALC_FFMPEG_VERSION(53, 2, 0) ++ #if LIBAVFORMAT_BUILD >= CALC_FFMPEG_VERSION(59, 0, 0) ++ AVCodecContext *context; ++ avcodec_parameters_to_context(context, video_st->codecpar); ++ avcodec_send_packet(context, &packet); ++ avcodec_receive_frame(context, picture); ++ #elif LIBAVFORMAT_BUILD >= CALC_FFMPEG_VERSION(53, 2, 0) + avcodec_decode_video2(video_st->codec, picture, &got_picture, &packet); + #elif LIBAVFORMAT_BUILD > 4628 + avcodec_decode_video(video_st->codec, +@@ -1136,7 +1103,11 @@ + { + //picture_pts = picture->best_effort_timestamp; + if( picture_pts == AV_NOPTS_VALUE_ ) ++ #if LIBAVFORMAT_BUILD >= CALC_FFMPEG_VERSION(59, 0, 0) ++ picture_pts = picture->pkt_dts; ++ #else + picture_pts = picture->pkt_pts != AV_NOPTS_VALUE_ && picture->pkt_pts != 0 ? picture->pkt_pts : picture->pkt_dts; ++ #endif + + frame_number++; + valid = true; +@@ -1168,18 +1139,18 @@ + return false; + + if( img_convert_ctx == NULL || +- frame.width != video_st->codec->width || +- frame.height != video_st->codec->height || ++ frame.width != video_st->codecpar->width || ++ frame.height != video_st->codecpar->height || + frame.data == NULL ) + { + // Some sws_scale optimizations have some assumptions about alignment of data/step/width/height + // Also we use coded_width/height to workaround problem with legacy ffmpeg versions (like n0.8) +- int buffer_width = video_st->codec->coded_width, buffer_height = video_st->codec->coded_height; ++ int buffer_width = video_st->codecpar->width, buffer_height = video_st->codecpar->height; + + img_convert_ctx = sws_getCachedContext( + img_convert_ctx, + buffer_width, buffer_height, +- video_st->codec->pix_fmt, ++ (AVPixelFormat) video_st->codecpar->format, + buffer_width, buffer_height, + AV_PIX_FMT_BGR24, + SWS_BICUBIC, +@@ -1208,8 +1179,8 @@ + _opencv_ffmpeg_av_image_fill_arrays(&rgb_picture, rgb_picture.data[0], + AV_PIX_FMT_BGR24, buffer_width, buffer_height ); + #endif +- frame.width = video_st->codec->width; +- frame.height = video_st->codec->height; ++ frame.width = video_st->codecpar->width; ++ frame.height = video_st->codecpar->height; + frame.cn = 3; + frame.data = rgb_picture.data[0]; + frame.step = rgb_picture.linesize[0]; +@@ -1219,7 +1190,7 @@ + img_convert_ctx, + picture->data, + picture->linesize, +- 0, video_st->codec->coded_height, ++ 0, video_st->codecpar->height, + rgb_picture.data, + rgb_picture.linesize + ); +@@ -1334,11 +1305,13 @@ + } + #endif + ++#if LIBAVFORMAT_BUILD <= CALC_FFMPEG_VERSION(59, 0, 0) + if (fps < eps_zero) + { +- fps = 1.0 / r2d(ic->streams[video_stream]->codec->time_base); ++ fps = 1.0 / r2d(ic->streams[video_stream]->codecpar->time_base); + } + #endif ++#endif + return fps; + } + +@@ -1383,7 +1356,9 @@ + double time_base = r2d(ic->streams[video_stream]->time_base); + time_stamp += (int64_t)(sec / time_base + 0.5); + if (get_total_frames() > 1) av_seek_frame(ic, video_stream, time_stamp, AVSEEK_FLAG_BACKWARD); +- avcodec_flush_buffers(ic->streams[video_stream]->codec); ++ AVCodecContext *context; ++ avcodec_parameters_to_context(context, ic->streams[video_stream]->codecpar); ++ avcodec_flush_buffers(context); + if( _frame_number > 0 ) + { + grabFrame(); +@@ -1499,7 +1474,7 @@ + const char* get_video_codec_name () const + { + #if LIBAVFORMAT_BUILD > 4628 +- return _opencv_avcodec_get_name(video_st->codec->codec_id); ++ return _opencv_avcodec_get_name(video_st->codecpar->codec_id); + #else + return _opencv_avcodec_get_name(video_st->codec.codec_id); + #endif +@@ -1593,7 +1568,6 @@ + + void CvVideoWriter_FFMPEG::init() + { +- av_register_all(); + fmt = 0; + oc = 0; + outbuf = 0; +@@ -1659,7 +1633,6 @@ + AVCodecContext *c; + AVStream *st; + int frame_rate, frame_rate_base; +- AVCodec *codec; + + #if LIBAVFORMAT_BUILD >= CALC_FFMPEG_VERSION(53, 10, 0) + st = avformat_new_stream(oc, 0); +@@ -1673,13 +1646,13 @@ + } + + #if LIBAVFORMAT_BUILD > 4628 +- c = st->codec; ++ avcodec_parameters_to_context(c, st->codecpar); + #else + c = &(st->codec); + #endif + + #if LIBAVFORMAT_BUILD > 4621 +- c->codec_id = av_guess_codec(oc->oformat, NULL, oc->filename, NULL, AVMEDIA_TYPE_VIDEO); ++ c->codec_id = av_guess_codec(oc->oformat, NULL, oc->url, NULL, AVMEDIA_TYPE_VIDEO); + #else + c->codec_id = oc->oformat->video_codec; + #endif +@@ -1689,11 +1662,11 @@ + } + + //if(codec_tag) c->codec_tag=codec_tag; +- codec = avcodec_find_encoder(c->codec_id); ++ const AVCodec *codec = avcodec_find_encoder(c->codec_id); + + c->codec_type = AVMEDIA_TYPE_VIDEO; + +-#if LIBAVCODEC_BUILD >= CALC_FFMPEG_VERSION(54,25,0) ++#if LIBAVCODEC_BUILD >= CALC_FFMPEG_VERSION(54,25,0) && LIBAVCODEC_BUILD < CALC_FFMPEG_VERSION(59, 0, 0) + // Set per-codec defaults + AVCodecID c_id = c->codec_id; + avcodec_get_context_defaults3(c, codec); +@@ -1818,7 +1791,8 @@ + AVFrame * picture ) + { + #if LIBAVFORMAT_BUILD > 4628 +- AVCodecContext * c = video_st->codec; ++ AVCodecContext * c; ++ avcodec_parameters_to_context(c, video_st->codecpar); + #else + AVCodecContext * c = &(video_st->codec); + #endif +@@ -1845,7 +1819,10 @@ + /* encode the image */ + AVPacket pkt; + av_init_packet(&pkt); +-#if LIBAVCODEC_BUILD >= CALC_FFMPEG_VERSION(54, 1, 0) ++#if LIBAVCODEC_BUILD >= CALC_FFMPEG_VERSION(59, 0, 0) ++ avcodec_send_frame(c, picture); ++ avcodec_receive_packet(c, &pkt); ++#elif LIBAVCODEC_BUILD >= CALC_FFMPEG_VERSION(54, 1, 0) + int got_output = 0; + pkt.data = NULL; + pkt.size = 0; +@@ -1914,7 +1891,8 @@ + + // typecast from opaque data type to implemented struct + #if LIBAVFORMAT_BUILD > 4628 +- AVCodecContext *c = video_st->codec; ++ AVCodecContext *c; ++ avcodec_parameters_to_context(c, video_st->codecpar); + #else + AVCodecContext *c = &(video_st->codec); + #endif +@@ -2032,7 +2010,7 @@ + + // free pictures + #if LIBAVFORMAT_BUILD > 4628 +- if( video_st->codec->pix_fmt != input_pix_fmt) ++ if( video_st->codecpar->format != input_pix_fmt) + #else + if( video_st->codec.pix_fmt != input_pix_fmt) + #endif +@@ -2048,7 +2026,9 @@ + + /* close codec */ + #if LIBAVFORMAT_BUILD > 4628 +- avcodec_close(video_st->codec); ++ AVCodecContext *context; ++ avcodec_parameters_to_context(context, video_st->codecpar); ++ avcodec_close(context); + #else + avcodec_close(&(video_st->codec)); + #endif +@@ -2148,8 +2128,10 @@ + return false; + + /* auto detect the output format from the name and fourcc code. */ +- +-#if LIBAVFORMAT_BUILD >= CALC_FFMPEG_VERSION(53, 2, 0) ++#if LIBAVFORMAT_BUILD >= CALC_FFMPEG_VERSION(59, 0, 0) ++ const AVOutputFormat *format = av_guess_format(NULL, filename, NULL); ++ *fmt = *format; ++#elif LIBAVFORMAT_BUILD >= CALC_FFMPEG_VERSION(53, 2, 0) + fmt = av_guess_format(NULL, filename, NULL); + #else + fmt = guess_format(NULL, filename, NULL); +@@ -2233,7 +2215,11 @@ + + /* set file name */ + oc->oformat = fmt; ++#if LIBAVFORMAT_BUILD >= CALC_FFMPEG_VERSION(59, 0, 0) ++ snprintf(oc->url, sizeof(oc->url), "%s", filename); ++#else + snprintf(oc->filename, sizeof(oc->filename), "%s", filename); ++#endif + + /* set some options */ + oc->max_delay = (int)(0.7*AV_TIME_BASE); /* This reduces buffer underrun warnings with MPEG */ +@@ -2377,18 +2363,17 @@ + return false; + } + +- AVCodec *codec; + AVCodecContext *c; + + #if LIBAVFORMAT_BUILD > 4628 +- c = (video_st->codec); ++ avcodec_parameters_to_context(c, video_st->codecpar); + #else + c = &(video_st->codec); + #endif + + c->codec_tag = fourcc; + /* find the video encoder */ +- codec = avcodec_find_encoder(c->codec_id); ++ const AVCodec *codec = avcodec_find_encoder(c->codec_id); + if (!codec) { + fprintf(stderr, "Could not find encoder for codec id %d: %s\n", c->codec_id, icvFFMPEGErrStr( + #if LIBAVFORMAT_BUILD >= CALC_FFMPEG_VERSION(53, 2, 0) +Index: octave-video-2.0.2/src/cap_ffmpeg_wrapper.cc +=================================================================== +--- octave-video-2.0.2.orig/src/cap_ffmpeg_wrapper.cc ++++ octave-video-2.0.2/src/cap_ffmpeg_wrapper.cc +@@ -58,17 +58,30 @@ + undocumented internal function\n\ + @end deftypefn") + { ++#if LIBAVCODEC_BUILD >= CALC_FFMPEG_VERSION(59,0,0) ++ void *fmt_iter = NULL; ++#else + av_register_all(); ++#endif + + octave_idx_type n = 0; + + // first loop to get numer of output formats ++#if LIBAVCODEC_BUILD >= CALC_FFMPEG_VERSION(59,0,0) ++ const AVOutputFormat * oformat = NULL; ++ while (oformat = av_muxer_iterate(&fmt_iter)) ++ { ++ n++; ++ oformat = av_muxer_iterate(&fmt_iter); ++ } ++#else + AVOutputFormat * oformat = av_oformat_next(NULL); + while (oformat != NULL) + { + n++; + oformat = av_oformat_next (oformat); + } ++#endif + + Cell names (n, 1); + Cell long_names (n, 1); +@@ -77,7 +90,13 @@ + Cell codecs (n, 1); + + // second loop, now fill the cells ++#if LIBAVCODEC_BUILD >= CALC_FFMPEG_VERSION(59,0,0) ++ // restart the iterator at NULL ++ fmt_iter = NULL; ++ oformat = av_muxer_iterate(&fmt_iter); ++#else + oformat = av_oformat_next(NULL); ++#endif + int i = 0; + while(oformat != NULL) + { +@@ -141,7 +160,11 @@ + } + } + ++#if LIBAVCODEC_BUILD >= CALC_FFMPEG_VERSION(59,0,0) ++ oformat = av_muxer_iterate(&fmt_iter); ++#else + oformat = av_oformat_next(oformat); ++#endif + i++; + } + +@@ -413,7 +436,9 @@ + { + CvVideoWriter_FFMPEG::register_type(); + writer_type_loaded = true; ++#if LIBAVCODEC_BUILD < CALC_FFMPEG_VERSION(59,0,0) + av_register_all(); ++#endif + } + + std::string filename = args(0).string_value (); +@@ -432,6 +457,9 @@ + if (fourcc.size () == 0) + { + // get tag for default codec for guessed container from filename ++#if LIBAVCODEC_BUILD >= CALC_FFMPEG_VERSION(59,0,0) ++ const ++#endif + AVOutputFormat* foo = av_guess_format (NULL, filename.c_str (), NULL); + + // list supported codecs for guessed format +Index: octave-video-2.0.2/src/ffmpeg_codecs.hpp +=================================================================== +--- octave-video-2.0.2.orig/src/ffmpeg_codecs.hpp ++++ octave-video-2.0.2/src/ffmpeg_codecs.hpp +@@ -77,71 +77,6 @@ + unsigned int tag; + } AVCodecTag; + +-#if (LIBAVCODEC_VERSION_INT <= AV_VERSION_INT(54, 51, 100)) +-#define AV_CODEC_ID_H264 CODEC_ID_H264 +-#define AV_CODEC_ID_H263 CODEC_ID_H263 +-#define AV_CODEC_ID_H263P CODEC_ID_H263P +-#define AV_CODEC_ID_H263I CODEC_ID_H263I +-#define AV_CODEC_ID_H261 CODEC_ID_H261 +-#define AV_CODEC_ID_MPEG4 CODEC_ID_MPEG4 +-#define AV_CODEC_ID_MSMPEG4V3 CODEC_ID_MSMPEG4V3 +-#define AV_CODEC_ID_MSMPEG4V2 CODEC_ID_MSMPEG4V2 +-#define AV_CODEC_ID_MSMPEG4V1 CODEC_ID_MSMPEG4V1 +-#define AV_CODEC_ID_WMV1 CODEC_ID_WMV1 +-#define AV_CODEC_ID_WMV2 CODEC_ID_WMV1 +-#define AV_CODEC_ID_DVVIDEO CODEC_ID_DVVIDEO +-#define AV_CODEC_ID_MPEG1VIDEO CODEC_ID_MPEG1VIDEO +-#define AV_CODEC_ID_MPEG2VIDEO CODEC_ID_MPEG2VIDEO +-#define AV_CODEC_ID_MJPEG CODEC_ID_MJPEG +-#define AV_CODEC_ID_LJPEG CODEC_ID_LJPEG +-#define AV_CODEC_ID_HUFFYUV CODEC_ID_HUFFYUV +-#define AV_CODEC_ID_FFVHUFF CODEC_ID_FFVHUFF +-#define AV_CODEC_ID_CYUV CODEC_ID_CYUV +-#define AV_CODEC_ID_RAWVIDEO CODEC_ID_RAWVIDEO +-#define AV_CODEC_ID_INDEO3 CODEC_ID_INDEO3 +-#define AV_CODEC_ID_VP3 CODEC_ID_VP3 +-#define AV_CODEC_ID_ASV1 CODEC_ID_ASV1 +-#define AV_CODEC_ID_ASV2 CODEC_ID_ASV2 +-#define AV_CODEC_ID_VCR1 CODEC_ID_VCR1 +-#define AV_CODEC_ID_FFV1 CODEC_ID_FFV1 +-#define AV_CODEC_ID_XAN_WC4 CODEC_ID_XAN_WC4 +-#define AV_CODEC_ID_MSRLE CODEC_ID_MSRLE +-#define AV_CODEC_ID_MSVIDEO1 CODEC_ID_MSVIDEO1 +-#define AV_CODEC_ID_CINEPAK CODEC_ID_CINEPAK +-#define AV_CODEC_ID_TRUEMOTION1 CODEC_ID_TRUEMOTION1 +-#define AV_CODEC_ID_MSZH CODEC_ID_MSZH +-#define AV_CODEC_ID_ZLIB CODEC_ID_ZLIB +-#define AV_CODEC_ID_SNOW CODEC_ID_SNOW +-#define AV_CODEC_ID_4XM CODEC_ID_4XM +-#define AV_CODEC_ID_FLV1 CODEC_ID_FLV1 +-#define AV_CODEC_ID_SVQ1 CODEC_ID_SVQ1 +-#define AV_CODEC_ID_TSCC CODEC_ID_TSCC +-#define AV_CODEC_ID_ULTI CODEC_ID_ULTI +-#define AV_CODEC_ID_VIXL CODEC_ID_VIXL +-#define AV_CODEC_ID_QPEG CODEC_ID_QPEG +-#define AV_CODEC_ID_WMV3 CODEC_ID_WMV3 +-#define AV_CODEC_ID_LOCO CODEC_ID_LOCO +-#define AV_CODEC_ID_THEORA CODEC_ID_THEORA +-#define AV_CODEC_ID_WNV1 CODEC_ID_WNV1 +-#define AV_CODEC_ID_AASC CODEC_ID_AASC +-#define AV_CODEC_ID_INDEO2 CODEC_ID_INDEO2 +-#define AV_CODEC_ID_FRAPS CODEC_ID_FRAPS +-#define AV_CODEC_ID_TRUEMOTION2 CODEC_ID_TRUEMOTION2 +-#define AV_CODEC_ID_FLASHSV CODEC_ID_FLASHSV +-#define AV_CODEC_ID_JPEGLS CODEC_ID_JPEGLS +-#define AV_CODEC_ID_VC1 CODEC_ID_VC1 +-#define AV_CODEC_ID_CSCD CODEC_ID_CSCD +-#define AV_CODEC_ID_ZMBV CODEC_ID_ZMBV +-#define AV_CODEC_ID_KMVC CODEC_ID_KMVC +-#define AV_CODEC_ID_VP5 CODEC_ID_VP5 +-#define AV_CODEC_ID_VP6 CODEC_ID_VP6 +-#define AV_CODEC_ID_VP6F CODEC_ID_VP6F +-#define AV_CODEC_ID_JPEG2000 CODEC_ID_JPEG2000 +-#define AV_CODEC_ID_VMNC CODEC_ID_VMNC +-#define AV_CODEC_ID_TARGA CODEC_ID_TARGA +-#define AV_CODEC_ID_NONE CODEC_ID_NONE +-#endif +- + const AVCodecTag codec_bmp_tags[] = { + { AV_CODEC_ID_H264, MKTAG('H', '2', '6', '4') }, + { AV_CODEC_ID_H264, MKTAG('h', '2', '6', '4') }, diff -Nru octave-video-2.0.2/debian/patches/series octave-video-2.0.2/debian/patches/series --- octave-video-2.0.2/debian/patches/series 2021-12-01 10:20:27.000000000 -0600 +++ octave-video-2.0.2/debian/patches/series 2022-08-01 14:19:15.000000000 -0500 @@ -1 +1,2 @@ use-cxxflags.patch +ffmpeg5.patch