aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--multimedia/backlite/README15
-rw-r--r--multimedia/backlite/backlite-1.0.3-ffmpeg-0.11.patch359
-rw-r--r--multimedia/backlite/backlite.SlackBuild100
-rw-r--r--multimedia/backlite/backlite.info10
-rw-r--r--multimedia/backlite/doinst.sh9
-rw-r--r--multimedia/backlite/slack-desc19
6 files changed, 512 insertions, 0 deletions
diff --git a/multimedia/backlite/README b/multimedia/backlite/README
new file mode 100644
index 000000000000..72696ce08e61
--- /dev/null
+++ b/multimedia/backlite/README
@@ -0,0 +1,15 @@
+backlite provides several tools for backing up DVDs, including DVD9 to
+DVD5 conversion.
+
+This is the Qt-only version of the KDE DVD backup utility k9copy.
+
+Optional runtime deps are libdvdcss (for DVD Backup action),
+along with mjpegtools and twolame (for DVD Author action).
+
+Due to the lack of upstream maintainers and the ongoing changes to
+ffmpeg, it might be necessary to change some of the default ffmpeg
+command line options in the Encoders configuration section and/or
+ffmpeg encoding might not be fully functional.
+However, backlite can use mencoder instead of ffmpeg, provided that
+MPlayer is rebuilt with the required codecs (x264, xvid, lame,
+libmp4v2, faac, etc.)
diff --git a/multimedia/backlite/backlite-1.0.3-ffmpeg-0.11.patch b/multimedia/backlite/backlite-1.0.3-ffmpeg-0.11.patch
new file mode 100644
index 000000000000..0feb5e7aaa15
--- /dev/null
+++ b/multimedia/backlite/backlite-1.0.3-ffmpeg-0.11.patch
@@ -0,0 +1,359 @@
+diff -Nru backlite-1.0.3.orig/backlite.pro backlite-1.0.3/backlite.pro
+--- backlite-1.0.3.orig/backlite.pro 2011-12-07 21:34:56.000000000 +0100
++++ backlite-1.0.3/backlite.pro 2012-11-23 10:02:55.000000000 +0100
+@@ -386,6 +386,11 @@
+ INCLUDEPATH += $$a/ffmpeg
+ INCLUDEPATH += $$a/ffmpeg/libavformat
+ }
++ exists($$a/ffmpeg/libavutil) {
++ message(found $$a/ffmpeg!)
++ INCLUDEPATH += $$a/ffmpeg
++ INCLUDEPATH += $$a/ffmpeg/libavutil
++ }
+ exists($$a/ffmpeg/libswscale) {
+ message(found $$a/ffmpeg!)
+ INCLUDEPATH += $$a/ffmpeg
+@@ -400,6 +405,10 @@
+ message(found $$a/libavformat!)
+ INCLUDEPATH += $$a/libavformat
+ }
++ exists($$a/libavutil) {
++ message(found $$a/libavutil!)
++ INCLUDEPATH += $$a/libavutil
++ }
+ exists($$a/libswscale) {
+ message(found $$a/libswscale!)
+ INCLUDEPATH += $$a/libswscale
+diff -Nru backlite-1.0.3.orig/src/backup/k9mp4enc.cpp backlite-1.0.3/src/backup/k9mp4enc.cpp
+--- backlite-1.0.3.orig/src/backup/k9mp4enc.cpp 2011-12-07 21:34:56.000000000 +0100
++++ backlite-1.0.3/src/backup/k9mp4enc.cpp 2012-12-11 10:01:39.507859366 +0100
+@@ -619,7 +619,7 @@
+ // cmd << "-lavfopts" << "i_certify_that_my_video_stream_does_not_use_b_frames";
+ }
+ //synchronize audio
+- cmd << "-async" << "1" ;
++ cmd << "-async" << "44100" ;
+ cmd << "-y" << KShell::quoteArg(path);
+ cmd << slNewAudio;
+ // if (m_extractMkv) {
+diff -Nru backlite-1.0.3.orig/src/core/k9audiocodecs.cpp backlite-1.0.3/src/core/k9audiocodecs.cpp
+--- backlite-1.0.3.orig/src/core/k9audiocodecs.cpp 2011-12-07 21:34:56.000000000 +0100
++++ backlite-1.0.3/src/core/k9audiocodecs.cpp 2012-12-11 10:01:39.510859330 +0100
+@@ -75,10 +75,10 @@
+ m_codecs[4]=_k9AudioCodec("sonic","-oac lavc -lavcopts acodec=sonic:abitrate=$AUDBR","mencoder");
+ m_codecs[5]=_k9AudioCodec("aac","-oac faac -faacopts br=$AUDBR","mencoder");
+ m_codecs[6]=_k9AudioCodec("mp3 (lame)","-oac mp3lame -lameopts abr:br=$AUDBR","mencoder");
+- m_codecs[7]=_k9AudioCodec("copy","-acodec copy","ffmpeg","");
+- m_codecs[8]=_k9AudioCodec("mp3","-acodec libmp3lame -ab $AUDBRk -ac 2","ffmpeg",".mp3");
+- m_codecs[9]=_k9AudioCodec("vorbis","-acodec vorbis -ab $AUDBRk -ac 2","ffmpeg",".ogg");
+- m_codecs[10]=_k9AudioCodec("aac","-acodec libfaac -ab $AUDBRk -ac 2","ffmpeg",".aac");
++ m_codecs[7]=_k9AudioCodec("copy","-codec:a copy","ffmpeg","");
++ m_codecs[8]=_k9AudioCodec("mp3","-codec:a libmp3lame -ab $AUDBRk -ac 2 -ar 44100","ffmpeg",".mp3");
++ m_codecs[9]=_k9AudioCodec("vorbis","-codec:a vorbis -ab $AUDBRk -ac 2 -ar 44100","ffmpeg",".ogg");
++ m_codecs[10]=_k9AudioCodec("aac","-codec:a libfaac -ab $AUDBRk -ac 2 -ar 44100","ffmpeg",".aac");
+
+ save();
+ }
+diff -Nru backlite-1.0.3.orig/src/core/k9videocodecs.cpp backlite-1.0.3/src/core/k9videocodecs.cpp
+--- backlite-1.0.3.orig/src/core/k9videocodecs.cpp 2011-12-07 21:34:56.000000000 +0100
++++ backlite-1.0.3/src/core/k9videocodecs.cpp 2012-12-11 10:01:39.512859304 +0100
+@@ -98,12 +98,12 @@
+ m_codecs[18]=_k9VideoCodec("ASUS v1","","-ovc lavc -lavcopts vcodec=asv1:vhq:v4mv:vqmin=2:vbitrate=$VIDBR:aspect=$ASPECT -vf crop=$CROPWIDTH:$CROPHEIGHT:$CROPLEFT:$CROPTOP,scale=$WIDTH:$HEIGHT,dsize=$ASPECT","-ovc lavc -lavcopts vcodec=asv1:vhq:v4mv:vqmin=2:vbitrate=$VIDBR:aspect=$ASPECT:turbo:vpass=$PASS -vf crop=$CROPWIDTH:$CROPHEIGHT:$CROPLEFT:$CROPTOP,scale=$WIDTH:$HEIGHT,dsize=$ASPECT","-ovc lavc -lavcopts vcodec=asv1:vhq:v4mv:vqmin=2:vbitrate=$VIDBR:aspect=$ASPECT:turbo:vpass=$PASS -vf crop=$CROPWIDTH:$CROPHEIGHT:$CROPLEFT:$CROPTOP,scale=$WIDTH:$HEIGHT,dsize=$ASPECT","mencoder");
+ m_codecs[19]=_k9VideoCodec("ASUS v2","","-ovc lavc -lavcopts vcodec=asv2:vhq:v4mv:vqmin=2:vbitrate=$VIDBR:aspect=$ASPECT -vf crop=$CROPWIDTH:$CROPHEIGHT:$CROPLEFT:$CROPTOP,scale=$WIDTH:$HEIGHT,dsize=$ASPECT","-ovc lavc -lavcopts vcodec=asv2:vhq:v4mv:vqmin=2:vbitrate=$VIDBR:aspect=$ASPECT:turbo:vpass=$PASS -vf crop=$CROPWIDTH:$CROPHEIGHT:$CROPLEFT:$CROPTOP,scale=$WIDTH:$HEIGHT,dsize=$ASPECT","-ovc lavc -lavcopts vcodec=asv2:vhq:v4mv:vqmin=2:vbitrate=$VIDBR:aspect=$ASPECT:turbo:vpass=$PASS -vf crop=$CROPWIDTH:$CROPHEIGHT:$CROPLEFT:$CROPTOP,scale=$WIDTH:$HEIGHT,dsize=$ASPECT","mencoder");
+ m_codecs[20]=_k9VideoCodec("flv","","-ovc lavc -lavcopts vcodec=flv:vhq:v4mv:vqmin=2:vbitrate=$VIDBR:aspect=$ASPECT -vf crop=$CROPWIDTH:$CROPHEIGHT:$CROPLEFT:$CROPTOP,scale=$WIDTH:$HEIGHT,dsize=$ASPECT","-ovc lavc -lavcopts vcodec=flv:vhq:v4mv:vqmin=2:vbitrate=$VIDBR:aspect=$ASPECT:turbo:vpass=$PASS -vf crop=$CROPWIDTH:$CROPHEIGHT:$CROPLEFT:$CROPTOP,scale=$WIDTH:$HEIGHT,dsize=$ASPECT","-ovc lavc -lavcopts vcodec=flv:vhq:v4mv:vqmin=2:vbitrate=$VIDBR:aspect=$ASPECT:turbo:vpass=$PASS -vf crop=$CROPWIDTH:$CROPHEIGHT:$CROPLEFT:$CROPTOP,scale=$WIDTH:$HEIGHT,dsize=$ASPECT","mencoder");
+- m_codecs[21]=_k9VideoCodec("copy","","-vcodec copy","-vcodec copy","-vcodec copy","ffmpeg");
+- m_codecs[22]=_k9VideoCodec("x264","","-b $VIDBRk -s $WIDTHx$HEIGHT -vf crop=$CROPWIDTH:$CROPHEIGHT:$CROPLEFT:$CROPTOP -aspect $ASPECT -vcodec libx264 -level 30","-b $VIDBRk -s $WIDTHx$HEIGHT -croptop $CROPTOP -cropbottom $CROPBOTTOM -cropleft $CROPLEFT -cropright $CROPRIGHT -aspect $ASPECT -vcodec libx264 -pass $PASS -passlogfile $PASSLOGFILE -level 30","-b $VIDBRk -s $WIDTHx$HEIGHT -croptop $CROPTOP -cropbottom $CROPBOTTOM -cropleft $CROPLEFT -cropright $CROPRIGHT -aspect $ASPECT -vcodec libx264 -pass $PASS -passlogfile $PASSLOGFILE -level 30","ffmpeg");
+- m_codecs[23]=_k9VideoCodec("x264 (high)","","-b $VIDBRk -s $WIDTHx$HEIGHT -vf crop=$CROPWIDTH:$CROPHEIGHT:$CROPLEFT:$CROPTOP -aspect $ASPECT -vcodec libx264 -level 30 -flags +loop+mv4 -cmp 256 -partitions +parti4x4+parti8x8+partp4x4+partp8x8+partb8x8 -me_method hex -subq 7 -trellis 1 -refs 5 -bf 3 -flags2 +bpyramid+wpred+mixed_refs+dct8x8 -coder 1 -me_range 16 -g 250 -keyint_min 25 -sc_threshold 40 -i_qfactor 0.71 -qmin 10 -qmax 51 -qdiff 4","-b $VIDBRk -s $WIDTHx$HEIGHT -croptop $CROPTOP -cropbottom $CROPBOTTOM -cropleft $CROPLEFT -cropright $CROPRIGHT -aspect $ASPECT -vcodec libx264 -level 30 -flags +loop+mv4 -cmp 256 -partitions +parti4x4+parti8x8+partp4x4+partp8x8+partb8x8 -me_method hex -subq 7 -trellis 1 -refs 5 -bf 3 -flags2 +bpyramid+wpred+mixed_refs+dct8x8 -coder 1 -me_range 16 -g 250 -keyint_min 25 -sc_threshold 40 -i_qfactor 0.71 -qmin 10 -qmax 51 -qdiff 4 -pass $PASS -passlogfile $PASSLOGFILE","-b $VIDBRk -s $WIDTHx$HEIGHT -croptop $CROPTOP -cropbottom $CROPBOTTOM -cropleft $CROPLEFT -cropright $CROPRIGHT -aspect $ASPECT -vcodec libx264 -level 30 -flags +loop+mv4 -cmp 256 -partitions +parti4x4+parti8x8+partp4x4+partp8x8+partb8x8 -me_method hex -subq 7 -trellis 1 -refs 5 -bf 3 -flags2 +bpyramid+wpred+mixed_refs+dct8x8 -coder 1 -me_range 16 -g 250 -keyint_min 25 -sc_threshold 40 -i_qfactor 0.71 -qmin 10 -qmax 51 -qdiff 4 -pass $PASS -passlogfile $PASSLOGFILE","ffmpeg");
+- m_codecs[24]=_k9VideoCodec("MPEG-4 ","","-b $VIDBRk -s $WIDTHx$HEIGHT -vf crop=$CROPWIDTH:$CROPHEIGHT:$CROPLEFT:$CROPTOP -aspect $ASPECT -vcodec mpeg4 ","-b $VIDBRk -s $WIDTHx$HEIGHT -croptop $CROPTOP -cropbottom $CROPBOTTOM -cropleft $CROPLEFT -cropright $CROPRIGHT -aspect $ASPECT -vcodec mpeg4 -pass $PASS -passlogfile $PASSLOGFILE","-b $VIDBRk -s $WIDTHx$HEIGHT -croptop $CROPTOP -cropbottom $CROPBOTTOM -cropleft $CROPLEFT -cropright $CROPRIGHT -aspect $ASPECT -vcodec mpeg4 -pass $PASS -passlogfile $PASSLOGFILE","ffmpeg");
+- m_codecs[25]=_k9VideoCodec("Flash Video","","-b $VIDBRk -s $WIDTHx$HEIGHT -vf crop=$CROPWIDTH:$CROPHEIGHT:$CROPLEFT:$CROPTOP -aspect $ASPECT -vcodec flv ","-b $VIDBRk -s $WIDTHx$HEIGHT -croptop $CROPTOP -cropbottom $CROPBOTTOM -cropleft $CROPLEFT -cropright $CROPRIGHT -aspect $ASPECT -vcodec flv -pass $PASS -passlogfile $PASSLOGFILE","-b $VIDBRk -s $WIDTHx$HEIGHT -croptop $CROPTOP -cropbottom $CROPBOTTOM -cropleft $CROPLEFT -cropright $CROPRIGHT -aspect $ASPECT -vcodec flv -pass $PASS -passlogfile $PASSLOGFILE","ffmpeg");
+- m_codecs[26]=_k9VideoCodec("Windows Media 8","","-b $VIDBRk -s $WIDTHx$HEIGHT -vf crop=$CROPWIDTH:$CROPHEIGHT:$CROPLEFT:$CROPTOP -aspect $ASPECT -vcodec wmv2","-b $VIDBRk -s $WIDTHx$HEIGHT -croptop $CROPTOP -cropbottom $CROPBOTTOM -cropleft $CROPLEFT -cropright $CROPRIGHT -aspect $ASPECT -vcodec wmv2 -pass $PASS -passlogfile $PASSLOGFILE","-b $VIDBRk -s $WIDTHx$HEIGHT -croptop $CROPTOP -cropbottom $CROPBOTTOM -cropleft $CROPLEFT -cropright $CROPRIGHT -aspect $ASPECT -vcodec wmv2 -pass $PASS -passlogfile $PASSLOGFILE","ffmpeg");
++ m_codecs[21]=_k9VideoCodec("copy","","-codec:v copy","-codec:v copy","-codec:v copy","ffmpeg");
++ m_codecs[22]=_k9VideoCodec("x264","","-b $VIDBRk -s $WIDTHx$HEIGHT -vf crop=$CROPWIDTH:$CROPHEIGHT:$CROPLEFT:$CROPTOP -aspect $ASPECT -codec:v libx264 -level 30","-b $VIDBRk -s $WIDTHx$HEIGHT -vf crop=$WIDTH-$CROPRIGHT-$CROPLEFT:$HEIGHT-$CROPTOP-$CROPBOTTOM:$CROPLEFT:$CROPTOP -aspect $ASPECT -codec:v libx264 -pass $PASS -passlogfile $PASSLOGFILE -level 30","-b $VIDBRk -s $WIDTHx$HEIGHT -vf crop=$WIDTH-$CROPRIGHT-$CROPLEFT:$HEIGHT-$CROPTOP-$CROPBOTTOM:$CROPLEFT:$CROPTOP -aspect $ASPECT -codec:v libx264 -pass $PASS -passlogfile $PASSLOGFILE -level 30","ffmpeg");
++ m_codecs[23]=_k9VideoCodec("x264 (high)","","-b $VIDBRk -s $WIDTHx$HEIGHT -vf crop=$CROPWIDTH:$CROPHEIGHT:$CROPLEFT:$CROPTOP -aspect $ASPECT -codec:v libx264 -level 30 -flags +loop+mv4 -cmp 256 -partitions +parti4x4+parti8x8+partp4x4+partp8x8+partb8x8 -me_method hex -subq 7 -trellis 1 -refs 5 -bf 3 -b-pyramid normal -weightb 1 -mixed-refs 1 -8x8dct 1 -coder 1 -me_range 16 -g 250 -keyint_min 25 -sc_threshold 40 -i_qfactor 0.71 -qmin 10 -qmax 51 -qdiff 4","-b $VIDBRk -s $WIDTHx$HEIGHT -vf crop=$WIDTH-$CROPRIGHT-$CROPLEFT:$HEIGHT-$CROPTOP-$CROPBOTTOM:$CROPLEFT:$CROPTOP -aspect $ASPECT -codec:v libx264 -level 30 -flags +loop+mv4 -cmp 256 -partitions +parti4x4+parti8x8+partp4x4+partp8x8+partb8x8 -me_method hex -subq 7 -trellis 1 -refs 5 -bf 3 -b-pyramid normal -weightb 1 -mixed-refs 1 -8x8dct 1 -coder 1 -me_range 16 -g 250 -keyint_min 25 -sc_threshold 40 -i_qfactor 0.71 -qmin 10 -qmax 51 -qdiff 4 -pass $PASS -passlogfile $PASSLOGFILE","-b $VIDBRk -s $WIDTHx$HEIGHT -vf crop=$WIDTH-$CROPRIGHT-$CROPLEFT:$HEIGHT-$CROPTOP-$CROPBOTTOM:$CROPLEFT:$CROPTOP -aspect $ASPECT -codec:v libx264 -level 30 -flags +loop+mv4 -cmp 256 -partitions +parti4x4+parti8x8+partp4x4+partp8x8+partb8x8 -me_method hex -subq 7 -trellis 1 -refs 5 -bf 3 -b-pyramid normal -weightb 1 -mixed-refs 1 -8x8dct 1 -coder 1 -me_range 16 -g 250 -keyint_min 25 -sc_threshold 40 -i_qfactor 0.71 -qmin 10 -qmax 51 -qdiff 4 -pass $PASS -passlogfile $PASSLOGFILE","ffmpeg");
++ m_codecs[24]=_k9VideoCodec("MPEG-4 ","","-b $VIDBRk -s $WIDTHx$HEIGHT -vf crop=$CROPWIDTH:$CROPHEIGHT:$CROPLEFT:$CROPTOP -aspect $ASPECT -codec:v mpeg4 ","-b $VIDBRk -s $WIDTHx$HEIGHT -vf crop=$WIDTH-$CROPRIGHT-$CROPLEFT:$HEIGHT-$CROPTOP-$CROPBOTTOM:$CROPLEFT:$CROPTOP -aspect $ASPECT -codec:v mpeg4 -pass $PASS -passlogfile $PASSLOGFILE","-b $VIDBRk -s $WIDTHx$HEIGHT -vf crop=$WIDTH-$CROPRIGHT-$CROPLEFT:$HEIGHT-$CROPTOP-$CROPBOTTOM:$CROPLEFT:$CROPTOP -aspect $ASPECT -codec:v mpeg4 -pass $PASS -passlogfile $PASSLOGFILE","ffmpeg");
++ m_codecs[25]=_k9VideoCodec("Flash Video","","-b $VIDBRk -s $WIDTHx$HEIGHT -vf crop=$CROPWIDTH:$CROPHEIGHT:$CROPLEFT:$CROPTOP -aspect $ASPECT -codec:v flv ","-b $VIDBRk -s $WIDTHx$HEIGHT -vf crop=$WIDTH-$CROPRIGHT-$CROPLEFT:$HEIGHT-$CROPTOP-$CROPBOTTOM:$CROPLEFT:$CROPTOP -aspect $ASPECT -codec:v flv -pass $PASS -passlogfile $PASSLOGFILE","-b $VIDBRk -s $WIDTHx$HEIGHT -vf crop=$WIDTH-$CROPRIGHT-$CROPLEFT:$HEIGHT-$CROPTOP-$CROPBOTTOM:$CROPLEFT:$CROPTOP -aspect $ASPECT -codec:v flv -pass $PASS -passlogfile $PASSLOGFILE","ffmpeg");
++ m_codecs[26]=_k9VideoCodec("Windows Media 8","","-b $VIDBRk -s $WIDTHx$HEIGHT -vf crop=$CROPWIDTH:$CROPHEIGHT:$CROPLEFT:$CROPTOP -aspect $ASPECT -codec:v wmv2","-b $VIDBRk -s $WIDTHx$HEIGHT -vf crop=$WIDTH-$CROPRIGHT-$CROPLEFT:$HEIGHT-$CROPTOP-$CROPBOTTOM:$CROPLEFT:$CROPTOP -aspect $ASPECT -codec:v wmv2 -pass $PASS -passlogfile $PASSLOGFILE","-b $VIDBRk -s $WIDTHx$HEIGHT -vf crop=$WIDTH-$CROPRIGHT-$CROPLEFT:$HEIGHT-$CROPTOP-$CROPBOTTOM:$CROPLEFT:$CROPTOP -aspect $ASPECT -codec:v wmv2 -pass $PASS -passlogfile $PASSLOGFILE","ffmpeg");
+
+ save();
+
+diff -Nru backlite-1.0.3.orig/src/import/k9avidecode.cpp backlite-1.0.3/src/import/k9avidecode.cpp
+--- backlite-1.0.3.orig/src/import/k9avidecode.cpp 2011-12-07 21:34:56.000000000 +0100
++++ backlite-1.0.3/src/import/k9avidecode.cpp 2012-11-23 09:39:06.000000000 +0100
+@@ -37,11 +37,13 @@
+ : QObject(parent) {
+ CodecHandle=0;
+ FormatHandle=0;
++ UtilHandle=0;
+ SwscaleHandle=0;
+ glibref=0;
+ if (glibref==0) {
+ CodecHandle=dlopen("libavcodec.so",RTLD_LAZY ); //| RTLD_GLOBAL
+ FormatHandle=dlopen("libavformat.so",RTLD_LAZY);
++ UtilHandle=dlopen("libavutil.so",RTLD_LAZY);
+ #ifdef HAVE_SWSCALE
+ SwscaleHandle=dlopen("libswscale.so",RTLD_LAZY);
+ if (SwscaleHandle==0)
+@@ -56,6 +58,12 @@
+ if (!FormatHandle ) {
+ errs << i18n("Cannot open the library %1").arg("libavformat");
+ }
++# if LIBAVUTIL_VERSION_INT >= AV_VERSION_INT(51, 33, 0)
++ if (!UtilHandle) {
++ m_error =i18n("Cannot open then library %1").arg("libavutil");
++ return;
++ }
++# endif
+ #ifdef HAVE_SWSCALE
+ if (!SwscaleHandle) {
+ errs << i18n("Cannot open the library %1").arg("libswscale");
+@@ -63,17 +71,32 @@
+ #endif
+
+ av_register_all = (av_register_all_t)dlsym(FormatHandle,"av_register_all");
++# if LIBAVFORMAT_VERSION_INT >= AV_VERSION_INT(53, 2, 0)
++ avformat_open_input = (avformat_open_input_t)dlsym(FormatHandle,"avformat_open_input");
++# else
+ av_open_input_file = (av_open_input_file_t)dlsym(FormatHandle,"av_open_input_file");
++# endif
++# if LIBAVFORMAT_VERSION_INT >= AV_VERSION_INT(53, 6, 0)
++ avformat_find_stream_info = (avformat_find_stream_info_t)dlsym(FormatHandle,"avformat_find_stream_info");
++# else
+ av_find_stream_info = (av_find_stream_info_t)dlsym(FormatHandle,"av_find_stream_info");
++# endif
+ avcodec_find_decoder =(avcodec_find_decoder_t) dlsym(CodecHandle,"avcodec_find_decoder");
++# if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(53, 8, 0)
++ avcodec_open2 = (avcodec_open2_t)dlsym(CodecHandle,"avcodec_open2");
++# else
+ avcodec_open = (avcodec_open_t)dlsym(CodecHandle,"avcodec_open");
++# endif
+ avcodec_alloc_frame = (avcodec_alloc_frame_t)dlsym(CodecHandle,"avcodec_alloc_frame");
+ avpicture_get_size = (avpicture_get_size_t)dlsym(CodecHandle,"avpicture_get_size");
+ av_malloc = (av_malloc_t)dlsym(CodecHandle,"av_malloc");
+ avpicture_fill = (avpicture_fill_t)dlsym(CodecHandle,"avpicture_fill");
+ av_read_frame = (av_read_frame_t)dlsym(FormatHandle,"av_read_frame");
++# if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(52, 23, 0)
++ avcodec_decode_video2 = (avcodec_decode_video2_t)dlsym(CodecHandle,"avcodec_decode_video2");
++# else
+ avcodec_decode_video = (avcodec_decode_video_t)dlsym(CodecHandle,"avcodec_decode_video");
+- if (avcodec_decode_video==0) avcodec_decode_video=(avcodec_decode_video_t)dlsym(CodecHandle,"avcodec_decode_video2");
++# endif
+ #ifndef HAVE_SWSCALE
+ img_convert = (img_convert_t)dlsym(CodecHandle,"img_convert");
+ //if img_convert is null (deprecated in ffmpeg), we need libswscale
+@@ -85,7 +108,11 @@
+ if (av_free_packet==0)
+ av_free_packet=av_free_packet_internal;
+ avcodec_close = (avcodec_close_t)dlsym(FormatHandle,"avcodec_close");
++# if LIBAVFORMAT_VERSION_INT >= AV_VERSION_INT(53, 17, 0)
++ avformat_close_input = (avformat_close_input_t)dlsym(FormatHandle,"avformat_close_input");
++# else
+ av_close_input_file = (av_close_input_file_t)dlsym(FormatHandle,"av_close_input_file");
++# endif
+ av_seek_frame=(av_seek_frame_t)dlsym(FormatHandle,"av_seek_frame");
+ av_rescale_q=(av_rescale_q_t)dlsym(FormatHandle,"av_rescale_q");
+ avcodec_flush_buffers=(avcodec_flush_buffers_t)dlsym(CodecHandle,"avcodec_flush_buffers");
+@@ -94,7 +121,11 @@
+ sws_getContext=(sws_getContext_t)dlsym(SwscaleHandle,"sws_getContext");
+ sws_scale= (sws_scale_t)dlsym(SwscaleHandle,"sws_scale");
+ #endif
++# if LIBAVUTIL_VERSION_INT >= AV_VERSION_INT(51, 33, 0)
++ av_gettime=(av_gettime_t)dlsym(UtilHandle,"av_gettime");
++# else
+ av_gettime=(av_gettime_t)dlsym(FormatHandle,"av_gettime");
++# endif
+
+ if (errs.count() >0) {
+ m_error=errs.join("\n");
+@@ -118,6 +149,8 @@
+ dlclose(FormatHandle);
+ if (CodecHandle)
+ dlclose(CodecHandle);
++ if(UtilHandle)
++ dlclose(UtilHandle);
+ #ifdef HAVE_SWSCALE
+ if (SwscaleHandle)
+ dlclose(CodecHandle);
+@@ -134,12 +167,24 @@
+ close();
+
+ // Open video file
+- if (av_open_input_file(&m_FormatCtx, _fileName.toUtf8(), NULL, 0, NULL)!=0) {
++ if (
++# if LIBAVFORMAT_VERSION_INT >= AV_VERSION_INT(53, 2, 0)
++ avformat_open_input(&m_FormatCtx, _fileName.toUtf8(), 0, 0)!=0
++# else
++ av_open_input_file(&m_FormatCtx, _fileName.toUtf8(), NULL, 0, NULL)!=0
++# endif
++ ) {
+ m_error=i18n("Couldn't open the file %1").arg(_fileName);
+ return false; // Couldn't open file}
+ }
+ // Retrieve stream information
+- if (av_find_stream_info(m_FormatCtx)<0) {
++ if (
++# if LIBAVFORMAT_VERSION_INT >= AV_VERSION_INT(53, 6, 0)
++ avformat_find_stream_info(m_FormatCtx, NULL)<0
++# else
++ av_find_stream_info(m_FormatCtx)<0
++# endif
++ ) {
+ m_error =i18n("Couldn't find stream information");
+ return false; // Couldn't find stream information
+ }
+@@ -168,7 +213,13 @@
+ return false; // Codec not found
+ }
+ // Open codec
+- if (avcodec_open(m_CodecCtx, m_Codec)<0) {
++ if (
++# if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(53, 8, 0)
++ avcodec_open2(m_CodecCtx, m_Codec, NULL)<0
++# else
++ avcodec_open(m_CodecCtx, m_Codec)<0
++# endif
++ ) {
+ m_error =i18n("Could'nt open the codec");
+ return false; // Could not open codec
+ }
+@@ -245,15 +296,23 @@
+ // Is this a packet from the video stream?
+ if (packet.stream_index==m_videoStream) {
+ // Decode video frame
++# if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(52, 23, 0)
++ avcodec_decode_video2(m_CodecCtx, m_Frame, &frameFinished, &packet);
++# else
+ avcodec_decode_video(m_CodecCtx, m_Frame, &frameFinished,
+ packet.data, packet.size);
++# endif
+
+ // Did we get a video frame?
+ if (frameFinished) {
+ // if (m_Frame->pts >=fspos)
+ int64_t cur_dts=fspos;
+- if (m_FormatCtx->cur_st)
+- cur_dts= m_FormatCtx->cur_st->cur_dts;
++# if LIBAVFORMAT_VERSION_INT >= AV_VERSION_INT(54, 2, 0)
++ cur_dts= packet.dts;
++# else
++ if (m_FormatCtx->cur_st)
++ cur_dts= m_FormatCtx->cur_st->cur_dts;
++# endif
+ if (cur_dts >=fspos) {
+ bFound=true;
+ #ifndef HAVE_SWSCALE
+@@ -309,7 +368,11 @@
+ avcodec_close(m_CodecCtx);
+
+ // Close the video file
++# if LIBAVFORMAT_VERSION_INT >= AV_VERSION_INT(53, 17, 0)
++ avformat_close_input(&m_FormatCtx);
++# else
+ av_close_input_file(m_FormatCtx);
++# endif
+ m_opened=false;
+ }
+ }
+diff -Nru backlite-1.0.3.orig/src/import/k9avidecode.h backlite-1.0.3/src/import/k9avidecode.h
+--- backlite-1.0.3.orig/src/import/k9avidecode.h 2011-12-07 21:34:56.000000000 +0100
++++ backlite-1.0.3/src/import/k9avidecode.h 2012-11-23 09:39:06.000000000 +0100
+@@ -15,6 +15,7 @@
+ #include "k9common.h"
+ #include <qobject.h>
+ #include <avformat.h>
++#include <avutil.h>
+ #include <qimage.h>
+ #include <cstdlib>
+ #include <QObject>
+@@ -29,10 +30,22 @@
+ //typedef dvd_file_t * (*DVDOpenFile_t) ( dvd_reader_t *, int, dvd_read_domain_t );
+ typedef void (*av_register_all_t) (void);
+ typedef int64_t (*av_gettime_t) (void);
++#if LIBAVFORMAT_VERSION_INT >= AV_VERSION_INT(53, 2, 0)
++typedef int (*avformat_open_input_t)(AVFormatContext **, const char *, AVInputFormat *, AVDictionary **);
++#else
+ typedef int (*av_open_input_file_t)(AVFormatContext **, const char *,AVInputFormat *,int, AVFormatParameters *);
++#endif
++#if LIBAVFORMAT_VERSION_INT >= AV_VERSION_INT(53, 6, 0)
++typedef int (*avformat_find_stream_info_t)(AVFormatContext *, AVDictionary **);
++#else
+ typedef int (*av_find_stream_info_t)(AVFormatContext *);
++#endif
+ typedef AVCodec* (*avcodec_find_decoder_t)(enum CodecID);
++#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(53, 8, 0)
++typedef int (*avcodec_open2_t)(AVCodecContext *, AVCodec *, AVDictionary **);
++#else
+ typedef int (*avcodec_open_t)(AVCodecContext *, AVCodec *);
++#endif
+ typedef AVFrame * (*avcodec_alloc_frame_t)(void);
+
+ typedef int (*avpicture_get_size_t)(int , int , int );
+@@ -40,11 +53,19 @@
+ typedef int (*avpicture_fill_t)(AVPicture *, uint8_t *,int , int , int);
+ typedef int (*av_read_frame_t)(AVFormatContext *, AVPacket *);
+
++#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(52, 23, 0)
++typedef int (*avcodec_decode_video2_t)(AVCodecContext *, AVFrame *, int *, AVPacket *);
++#else
+ typedef int (*avcodec_decode_video_t)(AVCodecContext *, AVFrame *,int *, uint8_t *, int );
++#endif
+ typedef int (*img_convert_t)(AVPicture *, int , const AVPicture *, int ,int, int);
+ typedef void (*av_free_t)(void *);
+ typedef int (*avcodec_close_t)(AVCodecContext *);
++#if LIBAVFORMAT_VERSION_INT >= AV_VERSION_INT(53, 17, 0)
++typedef void (*avformat_close_input_t)(AVFormatContext **);
++#else
+ typedef void (*av_close_input_file_t)(AVFormatContext *);
++#endif
+ typedef int (*av_seek_frame_t)(AVFormatContext *,int,int64_t timestamp,int flags); typedef int64_t (*av_rescale_q_t)(int64_t , AVRational , AVRational ) ;
+ typedef void (*avcodec_flush_buffers_t)(AVCodecContext *);
+ typedef void (*av_free_packet_t)(AVPacket *);
+@@ -77,21 +98,41 @@
+
+ private:
+ av_register_all_t av_register_all;
++# if LIBAVFORMAT_VERSION_INT >= AV_VERSION_INT(53, 2, 0)
++ avformat_open_input_t avformat_open_input;
++# else
+ av_open_input_file_t av_open_input_file;
++# endif
++# if LIBAVFORMAT_VERSION_INT >= AV_VERSION_INT(53, 6, 0)
++ avformat_find_stream_info_t avformat_find_stream_info;
++# else
+ av_find_stream_info_t av_find_stream_info;
++# endif
+ avcodec_find_decoder_t avcodec_find_decoder;
++# if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(53, 8, 0)
++ avcodec_open2_t avcodec_open2;
++# else
+ avcodec_open_t avcodec_open;
++# endif
+ avcodec_alloc_frame_t avcodec_alloc_frame;
+ av_seek_frame_t av_seek_frame;
+ avpicture_get_size_t avpicture_get_size;
+ av_malloc_t av_malloc;
+ avpicture_fill_t avpicture_fill;
+ av_read_frame_t av_read_frame;
++# if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(52, 23, 0)
++ avcodec_decode_video2_t avcodec_decode_video2;
++# else
+ avcodec_decode_video_t avcodec_decode_video;
++# endif
+ img_convert_t img_convert;
+ av_free_t av_free;
+ avcodec_close_t avcodec_close;
++# if LIBAVFORMAT_VERSION_INT >= AV_VERSION_INT(53, 17, 0)
++ avformat_close_input_t avformat_close_input;
++# else
+ av_close_input_file_t av_close_input_file;
++# endif
+ av_rescale_q_t av_rescale_q;
+ av_gettime_t av_gettime;
+ avcodec_flush_buffers_t avcodec_flush_buffers;
+@@ -103,6 +144,7 @@
+ #endif
+ void *CodecHandle;
+ void *FormatHandle;
++ void *UtilHandle;
+ void *SwscaleHandle;
+ int glibref;
+
diff --git a/multimedia/backlite/backlite.SlackBuild b/multimedia/backlite/backlite.SlackBuild
new file mode 100644
index 000000000000..c26ee77e02d8
--- /dev/null
+++ b/multimedia/backlite/backlite.SlackBuild
@@ -0,0 +1,100 @@
+#!/bin/sh
+
+# Slackware build script for backlite
+
+# Copyright 2011-2012 Roberto Neri, Palermo, Italy
+#
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ''AS IS'' AND ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+PRGNAM=backlite
+VERSION=${VERSION:-1.0.3}
+BUILD=${BUILD:-2}
+TAG=${TAG:-_SBo}
+
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) ARCH=i486 ;;
+ arm*) ARCH=arm ;;
+ *) ARCH=$( uname -m ) ;;
+ esac
+fi
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp/SBo}
+PKG=$TMP/package-$PRGNAM
+OUTPUT=${OUTPUT:-/tmp}
+
+if [ "$ARCH" = "i486" ]; then
+ SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "i686" ]; then
+ SLKCFLAGS="-O2 -march=i686 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+ LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+fi
+
+set -e
+
+rm -rf $PKG
+mkdir -p $TMP $PKG $OUTPUT
+cd $TMP
+rm -rf $PRGNAM-$VERSION
+tar xvf $CWD/$PRGNAM-$VERSION.tar.gz
+cd $PRGNAM-$VERSION
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+# Patch for ffmpeg 0.11
+# (adapted from a patch for the same purpose for k9copy by the Trinity Desktop Environment team,
+# with additional modifications by Matteo Bernardini)
+patch -p1 < $CWD/$PRGNAM-$VERSION-ffmpeg-0.11.patch
+
+qmake \
+ PREFIX=/usr \
+ QMAKE_CFLAGS="$SLKCFLAGS" \
+ QMAKE_CXXFLAGS="$SLKCFLAGS" \
+ backlite.pro
+
+make
+make install INSTALL_ROOT=$PKG
+
+find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
+ | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
+
+mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
+cp -a COPYING INSTALL.txt \
+ $PKG/usr/doc/$PRGNAM-$VERSION
+cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+cat $CWD/doinst.sh > $PKG/install/doinst.sh
+
+cd $PKG
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
diff --git a/multimedia/backlite/backlite.info b/multimedia/backlite/backlite.info
new file mode 100644
index 000000000000..f84431ee9fb6
--- /dev/null
+++ b/multimedia/backlite/backlite.info
@@ -0,0 +1,10 @@
+PRGNAM="backlite"
+VERSION="1.0.3"
+HOMEPAGE="http://k9copy.sourceforge.net/"
+DOWNLOAD="http://downloads.sourceforge.net/k9copy/backlite-1.0.3.tar.gz"
+MD5SUM="167007b06ae0bfa402cbaf7201539bcb"
+DOWNLOAD_x86_64=""
+MD5SUM_x86_64=""
+REQUIRES="%README% ffmpeg libmpeg2"
+MAINTAINER="Roberto Neri"
+EMAIL="rneri@libero.it"
diff --git a/multimedia/backlite/doinst.sh b/multimedia/backlite/doinst.sh
new file mode 100644
index 000000000000..3e5691a052b5
--- /dev/null
+++ b/multimedia/backlite/doinst.sh
@@ -0,0 +1,9 @@
+if [ -x /usr/bin/update-desktop-database ]; then
+ /usr/bin/update-desktop-database -q usr/share/applications >/dev/null 2>&1
+fi
+
+if [ -e usr/share/icons/hicolor/icon-theme.cache ]; then
+ if [ -x /usr/bin/gtk-update-icon-cache ]; then
+ /usr/bin/gtk-update-icon-cache usr/share/icons/hicolor >/dev/null 2>&1
+ fi
+fi
diff --git a/multimedia/backlite/slack-desc b/multimedia/backlite/slack-desc
new file mode 100644
index 000000000000..5d54dcb3428c
--- /dev/null
+++ b/multimedia/backlite/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':' except on otherwise blank lines.
+
+ |-----handy-ruler------------------------------------------------------|
+backlite: backlite (DVD backup utility)
+backlite:
+backlite: backlite provides several tools for backing up DVDs, including
+backlite: DVD9 to DVD5 conversion.
+backlite:
+backlite: It is the Qt-only version of the KDE DVD backup utility K9Copy.
+backlite:
+backlite: Homepage: http://k9copy.sourceforge.net/
+backlite:
+backlite:
+backlite: