[arch-commits] Commit in opencv/trunk (PKGBUILD ffmpeg5.patch)
Antonio Rojas
arojas at gemini.archlinux.org
Sat Feb 19 21:31:34 UTC 2022
Date: Saturday, February 19, 2022 @ 21:31:34
Author: arojas
Revision: 437781
Build with FFmpeg 4.4 (FS#73887)
Modified:
opencv/trunk/PKGBUILD
Deleted:
opencv/trunk/ffmpeg5.patch
---------------+
PKGBUILD | 13 -
ffmpeg5.patch | 466 --------------------------------------------------------
2 files changed, 5 insertions(+), 474 deletions(-)
Modified: PKGBUILD
===================================================================
--- PKGBUILD 2022-02-19 21:26:45 UTC (rev 437780)
+++ PKGBUILD 2022-02-19 21:31:34 UTC (rev 437781)
@@ -5,12 +5,12 @@
pkgbase=opencv
pkgname=(opencv opencv-samples python-opencv opencv-cuda)
pkgver=4.5.5
-pkgrel=2
+pkgrel=3
pkgdesc='Open Source Computer Vision Library'
arch=(x86_64)
license=(BSD)
url='https://opencv.org/'
-depends=(tbb openexr gst-plugins-base libdc1394 cblas lapack libgphoto2 openjpeg2 ffmpeg protobuf)
+depends=(tbb openexr gst-plugins-base libdc1394 cblas lapack libgphoto2 openjpeg2 ffmpeg4.4 protobuf)
makedepends=(cmake python-numpy python-setuptools mesa eigen hdf5 lapacke qt5-base vtk glew ant java-environment pugixml openmpi cudnn fmt)
optdepends=('opencv-samples: samples'
'vtk: for the viz module'
@@ -21,20 +21,17 @@
'java-runtime: Java interface')
source=(https://github.com/opencv/opencv/archive/$pkgver/$pkgname-$pkgver.tar.gz
https://github.com/opencv/opencv_contrib/archive/$pkgver/opencv_contrib-$pkgver.tar.gz
- vtk9.patch
- ffmpeg5.patch)
+ vtk9.patch)
sha256sums=('a1cfdcf6619387ca9e232687504da996aaa9f7b5689986b8331ec02cb61d28ad'
'a97c2eaecf7a23c6dbd119a609c6d7fae903e5f9ff5f1fe678933e01c67a6c11'
- 'f35a2d4ea0d6212c7798659e59eda2cb0b5bc858360f7ce9c696c77d3029668e'
- 'b6459e0456da49d4b9e83b6ed859b144db64b1e1b150718fcee433fa19babdbe')
+ 'f35a2d4ea0d6212c7798659e59eda2cb0b5bc858360f7ce9c696c77d3029668e')
prepare() {
patch -d $pkgname-$pkgver -p1 < vtk9.patch # Don't require all vtk optdepends
- patch -d $pkgname-$pkgver -p1 < ffmpeg5.patch # FFmpeg 5, patch from berolinux https://github.com/opencv/opencv/issues/21455
}
build() {
- export JAVA_HOME="/usr/lib/jvm/default"
+ export JAVA_HOME="/usr/lib/jvm/default" PKG_CONFIG_PATH=/usr/lib/ffmpeg4.4/pkgconfig
# cmake's FindLAPACK doesn't add cblas to LAPACK_LIBRARIES, so we need to specify them manually
_opts="-DWITH_OPENCL=ON \
-DWITH_OPENGL=ON \
Deleted: ffmpeg5.patch
===================================================================
--- ffmpeg5.patch 2022-02-19 21:26:45 UTC (rev 437780)
+++ ffmpeg5.patch 2022-02-19 21:31:34 UTC (rev 437781)
@@ -1,466 +0,0 @@
-diff -up opencv-4.5.5/modules/videoio/src/cap_ffmpeg_impl.hpp.omv~ opencv-4.5.5/modules/videoio/src/cap_ffmpeg_impl.hpp
---- opencv-4.5.5/modules/videoio/src/cap_ffmpeg_impl.hpp.omv~ 2022-01-16 01:57:43.568982322 +0100
-+++ opencv-4.5.5/modules/videoio/src/cap_ffmpeg_impl.hpp 2022-01-17 18:00:14.876283994 +0100
-@@ -88,6 +88,10 @@ extern "C" {
- #include <libavcodec/avcodec.h>
- #include <libswscale/swscale.h>
-
-+#if LIBAVCODEC_VERSION_MAJOR >= 59
-+#include <libavcodec/bsf.h>
-+#endif
-+
- #ifdef __cplusplus
- }
- #endif
-@@ -504,6 +508,7 @@ struct CvCapture_FFMPEG
- AVCodec * avcodec;
- int video_stream;
- AVStream * video_st;
-+ AVCodecContext * video_ccx;
- AVFrame * picture;
- AVFrame rgb_picture;
- int64_t picture_pts;
-@@ -554,6 +559,7 @@ void CvCapture_FFMPEG::init()
- ic = 0;
- video_stream = -1;
- video_st = 0;
-+ video_ccx = 0;
- picture = 0;
- picture_pts = AV_NOPTS_VALUE_;
- first_frame_number = -1;
-@@ -617,8 +623,13 @@ void CvCapture_FFMPEG::close()
-
- if( video_st )
- {
-+#if LIBAVCODEC_VERSION_MAJOR < 59
- avcodec_close( video_st->codec );
-+#else
-+ avcodec_close( video_ccx );
-+#endif
- video_st = NULL;
-+ video_ccx = NULL;
- }
-
- if( ic )
-@@ -800,6 +811,7 @@ private:
-
- static ImplMutex _mutex;
-
-+#if LIBAVCODEC_VERSION_MAJOR < 59
- static int LockCallBack(void **mutex, AVLockOp op)
- {
- ImplMutex* localMutex = reinterpret_cast<ImplMutex*>(*mutex);
-@@ -830,6 +842,7 @@ static int LockCallBack(void **mutex, AV
- }
- return 0;
- }
-+#endif
-
-
- static void ffmpeg_log_callback(void *ptr, int level, const char *fmt, va_list vargs)
-@@ -881,15 +894,19 @@ public:
- {
- avformat_network_init();
-
-+#if LIBAVCODEC_VERSION_MAJOR < 59
- /* register all codecs, demux and protocols */
- av_register_all();
-
- /* register a callback function for synchronization */
- av_lockmgr_register(&LockCallBack);
-+#endif
- }
- ~InternalFFMpegRegister()
- {
-+#if LIBAVCODEC_VERSION_MAJOR < 59
- av_lockmgr_register(NULL);
-+#endif
- av_log_set_callback(NULL);
- }
- };
-@@ -993,6 +1010,9 @@ bool CvCapture_FFMPEG::open(const char*
- #else
- av_dict_set(&dict, "rtsp_transport", "tcp", 0);
- #endif
-+#if LIBAVCODEC_VERSION_MAJOR >= 59
-+ const
-+#endif
- AVInputFormat* input_format = NULL;
- AVDictionaryEntry* entry = av_dict_get(dict, "input_format", NULL, 0);
- if (entry != 0)
-@@ -1016,7 +1036,13 @@ bool CvCapture_FFMPEG::open(const char*
- }
- for(i = 0; i < ic->nb_streams; i++)
- {
-+#if LIBAVCODEC_VERSION_MAJOR >= 59
-+ const AVCodec *streamcodec = avcodec_find_decoder(ic->streams[i]->codecpar->codec_id);
-+ AVCodecContext *enc = avcodec_alloc_context3(streamcodec);
-+ avcodec_parameters_to_context(enc, ic->streams[i]->codecpar);
-+#else
- AVCodecContext* enc = ic->streams[i]->codec;
-+#endif
-
- //#ifdef FF_API_THREAD_INIT
- // avcodec_thread_init(enc, get_number_of_cpus());
-@@ -1064,7 +1090,7 @@ bool CvCapture_FFMPEG::open(const char*
- #endif
-
- // find and open decoder, try HW acceleration types specified in 'hw_acceleration' list (in order)
-- AVCodec *codec = NULL;
-+ const AVCodec *codec = NULL;
- err = -1;
- #if USE_AV_HW_CODECS
- HWAccelIterator accel_iter(va_type, false/*isEncoder*/, dict);
-@@ -1149,6 +1175,11 @@ bool CvCapture_FFMPEG::open(const char*
-
- video_stream = i;
- video_st = ic->streams[i];
-+#if LIBAVCODEC_VERSION_MAJOR >= 59
-+ const AVCodec *video_st_codec = avcodec_find_decoder(video_st->codecpar->codec_id);
-+ video_ccx = avcodec_alloc_context3(video_st_codec);
-+ avcodec_parameters_to_context(video_ccx, video_st->codecpar);
-+#endif
- #if LIBAVCODEC_BUILD >= (LIBAVCODEC_VERSION_MICRO >= 100 \
- ? CALC_FFMPEG_VERSION(55, 45, 101) : CALC_FFMPEG_VERSION(55, 28, 1))
- picture = av_frame_alloc();
-@@ -1295,6 +1326,12 @@ bool CvCapture_FFMPEG::processRawPacket(
- return packet.data != NULL;
- }
-
-+#if LIBAVCODEC_VERSION_MAJOR < 59
-+#define VIDEO_CODEC video_st->codec
-+#else
-+#define VIDEO_CODEC video_ccx
-+#endif
-+
- bool CvCapture_FFMPEG::grabFrame()
- {
- bool valid = false;
-@@ -1318,7 +1355,7 @@ bool CvCapture_FFMPEG::grabFrame()
-
- #if USE_AV_SEND_FRAME_API
- // check if we can receive frame from previously decoded packet
-- valid = avcodec_receive_frame(video_st->codec, picture) >= 0;
-+ valid = avcodec_receive_frame(VIDEO_CODEC, picture) >= 0;
- #endif
-
- // get the next frame
-@@ -1368,10 +1405,10 @@ bool CvCapture_FFMPEG::grabFrame()
-
- // Decode video frame
- #if USE_AV_SEND_FRAME_API
-- if (avcodec_send_packet(video_st->codec, &packet) < 0) {
-+ if (avcodec_send_packet(VIDEO_CODEC, &packet) < 0) {
- break;
- }
-- ret = avcodec_receive_frame(video_st->codec, picture);
-+ ret = avcodec_receive_frame(VIDEO_CODEC, picture);
- #else
- int got_picture = 0;
- avcodec_decode_video2(video_st->codec, picture, &got_picture, &packet);
-@@ -1380,7 +1417,7 @@ bool CvCapture_FFMPEG::grabFrame()
- if (ret >= 0) {
- //picture_pts = picture->best_effort_timestamp;
- if( picture_pts == AV_NOPTS_VALUE_ )
-- picture_pts = picture->pkt_pts != AV_NOPTS_VALUE_ && picture->pkt_pts != 0 ? picture->pkt_pts : picture->pkt_dts;
-+ picture_pts = picture->pts != AV_NOPTS_VALUE_ && picture->pts != 0 ? picture->pts : picture->pkt_dts;
-
- valid = true;
- } else if (ret == AVERROR(EAGAIN)) {
-@@ -1424,8 +1461,8 @@ bool CvCapture_FFMPEG::retrieveFrame(int
- ret = p.data != NULL;
- }
- else if (flag == extraDataIdx) {
-- *data = ic->streams[video_stream]->codec->extradata;
-- *step = ic->streams[video_stream]->codec->extradata_size;
-+ *data = ic->streams[video_stream]->codecpar->extradata;
-+ *step = ic->streams[video_stream]->codecpar->extradata_size;
- }
- *width = *step;
- *height = 1;
-@@ -1450,13 +1487,13 @@ bool CvCapture_FFMPEG::retrieveFrame(int
- 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_CODEC->coded_width, buffer_height = VIDEO_CODEC->coded_height;
-
- img_convert_ctx = sws_getCachedContext(
- img_convert_ctx,
-@@ -1483,15 +1520,15 @@ bool CvCapture_FFMPEG::retrieveFrame(int
- }
- #else
- int aligns[AV_NUM_DATA_POINTERS];
-- avcodec_align_dimensions2(video_st->codec, &buffer_width, &buffer_height, aligns);
-+ avcodec_align_dimensions2(video_st->codecpar, &buffer_width, &buffer_height, aligns);
- rgb_picture.data[0] = (uint8_t*)realloc(rgb_picture.data[0],
- _opencv_ffmpeg_av_image_get_buffer_size( AV_PIX_FMT_BGR24,
- buffer_width, buffer_height ));
- _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];
-@@ -1501,7 +1538,7 @@ bool CvCapture_FFMPEG::retrieveFrame(int
- img_convert_ctx,
- sw_picture->data,
- sw_picture->linesize,
-- 0, video_st->codec->coded_height,
-+ 0, VIDEO_CODEC->coded_height,
- rgb_picture.data,
- rgb_picture.linesize
- );
-@@ -1530,7 +1567,7 @@ bool CvCapture_FFMPEG::retrieveHWFrame(c
- }
-
- // GPU color conversion NV12->BGRA, from GPU media buffer to GPU OpenCL buffer
-- return hw_copy_frame_to_umat(video_st->codec->hw_device_ctx, picture, output);
-+ return hw_copy_frame_to_umat(VIDEO_CODEC->hw_device_ctx, picture, output);
- #else
- CV_UNUSED(output);
- return false;
-@@ -1566,8 +1603,8 @@ double CvCapture_FFMPEG::getProperty( in
- case CAP_PROP_FPS:
- return get_fps();
- case CAP_PROP_FOURCC:
-- codec_id = video_st->codec->codec_id;
-- codec_tag = (double) video_st->codec->codec_tag;
-+ codec_id = video_st->codecpar->codec_id;
-+ codec_tag = (double) video_st->codecpar->codec_tag;
-
- if(codec_tag || codec_id == AV_CODEC_ID_NONE)
- {
-@@ -1587,7 +1624,7 @@ double CvCapture_FFMPEG::getProperty( in
- return _opencv_ffmpeg_get_sample_aspect_ratio(ic->streams[video_stream]).den;
- case CAP_PROP_CODEC_PIXEL_FORMAT:
- {
-- AVPixelFormat pix_fmt = video_st->codec->pix_fmt;
-+ AVPixelFormat pix_fmt = VIDEO_CODEC->pix_fmt;
- unsigned int fourcc_tag = avcodec_pix_fmt_to_codec_tag(pix_fmt);
- return (fourcc_tag == 0) ? (double)-1 : (double)fourcc_tag;
- }
-@@ -1667,7 +1704,7 @@ double CvCapture_FFMPEG::get_fps() const
-
- if (fps < eps_zero)
- {
-- fps = 1.0 / r2d(ic->streams[video_stream]->codec->time_base);
-+ fps = 1.0 / r2d(VIDEO_CODEC->time_base);
- }
- #endif
- return fps;
-@@ -1724,7 +1761,7 @@ void CvCapture_FFMPEG::seek(int64_t _fra
- 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);
-+ avcodec_flush_buffers(VIDEO_CODEC);
- if( _frame_number > 0 )
- {
- grabFrame();
-@@ -1829,7 +1866,7 @@ struct CvVideoWriter_FFMPEG
-
- void init();
-
-- AVOutputFormat * fmt;
-+ const AVOutputFormat * fmt;
- AVFormatContext * oc;
- uint8_t * outbuf;
- uint32_t outbuf_size;
-@@ -1838,6 +1875,7 @@ struct CvVideoWriter_FFMPEG
- AVFrame * input_picture;
- uint8_t * picbuf;
- AVStream * video_st;
-+ AVCodecContext * video_ccx;
- AVPixelFormat input_pix_fmt;
- unsigned char * aligned_input;
- size_t aligned_input_size;
-@@ -1902,6 +1940,7 @@ void CvVideoWriter_FFMPEG::init()
- input_picture = 0;
- picbuf = 0;
- video_st = 0;
-+ video_ccx = 0;
- input_pix_fmt = AV_PIX_FMT_NONE;
- aligned_input = NULL;
- aligned_input_size = 0;
-@@ -1959,15 +1998,17 @@ static bool icv_configure_video_stream_F
- int w, int h, int bitrate,
- double fps, AVPixelFormat pixel_format)
- {
-- AVCodecContext *c = st->codec;
-+ const AVCodecParameters *cp = st->codecpar;
- int frame_rate, frame_rate_base;
-+ AVCodecContext *c = avcodec_alloc_context3(avcodec_find_decoder(cp->codec_id));
-+ avcodec_parameters_to_context(c, cp);
-
- c->codec_id = codec->id;
- c->codec_type = AVMEDIA_TYPE_VIDEO;
-
- // Set per-codec defaults
- CV_CODEC_ID c_id = c->codec_id;
-- avcodec_get_context_defaults3(c, codec);
-+ // avcodec_get_context_defaults3(c, codec);
- // avcodec_get_context_defaults3 erases codec_id for some reason
- c->codec_id = c_id;
-
-@@ -2070,11 +2111,10 @@ static bool icv_configure_video_stream_F
-
- static const int OPENCV_NO_FRAMES_WRITTEN_CODE = 1000;
-
--static int icv_av_write_frame_FFMPEG( AVFormatContext * oc, AVStream * video_st,
-+static int icv_av_write_frame_FFMPEG( AVFormatContext * oc, AVStream * video_st, AVCodecContext * c,
- uint8_t *, uint32_t,
- AVFrame * picture, int frame_idx)
- {
-- AVCodecContext* c = video_st->codec;
- int ret = OPENCV_NO_FRAMES_WRITTEN_CODE;
-
- #if LIBAVFORMAT_BUILD < CALC_FFMPEG_VERSION(57, 0, 0)
-@@ -2173,7 +2213,7 @@ bool CvVideoWriter_FFMPEG::writeFrame( c
- height = frame_height;
-
- // typecast from opaque data type to implemented struct
-- AVCodecContext* c = video_st->codec;
-+ AVCodecContext* c = VIDEO_CODEC;
-
- // FFmpeg contains SIMD optimizations which can sometimes read data past
- // the supplied input buffer.
-@@ -2251,14 +2291,14 @@ bool CvVideoWriter_FFMPEG::writeFrame( c
-
- bool ret;
- #if USE_AV_HW_CODECS
-- if (video_st->codec->hw_device_ctx) {
-+ if (VIDEO_CODEC->hw_device_ctx) {
- // copy data to HW frame
- AVFrame* hw_frame = av_frame_alloc();
- if (!hw_frame) {
- CV_LOG_ERROR(NULL, "Error allocating AVFrame (av_frame_alloc)");
- return false;
- }
-- if (av_hwframe_get_buffer(video_st->codec->hw_frames_ctx, hw_frame, 0) < 0) {
-+ if (av_hwframe_get_buffer(VIDEO_CODEC->hw_frames_ctx, hw_frame, 0) < 0) {
- CV_LOG_ERROR(NULL, "Error obtaining HW frame (av_hwframe_get_buffer)");
- av_frame_free(&hw_frame);
- return false;
-@@ -2269,14 +2309,14 @@ bool CvVideoWriter_FFMPEG::writeFrame( c
- return false;
- }
- hw_frame->pts = frame_idx;
-- int ret_write = icv_av_write_frame_FFMPEG(oc, video_st, outbuf, outbuf_size, hw_frame, frame_idx);
-+ int ret_write = icv_av_write_frame_FFMPEG(oc, video_st, VIDEO_CODEC, outbuf, outbuf_size, hw_frame, frame_idx);
- ret = ret_write >= 0 ? true : false;
- av_frame_free(&hw_frame);
- } else
- #endif
- {
- picture->pts = frame_idx;
-- int ret_write = icv_av_write_frame_FFMPEG(oc, video_st, outbuf, outbuf_size, picture, frame_idx);
-+ int ret_write = icv_av_write_frame_FFMPEG(oc, video_st, VIDEO_CODEC, outbuf, outbuf_size, picture, frame_idx);
- ret = ret_write >= 0 ? true : false;
- }
-
-@@ -2287,7 +2327,7 @@ bool CvVideoWriter_FFMPEG::writeFrame( c
-
- bool CvVideoWriter_FFMPEG::writeHWFrame(cv::InputArray input) {
- #if USE_AV_HW_CODECS
-- if (!video_st->codec->hw_frames_ctx)
-+ if (!VIDEO_CODEC->hw_frames_ctx)
- return false;
-
- // Get hardware frame from frame pool
-@@ -2295,20 +2335,20 @@ bool CvVideoWriter_FFMPEG::writeHWFrame(
- if (!hw_frame) {
- return false;
- }
-- if (av_hwframe_get_buffer(video_st->codec->hw_frames_ctx, hw_frame, 0) < 0) {
-+ if (av_hwframe_get_buffer(VIDEO_CODEC->hw_frames_ctx, hw_frame, 0) < 0) {
- av_frame_free(&hw_frame);
- return false;
- }
-
- // GPU to GPU copy
-- if (!hw_copy_umat_to_frame(video_st->codec->hw_device_ctx, input, hw_frame)) {
-+ if (!hw_copy_umat_to_frame(VIDEO_CODEC->hw_device_ctx, input, hw_frame)) {
- av_frame_free(&hw_frame);
- return false;
- }
-
- // encode
- hw_frame->pts = frame_idx;
-- icv_av_write_frame_FFMPEG( oc, video_st, outbuf, outbuf_size, hw_frame, frame_idx);
-+ icv_av_write_frame_FFMPEG( oc, video_st, VIDEO_CODEC, outbuf, outbuf_size, hw_frame, frame_idx);
- frame_idx++;
-
- av_frame_free(&hw_frame);
-@@ -2361,7 +2401,7 @@ void CvVideoWriter_FFMPEG::close()
- {
- for(;;)
- {
-- int ret = icv_av_write_frame_FFMPEG( oc, video_st, outbuf, outbuf_size, NULL, frame_idx);
-+ int ret = icv_av_write_frame_FFMPEG( oc, video_st, VIDEO_CODEC, outbuf, outbuf_size, NULL, frame_idx);
- if( ret == OPENCV_NO_FRAMES_WRITTEN_CODE || ret < 0 )
- break;
- }
-@@ -2376,7 +2416,7 @@ void CvVideoWriter_FFMPEG::close()
- }
-
- // free pictures
-- if( video_st->codec->pix_fmt != input_pix_fmt)
-+ if( VIDEO_CODEC->pix_fmt != input_pix_fmt)
- {
- if(picture->data[0])
- free(picture->data[0]);
-@@ -2388,7 +2428,7 @@ void CvVideoWriter_FFMPEG::close()
- av_free(input_picture);
-
- /* close codec */
-- avcodec_close(video_st->codec);
-+ avcodec_close(VIDEO_CODEC);
-
- av_free(outbuf);
-
-@@ -2595,7 +2635,7 @@ bool CvVideoWriter_FFMPEG::open( const c
-
- /* set file name */
- oc->oformat = fmt;
-- snprintf(oc->filename, sizeof(oc->filename), "%s", filename);
-+ snprintf(oc->url, sizeof(oc->url), "%s", filename);
-
- /* set some options */
- oc->max_delay = (int)(0.7*AV_TIME_BASE); /* This reduces buffer underrun warnings with MPEG */
-@@ -2711,7 +2751,7 @@ bool CvVideoWriter_FFMPEG::open( const c
- double bitrate = std::min(bitrate_scale*fps*width*height, (double)INT_MAX/2);
-
- if (codec_id == AV_CODEC_ID_NONE) {
-- codec_id = av_guess_codec(oc->oformat, NULL, oc->filename, NULL, AVMEDIA_TYPE_VIDEO);
-+ codec_id = av_guess_codec(oc->oformat, NULL, oc->url, NULL, AVMEDIA_TYPE_VIDEO);
- }
-
- // Add video stream to output file
-@@ -2729,11 +2769,12 @@ bool CvVideoWriter_FFMPEG::open( const c
- }
- #endif
-
-- AVCodecContext *c = video_st->codec;
-+ AVCodecContext *c = avcodec_alloc_context3(avcodec_find_encoder(codec_id));
-+ video_ccx = c;
-
- // find and open encoder, try HW acceleration types specified in 'hw_acceleration' list (in order)
- int err = -1;
-- AVCodec* codec = NULL;
-+ const AVCodec* codec = NULL;
- #if USE_AV_HW_CODECS
- AVBufferRef* hw_device_ctx = NULL;
- HWAccelIterator accel_iter(va_type, true/*isEncoder*/, dict);
More information about the arch-commits
mailing list