[SCM] mplayer2/master: Add patch to fix compilation against libav10

siretart at users.alioth.debian.org siretart at users.alioth.debian.org
Sun Mar 9 00:21:30 UTC 2014


The following commit has been merged in the master branch:
commit 06a3cf98b99fa39081158c40a972fb70858ebf9d
Author: Reinhard Tartler <siretart at tauware.de>
Date:   Sat Mar 8 19:15:47 2014 -0500

    Add patch to fix compilation against libav10

diff --git a/debian/patches/ftbfs-libav10.patch b/debian/patches/ftbfs-libav10.patch
new file mode 100644
index 0000000..6b60f62
--- /dev/null
+++ b/debian/patches/ftbfs-libav10.patch
@@ -0,0 +1,163 @@
+Description: Fix compilation against libav10
+ Patch based on work by Anton Khirnov, rebasing on mplayer2 revision
+ 2c378c7 allowed great simplification.
+Author: Reinhard Tartler <siretart at tauware.de>
+Origin: debian
+Bug-Debian: http://bugs.debian.org/739337
+Last-Update: 2014-03-08
+
+--- mplayer2-2.0-728-g2c378c7.orig/Makefile
++++ mplayer2-2.0-728-g2c378c7/Makefile
+@@ -301,7 +301,6 @@ SRCS_COMMON = asxparser.c \
+               libmpcodecs/vf_ilpack.c \
+               libmpcodecs/vf_ivtc.c \
+               libmpcodecs/vf_kerndeint.c \
+-              libmpcodecs/vf_lavc.c \
+               libmpcodecs/vf_lavcdeint.c \
+               libmpcodecs/vf_mirror.c \
+               libmpcodecs/vf_noformat.c \
+--- mplayer2-2.0-728-g2c378c7.orig/screenshot.c
++++ mplayer2-2.0-728-g2c378c7/screenshot.c
+@@ -82,6 +82,7 @@ static int write_png(screenshot_ctx *ctx
+     FILE *fp = NULL;
+     void *outbuffer = NULL;
+     int success = 0;
++    int got_output;
+ 
+     struct AVCodec *png_codec = avcodec_find_encoder(AV_CODEC_ID_PNG);
+     AVCodecContext *avctx = NULL;
+@@ -104,10 +105,8 @@ static int write_png(screenshot_ctx *ctx
+         goto error_exit;
+     }
+ 
++    AVPacket pkt = { 0 };
+     size_t outbuffer_size = image->width * image->height * 3 * 2;
+-    outbuffer = malloc(outbuffer_size);
+-    if (!outbuffer)
+-        goto error_exit;
+ 
+     AVFrame *pic = ctx->pic;
+     avcodec_get_frame_defaults(pic);
+@@ -115,8 +114,8 @@ static int write_png(screenshot_ctx *ctx
+         pic->data[n] = image->planes[n];
+         pic->linesize[n] = image->stride[n];
+     }
+-    int size = avcodec_encode_video(avctx, outbuffer, outbuffer_size, pic);
+-    if (size < 1)
++    int ret = avcodec_encode_video2(avctx, &pkt, pic, &got_output);
++    if (ret < 0 || !got_output)
+         goto error_exit;
+ 
+     fp = fopen(fname, "wb");
+@@ -126,8 +125,9 @@ static int write_png(screenshot_ctx *ctx
+         goto error_exit;
+     }
+ 
+-    fwrite(outbuffer, size, 1, fp);
++    fwrite(pkt.data, pkt.size, 1, fp);
+     fflush(fp);
++    av_free_packet(&pkt);
+ 
+     if (ferror(fp))
+         goto error_exit;
+@@ -139,7 +139,6 @@ error_exit:
+     av_free(avctx);
+     if (fp)
+         fclose(fp);
+-    free(outbuffer);
+     return success;
+ }
+ 
+--- mplayer2-2.0-728-g2c378c7.orig/libmpcodecs/vf.c
++++ mplayer2-2.0-728-g2c378c7/libmpcodecs/vf.c
+@@ -48,7 +48,7 @@ extern const vf_info_t vf_info_flip;
+ extern const vf_info_t vf_info_rotate;
+ extern const vf_info_t vf_info_mirror;
+ extern const vf_info_t vf_info_palette;
+-extern const vf_info_t vf_info_lavc;
++//extern const vf_info_t vf_info_lavc;
+ extern const vf_info_t vf_info_dvbscale;
+ extern const vf_info_t vf_info_cropdetect;
+ extern const vf_info_t vf_info_test;
+@@ -131,7 +131,7 @@ static const vf_info_t *const filter_lis
+ #ifdef CONFIG_LIBPOSTPROC
+     &vf_info_pp,
+ #endif
+-    &vf_info_lavc,
++    //&vf_info_lavc,
+     &vf_info_lavcdeint,
+     &vf_info_screenshot,
+     &vf_info_fspp,
+--- mplayer2-2.0-728-g2c378c7.orig/libvo/vo_png.c
++++ mplayer2-2.0-728-g2c378c7/libvo/vo_png.c
+@@ -52,8 +52,6 @@ static int z_compression;
+ static int framenum;
+ static int use_alpha;
+ static AVCodecContext *avctx;
+-static uint8_t *outbuffer;
+-int outbuffer_size;
+ 
+ static int
+ config(uint32_t width, uint32_t height, uint32_t d_width, uint32_t d_height, uint32_t flags, char *title, uint32_t format)
+@@ -87,9 +85,10 @@ config(uint32_t width, uint32_t height,
+ 
+ 
+ static uint32_t draw_image(mp_image_t* mpi){
++    AVPacket pkt = { 0 };
+     AVFrame pic;
+     int buffersize;
+-    int res;
++    int res, got_output;
+     char buf[100];
+     FILE *outfile;
+ 
+@@ -105,22 +104,18 @@ static uint32_t draw_image(mp_image_t* m
+ 
+     pic.data[0] = mpi->planes[0];
+     pic.linesize[0] = mpi->stride[0];
+-    buffersize = mpi->w * mpi->h * 8;
+-    if (outbuffer_size < buffersize) {
+-        av_freep(&outbuffer);
+-        outbuffer = av_malloc(buffersize);
+-        outbuffer_size = buffersize;
+-    }
+-    res = avcodec_encode_video(avctx, outbuffer, outbuffer_size, &pic);
+ 
+-    if(res < 0){
++    res = avcodec_encode_video2(avctx, &pkt, &pic, &got_output);
++
++    if(res < 0 || !got_output){
+  	    mp_msg(MSGT_VO,MSGL_WARN, "[VO_PNG] Error in create_png.\n");
+             fclose(outfile);
+ 	    return 1;
+     }
+ 
+-    fwrite(outbuffer, res, 1, outfile);
++    fwrite(pkt.data, pkt.size, 1, outfile);
+     fclose(outfile);
++    av_free_packet(&pkt);
+ 
+     return VO_TRUE;
+ }
+@@ -157,8 +152,6 @@ static void uninit(void)
+     if (avctx)
+         avcodec_close(avctx);
+     av_freep(&avctx);
+-    av_freep(&outbuffer);
+-    outbuffer_size = 0;
+ }
+ 
+ static void check_events(void){}
+--- mplayer2-2.0-728-g2c378c7.orig/libmpdemux/demux_lavf.c
++++ mplayer2-2.0-728-g2c378c7/libmpdemux/demux_lavf.c
+@@ -422,8 +422,8 @@ static void handle_stream(demuxer_t *dem
+          * heuristic makes up works with subtitles in practice.
+          */
+         double fps;
+-        if (st->r_frame_rate.num)
+-            fps = av_q2d(st->r_frame_rate);
++        if (st->avg_frame_rate.num)
++            fps = av_q2d(st->avg_frame_rate);
+         else
+             fps = 1.0 / FFMAX(av_q2d(st->time_base),
+                               av_q2d(st->codec->time_base) *
diff --git a/debian/patches/series b/debian/patches/series
index e69de29..d6505d7 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -0,0 +1 @@
+ftbfs-libav10.patch

-- 
mplayer2 packaging



More information about the pkg-multimedia-commits mailing list