Package: dvswitch
Version: 0.8.3.6-1.2
Followup-For: Bug #747868
User: ubuntu-de...@lists.ubuntu.com
Usertags: origin-ubuntu utopic ubuntu-patch

Dear Maintainer,

In Ubuntu, the attached patch was applied to achieve the following:

  * Adapt and apply upstream patch (from newer version of dvswitch) to follow
    renaming of CodecID to AVCodecID and fix FTBFS against libav10.
  * Also adapt and apply upstream patch to stop using avcodec_encode_video
    (also fixing the FTBFS against libav10).

Thanks for considering the patch.

Logan Rosen



-- System Information:
Debian Release: jessie/sid
  APT prefers utopic-updates
  APT policy: (500, 'utopic-updates'), (500, 'utopic-security'), (500, 
'utopic'), (100, 'utopic-backports')
Architecture: amd64 (x86_64)
Foreign Architectures: i386

Kernel: Linux 3.15.0-4-generic (SMP w/1 CPU core)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
diff -u dvswitch-0.8.3.6/src/auto_codec.cpp dvswitch-0.8.3.6/src/auto_codec.cpp
--- dvswitch-0.8.3.6/src/auto_codec.cpp
+++ dvswitch-0.8.3.6/src/auto_codec.cpp
@@ -21,7 +21,7 @@
     } initialiser;
 }
 
-auto_codec auto_codec_open_decoder(CodecID codec_id)
+auto_codec auto_codec_open_decoder(AVCodecID codec_id)
 {
     auto_codec result(avcodec_alloc_context3(NULL));
     if (!result.get())
@@ -30,7 +30,7 @@
     return result;
 }
 
-void auto_codec_open_decoder(const auto_codec & context, CodecID codec_id)
+void auto_codec_open_decoder(const auto_codec & context, AVCodecID codec_id)
 {
     boost::mutex::scoped_lock lock(avcodec_mutex);
     AVCodec * codec = avcodec_find_decoder(codec_id);
@@ -39,7 +39,7 @@
     os_check_error("avcodec_open", -avcodec_open2(context.get(), codec, NULL));
 }
 
-auto_codec auto_codec_open_encoder(CodecID codec_id)
+auto_codec auto_codec_open_encoder(AVCodecID codec_id)
 {
     auto_codec result(avcodec_alloc_context3(NULL));
     if (!result.get())
@@ -48,7 +48,7 @@
     return result;
 }
 
-void auto_codec_open_encoder(const auto_codec & context, CodecID codec_id)
+void auto_codec_open_encoder(const auto_codec & context, AVCodecID codec_id)
 {
     boost::mutex::scoped_lock lock(avcodec_mutex);
     AVCodec * codec = avcodec_find_encoder(codec_id);
diff -u dvswitch-0.8.3.6/src/dv_display_widget.cpp dvswitch-0.8.3.6/src/dv_display_widget.cpp
--- dvswitch-0.8.3.6/src/dv_display_widget.cpp
+++ dvswitch-0.8.3.6/src/dv_display_widget.cpp
@@ -92,7 +92,7 @@
     if (!decoder)
 	throw std::bad_alloc();
     decoder->lowres = lowres;
-    auto_codec_open_decoder(decoder_, CODEC_ID_DVVIDEO);
+    auto_codec_open_decoder(decoder_, AV_CODEC_ID_DVVIDEO);
     decoder->opaque = this;
     decoder->get_buffer = get_buffer;
     decoder->release_buffer = release_buffer;
diff -u dvswitch-0.8.3.6/src/mixer.cpp dvswitch-0.8.3.6/src/mixer.cpp
--- dvswitch-0.8.3.6/src/mixer.cpp
+++ dvswitch-0.8.3.6/src/mixer.cpp
@@ -617,7 +617,7 @@
     unsigned serial_num = 0;
     const mix_data * m = 0;
 
-    auto_codec decoder(auto_codec_open_decoder(CODEC_ID_DVVIDEO));
+    auto_codec decoder(auto_codec_open_decoder(AV_CODEC_ID_DVVIDEO));
     AVCodecContext * dec = decoder.get();
     dec->get_buffer = raw_frame_get_buffer;
     dec->release_buffer = raw_frame_release_buffer;
@@ -643,7 +643,7 @@
 	std::cout << "INFO: DV encoder threads: " << enc_thread_count << "\n";
     }
 
-    auto_codec_open_encoder(encoder, CODEC_ID_DVVIDEO);
+    auto_codec_open_encoder(encoder, AV_CODEC_ID_DVVIDEO);
 
     for (;;)
     {
@@ -728,9 +728,12 @@
 	    enc->pix_fmt = mixed_raw->pix_fmt;
 	    mixed_raw->header.pts = serial_num;
   	    mixed_dv = allocate_dv_frame();
-	    int out_size = avcodec_encode_video(enc,
-						mixed_dv->buffer, system->size, 
-						&mixed_raw->header);
+	    AVPacket packet;
+	    memset(&packet, 0, sizeof(AVPacket));
+	    int got_packet;
+	    int out_size = avcodec_encode_video2(enc,
+						&packet,
+						&mixed_raw->header, &got_packet);
 	    assert(size_t(out_size) == system->size);
 	    mixed_dv->serial_num = serial_num;

diff -u dvswitch-0.8.3.6/src/auto_codec.hpp dvswitch-0.8.3.6/src/auto_codec.cpp
--- dvswitch-0.8.3.6.orig/src/auto_codec.hpp
+++ dvswitch-0.8.3.6/src/auto_codec.hpp
@@ -19,9 +19,9 @@
 typedef auto_handle<AVCodecContext *, auto_codec_closer, auto_codec_factory>
 auto_codec;
 
-auto_codec auto_codec_open_decoder(CodecID);
-void auto_codec_open_decoder(const auto_codec &, CodecID);
-auto_codec auto_codec_open_encoder(CodecID);
-void auto_codec_open_encoder(const auto_codec &, CodecID);
+auto_codec auto_codec_open_decoder(AVCodecID);
+void auto_codec_open_decoder(const auto_codec &, AVCodecID);
+auto_codec auto_codec_open_encoder(AVCodecID);
+void auto_codec_open_encoder(const auto_codec &, AVCodecID);
 
 #endif // !INC_AUTO_CODEC_HPP

Reply via email to