summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexis Ballier <aballier@gentoo.org>2013-01-23 12:05:37 +0000
committerAlexis Ballier <aballier@gentoo.org>2013-01-23 12:05:37 +0000
commit7c630639d8994866aed224a0234517b51976d41e (patch)
tree2f76307f5663c0002474749cb27c8e56482f36a9 /media-video/jubler
parentVersion bump, requested by Andreis Vinogradovs (diff)
downloadgentoo-2-7c630639d8994866aed224a0234517b51976d41e.tar.gz
gentoo-2-7c630639d8994866aed224a0234517b51976d41e.tar.bz2
gentoo-2-7c630639d8994866aed224a0234517b51976d41e.zip
Fix build with ffmpeg-1.1, and actually fix it working with previous versions of ffmpeg too, part of bug #443232.
(Portage version: 2.2.0_alpha159/cvs/Linux x86_64, signed Manifest commit with key 160F534A)
Diffstat (limited to 'media-video/jubler')
-rw-r--r--media-video/jubler/ChangeLog9
-rw-r--r--media-video/jubler/files/jubler-4.6.1-ffmpeg-1.patch274
-rw-r--r--media-video/jubler/jubler-4.6.1-r3.ebuild5
3 files changed, 284 insertions, 4 deletions
diff --git a/media-video/jubler/ChangeLog b/media-video/jubler/ChangeLog
index 23451b806951..45a5dc1f82ac 100644
--- a/media-video/jubler/ChangeLog
+++ b/media-video/jubler/ChangeLog
@@ -1,6 +1,11 @@
# ChangeLog for media-video/jubler
-# Copyright 1999-2012 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/media-video/jubler/ChangeLog,v 1.47 2012/06/17 05:50:05 yngwin Exp $
+# Copyright 1999-2013 Gentoo Foundation; Distributed under the GPL v2
+# $Header: /var/cvsroot/gentoo-x86/media-video/jubler/ChangeLog,v 1.48 2013/01/23 12:05:37 aballier Exp $
+
+ 23 Jan 2013; Alexis Ballier <aballier@gentoo.org> jubler-4.6.1-r3.ebuild,
+ +files/jubler-4.6.1-ffmpeg-1.patch:
+ Fix build with ffmpeg-1.1, and actually fix it working with previous versions
+ of ffmpeg too, part of bug #443232.
17 Jun 2012; Ben de Groot <yngwin@gentoo.org> jubler-4.6.1-r3.ebuild:
Use the new global libass useflag (bug #328245)
diff --git a/media-video/jubler/files/jubler-4.6.1-ffmpeg-1.patch b/media-video/jubler/files/jubler-4.6.1-ffmpeg-1.patch
new file mode 100644
index 000000000000..18df9069d198
--- /dev/null
+++ b/media-video/jubler/files/jubler-4.6.1-ffmpeg-1.patch
@@ -0,0 +1,274 @@
+Index: Jubler-4.6.1/resources/ffmpeg/ffdecode/decodeaudio.c
+===================================================================
+--- Jubler-4.6.1.orig/resources/ffmpeg/ffdecode/decodeaudio.c
++++ Jubler-4.6.1/resources/ffmpeg/ffdecode/decodeaudio.c
+@@ -67,19 +67,19 @@ jboolean decodeAudio(JNIEnv * env, jobje
+ AVStream *audio_st=NULL;
+ int got_audio, len, err=0, audio_index=-1, i=0, pack_duration=0, packsize=0, codec_is_open=-1, video_index=-1, codec_enc_is_open=-1;
+ jlong pack_pts=0;
+- char *outbuf=NULL;
++ AVFrame *outbuf=NULL;
+ unsigned char *packptr;
+ jboolean ret = JNI_TRUE, nobrk = JNI_TRUE;
+
+ av_register_all();
+
+ /* Open the input/output files */
+- err = av_open_input_file(&fcx, input_filename, NULL, 0, NULL);
++ err = avformat_open_input(&fcx, input_filename, NULL, NULL);
+ if(err<0){
+ DEBUG(env, this, "decodeAudio", "Could not open file '%s'.", input_filename);
+ ret = JNI_FALSE;
+ }
+- outbuf = malloc(AVCODEC_MAX_AUDIO_FRAME_SIZE);
++ outbuf = avcodec_alloc_frame();
+ if(outbuf==NULL) {
+ DEBUG(env, this, "decodeAudio", "Could not allocate memory for outbuf.");
+ ret = JNI_FALSE;
+@@ -129,7 +129,7 @@ jboolean decodeAudio(JNIEnv * env, jobje
+ }
+ else {
+ /* open it */
+- if ((codec_is_open = avcodec_open(ccx, codec)) < 0) {
++ if ((codec_is_open = avcodec_open2(ccx, codec, NULL)) < 0) {
+ DEBUG(env, this, "decodeAudio", "Could not open codec.");
+ ret = JNI_FALSE;
+ }
+@@ -158,10 +158,10 @@ jboolean decodeAudio(JNIEnv * env, jobje
+ }
+
+ /* use wav as the output format of the file */
+- fmt = guess_format(NULL, output_filename, NULL);
++ fmt = av_guess_format(NULL, output_filename, NULL);
+ if (!fmt) {
+ DEBUG(env, this, "decodeAudio", "Could not deduce output format from file extension: using WAV.");
+- fmt = guess_format("wav", NULL, NULL);
++ fmt = av_guess_format("wav", NULL, NULL);
+ }
+ if (!fmt) {
+ DEBUG(env, this, "decodeAudio", "Could not find suitable output format.");
+@@ -182,35 +182,28 @@ jboolean decodeAudio(JNIEnv * env, jobje
+ audio_st = add_audio_stream(env, this, ofcx, fmt->audio_codec, ccx->sample_rate, ccx->channels);
+ }
+
+- /* set the output parameters (must be done even if no parameters) */
+- if (av_set_parameters(ofcx, NULL) < 0) {
+- DEBUG(env, this, "decodeAudio", "Invalid output format parameters.");
+- ret = JNI_FALSE;
+- }
+- else {
+ codec_enc = avcodec_find_encoder(audio_st->codec->codec_id);
+ if (!codec_enc) {
+ DEBUG(env, this, "decodeAudio", "Encoder codec not found.");
+ ret = JNI_FALSE;
+ }
+ else {
+- if ((codec_enc_is_open = avcodec_open(audio_st->codec, codec_enc)) < 0) {
++ if ((codec_enc_is_open = avcodec_open2(audio_st->codec, codec_enc, NULL)) < 0) {
+ DEBUG(env, this, "decodeAudio", "Could not open encoder codec.");
+ ret = JNI_FALSE;
+ }
+ else {
+ if (!(fmt->flags & AVFMT_NOFILE)) {
+- if (url_fopen(&ofcx->pb, output_filename, URL_WRONLY) < 0) {
++ if (avio_open(&ofcx->pb, output_filename, AVIO_FLAG_WRITE) < 0) {
+ DEBUG(env, this, "decodeAudio", "Could not open file '%s'", output_filename);
+ ret = JNI_FALSE;
+ }
+ else {
+- av_write_header(ofcx);
++ avformat_write_header(ofcx,NULL);
+ }
+ }
+ }
+ }
+- }
+ }
+ }
+ else {
+@@ -243,7 +236,7 @@ jboolean decodeAudio(JNIEnv * env, jobje
+ ccx->request_channels = 2;
+ }
+ got_audio = AVCODEC_MAX_AUDIO_FRAME_SIZE;
+- len = avcodec_decode_audio2(ccx, (short *)outbuf, &got_audio, packptr, packsize);
++ len = avcodec_decode_audio4(ccx, outbuf, &got_audio, &pkt);
+
+ if (len < 0) {
+ DEBUG(env, this, "decodeAudio", "Error while decoding.");
+@@ -258,7 +251,7 @@ jboolean decodeAudio(JNIEnv * env, jobje
+ * this is the frame we want */
+ if (pack_pts >= seek_time_start) {
+ /* if a frame has been decoded, output it */
+- audio_enc_out(env, this, ofcx, audio_st, (short *)outbuf, got_audio);
++ audio_enc_out(env, this, ofcx, audio_st, (short *)(outbuf->data[0]), av_samples_get_buffer_size(NULL, ccx->channels, outbuf->nb_samples, ccx->sample_fmt, 1));
+ /* if the next frame gets past our stop time, we want to stop decoding */
+ if ( pack_pts + pack_duration > seek_time_stop ) {
+ av_free_packet(&pkt);
+@@ -269,7 +262,7 @@ jboolean decodeAudio(JNIEnv * env, jobje
+ /* If the next frame will be past our start seek time, this is the frame we want */
+ else if (pack_pts + pack_duration > seek_time_start) {
+ /* if a frame has been decoded, output it */
+- audio_enc_out(env, this, ofcx, audio_st, (short *)outbuf, got_audio);
++ audio_enc_out(env, this, ofcx, audio_st, (short *)(outbuf->data[0]), av_samples_get_buffer_size(NULL, ccx->channels, outbuf->nb_samples, ccx->sample_fmt, 1));
+ /* if the next frame gets past our stop time, we want to stop decoding */
+ if ( pack_pts + pack_duration > seek_time_stop ) {
+ av_free_packet(&pkt);
+@@ -301,7 +294,7 @@ jboolean decodeAudio(JNIEnv * env, jobje
+
+ /* close the output file */
+ if (!(fmt->flags & AVFMT_NOFILE) && ofcx->pb != NULL) {
+- url_fclose(ofcx->pb);
++ avio_close(ofcx->pb);
+ }
+
+ /* free the stream */
+@@ -309,7 +302,7 @@ jboolean decodeAudio(JNIEnv * env, jobje
+ }
+
+ if(codec_is_open >= 0) avcodec_close(ccx);
+- if(outbuf != NULL) free(outbuf);
++ if(outbuf != NULL) av_free(outbuf);
+ if(fcx != NULL) av_close_input_file(fcx);
+
+ return ret;
+Index: Jubler-4.6.1/resources/ffmpeg/ffdecode/decodeframe.c
+===================================================================
+--- Jubler-4.6.1.orig/resources/ffmpeg/ffdecode/decodeframe.c
++++ Jubler-4.6.1/resources/ffmpeg/ffdecode/decodeframe.c
+@@ -122,7 +122,7 @@ AVPicture* decodeFrame(JNIEnv * env, job
+ AVFrame *frame=avcodec_alloc_frame();
+
+ /* Open the input file */
+- err = av_open_input_file(&fcx, input_filename, NULL, 0, NULL);
++ err = avformat_open_input(&fcx, input_filename, NULL, NULL);
+ if(err<0){
+ DEBUG(env, this, "decodeFrame", "Could not open file '%s'.", input_filename);
+ retflag = FALSE;
+@@ -157,7 +157,7 @@ AVPicture* decodeFrame(JNIEnv * env, job
+ }
+ else {
+ // Open codec
+- if((codec_is_open = avcodec_open(ccx, codec)) < 0 ) {
++ if((codec_is_open = avcodec_open2(ccx, codec, NULL)) < 0 ) {
+ DEBUG(env, this, "decodeFrame", "Could not open codec.");
+ retflag = FALSE;
+ }
+@@ -190,7 +190,7 @@ AVPicture* decodeFrame(JNIEnv * env, job
+ pack_duration = av_rescale_q(pkt.duration, fcx->streams[video_index]->time_base, AV_TIME_BASE_Q);
+ comp_pts += pkt.duration;
+ // Decode this packet
+- len = avcodec_decode_video(ccx, frame, &got_picture, pkt.data, pkt.size);
++ len = avcodec_decode_video2(ccx, frame, &got_picture, &pkt);
+ if (len < 0) {
+ DEBUG(env, this, "decodeFrame", "Error while decoding.");
+ retflag = FALSE;
+@@ -265,7 +265,7 @@ int file_info(JNIEnv * env, jobject this
+ av_register_all();
+
+ // Open the input file.
+- err = av_open_input_file(&fcx, input_filename, NULL, 0, NULL);
++ err = avformat_open_input(&fcx, input_filename, NULL, NULL);
+ if(err<0){
+ DEBUG(env, this, "file_info", "Could not open file '%s'.", input_filename);
+ return 1;
+@@ -275,9 +275,9 @@ int file_info(JNIEnv * env, jobject this
+ err = av_find_stream_info(fcx);
+
+ // Give us information about the file and exit
+- dump_format(fcx, 0, input_filename, FALSE);
++ av_dump_format(fcx, 0, input_filename, FALSE);
+
+- av_close_input_file(fcx);
++ avformat_close_input(&fcx);
+ return 0;
+ }
+
+Index: Jubler-4.6.1/resources/ffmpeg/ffdecode/grabinfo.c
+===================================================================
+--- Jubler-4.6.1.orig/resources/ffmpeg/ffdecode/grabinfo.c
++++ Jubler-4.6.1/resources/ffmpeg/ffdecode/grabinfo.c
+@@ -82,7 +82,7 @@ void get_information(JNIEnv * env, jobje
+ av_register_all();
+
+ // Open the input file.
+- err = av_open_input_file(&fcx, video_c, NULL, 0, NULL);
++ err = avformat_open_input(&fcx, video_c, NULL, NULL);
+ if(err<0) {
+ DEBUG(env, this, "get_information", "Could not open file '%s'.", video_c);
+ ret = JNI_FALSE;
+Index: Jubler-4.6.1/resources/ffmpeg/ffdecode/makecache.c
+===================================================================
+--- Jubler-4.6.1.orig/resources/ffmpeg/ffdecode/makecache.c
++++ Jubler-4.6.1/resources/ffmpeg/ffdecode/makecache.c
+@@ -59,7 +59,7 @@ JNIEXPORT jboolean JNICALL Java_com_pana
+ float ratewindow = 0;
+ unsigned int offset=0, maxbyte=0, sampledcounter=1;
+ FILE *cachefile=NULL;
+- uint8_t *outbuf=NULL;
++ AVFrame *outbuf=NULL;
+ jboolean nobrk = JNI_TRUE;
+
+ int ENDIANESS = isLittleEndian();
+@@ -81,7 +81,7 @@ JNIEXPORT jboolean JNICALL Java_com_pana
+ ret = JNI_TRUE;
+
+ // Open the input file.
+- err = av_open_input_file(&fcx, audio_c, NULL, 0, NULL);
++ err = avformat_open_input(&fcx, audio_c, NULL, NULL);
+ cachefile = fopen(cache_c, "wb");
+ if(err<0){
+ DEBUG(env, this, "makeCache", "Could not open audio file '%s'.", audio_c);
+@@ -91,7 +91,7 @@ JNIEXPORT jboolean JNICALL Java_com_pana
+ DEBUG(env, this, "makeCache", "Could not open cache file '%s'.", cache_c);
+ ret = JNI_FALSE;
+ }
+- outbuf = malloc(AVCODEC_MAX_AUDIO_FRAME_SIZE);
++ outbuf = avcodec_alloc_frame();
+ if(outbuf==NULL) {
+ DEBUG(env, this, "makeCache", "Could not allocate memory for outbuf.");
+ ret = JNI_FALSE;
+@@ -123,7 +123,7 @@ JNIEXPORT jboolean JNICALL Java_com_pana
+ }
+ else {
+ /* open it */
+- if ((codec_is_open = avcodec_open(ccx, codec)) < 0) {
++ if ((codec_is_open = avcodec_open2(ccx, codec,NULL)) < 0) {
+ DEBUG(env, this, "makeCache", "Could not open codec.");
+ ret = JNI_FALSE;
+ }
+@@ -175,7 +175,7 @@ JNIEXPORT jboolean JNICALL Java_com_pana
+ pack_pts = av_rescale_q(pkt.pts, fcx->streams[audio_index]->time_base, AV_TIME_BASE_Q);
+ // Decode the paket
+ got_audio = AVCODEC_MAX_AUDIO_FRAME_SIZE;
+- len = avcodec_decode_audio2(ccx, (short *)outbuf, &got_audio, pkt.data, pkt.size);
++ len = avcodec_decode_audio4(ccx, outbuf, &got_audio, &pkt);
+
+ if (len < 0) {
+ DEBUG(env, this, "makeCache", "Error while decoding.");
+@@ -196,7 +196,7 @@ JNIEXPORT jboolean JNICALL Java_com_pana
+ if (bytecounter+offset + step*channels >= maxbyte) {
+ for (j = 1; j <= channels ; j++) {
+ // actually sample is not the whole sample, but the data for one channel each time
+- sample = (char)outbuf[bytecounter+ENDIANESS];
++ sample = (char)outbuf->data[0][bytecounter+ENDIANESS];
+ // min max averaging: only keep the highest and the lowest sample value
+ if (maxsample[j-1] < sample) maxsample[j-1] = sample;
+ if (minsample[j-1] > sample) minsample[j-1] = sample;
+@@ -215,7 +215,7 @@ JNIEXPORT jboolean JNICALL Java_com_pana
+ }
+ else {
+ for (j = 1; j <= channels; j++) {
+- sample = (char)outbuf[bytecounter+ENDIANESS];
++ sample = (char)outbuf->data[0][bytecounter+ENDIANESS];
+ // min max averaging
+ if (maxsample[j-1] < sample) maxsample[j-1] = sample;
+ if (minsample[j-1] > sample) minsample[j-1] = sample;
+@@ -254,7 +254,7 @@ JNIEXPORT jboolean JNICALL Java_com_pana
+ if(minsample != NULL) free(minsample);
+ if(cachefile != NULL) fclose(cachefile);
+ if(codec_is_open >= 0) avcodec_close(ccx);
+- if(outbuf != NULL) free(outbuf);
++ if(outbuf != NULL) av_free(outbuf);
+ if(fcx != NULL) av_close_input_file(fcx);
+
+ return ret;
diff --git a/media-video/jubler/jubler-4.6.1-r3.ebuild b/media-video/jubler/jubler-4.6.1-r3.ebuild
index d38d8a01a144..d11a3cd49e4f 100644
--- a/media-video/jubler/jubler-4.6.1-r3.ebuild
+++ b/media-video/jubler/jubler-4.6.1-r3.ebuild
@@ -1,6 +1,6 @@
-# Copyright 1999-2012 Gentoo Foundation
+# Copyright 1999-2013 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/media-video/jubler/jubler-4.6.1-r3.ebuild,v 1.9 2012/06/17 05:50:05 yngwin Exp $
+# $Header: /var/cvsroot/gentoo-x86/media-video/jubler/jubler-4.6.1-r3.ebuild,v 1.10 2013/01/23 12:05:37 aballier Exp $
EAPI="2"
WANT_ANT_TASKS="ant-nodeps ant-contrib"
@@ -40,6 +40,7 @@ src_unpack() {
java_prepare() {
epatch "${FILESDIR}"/${P}-gentoo.patch
+ epatch "${FILESDIR}"/${P}-ffmpeg-1.patch
chmod +x resources/installers/linux/iconinstall
#cd resources/libs || die
java-pkg_jarfrom --build-only --into resources/libs jupidator