diff options
author | Lee Chong Yew | 2022-12-07 20:54:40 +0800 |
---|---|---|
committer | Lee Chong Yew | 2022-12-07 20:54:40 +0800 |
commit | 2a5a9b3278ffadfe3936c234c58fb0a484346223 (patch) | |
tree | 54b935bec753215c640303a6398f90a02f1b53bd | |
parent | f7f53abc244613fffe657fb77990eb700506c486 (diff) | |
download | aur-2a5a9b3278ffadfe3936c234c58fb0a484346223.tar.gz |
Added experimental ffmpeg 5 patch. Please provide feedback if this does not work.
-rw-r--r-- | .SRCINFO | 10 | ||||
-rw-r--r-- | PKGBUILD | 17 | ||||
-rw-r--r-- | libquicktime-1.2.4-ffmpeg5.patch | 342 |
3 files changed, 361 insertions, 8 deletions
@@ -1,7 +1,7 @@ pkgbase = libquicktime pkgdesc = A library for reading and writing quicktime files pkgver = 1.2.4 - pkgrel = 27 + pkgrel = 28 url = http://libquicktime.sourceforge.net/ arch = x86_64 license = LGPL2.1 @@ -9,7 +9,8 @@ pkgbase = libquicktime makedepends = doxygen makedepends = faac makedepends = faad2 - makedepends = ffmpeg4.4 + makedepends = ffmpeg +# makedepends = ffmpeg4.4 makedepends = git makedepends = gtk2 makedepends = lame @@ -30,6 +31,7 @@ pkgbase = libquicktime depends = zlib optdepends = alsa-lib: for lqtplay optdepends = faac: for lqt_faac plugin + optdepends = ffmpeg: for lqt_ffmpeg plugin (ffmpeg 5 support) optdepends = ffmpeg4.4: for lqt_ffmpeg plugin optdepends = gtk2: for libquicktime_config optdepends = lame: for lqt_lame plugin @@ -46,6 +48,7 @@ pkgbase = libquicktime optdepends = schroedinger: for lqt_schroedinger plugin optdepends = sndio: for lqtplay optdepends = x264: for lqt_x264 plugin + optdepends = provides = libquicktime.so options = !lto source = https://downloads.sourceforge.net/sourceforge/libquicktime/libquicktime-1.2.4.tar.gz @@ -57,6 +60,7 @@ pkgbase = libquicktime source = libquicktime-1.2.4-ffmpeg4.patch source = libquicktime-1.2.4-ffmpeg-codecs.patch source = libquicktime-1.2.4-libavutil.patch + source = libquicktime-1.2.4-ffmpeg5.patch sha512sums = 6ab6cd62ae2361bb3ad73725e9e8baa2b03361bc23e9e34b24f90c0e2bec4337de950ed7f30a6a1d2e67ab33e8f0c43538369fd07e417f54b84583a3c331f8dd sha512sums = 759fee13bc96db036063efcd8288c0e467ce811b597cf6c0ceed1c8927593963174f4f3324512db0e773e936a4b9fe5c8d8fc9e0f00b2ce59110661175986f9c sha512sums = 93639d3fe12eefddd1b457be702ec0a4a64a73c44fce6b3134e50bb9a4e7e5f25d256d3ace6ec5e774f2db4c0d68725f3e35e901f7d932a4be9cba566eab528e @@ -66,6 +70,7 @@ pkgbase = libquicktime sha512sums = 1b11a82d694654976a5f79cd8feb27eec3810e09a66dc58ca576eaf1f96e4948abd4dae7955a7da6cf99ae6ffef9e183b39090d96cc6b5fe216b4c4f4faff7a8 sha512sums = 20c535444de1f3e9a68c35ee4eb409f150e6340fd43dda4544791454f42c031b24c08f651e0351f5a22dcb59459ac372aa70d82a1d20482b2d997589e19087fd sha512sums = 691110dc18f6646e2e17f40c6a42911a6b8eaa8cea20b5595f20d218d51da11d11923a3001b7ad7c3ad6bd0d90e712b95ccee5526fa1bec176cd27813e4a775e + sha512sums = bfaa78504b93402a07e6e92db92322cf178ab67db3c61d1c67db5644796b07330885f857fdcac09271a6bbfd5dee29e9d567294fb0357f29b18072b06a4b762e b2sums = 6c50965be5d19fb4c57ea6b36f2581ebd575d78a34f2df7029ce2c6ee560e8135a953a2e85d91d189e2c01b97c99804d0eab602866b88a5f07c36351174680f0 b2sums = 2794d13a0afa8a948f8f1335d7ee0a3d75691bbb9c619716707f533f52e8a8826c4a883b25db2ad8fb6544ce8b7c0fa883158b110c10b896e124b6ade9d18945 b2sums = 8d5be1d1a297d89da1256035042a9760227815b8e73cb994b04b3ac4a2d7b83f79625bb62dc89266ac2f3eebd4cb033c8eb66388aca6097f4dbcc86d919dbd72 @@ -75,6 +80,7 @@ pkgbase = libquicktime b2sums = bd1299c24b738b3752e4d8d50ed1b2fa2f208c83e577876118d115fca22293e102614ae0cdc168060115f7145d951d290bccf21154fda4aabf55329d310b6aca b2sums = e770000ea0c39f77bc36e7e5252e281b9f9d06a136c655cd702332cc8581f128263e172e41eab3b7ce2543da7065d8efc28c048588e577db5ee6ec4bfeb1019b b2sums = 0a29c9a3d1eae31731b76536a22aa23a4888b8ac55c3176c60a152330fce37e8031a4269fa28026133c7061cd769b1428bf24fe59fed574e39d52ea00b6e00a0 + b2sums = e67d8b0ac52a37594c1499270b04a74963b01567567d7469579238ba177ea7259215378d03484474bdc7caef309585c53263b4e87a68a5f8ed0b332e0118b675 pkgname = libquicktime depends = glib2 @@ -1,4 +1,4 @@ -# Maintainer: +# Maintainer: RAMChYLD <ramchyld@gmail.com> # Contributor: FabioLolix # Contributor: David Runge <dvzrv@archlinux.org> # Contributor: Federico Cinelli <cinelli@aur.archlinux.org> @@ -7,19 +7,20 @@ pkgname=libquicktime _commit='27295919b3a1036ba8bc06cec414dcc501f72d89' pkgver=1.2.4 -pkgrel=27 +pkgrel=28 pkgdesc="A library for reading and writing quicktime files" arch=(x86_64) license=(LGPL2.1) url="http://libquicktime.sourceforge.net/" depends=(glib2 glibc zlib) -# NOTE: not compatible with ffmpeg >= 5, so switch to ffmpeg4.4 or remove -makedepends=(alsa-lib doxygen faac faad2 ffmpeg4.4 git gtk2 lame libdv libglvnd +# NOTE: not applied experimental ffmpeg5 patch. Please provide feedback if this works for you +makedepends=(alsa-lib doxygen faac faad2 ffmpeg git gtk2 lame libdv libglvnd libjpeg-turbo libvorbis libx11 libxaw libxext libxt libxv schroedinger sndio x264) optdepends=('alsa-lib: for lqtplay' 'faac: for lqt_faac plugin' 'ffmpeg4.4: for lqt_ffmpeg plugin' + 'ffmpeg5: for lqt_ffmpeg plugin (ffmpeg5 version)' 'gtk2: for libquicktime_config' 'lame: for lqt_lame plugin' 'libdv: for lqt_dv plugin' @@ -47,6 +48,7 @@ source=( "${pkgname}-1.2.4-ffmpeg4.patch" "${pkgname}-1.2.4-ffmpeg-codecs.patch" "${pkgname}-1.2.4-libavutil.patch" + "${pkgname}-1.2.4-ffmpeg5.patch" ) sha512sums=('6ab6cd62ae2361bb3ad73725e9e8baa2b03361bc23e9e34b24f90c0e2bec4337de950ed7f30a6a1d2e67ab33e8f0c43538369fd07e417f54b84583a3c331f8dd' '759fee13bc96db036063efcd8288c0e467ce811b597cf6c0ceed1c8927593963174f4f3324512db0e773e936a4b9fe5c8d8fc9e0f00b2ce59110661175986f9c' @@ -56,7 +58,8 @@ sha512sums=('6ab6cd62ae2361bb3ad73725e9e8baa2b03361bc23e9e34b24f90c0e2bec4337de9 '2a7e06c03b0f64f02b923c1a0e7121f4e1ea735f19a6df8ce8daf18177ead132d1ae921c64f3770042db3bbf29f15a7fcceece835d475e052c4c3bb7139c9e2e' '1b11a82d694654976a5f79cd8feb27eec3810e09a66dc58ca576eaf1f96e4948abd4dae7955a7da6cf99ae6ffef9e183b39090d96cc6b5fe216b4c4f4faff7a8' '20c535444de1f3e9a68c35ee4eb409f150e6340fd43dda4544791454f42c031b24c08f651e0351f5a22dcb59459ac372aa70d82a1d20482b2d997589e19087fd' - '691110dc18f6646e2e17f40c6a42911a6b8eaa8cea20b5595f20d218d51da11d11923a3001b7ad7c3ad6bd0d90e712b95ccee5526fa1bec176cd27813e4a775e') + '691110dc18f6646e2e17f40c6a42911a6b8eaa8cea20b5595f20d218d51da11d11923a3001b7ad7c3ad6bd0d90e712b95ccee5526fa1bec176cd27813e4a775e' + 'bfaa78504b93402a07e6e92db92322cf178ab67db3c61d1c67db5644796b07330885f857fdcac09271a6bbfd5dee29e9d567294fb0357f29b18072b06a4b762e') b2sums=('6c50965be5d19fb4c57ea6b36f2581ebd575d78a34f2df7029ce2c6ee560e8135a953a2e85d91d189e2c01b97c99804d0eab602866b88a5f07c36351174680f0' '2794d13a0afa8a948f8f1335d7ee0a3d75691bbb9c619716707f533f52e8a8826c4a883b25db2ad8fb6544ce8b7c0fa883158b110c10b896e124b6ade9d18945' '8d5be1d1a297d89da1256035042a9760227815b8e73cb994b04b3ac4a2d7b83f79625bb62dc89266ac2f3eebd4cb033c8eb66388aca6097f4dbcc86d919dbd72' @@ -65,7 +68,8 @@ b2sums=('6c50965be5d19fb4c57ea6b36f2581ebd575d78a34f2df7029ce2c6ee560e8135a953a2 '8a1e7b5df65f5297f59aa17c4a52706413c1ffd88d8645de7359ec26f7059101ab81ac135cf7ef707a8acbeb709e1a6dae03d6a7e7f70c7e88185ebb271acbe4' 'bd1299c24b738b3752e4d8d50ed1b2fa2f208c83e577876118d115fca22293e102614ae0cdc168060115f7145d951d290bccf21154fda4aabf55329d310b6aca' 'e770000ea0c39f77bc36e7e5252e281b9f9d06a136c655cd702332cc8581f128263e172e41eab3b7ce2543da7065d8efc28c048588e577db5ee6ec4bfeb1019b' - '0a29c9a3d1eae31731b76536a22aa23a4888b8ac55c3176c60a152330fce37e8031a4269fa28026133c7061cd769b1428bf24fe59fed574e39d52ea00b6e00a0') + '0a29c9a3d1eae31731b76536a22aa23a4888b8ac55c3176c60a152330fce37e8031a4269fa28026133c7061cd769b1428bf24fe59fed574e39d52ea00b6e00a0' + 'e67d8b0ac52a37594c1499270b04a74963b01567567d7469579238ba177ea7259215378d03484474bdc7caef309585c53263b4e87a68a5f8ed0b332e0118b675') export PKG_CONFIG_PATH='/usr/lib/ffmpeg4.4/pkgconfig' @@ -82,6 +86,7 @@ prepare() { patch -Np1 -i "../${pkgname}-1.2.4-ffmpeg4.patch" patch -Np1 -i "../${pkgname}-1.2.4-libavutil.patch" patch -Np1 -i "../${pkgname}-1.2.4-ffmpeg-codecs.patch" + patch -Np1 -i "../${pkgname}-1.2.4-ffmpeg5.patch" autoreconf -fiv } diff --git a/libquicktime-1.2.4-ffmpeg5.patch b/libquicktime-1.2.4-ffmpeg5.patch new file mode 100644 index 000000000000..d340f084af41 --- /dev/null +++ b/libquicktime-1.2.4-ffmpeg5.patch @@ -0,0 +1,342 @@ +--- a/plugins/ffmpeg/audio.c ++++ b/plugins/ffmpeg/audio.c +@@ -423,8 +423,8 @@ static int a52_header_read(a52_header * + typedef struct + { + AVCodecContext * avctx; +- AVCodec * encoder; +- AVCodec * decoder; ++ AVCodec const * encoder; ++ AVCodec const * decoder; + + int initialized; + +@@ -512,7 +512,6 @@ static int decode_chunk_vbr(quicktime_t + + #if DECODE_AUDIO4 + AVFrame f; +- int got_frame; + #endif + + chunk_packets = lqt_audio_num_vbr_packets(file, track, track_map->cur_chunk, &num_samples); +@@ -548,13 +547,14 @@ static int decode_chunk_vbr(quicktime_t + codec->pkt.size = packet_size + AV_INPUT_BUFFER_PADDING_SIZE; + + #if DECODE_AUDIO4 +- frame_bytes = avcodec_decode_audio4(codec->avctx, &f, +- &got_frame, &codec->pkt); +- if(frame_bytes < 0) ++ if(avcodec_send_packet(codec->avctx, &codec->pkt) < 0 && ++ avcodec_receive_frame(codec->avctx, &f) < 0) + { + lqt_log(file, LQT_LOG_ERROR, LOG_DOMAIN, "avcodec_decode_audio4 error"); + break; + } ++ frame_bytes = codec->pkt.size; ++ + bytes_decoded = f.nb_samples * 2 * track_map->channels; + memcpy(&codec->sample_buffer[track_map->channels * + (codec->sample_buffer_end - +@@ -615,7 +615,6 @@ static int decode_chunk(quicktime_t * fi + + #if DECODE_AUDIO4 + AVFrame f; +- int got_frame; + #endif + + /* Read chunk */ +@@ -764,14 +763,14 @@ static int decode_chunk(quicktime_t * fi + codec->pkt.size = codec->bytes_in_chunk_buffer + AV_INPUT_BUFFER_PADDING_SIZE; + + #if DECODE_AUDIO4 +- +- frame_bytes = avcodec_decode_audio4(codec->avctx, &f, +- &got_frame, &codec->pkt); +- if(frame_bytes < 0) ++ if(avcodec_send_packet(codec->avctx, &codec->pkt) < 0 || ++ avcodec_receive_frame(codec->avctx, &f) < 0) + { + lqt_log(file, LQT_LOG_ERROR, LOG_DOMAIN, "avcodec_decode_audio4 error"); + break; + } ++ frame_bytes = codec->pkt.size; ++ + bytes_decoded = f.nb_samples * 2 * track_map->channels; + memcpy(&codec->sample_buffer[track_map->channels * + (codec->sample_buffer_end - +@@ -1198,7 +1197,6 @@ static int lqt_ffmpeg_encode_audio(quick + #if ENCODE_AUDIO2 + AVFrame f; + AVPacket pkt; +- int got_packet; + #endif + + if(!codec->initialized) +@@ -1274,15 +1272,11 @@ static int lqt_ffmpeg_encode_audio(quick + codec->avctx->frame_size * channels * 2, + 1); + +- if(avcodec_encode_audio2(codec->avctx, &pkt, +- &f, &got_packet) < 0) ++ if(avcodec_send_frame(codec->avctx, &f) < 0 || ++ avcodec_receive_packet(codec->avctx, &pkt) < 0) + return 0; + +- if(got_packet && pkt.size) +- frame_bytes = pkt.size; +- else +- frame_bytes = 0; +- ++ frame_bytes = pkt.size; + #else + frame_bytes = avcodec_encode_audio(codec->avctx, codec->chunk_buffer, + codec->chunk_buffer_alloc, +@@ -1474,8 +1468,9 @@ static int read_packet_ac3(quicktime_t * + } + + void quicktime_init_audio_codec_ffmpeg(quicktime_codec_t * codec_base, +- quicktime_audio_map_t *atrack, AVCodec *encoder, +- AVCodec *decoder) ++ quicktime_audio_map_t *atrack, ++ const AVCodec *encoder, ++ const AVCodec *decoder) + { + quicktime_ffmpeg_audio_codec_t *codec; + +--- a/plugins/ffmpeg/ffmpeg.h ++++ b/plugins/ffmpeg/ffmpeg.h +@@ -30,10 +30,12 @@ + + void quicktime_init_video_codec_ffmpeg(quicktime_codec_t * codec, + quicktime_video_map_t *vtrack, +- AVCodec *encoder, AVCodec *decoder); ++ const AVCodec *encoder, ++ const AVCodec *decoder); + void quicktime_init_audio_codec_ffmpeg(quicktime_codec_t * codec, + quicktime_audio_map_t *vtrack, +- AVCodec *encoder, AVCodec *decoder); ++ const AVCodec *encoder, ++ const AVCodec *decoder); + + void lqt_ffmpeg_set_parameter(AVCodecContext * ctx, + #if LIBAVCODEC_VERSION_MAJOR >= 54 +--- a/plugins/ffmpeg/lqt_ffmpeg.c ++++ b/plugins/ffmpeg/lqt_ffmpeg.c +@@ -315,8 +315,8 @@ struct CODECIDMAP + { + int id; + int index; +- AVCodec *encoder; +- AVCodec *decoder; ++ AVCodec const *encoder; ++ AVCodec const *decoder; + lqt_parameter_info_static_t * encode_parameters; + lqt_parameter_info_static_t * decode_parameters; + lqt_image_size_static_t * image_sizes; +@@ -947,7 +947,9 @@ static void ffmpeg_map_init(void) + return; + } + ++#if LIBAVCODEC_VERSION_MAJOR < 59 + avcodec_register_all(); ++#endif + // avcodec_init(); + ffmpeg_num_video_codecs = 0; + ffmpeg_num_audio_codecs = 0; +--- a/plugins/ffmpeg/params.c ++++ b/plugins/ffmpeg/params.c +@@ -124,12 +124,14 @@ typedef struct + } + + ++#if LIBAVCODEC_VERSION_MAJOR < 59 + enum_t prediction_method[] = + { + { "Left", FF_PRED_LEFT }, + { "Plane", FF_PRED_PLANE }, + { "Median", FF_PRED_MEDIAN } + }; ++#endif + + enum_t compare_func[] = + { +@@ -193,7 +195,9 @@ void lqt_ffmpeg_set_parameter(AVCodecCon + PARAM_INT("ff_max_qdiff",max_qdiff); + PARAM_INT("ff_max_b_frames",max_b_frames); + PARAM_FLOAT("ff_b_quant_factor",b_quant_factor); ++#if LIBAVCODEC_VERSION_MAJOR < 59 + PARAM_INT("ff_b_frame_strategy",b_frame_strategy); ++#endif + + #if LIBAVCODEC_VERSION_MAJOR >= 55 + PARAM_DICT_INT("ff_luma_elim_threshold","luma_elim_threshold"); +@@ -216,7 +220,9 @@ void lqt_ffmpeg_set_parameter(AVCodecCon + PARAM_FLOAT("ff_spatial_cplx_masking",spatial_cplx_masking); + PARAM_FLOAT("ff_p_masking",p_masking); + PARAM_FLOAT("ff_dark_masking",dark_masking); ++#if LIBAVCODEC_VERSION_MAJOR < 59 + PARAM_ENUM("ff_prediction_method",prediction_method,prediction_method); ++#endif + PARAM_ENUM("ff_me_cmp",me_cmp,compare_func); + PARAM_CMP_CHROMA("ff_me_cmp_chroma",me_cmp); + PARAM_ENUM("ff_me_sub_cmp",me_sub_cmp,compare_func); +@@ -227,17 +233,23 @@ void lqt_ffmpeg_set_parameter(AVCodecCon + PARAM_CMP_CHROMA("ff_ildct_cmp_chroma",ildct_cmp); + PARAM_INT("ff_dia_size",dia_size); + PARAM_INT("ff_last_predictor_count",last_predictor_count); ++#if LIBAVCODEC_VERSION_MAJOR < 59 + PARAM_INT("ff_pre_me",pre_me); ++#endif + PARAM_ENUM("ff_me_pre_cmp",me_pre_cmp,compare_func); + PARAM_CMP_CHROMA("ff_pre_me_cmp_chroma",me_pre_cmp); + PARAM_INT("ff_pre_dia_size",pre_dia_size); + PARAM_INT("ff_me_subpel_quality",me_subpel_quality); + PARAM_INT("ff_me_range",me_range); + PARAM_ENUM("ff_mb_decision",mb_decision,mb_decision); ++#if LIBAVCODEC_VERSION_MAJOR < 59 + PARAM_INT("ff_scenechange_threshold",scenechange_threshold); ++#endif + PARAM_DICT_INT("ff_lmin", "lmin"); + PARAM_DICT_INT("ff_lmax", "lmax"); ++#if LIBAVCODEC_VERSION_MAJOR < 59 + PARAM_INT("ff_noise_reduction",noise_reduction); ++#endif + PARAM_INT_SCALE("ff_rc_initial_buffer_occupancy",rc_initial_buffer_occupancy,1000); + + #if LIBAVCODEC_VERSION_MAJOR >= 55 +@@ -253,9 +265,13 @@ void lqt_ffmpeg_set_parameter(AVCodecCon + PARAM_DICT_INT("ff_border_masking","border_mask"); + PARAM_QP2LAMBDA("ff_mb_lmin", mb_lmin); + PARAM_QP2LAMBDA("ff_mb_lmax", mb_lmax); ++#if LIBAVCODEC_VERSION_MAJOR < 59 + PARAM_INT("ff_me_penalty_compensation",me_penalty_compensation); ++#endif + PARAM_INT("ff_bidir_refine",bidir_refine); ++#if LIBAVCODEC_VERSION_MAJOR < 59 + PARAM_INT("ff_brd_scale",brd_scale); ++#endif + PARAM_FLAG("ff_flag_qscale",AV_CODEC_FLAG_QSCALE); + PARAM_FLAG("ff_flag_4mv",AV_CODEC_FLAG_4MV); + PARAM_FLAG("ff_flag_qpel",AV_CODEC_FLAG_QPEL); +--- a/plugins/ffmpeg/video.c ++++ b/plugins/ffmpeg/video.c +@@ -61,8 +61,8 @@ enum AvidYuvRange + typedef struct + { + AVCodecContext * avctx; +- AVCodec * encoder; +- AVCodec * decoder; ++ AVCodec const * encoder; ++ AVCodec const * decoder; + int initialized; + + int decoding_delay; +@@ -878,10 +878,12 @@ static int lqt_ffmpeg_decode_video(quick + } + #endif + +- if(avcodec_decode_video2(codec->avctx, +- codec->frame, +- &got_pic, +- &codec->pkt) < 0) ++ if(avcodec_send_packet(codec->avctx, &codec->pkt) == 0 && ++ avcodec_receive_frame(codec->avctx, codec->frame) == 0) ++ { ++ got_pic = 1; ++ } ++ else + { + lqt_log(file, LQT_LOG_ERROR, LOG_DOMAIN, "Skipping corrupted frame"); + continue; +@@ -1062,10 +1064,8 @@ static void resync_ffmpeg(quicktime_t *f + #if LIBAVCODEC_BUILD >= ((52<<16)+(26<<8)+0) + codec->pkt.data = codec->buffer; + codec->pkt.size = buffer_size; +- avcodec_decode_video2(codec->avctx, +- codec->frame, +- &got_pic, +- &codec->pkt); ++ got_pic = (avcodec_send_packet(codec->avctx, &codec->pkt) == 0 && ++ avcodec_receive_frame(codec->avctx, codec->frame) == 0); + #else + avcodec_decode_video(codec->avctx, + codec->frame, +@@ -1139,7 +1139,9 @@ static int init_imx_encoder(quicktime_t + codec->avctx->intra_dc_precision = 2; + codec->avctx->qmin = 1; + codec->avctx->qmax = 3; ++#if (LIBAVCODEC_VERSION_MAJOR < 59) + codec->avctx->rtp_payload_size = 1; // ?? ++#endif + av_dict_set(&codec->options, "rc_buf_aggressivity", "0.25", 0); + codec->avctx->flags |= AV_CODEC_FLAG_INTERLACED_DCT|AV_CODEC_FLAG_LOW_DELAY; + +@@ -1290,7 +1292,6 @@ static int lqt_ffmpeg_encode_video(quick + int stats_len; + #if ENCODE_VIDEO2 + AVPacket pkt; +- int got_packet; + #endif + int64_t pts; + int kf; +@@ -1530,16 +1531,12 @@ static int lqt_ffmpeg_encode_video(quick + #if ENCODE_VIDEO2 // New + av_init_packet(&pkt); + pkt.data = codec->buffer; +- pkt.size = codec->buffer_alloc; ++ pkt.size = bytes_encoded = codec->buffer_alloc; + +- if(avcodec_encode_video2(codec->avctx, &pkt, codec->frame, &got_packet) < 0) ++ if(avcodec_send_frame(codec->avctx, codec->frame) < 0 || ++ avcodec_receive_packet(codec->avctx, &pkt) < 0) + return -1; + +- if(got_packet) +- bytes_encoded = pkt.size; +- else +- bytes_encoded = 0; +- + pts = pkt.pts; + kf = !!(pkt.flags & AV_PKT_FLAG_KEY); + +@@ -1621,7 +1618,6 @@ static int flush(quicktime_t *file, int + + #if ENCODE_VIDEO2 + AVPacket pkt; +- int got_packet; + #endif + + /* Do nothing if we didn't encode anything yet */ +@@ -1631,18 +1627,13 @@ static int flush(quicktime_t *file, int + #if ENCODE_VIDEO2 + av_init_packet(&pkt); + pkt.data = codec->buffer; +- pkt.size = codec->buffer_alloc; ++ pkt.size = bytes_encoded = codec->buffer_alloc; + +- if(avcodec_encode_video2(codec->avctx, &pkt, (AVFrame*)0, &got_packet) < 0) ++ if(avcodec_send_frame(codec->avctx, NULL) < 0 || ++ avcodec_receive_packet(codec->avctx, &pkt) < 0) + return -1; + +- if(got_packet) +- bytes_encoded = pkt.size; +- else +- return 0; +- + pts = pkt.pts; +- + kf = !!(pkt.flags & AV_PKT_FLAG_KEY); + + #else +@@ -1872,8 +1863,8 @@ static int init_compressed_dv(quicktime_ + + void quicktime_init_video_codec_ffmpeg(quicktime_codec_t * codec_base, + quicktime_video_map_t *vtrack, +- AVCodec *encoder, +- AVCodec *decoder) ++ const AVCodec *encoder, ++ const AVCodec *decoder) + { + quicktime_ffmpeg_video_codec_t *codec; + char *compressor; |