diff options
40 files changed, 2802 insertions, 0 deletions
diff --git a/multimedia/Makefile b/multimedia/Makefile index 91a4c8714eb8..40e378caa672 100644 --- a/multimedia/Makefile +++ b/multimedia/Makefile @@ -50,6 +50,7 @@ SUBDIR += dvdauthor SUBDIR += dvdid SUBDIR += dvdread + SUBDIR += dvdrip SUBDIR += dvdstyler SUBDIR += elementary-videos SUBDIR += emby-server @@ -231,6 +232,7 @@ SUBDIR += mkclean SUBDIR += mkvalidator SUBDIR += mkvtoolnix + SUBDIR += mkxvcd SUBDIR += mlt SUBDIR += mlt-qt5 SUBDIR += mmsclient @@ -368,6 +370,7 @@ SUBDIR += subsync SUBDIR += subtitlecomposer SUBDIR += subtitleoffsetmodifier + SUBDIR += subtitleripper SUBDIR += subtools SUBDIR += svt-av1 SUBDIR += svt-hevc @@ -381,6 +384,7 @@ SUBDIR += tivodecode SUBDIR += totem SUBDIR += totem-pl-parser + SUBDIR += transcode SUBDIR += tstools SUBDIR += tvheadend SUBDIR += umph diff --git a/multimedia/dvdrip/Makefile b/multimedia/dvdrip/Makefile new file mode 100644 index 000000000000..86d4bb71fde6 --- /dev/null +++ b/multimedia/dvdrip/Makefile @@ -0,0 +1,68 @@ +# Created by: Michael Nottebrock <michaelnottebrock@gmx.net> + +PORTNAME= dvdrip +PORTVERSION= 0.98.11 +PORTREVISION= 12 +CATEGORIES= multimedia +MASTER_SITES= CPAN http://www.exit1.org/dvdrip/dist/ +MASTER_SITE_SUBDIR= CPAN:JRED + +MAINTAINER= ports@FreeBSD.org +COMMENT= Perl Gtk+ based dvd-ripper + +LICENSE= ART10 GPLv1 # (ART10 or GPLv1) and CC-BY-SA-2.5 +LICENSE_COMB= dual + +BUILD_DEPENDS= p5-Gtk2>=0:x11-toolkits/p5-Gtk2 \ + p5-AnyEvent>=0:devel/p5-AnyEvent \ + p5-Event-ExecFlow>=0:devel/p5-Event-ExecFlow \ + p5-Gtk2-Ex-FormFactory>=0:x11-toolkits/p5-Gtk2-Ex-FormFactory \ + p5-Event-RPC>=0:devel/p5-Event-RPC \ + p5-Locale-libintl>=0:devel/p5-Locale-libintl +RUN_DEPENDS= p5-Gtk2>=0:x11-toolkits/p5-Gtk2 \ + p5-AnyEvent>=0:devel/p5-AnyEvent \ + p5-Event-ExecFlow>=0:devel/p5-Event-ExecFlow \ + p5-Gtk2-Ex-FormFactory>=0:x11-toolkits/p5-Gtk2-Ex-FormFactory \ + p5-Event-RPC>=0:devel/p5-Event-RPC \ + p5-Locale-libintl>=0:devel/p5-Locale-libintl \ + cdrdao:sysutils/cdrdao \ + convert:graphics/ImageMagick6 \ + mplayer:multimedia/mplayer \ + pstree:sysutils/pstree \ + transcode:multimedia/transcode \ + vcdimager:multimedia/vcdimager \ + ${LOCALBASE}/sbin/fping:net/fping \ + cdrecord:sysutils/cdrtools + +USES= gettext perl5 shebangfix +USE_PERL5= configure patch + +SHEBANG_FILES= bin/dvdrip* +CONFIGURE_ENV= SKIP_UNPACK_REQUIRED_MODULES=1 + +MAKE_JOBS_UNSAFE= yes + +OPTIONS_DEFINE= VORBIS SUBTITLE RAR +OPTIONS_DEFAULT= VORBIS SUBTITLE +RAR_DESC= Support RAR-compressed vobsub subtitles +SUBTITLE_DESC= Enable support for getting subtitles + +RAR_RUN_DEPENDS= rar:archivers/rar +SUBTITLE_RUN_DEPENDS= subtitle2pgm:multimedia/subtitleripper +VORBIS_RUN_DEPENDS= oggenc:audio/vorbis-tools \ + ogmmerge:multimedia/ogmtools + +post-patch: + @${PERL} -pi -e 's#/usr/sbin/fping#${LOCALBASE}/sbin/fping#' \ + ${WRKSRC}/lib/Video/DVDRip/Cluster/Master.pm \ + ${WRKSRC}/lib/Video/DVDRip/Depend.pm + @${FIND} ${WRKSRC} -name \*.orig -delete + +post-install: +.for f in dvdrip-progress dvdrip-splitpipe + @${CHMOD} u+w ${STAGEDIR}${PREFIX}/bin/${f} + @${STRIP_CMD} ${STAGEDIR}${PREFIX}/bin/${f} + @${CHMOD} u-w ${STAGEDIR}${PREFIX}/bin/${f} +.endfor + +.include <bsd.port.mk> diff --git a/multimedia/dvdrip/distinfo b/multimedia/dvdrip/distinfo new file mode 100644 index 000000000000..3c7e3360a90d --- /dev/null +++ b/multimedia/dvdrip/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1619892059 +SHA256 (dvdrip-0.98.11.tar.gz) = 586c20968b2daa55c0afaaf334d5b9b8b6896d6ea45078a577e165806858c3a5 +SIZE (dvdrip-0.98.11.tar.gz) = 2075302 diff --git a/multimedia/dvdrip/files/patch-lib__Video__DVDRip__Cluster__Master.pm b/multimedia/dvdrip/files/patch-lib__Video__DVDRip__Cluster__Master.pm new file mode 100644 index 000000000000..23bb4b40ec57 --- /dev/null +++ b/multimedia/dvdrip/files/patch-lib__Video__DVDRip__Cluster__Master.pm @@ -0,0 +1,11 @@ +--- lib/Video/DVDRip/Cluster/Master.pm.orig 2010-04-24 17:21:50.000000000 -0300 ++++ lib/Video/DVDRip/Cluster/Master.pm 2010-04-24 17:25:30.000000000 -0300 +@@ -122,7 +122,7 @@ + sub check_prerequisites { + my $class = shift; + +- foreach my $path ( "/usr/bin", "/usr/sbin" ) { ++ foreach my $path ( "/usr/bin", "/usr/sbin", "/usr/local/sbin" ) { + if ( -f "$path/fping" and -x "$path/fping" ) { + $FPING = "$path/fping"; + last; diff --git a/multimedia/dvdrip/files/patch-lib__Video__DVDRip__Config.pm b/multimedia/dvdrip/files/patch-lib__Video__DVDRip__Config.pm new file mode 100644 index 000000000000..f21f1560098d --- /dev/null +++ b/multimedia/dvdrip/files/patch-lib__Video__DVDRip__Config.pm @@ -0,0 +1,40 @@ +--- lib/Video/DVDRip/Config.pm.orig Sun Aug 20 07:56:01 2006 ++++ lib/Video/DVDRip/Config.pm Sat Sep 23 13:58:03 2006 +@@ -193,16 +193,16 @@ + dvd_device => { + label => __ "Default DVD device", + type => 'file', +- value => "", ++ value => "/cdrom", + dvd_button => 1, + }, + selected_dvd_device => { +- value => "/dev/dvd", ++ value => "/cdrom", + }, + eject_command => { + label => __ "Eject Command", + type => 'string', +- value => "eject", ++ value => "cdcontrol", + rules => "executable-command", + }, + play_dvd_command => { +@@ -226,7 +226,7 @@ + play_stdin_command => { + label => __ "STDIN player command", + type => 'string', +- value => 'xine stdin://mpeg2 -g -pq -a %a', ++ value => 'mplayer -aid %(%a+128) -', + presets => [ + 'mplayer -aid %(%a+128) -', 'xine stdin://mpeg2 -g -pq -a %a', + ], +@@ -274,7 +274,7 @@ + default_video_codec => { + label => __ "Default video codec", + type => 'string', +- value => 'xvid', ++ value => 'xvid4', + presets => [ + "SVCD", "VCD", "XSVCD", "XVCD", "CVD", "divx4", + "divx5", "xvid", "xvidcvs", "xvid2", "xvid3", "xvid4", diff --git a/multimedia/dvdrip/files/patch-lib__Video__DVDRip__FilterList.pm b/multimedia/dvdrip/files/patch-lib__Video__DVDRip__FilterList.pm new file mode 100644 index 000000000000..300de0fe00f7 --- /dev/null +++ b/multimedia/dvdrip/files/patch-lib__Video__DVDRip__FilterList.pm @@ -0,0 +1,11 @@ +--- lib/Video/DVDRip/FilterList.pm.orig Fri Sep 22 16:05:34 2006 ++++ lib/Video/DVDRip/FilterList.pm Fri Sep 22 16:06:07 2006 +@@ -220,7 +220,7 @@ + "[filterlist] (re)scanning transcode's module path $modpath...\n"; + + my @filter_names = grep !/^(pv|preview)$/, +- map {m!/filter_([^/]+)\.so$!} glob("$modpath/filter_*"); ++ map {m!/filter_([^/]+)\.so$/!} glob("$modpath/filter_*"); + + my %filters; + foreach my $filter_name (@filter_names) { diff --git a/multimedia/dvdrip/files/patch-lib__Video__DVDRip__GUI__Project__Storage.pm b/multimedia/dvdrip/files/patch-lib__Video__DVDRip__GUI__Project__Storage.pm new file mode 100644 index 000000000000..acc6e4b11e5e --- /dev/null +++ b/multimedia/dvdrip/files/patch-lib__Video__DVDRip__GUI__Project__Storage.pm @@ -0,0 +1,15 @@ +--- lib/Video/DVDRip/GUI/Project/Storage.pm.orig Sat Sep 23 16:06:43 2006 ++++ lib/Video/DVDRip/GUI/Project/Storage.pm Sat Sep 23 16:15:30 2006 +@@ -144,6 +144,12 @@ + ."Either it's the filename of a physical DVD " + ."device or the path of a full DVD image copy." + ), ++ Gtk2::Ex::FormFactory::Label->new( ++ label => ++ __"Important: On FreeBSD, please mount your DVD disc first\n" ++ ."(eg 'mount /cdrom'), and then specify the mountpoint above\n" ++ ."(click \"Choose DVD image directory\" and select '/cdrom').\n" ++ ), + ], + ), + ], diff --git a/multimedia/dvdrip/files/patch-lib__Video__DVDRip__GUI__Project__Title.pm b/multimedia/dvdrip/files/patch-lib__Video__DVDRip__GUI__Project__Title.pm new file mode 100644 index 000000000000..881d7de0c6d8 --- /dev/null +++ b/multimedia/dvdrip/files/patch-lib__Video__DVDRip__GUI__Project__Title.pm @@ -0,0 +1,27 @@ +--- lib/Video/DVDRip/GUI/Project/Title.pm.orig Fri Sep 22 15:53:09 2006 ++++ lib/Video/DVDRip/GUI/Project/Title.pm Fri Sep 22 15:56:35 2006 +@@ -433,8 +433,10 @@ + my $title = $self->selected_title; + + my $command +- = $self->config('eject_command') . " " . +- $title->project->dvd_device; ++ = $self->config('eject_command') . " -f " . ++ $title->project->dvd_device . ++ " eject"; ++ + + system("$command &"); + +@@ -446,8 +448,9 @@ + + my $title = $self->selected_title; + +- my $command = $self->config('eject_command') . " -t " +- . $title->project->dvd_device; ++ my $command = $self->config('eject_command') . " -f " . ++ $title->project->dvd_device . ++ " close"; + + system("$command &"); + diff --git a/multimedia/dvdrip/files/patch-lib__Video__DVDRip__Project.pm b/multimedia/dvdrip/files/patch-lib__Video__DVDRip__Project.pm new file mode 100644 index 000000000000..4607d0a71b0f --- /dev/null +++ b/multimedia/dvdrip/files/patch-lib__Video__DVDRip__Project.pm @@ -0,0 +1,51 @@ +--- lib/Video/DVDRip/Project.pm.orig Wed Aug 16 16:34:38 2006 ++++ lib/Video/DVDRip/Project.pm Sat Sep 23 15:32:16 2006 +@@ -345,24 +345,27 @@ + return \%symlinks; + } + +-sub get_mount_dir_from_mtab { ++sub get_mount_dir_from_fstab { + my $self = shift; +- my ( $dvd_device, $mtab_file ) = @_; ++ my ( $dvd_device, $fstab_file ) = @_; + + my $symlinks_href = $self->resolve_symlinks($dvd_device); + +- open( my $fh, $mtab_file ) +- or die "can't read $mtab_file"; ++ open(FSTABINPUT, $fstab_file ) ++ or die "can't read $fstab_file"; + + my $mount_dir; +- while ( my $line = <$fh> ) { +- my ( $device, $dir ) = split( /\s+/, $line ); +- if ( $symlinks_href->{$device} ) { +- $mount_dir = $dir; +- last; +- } ++ while (<FSTABINPUT>) { ++ my ($dev, $mnt, $fstyp, $opt, $dump, $pass) = split; ++ next if $dev =~ /^#/; ++ if (( $dev eq $symlinks_href->{$dev} ) || ++ ( $mnt eq $symlinks_href->{$dev} ) || ++ ( $fstyp eq 'cd9660' )) { ++ $mount_dir = $mnt; ++ last; ++ } + } +- close $fh; ++ close (FSTABINPUT); + + return $mount_dir; + } +@@ -373,8 +376,7 @@ + my $dvd_device = $self->dvd_device; + + my $dvd_mount_point +- = $self->get_mount_dir_from_mtab( $dvd_device, "/etc/mtab" ) +- || $self->get_mount_dir_from_mtab( $dvd_device, "/etc/fstab" ); ++ = $self->get_mount_dir_from_fstab( $dvd_device, "/etc/fstab" ); + + return $dvd_mount_point; + } diff --git a/multimedia/dvdrip/pkg-descr b/multimedia/dvdrip/pkg-descr new file mode 100644 index 000000000000..7ee0a7d01d75 --- /dev/null +++ b/multimedia/dvdrip/pkg-descr @@ -0,0 +1,6 @@ +This is dvd::rip, a Perl Gtk+ based dvd-ripper. It serves as a +convenient frontend to transcode and makes ripping and encoding +DVDs a breeze. It also features a cluster daemon, which can distribute +encoding jobs over multiple machines. + +WWW: https://www.exit1.org/dvdrip/ diff --git a/multimedia/dvdrip/pkg-plist b/multimedia/dvdrip/pkg-plist new file mode 100644 index 000000000000..01b557c192f3 --- /dev/null +++ b/multimedia/dvdrip/pkg-plist @@ -0,0 +1,100 @@ +bin/dvdrip +bin/dvdrip-exec +bin/dvdrip-master +bin/dvdrip-multitee +bin/dvdrip-progress +bin/dvdrip-replex +bin/dvdrip-splash +bin/dvdrip-splitpipe +bin/dvdrip-subpng +bin/dvdrip-thumb +%%PERL5_MAN1%%/dvdrip.1.gz +%%PERL5_MAN1%%/dvdrip-progress.1.gz +%%PERL5_MAN1%%/dvdrip-splitpipe.1.gz +%%PERL5_MAN3%%/Video::DVDRip.3.gz +%%PERL5_MAN3%%/Video::DVDRip::CPAN::Scanf.3.gz +%%SITE_PERL%%/LocaleData/cs/LC_MESSAGES/video.dvdrip.mo +%%SITE_PERL%%/LocaleData/da/LC_MESSAGES/video.dvdrip.mo +%%SITE_PERL%%/LocaleData/de/LC_MESSAGES/video.dvdrip.mo +%%SITE_PERL%%/LocaleData/es/LC_MESSAGES/video.dvdrip.mo +%%SITE_PERL%%/LocaleData/fr/LC_MESSAGES/video.dvdrip.mo +%%SITE_PERL%%/LocaleData/it/LC_MESSAGES/video.dvdrip.mo +%%SITE_PERL%%/LocaleData/sr/LC_MESSAGES/video.dvdrip.mo +%%SITE_PERL%%/LocaleData/sr@Latn/LC_MESSAGES/video.dvdrip.mo +%%SITE_PERL%%/Video/DVDRip.pm +%%SITE_PERL%%/Video/DVDRip/Audio.pm +%%SITE_PERL%%/Video/DVDRip/Base.pm +%%SITE_PERL%%/Video/DVDRip/BitrateCalc.pm +%%SITE_PERL%%/Video/DVDRip/CPAN/Scanf.pm +%%SITE_PERL%%/Video/DVDRip/Cluster/ExecFlowFrontend.pm +%%SITE_PERL%%/Video/DVDRip/Cluster/JobPlanner.pm +%%SITE_PERL%%/Video/DVDRip/Cluster/Master.pm +%%SITE_PERL%%/Video/DVDRip/Cluster/Node.pm +%%SITE_PERL%%/Video/DVDRip/Cluster/PSU.pm +%%SITE_PERL%%/Video/DVDRip/Cluster/Pipe.pm +%%SITE_PERL%%/Video/DVDRip/Cluster/Project.pm +%%SITE_PERL%%/Video/DVDRip/Cluster/Scheduler.pm +%%SITE_PERL%%/Video/DVDRip/Cluster/Title.pm +%%SITE_PERL%%/Video/DVDRip/Cluster/Webserver.pm +%%SITE_PERL%%/Video/DVDRip/Config.pm +%%SITE_PERL%%/Video/DVDRip/Content.pm +%%SITE_PERL%%/Video/DVDRip/Convert.pm +%%SITE_PERL%%/Video/DVDRip/Depend.pm +%%SITE_PERL%%/Video/DVDRip/FilterList.pm +%%SITE_PERL%%/Video/DVDRip/FilterSettings.pm +%%SITE_PERL%%/Video/DVDRip/GUI/Base.pm +%%SITE_PERL%%/Video/DVDRip/GUI/BitrateCalc.pm +%%SITE_PERL%%/Video/DVDRip/GUI/Cluster/Control.pm +%%SITE_PERL%%/Video/DVDRip/GUI/Cluster/Node.pm +%%SITE_PERL%%/Video/DVDRip/GUI/Cluster/Title.pm +%%SITE_PERL%%/Video/DVDRip/GUI/Context.pm +%%SITE_PERL%%/Video/DVDRip/GUI/Depend.pm +%%SITE_PERL%%/Video/DVDRip/GUI/ExecFlow.pm +%%SITE_PERL%%/Video/DVDRip/GUI/Filters.pm +%%SITE_PERL%%/Video/DVDRip/GUI/FormFactory/ClipImage.pm +%%SITE_PERL%%/Video/DVDRip/GUI/FormFactory/SubtitlePreviews.pm +%%SITE_PERL%%/Video/DVDRip/GUI/Icons/dvdrip-audio-matrix.png +%%SITE_PERL%%/Video/DVDRip/GUI/Icons/dvdrip-calc-height.png +%%SITE_PERL%%/Video/DVDRip/GUI/Icons/dvdrip-calc-width.png +%%SITE_PERL%%/Video/DVDRip/GUI/Icons/dvdrip-clip-move.png +%%SITE_PERL%%/Video/DVDRip/GUI/Icons/dvdrip-play-movie.png +%%SITE_PERL%%/Video/DVDRip/GUI/Icons/dvdrip-scan-volume.png +%%SITE_PERL%%/Video/DVDRip/GUI/Main.pm +%%SITE_PERL%%/Video/DVDRip/GUI/MultiAudio.pm +%%SITE_PERL%%/Video/DVDRip/GUI/Pipe.pm +%%SITE_PERL%%/Video/DVDRip/GUI/Preferences.pm +%%SITE_PERL%%/Video/DVDRip/GUI/Preview.pm +%%SITE_PERL%%/Video/DVDRip/GUI/Progress.pm +%%SITE_PERL%%/Video/DVDRip/GUI/Project/ClipZoom.pm +%%SITE_PERL%%/Video/DVDRip/GUI/Project/Logging.pm +%%SITE_PERL%%/Video/DVDRip/GUI/Project/Storage.pm +%%SITE_PERL%%/Video/DVDRip/GUI/Project/Subtitle.pm +%%SITE_PERL%%/Video/DVDRip/GUI/Project/Title.pm +%%SITE_PERL%%/Video/DVDRip/GUI/Project/Transcode.pm +%%SITE_PERL%%/Video/DVDRip/GUI/Rules.pm +%%SITE_PERL%%/Video/DVDRip/GUI/ZoomCalculator.pm +%%SITE_PERL%%/Video/DVDRip/InfoFile.pm +%%SITE_PERL%%/Video/DVDRip/JobPlanner.pm +%%SITE_PERL%%/Video/DVDRip/Logger.pm +%%SITE_PERL%%/Video/DVDRip/PSU.pm +%%SITE_PERL%%/Video/DVDRip/Preset.pm +%%SITE_PERL%%/Video/DVDRip/Probe.pm +%%SITE_PERL%%/Video/DVDRip/Project.pm +%%SITE_PERL%%/Video/DVDRip/SrtxFile.pm +%%SITE_PERL%%/Video/DVDRip/Subtitle.pm +%%SITE_PERL%%/Video/DVDRip/Term/ExitTask.pm +%%SITE_PERL%%/Video/DVDRip/Term/Main.pm +%%SITE_PERL%%/Video/DVDRip/Term/Progress.pm +%%SITE_PERL%%/Video/DVDRip/Title.pm +%%SITE_PERL%%/Video/DVDRip/TranscodeRC.pm +%%SITE_PERL%%/Video/DVDRip/icon.xpm +%%SITE_PERL%%/Video/DVDRip/license.txt +%%SITE_PERL%%/Video/DVDRip/splash.ca.png +%%SITE_PERL%%/Video/DVDRip/splash.da.png +%%SITE_PERL%%/Video/DVDRip/splash.de.png +%%SITE_PERL%%/Video/DVDRip/splash.en.png +%%SITE_PERL%%/Video/DVDRip/splash.es.png +%%SITE_PERL%%/Video/DVDRip/splash.it.png +%%SITE_PERL%%/Video/DVDRip/splash.sr@Latn.png +%%SITE_PERL%%/Video/DVDRip/splash.sr.png +%%SITE_PERL%%/Video/DVDRip/translators.txt diff --git a/multimedia/mkxvcd/Makefile b/multimedia/mkxvcd/Makefile new file mode 100644 index 000000000000..170269d5f174 --- /dev/null +++ b/multimedia/mkxvcd/Makefile @@ -0,0 +1,39 @@ +# Created by: michael johnson <ahze@ahze.net> + +PORTNAME= mkxvcd +PORTVERSION= 2.0.2 +PORTREVISION= 13 +CATEGORIES= multimedia +MASTER_SITES= SF/kvcd4nix/${PORTNAME}/${PORTNAME}-${PORTVERSION}/ + +MAINTAINER= ports@FreeBSD.org +COMMENT= Makes high quality X/K/S/VCD movies from many formats + +LICENSE= GPLv2 +LICENSE_FILE= ${WRKSRC}/COPYING + +RUN_DEPENDS= mpeg2enc:multimedia/mjpegtools \ + bash:shells/bash \ + mplayer:multimedia/mplayer \ + transcode:multimedia/transcode + +USES= shebangfix +SHEBANG_FILES= ${PORTNAME}.sh + +NO_ARCH= yes +NO_BUILD= yes + +PLIST_FILES= bin/${PORTNAME} +PORTDOCS= AUTHORS Changelog README + +OPTIONS_DEFINE= DOCS + +do-install: + ${INSTALL_SCRIPT} ${WRKSRC}/${PORTNAME}.sh \ + ${STAGEDIR}${PREFIX}/bin/${PORTNAME} + +do-install-DOCS-on: + @${MKDIR} ${STAGEDIR}${DOCSDIR} + ${INSTALL_DATA} ${PORTDOCS:S|^|${WRKSRC}/|} ${STAGEDIR}${DOCSDIR} + +.include <bsd.port.mk> diff --git a/multimedia/mkxvcd/distinfo b/multimedia/mkxvcd/distinfo new file mode 100644 index 000000000000..98439f808c8b --- /dev/null +++ b/multimedia/mkxvcd/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1619893261 +SHA256 (mkxvcd-2.0.2.tar.gz) = b62ba2de3ab7a04affa856b9a625c9ad97c9b793252d3006fd38385f5785e0ca +SIZE (mkxvcd-2.0.2.tar.gz) = 23575 diff --git a/multimedia/mkxvcd/pkg-descr b/multimedia/mkxvcd/pkg-descr new file mode 100644 index 000000000000..53ab34d133b8 --- /dev/null +++ b/multimedia/mkxvcd/pkg-descr @@ -0,0 +1,16 @@ +Makes high quality X/K/S/VCD movies from any format mplayer can play + +From README: +GOAL + Make a 2 hour vcd with good quality. + +USAGE + mkxvcd.sh yourmovie.whateverextensionmplayercanplay + mkxvcd.sh /dev/dvd (or whatever device your dvd drive is using) + Options on the commandline are: + -d for debugging. + -m to force mplayer if you don't have transcode installed. + -t to force transcode (you can also edit the script in the :user + settings" section) + +WWW: http://kvcd4nix.sourceforge.net/ diff --git a/multimedia/subtitleripper/Makefile b/multimedia/subtitleripper/Makefile new file mode 100644 index 000000000000..08f88834c423 --- /dev/null +++ b/multimedia/subtitleripper/Makefile @@ -0,0 +1,71 @@ +# Created by: Mario Sergio Fujikawa Ferreira <lioux@FreeBSD.org> + +PORTNAME= subtitleripper +DISTVERSION= 0.3-4 +PORTREVISION= 11 +CATEGORIES= multimedia +MASTER_SITES= SF/${PORTNAME}/${PORTNAME}/${PORTNAME}-0.3-4 + +MAINTAINER= multimedia@FreeBSD.org +COMMENT= Convert DVD subtitles into text format (subrip srt) or VobSub format + +LICENSE= GPLv2 + +LIB_DEPENDS= libnetpbm.so:graphics/netpbm \ + libpng.so:graphics/png +RUN_DEPENDS= gocr:graphics/gocr \ + xv:graphics/xv \ + transcode:multimedia/transcode + +USES= gmake tar:tgz +CFLAGS+= -D_WITH_GETLINE=1 -DHAVE_GETLINE=1 \ + -I${LOCALBASE}/include/netpbm + +WRKSRC= ${WRKDIR}/${PORTNAME} + +OPTIONS_DEFINE= DOCS EXAMPLES + +DOC_FILES= \ + ChangeLog \ + README \ + README.gocr \ + README.srttool \ + README.subtitle2pgm \ + README.vobsub +EXAMPLES_FILES= \ + gocrfilter_en.sed \ + gocrfilter_fr.sed \ + gocrfilter_nl.sed \ + gocrfilter_none.sed +PROGRAM_FILES= \ + srttool \ + subtitle2pgm \ + subtitle2vobsub \ + vobsub2pgm +SCRIPT_FILES= \ + pgm2txt + +post-patch: + @${REINPLACE_CMD} -E \ + -e 's|^(CC[[:space:]]*=).*$$|\1${CC}|' \ + -e 's|^(COPT[[:space:]]*=).*$$|\1${CFLAGS}|' \ + -e 's|^(INCLUDES[[:space:]]*:=).*$$|\1 -I${LOCALBASE}/include|' \ + -e 's|^(LIBS[[:space:]]*:=).*$$|\1 -lm -L${LOCALBASE}/lib|' \ + -e 's|-lppm|-lnetpbm|' \ + ${BUILD_WRKSRC}/${MAKEFILE} + @${REINPLACE_CMD} -E \ + -e 's|^(DB_PATH[[:space:]]*=).*$$|\1\$${HOME}/.db/|' \ + -e 's|^(IMAGE_VIWER[[:space:]]*=).*$$|\1${LOCALBASE}/bin/xv|' \ + -e 's|^(PATH_TO_LANGUAGE_FILTER[[:space:]]*=).*$$|\1${EXAMPLESDIR}/|' \ + -e 's|(gocr[[:space:]]+)|${LOCALBASE}/bin/\1|' \ + ${WRKSRC}/pgm2txt + +do-install: + ${MKDIR} ${STAGEDIR}${DOCSDIR} + cd ${WRKSRC}; ${INSTALL_DATA} ${DOC_FILES} ${STAGEDIR}${DOCSDIR} + ${MKDIR} ${STAGEDIR}${EXAMPLESDIR} + cd ${WRKSRC}; ${INSTALL_SCRIPT} ${EXAMPLES_FILES} ${STAGEDIR}${EXAMPLESDIR} + cd ${WRKSRC}; ${INSTALL_PROGRAM} ${PROGRAM_FILES} ${STAGEDIR}${PREFIX}/bin + cd ${WRKSRC}; ${INSTALL_SCRIPT} ${SCRIPT_FILES} ${STAGEDIR}${PREFIX}/bin + +.include <bsd.port.mk> diff --git a/multimedia/subtitleripper/distinfo b/multimedia/subtitleripper/distinfo new file mode 100644 index 000000000000..8bbc35ed0250 --- /dev/null +++ b/multimedia/subtitleripper/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1619892106 +SHA256 (subtitleripper-0.3-4.tgz) = 8af6c2ebe55361900871c731ea1098b1a03efa723cd29ee1d471435bd21f3ac4 +SIZE (subtitleripper-0.3-4.tgz) = 47299 diff --git a/multimedia/subtitleripper/pkg-descr b/multimedia/subtitleripper/pkg-descr new file mode 100644 index 000000000000..db24afa80eb4 --- /dev/null +++ b/multimedia/subtitleripper/pkg-descr @@ -0,0 +1,16 @@ +[ excerpt from developer's www site ] + +If you want to convert DVD subtitles into text format (e.g. subrip +format) or VobSub format this program could be useful for you. +However, it is only one tiny tool that you need in the process of +producing srt files. This software depends heavily on transcode +for its input and is therefore part of the transcode package (see +transcode's contrib directory). So, if you want to convert some +subtitles, grap a copy of the lates transcode distribution. + +For srt file production the output of this program should be processed +by some OCR software. Currently, I work with GOCR for this purpose. + +For VobSub output no other tools are required. + +WWW: http://subtitleripper.sourceforge.net/ diff --git a/multimedia/subtitleripper/pkg-plist b/multimedia/subtitleripper/pkg-plist new file mode 100644 index 000000000000..9b250920436a --- /dev/null +++ b/multimedia/subtitleripper/pkg-plist @@ -0,0 +1,15 @@ +bin/pgm2txt +bin/srttool +bin/subtitle2pgm +bin/subtitle2vobsub +bin/vobsub2pgm +%%PORTDOCS%%%%DOCSDIR%%/ChangeLog +%%PORTDOCS%%%%DOCSDIR%%/README +%%PORTDOCS%%%%DOCSDIR%%/README.gocr +%%PORTDOCS%%%%DOCSDIR%%/README.srttool +%%PORTDOCS%%%%DOCSDIR%%/README.subtitle2pgm +%%PORTDOCS%%%%DOCSDIR%%/README.vobsub +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/gocrfilter_en.sed +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/gocrfilter_fr.sed +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/gocrfilter_nl.sed +%%PORTEXAMPLES%%%%EXAMPLESDIR%%/gocrfilter_none.sed diff --git a/multimedia/transcode/Makefile b/multimedia/transcode/Makefile new file mode 100644 index 000000000000..9470fd1c569e --- /dev/null +++ b/multimedia/transcode/Makefile @@ -0,0 +1,160 @@ +# Created by: Hendrik Scholz <hendrik@scholz.net> + +PORTNAME= transcode +PORTVERSION= 1.1.7 +PORTREVISION= 47 +CATEGORIES= multimedia +MASTER_SITES= https://bitbucket.org/france/transcode-tcforge/downloads/ + +MAINTAINER= ports@FreeBSD.org +COMMENT= Text-console utility for video stream processing + +LICENSE= GPLv2 + +LIB_DEPENDS= libavcodec.so:multimedia/ffmpeg + +USE_LDCONFIG= yes +USES= gmake libtool pkgconfig tar:bzip2 gettext-runtime +GNU_CONFIGURE= yes +CONFIGURE_ARGS= --enable-oss +CPPFLAGS+= -I${LOCALBASE}/include +LDFLAGS+= -L${LOCALBASE}/lib +INSTALL_TARGET= install-strip + +OPTIONS_DEFINE= DOCS OPTIMIZED_CFLAGS X11 MPEG2 BKTR POSTPROC FREETYPE LAME \ + XVID X264 OGG VORBIS THEORA DVDREAD DV QUICKTIME LZO A52 \ + FAAC LIBXML2 MJPEGTOOLS SDL IMAGEMAGICK JPEG ICONV V4L +OPTIONS_DEFAULT= LAME DVDREAD JPEG ICONV +BKTR_DESC= Bktr capture card support +POSTPROC_DESC= Libpostproc support +DVDREAD_DESC= Libdvdread support + +X11_USES= xorg +X11_USE= xorg=xv,xaw,xpm,sm,ice,xext,x11,xt +X11_CONFIGURE_WITH= x + +MPEG2_LIB_DEPENDS= libmpeg2.so:multimedia/libmpeg2 +MPEG2_CONFIGURE_ENABLE= libmpeg2 libmpeg2convert + +BKTR_CONFIGURE_ENABLE= bktr + +POSTPROC_CONFIGURE_ENABLE= libpostproc + +FREETYPE_LIB_DEPENDS= libfreetype.so:print/freetype2 +FREETYPE_CONFIGURE_ENABLE= freetype2 + +LAME_LIB_DEPENDS= libmp3lame.so:audio/lame +LAME_CONFIGURE_ENABLE= lame +LAME_CONFIGURE_ON= --with-lame-prefix=${LOCALBASE} + +XVID_LIB_DEPENDS= libxvidcore.so:multimedia/xvid +XVID_CONFIGURE_ENABLE= xvid +XVID_CONFIGURE_ON= --with-xvid-prefix=${LOCALBASE} + +X264_LIB_DEPENDS= libx264.so:multimedia/libx264 +X264_CONFIGURE_ENABLE= x264 + +OGG_LIB_DEPENDS= libogg.so:audio/libogg +OGG_CONFIGURE_ENABLE= ogg + +VORBIS_LIB_DEPENDS= libvorbis.so:audio/libvorbis +VORBIS_CONFIGURE_ENABLE= vorbis + +THEORA_LIB_DEPENDS= libtheora.so:multimedia/libtheora +THEORA_CONFIGURE_ENABLE= theora + +DVDREAD_LIB_DEPENDS= libdvdread.so:multimedia/libdvdread +DVDREAD_CONFIGURE_ENABLE= libdvdread +DVDREAD_CONFIGURE_ON= --with-libdvdread-prefix=${LOCALBASE} + +DV_LIB_DEPENDS= libdv.so:multimedia/libdv +DV_CONFIGURE_ENABLE= libdv + +QUICKTIME_LIB_DEPENDS= libquicktime.so:multimedia/libquicktime +QUICKTIME_CONFIGURE_ENABLE= libquicktime + +LZO_LIB_DEPENDS= liblzo2.so:archivers/lzo2 +LZO_CONFIGURE_ENABLE= lzo +LZO_CONFIGURE_ON= --with-lzo-prefix=${LOCALBASE} --with-lzo-includes=${LOCALBASE} + +A52_LIB_DEPENDS= liba52.so:audio/liba52 +A52_CONFIGURE_ENABLE= a52 +A52_CONFIGURE_ON= --with-a52-prefix=${LOCALBASE} + +FAAC_LIB_DEPENDS= libfaac.so:audio/faac +FAAC_CONFIGURE_ENABLE= faac +FAAC_CONFIGURE_ON= --with-faac-prefix=${LOCALBASE} + +LIBXML2_USES= gnome +LIBXML2_USE= GNOME=libxml2 +LIBXML2_CONFIGURE_ENABLE= libxml2 + +MJPEGTOOLS_LIB_DEPENDS= liblavjpeg.so:multimedia/mjpegtools +MJPEGTOOLS_CONFIGURE_ENABLE= mjpegtools + +SDL_USES= sdl +SDL_USE= SDL=sdl +SDL_CONFIGURE_ENABLE= sdl + +IMAGEMAGICK_LIB_DEPENDS= libMagickWand-6.so:graphics/ImageMagick6 +IMAGEMAGICK_CONFIGURE_ENABLE= imagemagick +IMAGEMAGICK_CONFIGURE_ON= --with-imagemagick-prefix=${LOCALBASE} + +JPEG_USES= jpeg +JPEG_CONFIGURE_ENABLE= libjpeg +JPEG_CONFIGURE_ON= --with-libjpeg-prefix=${LOCALBASE} + +ICONV_USES= iconv +ICONV_CONFIGURE_ENABLE= iconv +ICONV_CONFIGURE_ON= --with-iconv-prefix=${ICONV_PREFIX} + +V4L_BUILD_DEPENDS= ${LOCALBASE}/include/linux/videodev2.h:multimedia/v4l_compat +V4L_CONFIGURE_ENABLE= v4l + +.include <bsd.port.pre.mk> + +LDFLAGS_i386+= -Wl,-z,notext + +.if empty(ICONV_LIB) +CONFIGURE_ARGS+=ac_cv_lib_iconv_iconv_open=no \ + ac_cv_lib_iconv_libiconv_open=no +.endif + +post-extract: + @${RM} ${WRKSRC}/import/v4l/videodev* + +post-patch: + @${REINPLACE_CMD} -E -e 's|loff_t|uint64_t|' ${WRKSRC}/avilib/avidump.c + @${REINPLACE_CMD} -E -e 's|<SDL/|<|' ${WRKSRC}/filter/preview/display.h + @${REINPLACE_CMD} -e '/^static.*lrint/s|static ||' ${WRKSRC}/filter/filter_modfps.c + + @${REINPLACE_CMD} -E -e 's|(-la52)|\1 ${LIBA52_DEP_LIBS}|g ; \ + s|FFMPEG_VERSION|LIBAVCODEC_IDENT|g ; \ + s|-lMagick|-lMagickCore|g' \ + ${CONFIGURE_WRKSRC}/${CONFIGURE_SCRIPT} + + @${REINPLACE_CMD} -E -e 's|-ldl||g' ${WRKSRC}/configure + @${REINPLACE_CMD} -E -e 's|%%LOCALBASE%%|${LOCALBASE}|g' ${WRKSRC}/configure + @${REINPLACE_CMD} -E -e 's|WRKSRC|${WRKSRC}|g' ${WRKSRC}/export/Makefile.in + @${REINPLACE_CMD} -E -e 's|<quicktime/|<lqt/|g' \ + ${WRKSRC}/configure \ + ${WRKSRC}/export/export_mov.c \ + ${WRKSRC}/import/decode_mov.c \ + ${WRKSRC}/import/import_mov.c \ + ${WRKSRC}/import/probe_mov.c + +post-patch-LZO-on: + @${REINPLACE_CMD} -e 's|%%NUV%%|nuv|' ${WRKSRC}/import/Makefile.in + +post-patch-LZO-off: + @${REINPLACE_CMD} -e 's|%%NUV%%||' ${WRKSRC}/import/Makefile.in + +post-patch-OPTIMIZED_CFLAGS-off: + @${FIND} ${WRKSRC} -type f | ${XARGS} -n 10 -x ${REINPLACE_CMD} \ + -e 's|-O[236]|${CFLAGS}|' + +post-stage: + @(cd ${STAGEDIR}${PREFIX} && \ + ${FIND} -s lib/transcode -type f -or -type l >> ${TMPPLIST}) + +.include <bsd.port.post.mk> diff --git a/multimedia/transcode/distinfo b/multimedia/transcode/distinfo new file mode 100644 index 000000000000..4576eee2ce3e --- /dev/null +++ b/multimedia/transcode/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1619893866 +SHA256 (transcode-1.1.7.tar.bz2) = 1e4e72d8e0dd62a80b8dd90699f5ca64c9b0cb37a5c9325c184166a9654f0a92 +SIZE (transcode-1.1.7.tar.bz2) = 2183627 diff --git a/multimedia/transcode/files/patch-configure b/multimedia/transcode/files/patch-configure new file mode 100644 index 000000000000..7e7d99850279 --- /dev/null +++ b/multimedia/transcode/files/patch-configure @@ -0,0 +1,29 @@ +--- configure.orig 2011-11-19 17:50:37.000000000 +0100 ++++ configure 2014-01-17 22:18:16.637476520 +0100 +@@ -5073,7 +5073,7 @@ + ;; + esac + fi +-PATH_TO_AWK=$ac_cv_path_PATH_TO_AWK ++PATH_TO_AWK=$ac_cv_prog_AWK + if test -n "$PATH_TO_AWK"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PATH_TO_AWK" >&5 + $as_echo "$PATH_TO_AWK" >&6; } +@@ -26196,7 +26196,7 @@ + for l in $a52_ll ; do + case $l in + -L*) lpaths="$lpaths $l" ;; +- -l*) test x"$l" != x"-la52" && xlibs="$xlibs $l" ;; ++ -l*) test x"$l" != x"-la52 -L%%LOCALBASE%%/lib -lm" && xlibs="$xlibs $l" ;; + *) xlf="$xlf $l" ;; + esac + done +@@ -26249,7 +26249,7 @@ + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_a52_a52_init" >&5 + $as_echo "$ac_cv_lib_a52_a52_init" >&6; } + if test "x$ac_cv_lib_a52_a52_init" = xyes; then : +- A52_LIBS="$a52_ll -la52 $A52_EXTRA_LIBS" ++ A52_LIBS="$a52_ll -la52 -L%%LOCALBASE%%/lib -lm $A52_EXTRA_LIBS" + else + + this_pkg_err="yes" diff --git a/multimedia/transcode/files/patch-ffmpeg0-10 b/multimedia/transcode/files/patch-ffmpeg0-10 new file mode 100644 index 000000000000..83e11846f1c6 --- /dev/null +++ b/multimedia/transcode/files/patch-ffmpeg0-10 @@ -0,0 +1,13 @@ +--- filter/filter_pp.c ++++ filter/filter_pp.c +@@ -38,8 +38,8 @@ + + /* FIXME: these use the filter ID as an index--the ID can grow + * arbitrarily large, so this needs to be fixed */ +-static pp_mode_t *mode[100]; +-static pp_context_t *context[100]; ++static pp_mode *mode[100]; ++static pp_context *context[100]; + static int width[100], height[100]; + static int pre[100]; + diff --git a/multimedia/transcode/files/patch-ffmpeg0-11 b/multimedia/transcode/files/patch-ffmpeg0-11 new file mode 100644 index 000000000000..74ac7eec348c --- /dev/null +++ b/multimedia/transcode/files/patch-ffmpeg0-11 @@ -0,0 +1,299 @@ +diff -urN encode/encode_lavc.c.orig encode/encode_lavc.c +--- encode/encode_lavc.c.orig 2011-11-19 08:50:27.000000000 -0800 ++++ encode/encode_lavc.c 2012-07-03 10:47:03.528009149 -0700 +@@ -114,6 +114,7 @@ + + AVFrame ff_venc_frame; + AVCodecContext ff_vcontext; ++ AVDictionary ** ff_opts; + + AVCodec *ff_vcodec; + +@@ -1036,14 +1037,10 @@ + SET_FLAG(pd, mv0); + SET_FLAG(pd, cbp); + SET_FLAG(pd, qpel); +- SET_FLAG(pd, alt); +- SET_FLAG(pd, vdpart); + SET_FLAG(pd, naq); + SET_FLAG(pd, ilme); + SET_FLAG(pd, ildct); + SET_FLAG(pd, aic); +- SET_FLAG(pd, aiv); +- SET_FLAG(pd, umv); + SET_FLAG(pd, psnr); + SET_FLAG(pd, trell); + SET_FLAG(pd, gray); +@@ -1064,6 +1061,18 @@ + pd->ff_vcontext.flags |= CODEC_FLAG_INTERLACED_DCT; + pd->ff_vcontext.flags |= CODEC_FLAG_INTERLACED_ME; + } ++ if (pd->confdata.flags.alt) { ++ av_dict_set(pd->ff_opts, "alternate_scan", "1", 0); ++ } ++ if (pd->confdata.flags.vdpart) { ++ av_dict_set(pd->ff_opts, "data_partitioning", "1", 0); ++ } ++ if (pd->confdata.flags.umv) { ++ av_dict_set(pd->ff_opts, "umv", "1", 0); ++ } ++ if (pd->confdata.flags.aiv) { ++ av_dict_set(pd->ff_opts, "aiv", "1", 0); ++ } + } + + #undef SET_FLAG +@@ -1184,18 +1193,18 @@ + { "mv0", PAUX(flags.mv0), TCCONF_TYPE_FLAG, 0, 0, CODEC_FLAG_MV0 }, + { "cbp", PAUX(flags.cbp), TCCONF_TYPE_FLAG, 0, 0, CODEC_FLAG_CBP_RD }, + { "qpel", PAUX(flags.qpel), TCCONF_TYPE_FLAG, 0, 0, CODEC_FLAG_QPEL }, +- { "alt", PAUX(flags.alt), TCCONF_TYPE_FLAG, 0, 0, CODEC_FLAG_ALT_SCAN }, ++ { "alt", PAUX(flags.alt), TCCONF_TYPE_FLAG, 0, 0, 1 }, + { "ilme", PAUX(flags.ilme), TCCONF_TYPE_FLAG, 0, 0, CODEC_FLAG_INTERLACED_ME }, + { "ildct", PAUX(flags.ildct), TCCONF_TYPE_FLAG, 0, 0, CODEC_FLAG_INTERLACED_DCT }, + { "naq", PAUX(flags.naq), TCCONF_TYPE_FLAG, 0, 0, CODEC_FLAG_NORMALIZE_AQP }, +- { "vdpart", PAUX(flags.vdpart), TCCONF_TYPE_FLAG, 0, 0, CODEC_FLAG_PART }, ++ { "vdpart", PAUX(flags.vdpart), TCCONF_TYPE_FLAG, 0, 0, 1 }, + #if LIBAVCODEC_VERSION_INT < ((52<<16)+(0<<8)+0) + { "aic", PAUX(flags.aic), TCCONF_TYPE_FLAG, 0, 0, CODEC_FLAG_H263P_AIC }, + #else + { "aic", PAUX(flags.aic), TCCONF_TYPE_FLAG, 0, 0, CODEC_FLAG_AC_PRED }, + #endif +- { "aiv", PAUX(flags.aiv), TCCONF_TYPE_FLAG, 0, 0, CODEC_FLAG_H263P_AIV }, +- { "umv", PAUX(flags.umv), TCCONF_TYPE_FLAG, 0, 0, CODEC_FLAG_H263P_UMV }, ++ { "aiv", PAUX(flags.aiv), TCCONF_TYPE_FLAG, 0, 0, 1 }, ++ { "umv", PAUX(flags.umv), TCCONF_TYPE_FLAG, 0, 0, 1 }, + { "psnr", PAUX(flags.psnr), TCCONF_TYPE_FLAG, 0, 0, CODEC_FLAG_PSNR }, + #if LIBAVCODEC_VERSION_INT < ((52<<16)+(0<<8)+0) + { "trell", PAUX(flags.trell), TCCONF_TYPE_FLAG, 0, 0, CODEC_FLAG_TRELLIS_QUANT }, +@@ -1387,7 +1396,7 @@ + pd->confdata.thread_count, + (pd->confdata.thread_count > 1) ?"s" :""); + } +- avcodec_thread_init(&pd->ff_vcontext, pd->confdata.thread_count); ++ pd->ff_vcontext.thread_count = pd->confdata.thread_count; + + pd->ff_vcodec = avcodec_find_encoder(FF_VCODEC_ID(pd)); + if (pd->ff_vcodec == NULL) { +@@ -1397,11 +1406,11 @@ + } + + TC_LOCK_LIBAVCODEC; +- ret = avcodec_open(&pd->ff_vcontext, pd->ff_vcodec); ++ ret = avcodec_open2(&pd->ff_vcontext, pd->ff_vcodec, pd->ff_opts); + TC_UNLOCK_LIBAVCODEC; + + if (ret < 0) { +- tc_log_error(MOD_NAME, "avcodec_open() failed"); ++ tc_log_error(MOD_NAME, "avcodec_open2() failed"); + goto failed; + } + /* finally, pass up the extradata, if any */ +diff -urN export/export_ffmpeg.c.orig export/export_ffmpeg.c +--- export/export_ffmpeg.c.orig 2011-11-19 08:50:27.000000000 -0800 ++++ export/export_ffmpeg.c 2012-07-03 13:15:23.918019415 -0700 +@@ -122,6 +122,7 @@ + static AVFrame *lavc_convert_frame = NULL; + + static AVCodec *lavc_venc_codec = NULL; ++static AVDictionary **lavc_venc_opts = NULL; + static AVFrame *lavc_venc_frame = NULL; + static AVCodecContext *lavc_venc_context; + static avi_t *avifile = NULL; +@@ -180,7 +181,7 @@ + + + /* START: COPIED FROM ffmpeg-0.5_p22846(ffmpeg.c, cmdutils.c) */ +-#include <libavcodec/opt.h> ++#include <libavutil/opt.h> + #include <libavutil/avstring.h> + #include <libswscale/swscale.h> + +@@ -470,7 +471,6 @@ + } + + TC_LOCK_LIBAVCODEC; +- avcodec_init(); + avcodec_register_all(); + TC_UNLOCK_LIBAVCODEC; + +@@ -634,7 +634,7 @@ + lavc_param_rc_max_rate = 2516; + lavc_param_rc_buffer_size = 224 * 8; + lavc_param_rc_buffer_aggressivity = 99; +- lavc_param_scan_offset = CODEC_FLAG_SVCD_SCAN_OFFSET; ++ lavc_param_scan_offset = 1; + + break; + +@@ -674,7 +674,7 @@ + + lavc_param_rc_buffer_size = 224 * 8; + lavc_param_rc_buffer_aggressivity = 99; +- lavc_param_scan_offset = CODEC_FLAG_SVCD_SCAN_OFFSET; ++ lavc_param_scan_offset = 1; + + break; + +@@ -887,7 +887,7 @@ + lavc_venc_context->thread_count); + } + +- avcodec_thread_init(lavc_venc_context, lavc_param_threads); ++ lavc_venc_context->thread_count = lavc_param_threads; + + if (lavc_param_intra_matrix) { + char *tmp; +@@ -1065,15 +1065,10 @@ + lavc_venc_context->flags |= lavc_param_closedgop; + lavc_venc_context->flags |= lavc_param_trunc; + lavc_venc_context->flags |= lavc_param_aic; +- lavc_venc_context->flags |= lavc_param_umv; + lavc_venc_context->flags |= lavc_param_v4mv; +- lavc_venc_context->flags |= lavc_param_data_partitioning; + lavc_venc_context->flags |= lavc_param_cbp; + lavc_venc_context->flags |= lavc_param_mv0; + lavc_venc_context->flags |= lavc_param_qp_rd; +- lavc_venc_context->flags |= lavc_param_scan_offset; +- lavc_venc_context->flags |= lavc_param_ss; +- lavc_venc_context->flags |= lavc_param_alt; + lavc_venc_context->flags |= lavc_param_ilme; + #if LIBAVCODEC_VERSION_INT < ((52<<16)+(0<<8)+0) + lavc_venc_context->flags |= lavc_param_trell; +@@ -1203,7 +1198,6 @@ + + lavc_venc_context->me_method = ME_ZERO + lavc_param_vme; + +- + /* FIXME: transcode itself contains "broken ffmpeg default settings", thus we need to override them! */ + if (lavc_param_video_preset) { + avcodec_opts[AVMEDIA_TYPE_VIDEO] = lavc_venc_context; +@@ -1241,20 +1235,39 @@ + } + } + ++ if (lavc_param_scan_offset) { ++ av_dict_set(lavc_venc_opts, "scan_offset", "1", 0); ++ } ++ ++ if (lavc_param_ss) { ++ av_dict_set(lavc_venc_opts, "structured_slices", "1", 0); ++ } ++ ++ if (lavc_param_alt) { ++ av_dict_set(lavc_venc_opts, "alternate_scan", "1", 0); ++ } ++ ++ if (lavc_param_umv) { ++ av_dict_set(lavc_venc_opts, "umv", "1", 0); ++ } ++ ++ if (lavc_param_data_partitioning) { ++ av_dict_set(lavc_venc_opts, "vdpart", "1", 0); ++ } + + //-- open codec -- + //---------------- + TC_LOCK_LIBAVCODEC; +- ret = avcodec_open(lavc_venc_context, lavc_venc_codec); ++ ret = avcodec_open2(lavc_venc_context, lavc_venc_codec, lavc_venc_opts); + TC_UNLOCK_LIBAVCODEC; + if (ret < 0) { + tc_log_warn(MOD_NAME, "could not open FFMPEG codec"); + return TC_EXPORT_ERROR; + } + +- if (lavc_venc_context->codec->encode == NULL) { ++ if (av_codec_is_encoder(lavc_venc_context->codec) == 0) { + tc_log_warn(MOD_NAME, "could not open FFMPEG codec " +- "(lavc_venc_context->codec->encode == NULL)"); ++ "(av_codec_is_encoder(lavc_venc_context->codec) == 0)"); + return TC_EXPORT_ERROR; + } + +diff -urN export/ffmpeg_cfg.c.orig export/ffmpeg_cfg.c +--- export/ffmpeg_cfg.c.orig 2011-11-19 08:50:27.000000000 -0800 ++++ export/ffmpeg_cfg.c 2012-07-03 10:09:25.011003254 -0700 +@@ -160,9 +160,9 @@ + {"vcelim", &lavc_param_chroma_elim_threshold, TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, -99, 99}, + {"vpsize", &lavc_param_packet_size, TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 0, 100000000}, + {"vstrict", &lavc_param_strict, TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, -99, 99}, +- {"vdpart", &lavc_param_data_partitioning, TCCONF_TYPE_FLAG, 0, 0, CODEC_FLAG_PART}, ++ {"vdpart", &lavc_param_data_partitioning, TCCONF_TYPE_FLAG, 0, 0, 1}, + // {"keyint", &lavc_param_keyint, TCCONF_TYPE_INT, 0, 0, 0}, +- {"gray", &lavc_param_gray, TCCONF_TYPE_FLAG, 0, 0, CODEC_FLAG_PART}, ++ {"gray", &lavc_param_gray, TCCONF_TYPE_FLAG, 0, 0, CODEC_FLAG_GRAY}, + {"mpeg_quant", &lavc_param_mpeg_quant, TCCONF_TYPE_FLAG, 0, 0, 1}, + {"vi_qfactor", &lavc_param_vi_qfactor, TCCONF_TYPE_FLOAT, TCCONF_FLAG_RANGE, -31.0, 31.0}, + {"vi_qoffset", &lavc_param_vi_qoffset, TCCONF_TYPE_FLOAT, TCCONF_FLAG_RANGE, 0.0, 31.0}, +@@ -211,7 +211,7 @@ + #else + {"aic", &lavc_param_aic, TCCONF_TYPE_FLAG, 0, 0, CODEC_FLAG_AC_PRED}, + #endif +- {"umv", &lavc_param_umv, TCCONF_TYPE_FLAG, 0, 0, CODEC_FLAG_H263P_UMV}, ++ {"umv", &lavc_param_umv, TCCONF_TYPE_FLAG, 0, 0, 1}, + {"ibias", &lavc_param_ibias, TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, -512, 512}, + {"pbias", &lavc_param_pbias, TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, -512, 512}, + {"coder", &lavc_param_coder, TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 0, 10}, +@@ -223,9 +223,9 @@ + {"nr", &lavc_param_noise_reduction, TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 0, 1000000}, + {"qprd", &lavc_param_qp_rd, TCCONF_TYPE_FLAG, 0, 0, CODEC_FLAG_QP_RD}, + {"threads", &lavc_param_threads, TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 1, 16}, +- {"ss", &lavc_param_ss, TCCONF_TYPE_FLAG, 0, 0, CODEC_FLAG_H263P_SLICE_STRUCT}, +- {"svcd_sof", &lavc_param_scan_offset, TCCONF_TYPE_FLAG, 0, 0, CODEC_FLAG_SVCD_SCAN_OFFSET}, +- {"alt", &lavc_param_alt, TCCONF_TYPE_FLAG, 0, 0, CODEC_FLAG_ALT_SCAN}, ++ {"ss", &lavc_param_ss, TCCONF_TYPE_FLAG, 0, 0, 1}, ++ {"svcd_sof", &lavc_param_scan_offset, TCCONF_TYPE_FLAG, 0, 0, 1}, ++ {"alt", &lavc_param_alt, TCCONF_TYPE_FLAG, 0, 0, 1}, + {"ilme", &lavc_param_ilme, TCCONF_TYPE_FLAG, 0, 0, CODEC_FLAG_INTERLACED_ME}, + {"inter_threshold", &lavc_param_inter_threshold, TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, -1000000, 1000000}, + {"sc_threshold", &lavc_param_sc_threshold, TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, -1000000, 1000000}, +diff -urN import/decode_lavc.c.orig import/decode_lavc.c +--- import/decode_lavc.c.orig 2011-11-19 08:50:27.000000000 -0800 ++++ import/decode_lavc.c 2012-07-03 10:21:46.085005182 -0700 +@@ -181,7 +181,7 @@ + #if LIBAVCODEC_VERSION_INT < ((52<<16)+(0<<8)+0) + lavc_dec_context->error_resilience = 2; + #else +- lavc_dec_context->error_recognition = 2; ++ lavc_dec_context->err_recognition = 2; + #endif + lavc_dec_context->error_concealment = 3; + lavc_dec_context->workaround_bugs = FF_BUG_AUTODETECT; +diff -urN import/import_ffmpeg.c.orig import/import_ffmpeg.c +--- import/import_ffmpeg.c.orig 2011-11-19 08:50:27.000000000 -0800 ++++ import/import_ffmpeg.c 2012-07-03 10:19:36.936004841 -0700 +@@ -314,7 +314,7 @@ + #if LIBAVCODEC_VERSION_INT < ((52<<16)+(0<<8)+0) + lavc_dec_context->error_resilience = 2; + #else +- lavc_dec_context->error_recognition = 2; ++ lavc_dec_context->err_recognition = 2; + #endif + lavc_dec_context->error_concealment = 3; + lavc_dec_context->workaround_bugs = FF_BUG_AUTODETECT; +diff -urN import/probe_ffmpeg.c.orig import/probe_ffmpeg.c +--- import/probe_ffmpeg.c.orig 2011-11-19 08:50:27.000000000 -0800 ++++ import/probe_ffmpeg.c 2012-07-03 10:41:42.782008306 -0700 +@@ -99,8 +99,8 @@ + + TC_INIT_LIBAVCODEC; + +- ret = av_open_input_file(&lavf_dmx_context, ipipe->name, +- NULL, 0, NULL); ++ ret = avformat_open_input(&lavf_dmx_context, ipipe->name, ++ NULL, NULL); + if (ret != 0) { + tc_log_error(__FILE__, "unable to open '%s'" + " (libavformat failure)", +diff -urN libtc/tcavcodec.h.orig libtc/tcavcodec.h +--- libtc/tcavcodec.h.orig 2011-11-19 08:50:27.000000000 -0800 ++++ libtc/tcavcodec.h 2012-07-03 10:34:43.648007213 -0700 +@@ -53,7 +53,6 @@ + + #define TC_INIT_LIBAVCODEC do { \ + TC_LOCK_LIBAVCODEC; \ +- avcodec_init(); \ + avcodec_register_all(); \ + TC_UNLOCK_LIBAVCODEC; \ + } while (0) diff --git a/multimedia/transcode/files/patch-ffmpeg2 b/multimedia/transcode/files/patch-ffmpeg2 new file mode 100644 index 000000000000..bbeef488a702 --- /dev/null +++ b/multimedia/transcode/files/patch-ffmpeg2 @@ -0,0 +1,328 @@ +Index: encode/encode_lavc.c +=================================================================== +--- encode/encode_lavc.c.orig ++++ encode/encode_lavc.c +@@ -74,6 +74,9 @@ struct tclavcconfigdata_ { + int lmin; + int lmax; + int me_method; ++ int luma_elim_threshold; ++ int chroma_elim_threshold; ++ int quantizer_noise_shaping; + + /* same as above for flags */ + struct { +@@ -114,7 +117,7 @@ struct tclavcprivatedata_ { + + AVFrame ff_venc_frame; + AVCodecContext ff_vcontext; +- AVDictionary ** ff_opts; ++ AVDictionary * ff_opts; + + AVCodec *ff_vcodec; + +@@ -165,6 +168,7 @@ static const TCCodecID tc_lavc_codecs_ou + TC_CODEC_ERROR + }; + ++#if LIBAVCODEC_VERSION_MAJOR < 55 + static const enum CodecID tc_lavc_internal_codecs[] = { + CODEC_ID_MPEG1VIDEO, CODEC_ID_MPEG2VIDEO, CODEC_ID_MPEG4, + CODEC_ID_H263I, CODEC_ID_H263P, +@@ -177,6 +181,20 @@ static const enum CodecID tc_lavc_intern + CODEC_ID_MSMPEG4V2, CODEC_ID_MSMPEG4V3, + CODEC_ID_NONE + }; ++#else ++static const enum AVCodecID tc_lavc_internal_codecs[] = { ++ AV_CODEC_ID_MPEG1VIDEO, AV_CODEC_ID_MPEG2VIDEO, AV_CODEC_ID_MPEG4, ++ AV_CODEC_ID_H263I, AV_CODEC_ID_H263P, ++ AV_CODEC_ID_H264, ++ AV_CODEC_ID_WMV1, AV_CODEC_ID_WMV2, ++ AV_CODEC_ID_RV10, ++ AV_CODEC_ID_HUFFYUV, AV_CODEC_ID_FFV1, ++ AV_CODEC_ID_DVVIDEO, ++ AV_CODEC_ID_MJPEG, AV_CODEC_ID_LJPEG, ++ AV_CODEC_ID_MSMPEG4V2, AV_CODEC_ID_MSMPEG4V3, ++ AV_CODEC_ID_NONE ++}; ++#endif + + static const TCFormatID tc_lavc_formats[] = { TC_FORMAT_ERROR }; + +@@ -938,7 +956,11 @@ static int tc_lavc_settings_from_vob(TCL + static void tc_lavc_config_defaults(TCLavcPrivateData *pd) + { + /* first of all reinitialize lavc data */ ++#if LIBAVCODEC_VERSION_MAJOR < 55 + avcodec_get_context_defaults(&pd->ff_vcontext); ++#else ++ avcodec_get_context_defaults3(&pd->ff_vcontext, NULL); ++#endif + + pd->confdata.thread_count = 1; + +@@ -976,8 +998,8 @@ static void tc_lavc_config_defaults(TCLa + pd->ff_vcontext.mpeg_quant = 0; + pd->ff_vcontext.rc_initial_cplx = 0.0; + pd->ff_vcontext.rc_qsquish = 1.0; +- pd->ff_vcontext.luma_elim_threshold = 0; +- pd->ff_vcontext.chroma_elim_threshold = 0; ++ pd->confdata.luma_elim_threshold = 0; ++ pd->confdata.chroma_elim_threshold = 0; + pd->ff_vcontext.strict_std_compliance = 0; + pd->ff_vcontext.dct_algo = FF_DCT_AUTO; + pd->ff_vcontext.idct_algo = FF_IDCT_AUTO; +@@ -1001,7 +1023,7 @@ static void tc_lavc_config_defaults(TCLa + pd->ff_vcontext.intra_quant_bias = FF_DEFAULT_QUANT_BIAS; + pd->ff_vcontext.inter_quant_bias = FF_DEFAULT_QUANT_BIAS; + pd->ff_vcontext.noise_reduction = 0; +- pd->ff_vcontext.quantizer_noise_shaping = 0; ++ pd->confdata.quantizer_noise_shaping = 0; + pd->ff_vcontext.flags = 0; + } + +@@ -1033,7 +1055,6 @@ static void tc_lavc_dispatch_settings(TC + + pd->ff_vcontext.flags = 0; + SET_FLAG(pd, mv0); +- SET_FLAG(pd, cbp); + SET_FLAG(pd, qpel); + SET_FLAG(pd, naq); + SET_FLAG(pd, ilme); +@@ -1060,17 +1081,29 @@ static void tc_lavc_dispatch_settings(TC + pd->ff_vcontext.flags |= CODEC_FLAG_INTERLACED_ME; + } + if (pd->confdata.flags.alt) { +- av_dict_set(pd->ff_opts, "alternate_scan", "1", 0); ++ av_dict_set(&(pd->ff_opts), "alternate_scan", "1", 0); + } + if (pd->confdata.flags.vdpart) { +- av_dict_set(pd->ff_opts, "data_partitioning", "1", 0); ++ av_dict_set(&(pd->ff_opts), "data_partitioning", "1", 0); + } + if (pd->confdata.flags.umv) { +- av_dict_set(pd->ff_opts, "umv", "1", 0); ++ av_dict_set(&(pd->ff_opts), "umv", "1", 0); + } + if (pd->confdata.flags.aiv) { +- av_dict_set(pd->ff_opts, "aiv", "1", 0); ++ av_dict_set(&(pd->ff_opts), "aiv", "1", 0); + } ++ if (pd->confdata.flags.cbp) { ++ av_dict_set(&(pd->ff_opts), "mpv_flags", "+cbp_rd", 0); ++ } ++ ++ char buf[1024]; ++#define set_dict_opt(val, opt) \ ++ snprintf(buf, sizeof(buf), "%i", pd->confdata.val);\ ++ av_dict_set(&(pd->ff_opts), opt, buf, 0) ++ ++ set_dict_opt(luma_elim_threshold, "luma_elim_threshold"); ++ set_dict_opt(chroma_elim_threshold, "chroma_elim_threshold"); ++ set_dict_opt(quantizer_noise_shaping, "quantizer_noise_shaping"); + } + + #undef SET_FLAG +@@ -1155,8 +1188,8 @@ static int tc_lavc_read_config(TCLavcPri + { "vrc_init_cplx", PCTX(rc_initial_cplx), TCCONF_TYPE_FLOAT, TCCONF_FLAG_RANGE, 0.0, 9999999.0 }, + // { "vrc_init_occupancy", }, // not yet supported + { "vqsquish", PCTX(rc_qsquish), TCCONF_TYPE_FLOAT, TCCONF_FLAG_RANGE, 0.0, 99.0 }, +- { "vlelim", PCTX(luma_elim_threshold), TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, -99, 99 }, +- { "vcelim", PCTX(chroma_elim_threshold), TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, -99, 99 }, ++ { "vlelim", PAUX(luma_elim_threshold), TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, -99, 99 }, ++ { "vcelim", PAUX(chroma_elim_threshold), TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, -99, 99 }, + { "vstrict", PCTX(strict_std_compliance), TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, -99, 99 }, + { "vpsize", PCTX(rtp_payload_size), TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 0, 100000000 }, + { "dct", PCTX(dct_algo), TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 0, 10 }, +@@ -1182,12 +1215,12 @@ static int tc_lavc_read_config(TCLavcPri + { "ibias", PCTX(intra_quant_bias), TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, -512, 512 }, + { "pbias", PCTX(inter_quant_bias), TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, -512, 512 }, + { "nr", PCTX(noise_reduction), TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 0, 1000000}, +- { "qns", PCTX(quantizer_noise_shaping), TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 0, 3 }, ++ { "qns", PAUX(quantizer_noise_shaping), TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 0, 3 }, + { "inter_matrix_file", inter_matrix_file, TCCONF_TYPE_STRING, 0, 0, 0 }, + { "intra_matrix_file", intra_matrix_file, TCCONF_TYPE_STRING, 0, 0, 0 }, + + { "mv0", PAUX(flags.mv0), TCCONF_TYPE_FLAG, 0, 0, CODEC_FLAG_MV0 }, +- { "cbp", PAUX(flags.cbp), TCCONF_TYPE_FLAG, 0, 0, CODEC_FLAG_CBP_RD }, ++ { "cbp", PAUX(flags.cbp), TCCONF_TYPE_FLAG, 0, 0, 1 }, + { "qpel", PAUX(flags.qpel), TCCONF_TYPE_FLAG, 0, 0, CODEC_FLAG_QPEL }, + { "alt", PAUX(flags.alt), TCCONF_TYPE_FLAG, 0, 0, 1 }, + { "ilme", PAUX(flags.ilme), TCCONF_TYPE_FLAG, 0, 0, CODEC_FLAG_INTERLACED_ME }, +@@ -1350,6 +1383,8 @@ static int tc_lavc_configure(TCModuleIns + + pd = self->userdata; + ++ pd->ff_opts = NULL; ++ + pd->flush_flag = vob->encoder_flush; + + /* FIXME: move into core? */ +@@ -1402,7 +1437,7 @@ static int tc_lavc_configure(TCModuleIns + } + + TC_LOCK_LIBAVCODEC; +- ret = avcodec_open2(&pd->ff_vcontext, pd->ff_vcodec, pd->ff_opts); ++ ret = avcodec_open2(&pd->ff_vcontext, pd->ff_vcodec, &(pd->ff_opts)); + TC_UNLOCK_LIBAVCODEC; + + if (ret < 0) { +Index: export/export_ffmpeg.c +=================================================================== +--- export/export_ffmpeg.c.orig ++++ export/export_ffmpeg.c +@@ -122,7 +122,7 @@ static uint8_t *img_buffer = + static AVFrame *lavc_convert_frame = NULL; + + static AVCodec *lavc_venc_codec = NULL; +-static AVDictionary **lavc_venc_opts = NULL; ++static AVDictionary *lavc_venc_opts = NULL; + static AVFrame *lavc_venc_frame = NULL; + static AVCodecContext *lavc_venc_context; + static avi_t *avifile = NULL; +@@ -486,7 +486,7 @@ MOD_init + codec->name, codec->fourCC, codec->comments); + } + +- lavc_venc_context = avcodec_alloc_context(); ++ lavc_venc_context = avcodec_alloc_context3(lavc_venc_codec); + lavc_venc_frame = avcodec_alloc_frame(); + + lavc_convert_frame= avcodec_alloc_frame(); +@@ -838,8 +838,13 @@ MOD_init + lavc_venc_context->rc_strategy = lavc_param_vrc_strategy; + lavc_venc_context->b_frame_strategy = lavc_param_vb_strategy; + lavc_venc_context->b_quant_offset = lavc_param_vb_qoffset; +- lavc_venc_context->luma_elim_threshold= lavc_param_luma_elim_threshold; +- lavc_venc_context->chroma_elim_threshold= lavc_param_chroma_elim_threshold; ++ ++ char buf[1024]; ++#define set_dict_opt(val, opt) \ ++ snprintf(buf, sizeof(buf), "%i", val); \ ++ av_dict_set(&lavc_venc_opts, opt, buf, 0) ++ set_dict_opt(lavc_param_luma_elim_threshold, "luma_elim_threshold"); ++ set_dict_opt(lavc_param_chroma_elim_threshold, "chroma_elim_threshold"); + lavc_venc_context->rtp_payload_size = lavc_param_packet_size; + #if LIBAVCODEC_VERSION_INT < ((52<<16)+(0<<8)+0) + if (lavc_param_packet_size) +@@ -870,7 +875,7 @@ MOD_init + lavc_venc_context->context_model = lavc_param_context; + lavc_venc_context->scenechange_threshold= lavc_param_sc_threshold; + lavc_venc_context->noise_reduction = lavc_param_noise_reduction; +- lavc_venc_context->inter_threshold = lavc_param_inter_threshold; ++ set_dict_opt(lavc_param_inter_threshold, "inter_threshold"); + lavc_venc_context->intra_dc_precision = lavc_param_intra_dc_precision; + lavc_venc_context->skip_top = lavc_param_skip_top; + lavc_venc_context->skip_bottom = lavc_param_skip_bottom; +@@ -1066,9 +1071,11 @@ MOD_init + lavc_venc_context->flags |= lavc_param_trunc; + lavc_venc_context->flags |= lavc_param_aic; + lavc_venc_context->flags |= lavc_param_v4mv; +- lavc_venc_context->flags |= lavc_param_cbp; ++ if(lavc_param_cbp) ++ av_dict_set(&lavc_venc_opts, "mpv_flags", "+cbp_rd", 0); + lavc_venc_context->flags |= lavc_param_mv0; +- lavc_venc_context->flags |= lavc_param_qp_rd; ++ if(lavc_param_qp_rd) ++ av_dict_set(&lavc_venc_opts, "mpv_flags", "+qp_rd", 0); + lavc_venc_context->flags |= lavc_param_ilme; + #if LIBAVCODEC_VERSION_INT < ((52<<16)+(0<<8)+0) + lavc_venc_context->flags |= lavc_param_trell; +@@ -1238,29 +1245,29 @@ MOD_init + } + + if (lavc_param_scan_offset) { +- av_dict_set(lavc_venc_opts, "scan_offset", "1", 0); ++ av_dict_set(&lavc_venc_opts, "scan_offset", "1", 0); + } + + if (lavc_param_ss) { +- av_dict_set(lavc_venc_opts, "structured_slices", "1", 0); ++ av_dict_set(&lavc_venc_opts, "structured_slices", "1", 0); + } + + if (lavc_param_alt) { +- av_dict_set(lavc_venc_opts, "alternate_scan", "1", 0); ++ av_dict_set(&lavc_venc_opts, "alternate_scan", "1", 0); + } + + if (lavc_param_umv) { +- av_dict_set(lavc_venc_opts, "umv", "1", 0); ++ av_dict_set(&lavc_venc_opts, "umv", "1", 0); + } + + if (lavc_param_data_partitioning) { +- av_dict_set(lavc_venc_opts, "vdpart", "1", 0); ++ av_dict_set(&lavc_venc_opts, "vdpart", "1", 0); + } + + //-- open codec -- + //---------------- + TC_LOCK_LIBAVCODEC; +- ret = avcodec_open2(lavc_venc_context, lavc_venc_codec, lavc_venc_opts); ++ ret = avcodec_open2(lavc_venc_context, lavc_venc_codec, &lavc_venc_opts); + TC_UNLOCK_LIBAVCODEC; + if (ret < 0) { + tc_log_warn(MOD_NAME, "could not open FFMPEG codec"); +Index: export/ffmpeg_cfg.c +=================================================================== +--- export/ffmpeg_cfg.c.orig ++++ export/ffmpeg_cfg.c +@@ -214,10 +214,10 @@ TCConfigEntry lavcopts_conf[]={ + {"context", &lavc_param_context, TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 0, 10}, + {"intra_matrix", &lavc_param_intra_matrix, TCCONF_TYPE_STRING, 0, 0, 0}, + {"inter_matrix", &lavc_param_inter_matrix, TCCONF_TYPE_STRING, 0, 0, 0}, +- {"cbp", &lavc_param_cbp, TCCONF_TYPE_FLAG, 0, 0, CODEC_FLAG_CBP_RD}, ++ {"cbp", &lavc_param_cbp, TCCONF_TYPE_FLAG, 0, 0, 1}, + {"mv0", &lavc_param_mv0, TCCONF_TYPE_FLAG, 0, 0, CODEC_FLAG_MV0}, + {"nr", &lavc_param_noise_reduction, TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 0, 1000000}, +- {"qprd", &lavc_param_qp_rd, TCCONF_TYPE_FLAG, 0, 0, CODEC_FLAG_QP_RD}, ++ {"qprd", &lavc_param_qp_rd, TCCONF_TYPE_FLAG, 0, 0, 1}, + {"threads", &lavc_param_threads, TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 1, 16}, + {"ss", &lavc_param_ss, TCCONF_TYPE_FLAG, 0, 0, 1}, + {"svcd_sof", &lavc_param_scan_offset, TCCONF_TYPE_FLAG, 0, 0, 1}, +Index: export/aud_aux.c +=================================================================== +--- export/aud_aux.c.orig ++++ export/aud_aux.c +@@ -346,7 +346,7 @@ static int tc_audio_init_ffmpeg(vob_t *v + + //-- set parameters (bitrate, channels and sample-rate) -- + //-------------------------------------------------------- +- avcodec_get_context_defaults(&mpa_ctx); ++ avcodec_get_context_defaults3(&mpa_ctx, mpa_codec); + #if LIBAVCODEC_VERSION_MAJOR < 53 + mpa_ctx.codec_type = CODEC_TYPE_AUDIO; + #else +@@ -359,7 +359,7 @@ static int tc_audio_init_ffmpeg(vob_t *v + //-- open codec -- + //---------------- + TC_LOCK_LIBAVCODEC; +- ret = avcodec_open(&mpa_ctx, mpa_codec); ++ ret = avcodec_open2(&mpa_ctx, mpa_codec, NULL); + TC_UNLOCK_LIBAVCODEC; + if (ret < 0) { + tc_warn("tc_audio_init_ffmpeg: could not open %s codec !", +Index: import/import_ffmpeg.c +=================================================================== +--- import/import_ffmpeg.c.orig ++++ import/import_ffmpeg.c +@@ -302,7 +302,7 @@ do_avi: + + // Set these to the expected values so that ffmpeg's decoder can + // properly detect interlaced input. +- lavc_dec_context = avcodec_alloc_context(); ++ lavc_dec_context = avcodec_alloc_context3(lavc_dec_codec); + if (lavc_dec_context == NULL) { + tc_log_error(MOD_NAME, "Could not allocate enough memory."); + return TC_IMPORT_ERROR; +@@ -344,7 +344,7 @@ do_avi: + } + + TC_LOCK_LIBAVCODEC; +- ret = avcodec_open(lavc_dec_context, lavc_dec_codec); ++ ret = avcodec_open2(lavc_dec_context, lavc_dec_codec, NULL); + TC_UNLOCK_LIBAVCODEC; + if (ret < 0) { + tc_log_warn(MOD_NAME, "Could not initialize the '%s' codec.", diff --git a/multimedia/transcode/files/patch-ffmpeg29 b/multimedia/transcode/files/patch-ffmpeg29 new file mode 100644 index 000000000000..3b13530ea0cd --- /dev/null +++ b/multimedia/transcode/files/patch-ffmpeg29 @@ -0,0 +1,352 @@ +Index: encode/encode_lavc.c +=================================================================== +--- encode/encode_lavc.c.orig ++++ encode/encode_lavc.c +@@ -233,7 +233,7 @@ static void pre_encode_video_yuv420p(TCL + vframe_list_t *vframe) + { + avpicture_fill((AVPicture *)&pd->ff_venc_frame, vframe->video_buf, +- PIX_FMT_YUV420P, ++ AV_PIX_FMT_YUV420P, + pd->ff_vcontext.width, pd->ff_vcontext.height); + } + +@@ -247,7 +247,7 @@ static void pre_encode_video_yuv420p_huf + IMG_YUV_DEFAULT, + pd->ff_vcontext.width, pd->ff_vcontext.height); + avpicture_fill((AVPicture *)&pd->ff_venc_frame, pd->vframe_buf->video_buf, +- PIX_FMT_YUV422P, ++ AV_PIX_FMT_YUV422P, + pd->ff_vcontext.width, pd->ff_vcontext.height); + ac_imgconvert(src, IMG_YUV_DEFAULT, + pd->ff_venc_frame.data, IMG_YUV422P, +@@ -263,7 +263,7 @@ static void pre_encode_video_yuv422p(TCL + IMG_YUV422P, + pd->ff_vcontext.width, pd->ff_vcontext.height); + avpicture_fill((AVPicture *)&pd->ff_venc_frame, pd->vframe_buf->video_buf, +- PIX_FMT_YUV420P, ++ AV_PIX_FMT_YUV420P, + pd->ff_vcontext.width, pd->ff_vcontext.height); + ac_imgconvert(src, IMG_YUV422P, + pd->ff_venc_frame.data, IMG_YUV420P, +@@ -275,7 +275,7 @@ static void pre_encode_video_yuv422p_huf + vframe_list_t *vframe) + { + avpicture_fill((AVPicture *)&pd->ff_venc_frame, vframe->video_buf, +- PIX_FMT_YUV422P, ++ AV_PIX_FMT_YUV422P, + pd->ff_vcontext.width, pd->ff_vcontext.height); + + } +@@ -285,7 +285,7 @@ static void pre_encode_video_rgb24(TCLav + vframe_list_t *vframe) + { + avpicture_fill((AVPicture *)&pd->ff_venc_frame, pd->vframe_buf->video_buf, +- PIX_FMT_YUV420P, ++ AV_PIX_FMT_YUV420P, + pd->ff_vcontext.width, pd->ff_vcontext.height); + ac_imgconvert(&vframe->video_buf, IMG_RGB_DEFAULT, + pd->ff_venc_frame.data, IMG_YUV420P, +@@ -610,21 +610,21 @@ static int tc_lavc_set_pix_fmt(TCLavcPri + case CODEC_YUV: + if (TC_VCODEC_ID(pd) == TC_CODEC_HUFFYUV) { + pd->tc_pix_fmt = TC_CODEC_YUV422P; +- pd->ff_vcontext.pix_fmt = PIX_FMT_YUV422P; ++ pd->ff_vcontext.pix_fmt = AV_PIX_FMT_YUV422P; + pd->pre_encode_video = pre_encode_video_yuv420p_huffyuv; + } else { + pd->tc_pix_fmt = TC_CODEC_YUV420P; + pd->ff_vcontext.pix_fmt = (TC_VCODEC_ID(pd) == TC_CODEC_MJPEG) +- ? PIX_FMT_YUVJ420P +- : PIX_FMT_YUV420P; ++ ? AV_PIX_FMT_YUVJ420P ++ : AV_PIX_FMT_YUV420P; + pd->pre_encode_video = pre_encode_video_yuv420p; + } + break; + case CODEC_YUV422: + pd->tc_pix_fmt = TC_CODEC_YUV422P; + pd->ff_vcontext.pix_fmt = (TC_VCODEC_ID(pd) == TC_CODEC_MJPEG) +- ? PIX_FMT_YUVJ422P +- : PIX_FMT_YUV422P; ++ ? AV_PIX_FMT_YUVJ422P ++ : AV_PIX_FMT_YUV422P; + if (TC_VCODEC_ID(pd) == TC_CODEC_HUFFYUV) { + pd->pre_encode_video = pre_encode_video_yuv422p_huffyuv; + } else { +@@ -634,10 +634,10 @@ static int tc_lavc_set_pix_fmt(TCLavcPri + case CODEC_RGB: + pd->tc_pix_fmt = TC_CODEC_RGB; + pd->ff_vcontext.pix_fmt = (TC_VCODEC_ID(pd) == TC_CODEC_HUFFYUV) +- ? PIX_FMT_YUV422P ++ ? AV_PIX_FMT_YUV422P + : (TC_VCODEC_ID(pd) == TC_CODEC_MJPEG) +- ? PIX_FMT_YUVJ420P +- : PIX_FMT_YUV420P; ++ ? AV_PIX_FMT_YUVJ420P ++ : AV_PIX_FMT_YUV420P; + pd->pre_encode_video = pre_encode_video_rgb24; + break; + default: +@@ -1390,7 +1390,7 @@ static int tc_lavc_configure(TCModuleIns + /* FIXME: move into core? */ + TC_INIT_LIBAVCODEC; + +- avcodec_get_frame_defaults(&pd->ff_venc_frame); ++ av_frame_unref(&pd->ff_venc_frame); + /* + * auxiliary config data needs to be blanked too + * before any other operation +@@ -1523,6 +1523,8 @@ static int tc_lavc_encode_video(TCModule + vframe_list_t *outframe) + { + TCLavcPrivateData *pd = NULL; ++ AVPacket pkt; ++ int ret, got_packet = 0; + + TC_MODULE_SELF_CHECK(self, "encode_video"); + +@@ -1537,12 +1539,15 @@ static int tc_lavc_encode_video(TCModule + + pd->pre_encode_video(pd, inframe); + ++ av_init_packet(&pkt); ++ pkt.data = outframe->video_buf; ++ pkt.size = inframe->video_size; ++ + TC_LOCK_LIBAVCODEC; +- outframe->video_len = avcodec_encode_video(&pd->ff_vcontext, +- outframe->video_buf, +- inframe->video_size, +- &pd->ff_venc_frame); ++ ret = avcodec_encode_video2(&pd->ff_vcontext, &pkt, ++ &pd->ff_venc_frame, &got_packet); + TC_UNLOCK_LIBAVCODEC; ++ outframe->video_len = ret ? ret : pkt.size; + + if (outframe->video_len < 0) { + tc_log_warn(MOD_NAME, "encoder error: size (%i)", +Index: export/export_ffmpeg.c +=================================================================== +--- export/export_ffmpeg.c.orig ++++ export/export_ffmpeg.c +@@ -250,9 +250,9 @@ int opt_default(const char *opt, const c + for(type=0; type<AVMEDIA_TYPE_NB && ret>= 0; type++){ + /* GLUE: +if */ + if (type == AVMEDIA_TYPE_VIDEO) { +- const AVOption *o2 = av_find_opt(avcodec_opts[0], opt, NULL, opt_types[type], opt_types[type]); +- if(o2) +- ret = av_set_string3(avcodec_opts[type], opt, arg, 1, &o); ++ o = av_opt_find(avcodec_opts[0], opt, NULL, opt_types[type], opt_types[type]); ++ if(o) ++ ret = av_opt_set(avcodec_opts[type], opt, arg, 0); + /* GLUE: +if */ + } + } +@@ -267,7 +267,10 @@ int opt_default(const char *opt, const c + if(opt[0] == 'a') + ret = av_set_string3(avcodec_opts[AVMEDIA_TYPE_AUDIO], opt+1, arg, 1, &o); + else */ if(opt[0] == 'v') +- ret = av_set_string3(avcodec_opts[AVMEDIA_TYPE_VIDEO], opt+1, arg, 1, &o); ++ { ++ o = av_opt_find(avcodec_opts[AVMEDIA_TYPE_VIDEO], opt+1, NULL, 0, 0); ++ ret = av_opt_set(avcodec_opts[AVMEDIA_TYPE_VIDEO], opt+1, arg, 0); ++ } + /* GLUE: disabling + else if(opt[0] == 's') + ret = av_set_string3(avcodec_opts[AVMEDIA_TYPE_SUBTITLE], opt+1, arg, 1, &o); +@@ -487,10 +490,10 @@ MOD_init + } + + lavc_venc_context = avcodec_alloc_context3(lavc_venc_codec); +- lavc_venc_frame = avcodec_alloc_frame(); ++ lavc_venc_frame = av_frame_alloc(); + +- lavc_convert_frame= avcodec_alloc_frame(); +- size = avpicture_get_size(PIX_FMT_RGB24, vob->ex_v_width, vob->ex_v_height); ++ lavc_convert_frame= av_frame_alloc(); ++ size = avpicture_get_size(AV_PIX_FMT_RGB24, vob->ex_v_width, vob->ex_v_height); + enc_buffer = tc_malloc(size); + + if (lavc_venc_context == NULL || !enc_buffer || !lavc_convert_frame) { +@@ -1114,7 +1117,7 @@ MOD_init + lavc_venc_context->prediction_method = lavc_param_prediction_method; + + if(is_huffyuv) +- lavc_venc_context->pix_fmt = PIX_FMT_YUV422P; ++ lavc_venc_context->pix_fmt = AV_PIX_FMT_YUV422P; + else + { + switch(pix_fmt) +@@ -1123,18 +1126,18 @@ MOD_init + case CODEC_RGB: + { + if(is_mjpeg) +- lavc_venc_context->pix_fmt = PIX_FMT_YUVJ420P; ++ lavc_venc_context->pix_fmt = AV_PIX_FMT_YUVJ420P; + else +- lavc_venc_context->pix_fmt = PIX_FMT_YUV420P; ++ lavc_venc_context->pix_fmt = AV_PIX_FMT_YUV420P; + break; + } + + case CODEC_YUV422: + { + if(is_mjpeg) +- lavc_venc_context->pix_fmt = PIX_FMT_YUVJ422P; ++ lavc_venc_context->pix_fmt = AV_PIX_FMT_YUVJ422P; + else +- lavc_venc_context->pix_fmt = PIX_FMT_YUV422P; ++ lavc_venc_context->pix_fmt = AV_PIX_FMT_YUV422P; + break; + } + +@@ -1596,6 +1599,8 @@ MOD_encode + + int out_size; + const char pict_type_char[5]= {'?', 'I', 'P', 'B', 'S'}; ++ AVPacket pkt; ++ int ret, got_packet = 0; + + if (param->flag == TC_VIDEO) { + +@@ -1620,7 +1625,7 @@ MOD_encode + YUV_INIT_PLANES(src, param->buffer, IMG_YUV_DEFAULT, + lavc_venc_context->width, lavc_venc_context->height); + avpicture_fill((AVPicture *)lavc_venc_frame, img_buffer, +- PIX_FMT_YUV422P, lavc_venc_context->width, ++ AV_PIX_FMT_YUV422P, lavc_venc_context->width, + lavc_venc_context->height); + /* FIXME: can't use tcv_convert (see decode_lavc.c) */ + ac_imgconvert(src, IMG_YUV_DEFAULT, +@@ -1650,7 +1655,7 @@ MOD_encode + lavc_venc_context->width, + lavc_venc_context->height); + avpicture_fill((AVPicture *)lavc_venc_frame, img_buffer, +- PIX_FMT_YUV420P, lavc_venc_context->width, ++ AV_PIX_FMT_YUV420P, lavc_venc_context->width, + lavc_venc_context->height); + ac_imgconvert(src, IMG_YUV422P, + lavc_venc_frame->data, IMG_YUV420P, +@@ -1661,7 +1666,7 @@ MOD_encode + + case CODEC_RGB: + avpicture_fill((AVPicture *)lavc_venc_frame, img_buffer, +- PIX_FMT_YUV420P, lavc_venc_context->width, ++ AV_PIX_FMT_YUV420P, lavc_venc_context->width, + lavc_venc_context->height); + ac_imgconvert(¶m->buffer, IMG_RGB_DEFAULT, + lavc_venc_frame->data, IMG_YUV420P, +@@ -1674,13 +1679,17 @@ MOD_encode + return TC_EXPORT_ERROR; + } + ++ av_init_packet(&pkt); ++ pkt.data = enc_buffer; ++ pkt.size = size; + + TC_LOCK_LIBAVCODEC; +- out_size = avcodec_encode_video(lavc_venc_context, +- enc_buffer, size, +- lavc_venc_frame); ++ ret = avcodec_encode_video2(lavc_venc_context, &pkt, ++ lavc_venc_frame, &got_packet); + TC_UNLOCK_LIBAVCODEC; + ++ out_size = ret ? ret : pkt.size; ++ + if (out_size < 0) { + tc_log_warn(MOD_NAME, "encoder error: size (%d)", out_size); + return TC_EXPORT_ERROR; +Index: import/decode_lavc.c +=================================================================== +--- import/decode_lavc.c.orig ++++ import/decode_lavc.c +@@ -327,8 +327,8 @@ void decode_lavc(decode_t *decode) + + // Convert avcodec image to the requested YUV or RGB format + switch (lavc_dec_context->pix_fmt) { +- case PIX_FMT_YUVJ420P: +- case PIX_FMT_YUV420P: ++ case AV_PIX_FMT_YUVJ420P: ++ case AV_PIX_FMT_YUV420P: + // Remove "dead space" at right edge of planes, if any + if (picture.linesize[0] != lavc_dec_context->width) { + int y; +@@ -352,7 +352,7 @@ void decode_lavc(decode_t *decode) + pix_fmt==TC_CODEC_YUV420P ? IMG_YUV420P : IMG_RGB_DEFAULT, + lavc_dec_context->width, lavc_dec_context->height); + break; +- case PIX_FMT_YUV411P: ++ case AV_PIX_FMT_YUV411P: + if (picture.linesize[0] != lavc_dec_context->width) { + int y; + for (y = 0; y < lavc_dec_context->height; y++) { +@@ -371,8 +371,8 @@ void decode_lavc(decode_t *decode) + pix_fmt==TC_CODEC_YUV420P ? IMG_YUV420P : IMG_RGB_DEFAULT, + lavc_dec_context->width, lavc_dec_context->height); + break; +- case PIX_FMT_YUVJ422P: +- case PIX_FMT_YUV422P: ++ case AV_PIX_FMT_YUVJ422P: ++ case AV_PIX_FMT_YUV422P: + if (picture.linesize[0] != lavc_dec_context->width) { + int y; + for (y = 0; y < lavc_dec_context->height; y++) { +@@ -391,8 +391,8 @@ void decode_lavc(decode_t *decode) + pix_fmt==TC_CODEC_YUV420P ? IMG_YUV420P : IMG_RGB_DEFAULT, + lavc_dec_context->width, lavc_dec_context->height); + break; +- case PIX_FMT_YUVJ444P: +- case PIX_FMT_YUV444P: ++ case AV_PIX_FMT_YUVJ444P: ++ case AV_PIX_FMT_YUV444P: + if (picture.linesize[0] != lavc_dec_context->width) { + int y; + for (y = 0; y < lavc_dec_context->height; y++) { +Index: import/import_ffmpeg.c +=================================================================== +--- import/import_ffmpeg.c.orig ++++ import/import_ffmpeg.c +@@ -661,8 +661,8 @@ retry: + + // Convert avcodec image to our internal YUV or RGB format + switch (lavc_dec_context->pix_fmt) { +- case PIX_FMT_YUVJ420P: +- case PIX_FMT_YUV420P: ++ case AV_PIX_FMT_YUVJ420P: ++ case AV_PIX_FMT_YUV420P: + src_fmt = IMG_YUV420P; + YUV_INIT_PLANES(src_planes, frame, src_fmt, + lavc_dec_context->width, lavc_dec_context->height); +@@ -693,7 +693,7 @@ retry: + } + break; + +- case PIX_FMT_YUV411P: ++ case AV_PIX_FMT_YUV411P: + src_fmt = IMG_YUV411P; + YUV_INIT_PLANES(src_planes, frame, src_fmt, + lavc_dec_context->width, lavc_dec_context->height); +@@ -721,8 +721,8 @@ retry: + } + break; + +- case PIX_FMT_YUVJ422P: +- case PIX_FMT_YUV422P: ++ case AV_PIX_FMT_YUVJ422P: ++ case AV_PIX_FMT_YUV422P: + src_fmt = IMG_YUV422P; + YUV_INIT_PLANES(src_planes, frame, src_fmt, + lavc_dec_context->width, lavc_dec_context->height); +@@ -750,8 +750,8 @@ retry: + } + break; + +- case PIX_FMT_YUVJ444P: +- case PIX_FMT_YUV444P: ++ case AV_PIX_FMT_YUVJ444P: ++ case AV_PIX_FMT_YUV444P: + src_fmt = IMG_YUV444P; + YUV_INIT_PLANES(src_planes, frame, src_fmt, + lavc_dec_context->width, lavc_dec_context->height); diff --git a/multimedia/transcode/files/patch-ffmpeg3 b/multimedia/transcode/files/patch-ffmpeg3 new file mode 100644 index 000000000000..366fbffd1954 --- /dev/null +++ b/multimedia/transcode/files/patch-ffmpeg3 @@ -0,0 +1,213 @@ +--- export/aud_aux.c.orig 2016-02-16 23:38:40.162690789 +0000 ++++ export/aud_aux.c 2016-02-16 23:40:50.335488439 +0000 +@@ -326,10 +326,10 @@ + + switch (o_codec) { + case 0x50: +- codeid = CODEC_ID_MP2; ++ codeid = AV_CODEC_ID_MP2; + break; + case 0x2000: +- codeid = CODEC_ID_AC3; ++ codeid = AV_CODEC_ID_AC3; + break; + default: + tc_warn("cannot init ffmpeg with %x", o_codec); +@@ -363,7 +363,7 @@ + TC_UNLOCK_LIBAVCODEC; + if (ret < 0) { + tc_warn("tc_audio_init_ffmpeg: could not open %s codec !", +- (codeid == CODEC_ID_MP2) ?"mpa" :"ac3"); ++ (codeid == AV_CODEC_ID_MP2) ?"mpa" :"ac3"); + return(TC_EXPORT_ERROR); + } + +--- import/import_ffmpeg.c.orig 2016-02-16 23:52:36.192589648 +0000 ++++ import/import_ffmpeg.c 2016-02-16 23:54:38.728757498 +0000 +@@ -59,51 +59,51 @@ + + // fourCC to ID mapping taken from MPlayer's codecs.conf + static struct ffmpeg_codec ffmpeg_codecs[] = { +- {CODEC_ID_MSMPEG4V1, TC_CODEC_ERROR, "mp41", ++ {AV_CODEC_ID_MSMPEG4V1, TC_CODEC_ERROR, "mp41", + {"MP41", "DIV1", ""}}, +- {CODEC_ID_MSMPEG4V2, TC_CODEC_MP42, "mp42", ++ {AV_CODEC_ID_MSMPEG4V2, TC_CODEC_MP42, "mp42", + {"MP42", "DIV2", ""}}, +- {CODEC_ID_MSMPEG4V3, TC_CODEC_DIVX3, "msmpeg4", ++ {AV_CODEC_ID_MSMPEG4V3, TC_CODEC_DIVX3, "msmpeg4", + {"DIV3", "DIV5", "AP41", "MPG3", "MP43", ""}}, +- {CODEC_ID_MPEG4, TC_CODEC_DIVX4, "mpeg4", ++ {AV_CODEC_ID_MPEG4, TC_CODEC_DIVX4, "mpeg4", + {"DIVX", "XVID", "MP4S", "M4S2", "MP4V", "UMP4", "DX50", ""}}, +- {CODEC_ID_MJPEG, TC_CODEC_MJPEG, "mjpeg", ++ {AV_CODEC_ID_MJPEG, TC_CODEC_MJPEG, "mjpeg", + {"MJPG", "AVRN", "AVDJ", "JPEG", "MJPA", "JFIF", ""}}, +- {CODEC_ID_MPEG1VIDEO, TC_CODEC_MPG1, "mpeg1video", ++ {AV_CODEC_ID_MPEG1VIDEO, TC_CODEC_MPG1, "mpeg1video", + {"MPG1", ""}}, +- {CODEC_ID_DVVIDEO, TC_CODEC_DV, "dvvideo", ++ {AV_CODEC_ID_DVVIDEO, TC_CODEC_DV, "dvvideo", + {"DVSD", ""}}, +- {CODEC_ID_WMV1, TC_CODEC_WMV1, "wmv1", ++ {AV_CODEC_ID_WMV1, TC_CODEC_WMV1, "wmv1", + {"WMV1", ""}}, +- {CODEC_ID_WMV2, TC_CODEC_WMV2, "wmv2", ++ {AV_CODEC_ID_WMV2, TC_CODEC_WMV2, "wmv2", + {"WMV2", ""}}, +- {CODEC_ID_HUFFYUV, TC_CODEC_HUFFYUV, "hfyu", ++ {AV_CODEC_ID_HUFFYUV, TC_CODEC_HUFFYUV, "hfyu", + {"HFYU", ""}}, +- {CODEC_ID_H263I, TC_CODEC_H263I, "h263i", ++ {AV_CODEC_ID_H263I, TC_CODEC_H263I, "h263i", + {"I263", ""}}, +- {CODEC_ID_H263P, TC_CODEC_H263P, "h263p", ++ {AV_CODEC_ID_H263P, TC_CODEC_H263P, "h263p", + {"H263", "U263", "VIV1", ""}}, +- {CODEC_ID_H264, TC_CODEC_H264, "h264", ++ {AV_CODEC_ID_H264, TC_CODEC_H264, "h264", + {"H264", "h264", "X264", "x264", "avc1", ""}}, +- {CODEC_ID_RV10, TC_CODEC_RV10, "rv10", ++ {AV_CODEC_ID_RV10, TC_CODEC_RV10, "rv10", + {"RV10", "RV13", ""}}, +- {CODEC_ID_SVQ1, TC_CODEC_SVQ1, "svq1", ++ {AV_CODEC_ID_SVQ1, TC_CODEC_SVQ1, "svq1", + {"SVQ1", ""}}, +- {CODEC_ID_SVQ3, TC_CODEC_SVQ3, "svq3", ++ {AV_CODEC_ID_SVQ3, TC_CODEC_SVQ3, "svq3", + {"SVQ3", ""}}, +- {CODEC_ID_MPEG2VIDEO, TC_CODEC_MPEG2, "mpeg2video", ++ {AV_CODEC_ID_MPEG2VIDEO, TC_CODEC_MPEG2, "mpeg2video", + {"MPG2", ""}}, +- {CODEC_ID_MPEG2VIDEO, TC_CODEC_MPEG, "mpeg2video", ++ {AV_CODEC_ID_MPEG2VIDEO, TC_CODEC_MPEG, "mpeg2video", + {"MPG2", ""}}, +- {CODEC_ID_ASV1, TC_CODEC_ASV1, "asv1", ++ {AV_CODEC_ID_ASV1, TC_CODEC_ASV1, "asv1", + {"ASV1", ""}}, +- {CODEC_ID_ASV2, TC_CODEC_ASV2, "asv2", ++ {AV_CODEC_ID_ASV2, TC_CODEC_ASV2, "asv2", + {"ASV2", ""}}, +- {CODEC_ID_FFV1, TC_CODEC_FFV1, "ffv1", ++ {AV_CODEC_ID_FFV1, TC_CODEC_FFV1, "ffv1", + {"FFV1", ""}}, +- {CODEC_ID_RAWVIDEO, TC_CODEC_YUV420P, "raw", ++ {AV_CODEC_ID_RAWVIDEO, TC_CODEC_YUV420P, "raw", + {"I420", "IYUV", ""}}, +- {CODEC_ID_RAWVIDEO, TC_CODEC_YUV422P, "raw", ++ {AV_CODEC_ID_RAWVIDEO, TC_CODEC_YUV422P, "raw", + {"Y42B", ""}}, + {0, TC_CODEC_UNKNOWN, NULL, {""}}}; + +@@ -324,13 +324,13 @@ + // XXX: some codecs need extra data + switch (codec->id) + { +- case CODEC_ID_MJPEG: extra_data_size = 28; break; +- case CODEC_ID_LJPEG: extra_data_size = 28; break; +- case CODEC_ID_HUFFYUV: extra_data_size = 1000; break; +- case CODEC_ID_ASV1: extra_data_size = 8; break; +- case CODEC_ID_ASV2: extra_data_size = 8; break; +- case CODEC_ID_WMV1: extra_data_size = 4; break; +- case CODEC_ID_WMV2: extra_data_size = 4; break; ++ case AV_CODEC_ID_MJPEG: extra_data_size = 28; break; ++ case AV_CODEC_ID_LJPEG: extra_data_size = 28; break; ++ case AV_CODEC_ID_HUFFYUV: extra_data_size = 1000; break; ++ case AV_CODEC_ID_ASV1: extra_data_size = 8; break; ++ case AV_CODEC_ID_ASV2: extra_data_size = 8; break; ++ case AV_CODEC_ID_WMV1: extra_data_size = 4; break; ++ case AV_CODEC_ID_WMV2: extra_data_size = 4; break; + default: extra_data_size = 0; break; + } + +@@ -360,7 +360,7 @@ + frame_size = x_dim*y_dim + 2*UV_PLANE_SIZE(IMG_YUV_DEFAULT,x_dim,y_dim); + + // we adapt the color space +- if(codec->id == CODEC_ID_MJPEG) { ++ if(codec->id == AV_CODEC_ID_MJPEG) { + enable_levels_filter(); + } + break; +@@ -434,7 +434,7 @@ + } + + // we adapt the color space +- if(codec->id == CODEC_ID_MJPEG) { ++ if(codec->id == AV_CODEC_ID_MJPEG) { + enable_levels_filter(); + } + +@@ -504,13 +504,13 @@ + int bkey = 0; + + // check for keyframes +- if (codec->id == CODEC_ID_MSMPEG4V3) { ++ if (codec->id == AV_CODEC_ID_MSMPEG4V3) { + if (divx3_is_key(buffer)) bkey = 1; + } +- else if (codec->id == CODEC_ID_MPEG4) { ++ else if (codec->id == AV_CODEC_ID_MPEG4) { + if (mpeg4_is_key(buffer, bytes_read)) bkey = 1; + } +- else if (codec->id == CODEC_ID_MJPEG) { ++ else if (codec->id == AV_CODEC_ID_MJPEG) { + bkey = 1; + } + +--- import/decode_lavc.c.orig 2016-02-16 23:56:35.488282034 +0000 ++++ import/decode_lavc.c 2016-02-16 23:56:55.201535074 +0000 +@@ -58,37 +58,37 @@ + + // fourCC to ID mapping taken from MPlayer's codecs.conf + static struct ffmpeg_codec ffmpeg_codecs[] = { +- {CODEC_ID_MSMPEG4V1, TC_CODEC_ERROR, "mp41", ++ {AV_CODEC_ID_MSMPEG4V1, TC_CODEC_ERROR, "mp41", + {"MP41", "DIV1", ""}}, +- {CODEC_ID_MSMPEG4V2, TC_CODEC_MP42, "mp42", ++ {AV_CODEC_ID_MSMPEG4V2, TC_CODEC_MP42, "mp42", + {"MP42", "DIV2", ""}}, +- {CODEC_ID_MSMPEG4V3, TC_CODEC_DIVX3, "msmpeg4", ++ {AV_CODEC_ID_MSMPEG4V3, TC_CODEC_DIVX3, "msmpeg4", + {"DIV3", "DIV5", "AP41", "MPG3", "MP43", ""}}, +- {CODEC_ID_MPEG4, TC_CODEC_DIVX4, "mpeg4", ++ {AV_CODEC_ID_MPEG4, TC_CODEC_DIVX4, "mpeg4", + {"DIVX", "XVID", "MP4S", "M4S2", "MP4V", "UMP4", "DX50", ""}}, +- {CODEC_ID_MJPEG, TC_CODEC_MJPEG, "mjpeg", ++ {AV_CODEC_ID_MJPEG, TC_CODEC_MJPEG, "mjpeg", + {"MJPG", "AVRN", "AVDJ", "JPEG", "MJPA", "JFIF", ""}}, +- {CODEC_ID_MPEG1VIDEO, TC_CODEC_MPEG1VIDEO, "mpeg1video", ++ {AV_CODEC_ID_MPEG1VIDEO, TC_CODEC_MPEG1VIDEO, "mpeg1video", + {"MPG1", ""}}, +- {CODEC_ID_DVVIDEO, TC_CODEC_DV, "dvvideo", ++ {AV_CODEC_ID_DVVIDEO, TC_CODEC_DV, "dvvideo", + {"DVSD", ""}}, +- {CODEC_ID_WMV1, TC_CODEC_WMV1, "wmv1", ++ {AV_CODEC_ID_WMV1, TC_CODEC_WMV1, "wmv1", + {"WMV1", ""}}, +- {CODEC_ID_WMV2, TC_CODEC_WMV2, "wmv2", ++ {AV_CODEC_ID_WMV2, TC_CODEC_WMV2, "wmv2", + {"WMV2", ""}}, +- {CODEC_ID_HUFFYUV, TC_CODEC_HUFFYUV, "hfyu", ++ {AV_CODEC_ID_HUFFYUV, TC_CODEC_HUFFYUV, "hfyu", + {"HFYU", ""}}, +- {CODEC_ID_H263I, TC_CODEC_H263I, "h263i", ++ {AV_CODEC_ID_H263I, TC_CODEC_H263I, "h263i", + {"I263", ""}}, +- {CODEC_ID_H263P, TC_CODEC_H263P, "h263p", ++ {AV_CODEC_ID_H263P, TC_CODEC_H263P, "h263p", + {"H263", "U263", "VIV1", ""}}, +- {CODEC_ID_RV10, TC_CODEC_RV10, "rv10", ++ {AV_CODEC_ID_RV10, TC_CODEC_RV10, "rv10", + {"RV10", "RV13", ""}}, +- {CODEC_ID_SVQ1, TC_CODEC_SVQ1, "svq1", ++ {AV_CODEC_ID_SVQ1, TC_CODEC_SVQ1, "svq1", + {"SVQ1", ""}}, +- {CODEC_ID_SVQ3, TC_CODEC_SVQ3, "svq3", ++ {AV_CODEC_ID_SVQ3, TC_CODEC_SVQ3, "svq3", + {"SVQ3", ""}}, +- {CODEC_ID_MPEG2VIDEO, TC_CODEC_MPEG2, "mpeg2video", ++ {AV_CODEC_ID_MPEG2VIDEO, TC_CODEC_MPEG2, "mpeg2video", + {"MPG2", ""}}, + {0, TC_CODEC_UNKNOWN, NULL, {""}}}; + diff --git a/multimedia/transcode/files/patch-ffmpeg4 b/multimedia/transcode/files/patch-ffmpeg4 new file mode 100644 index 000000000000..c3ccbf258c1f --- /dev/null +++ b/multimedia/transcode/files/patch-ffmpeg4 @@ -0,0 +1,502 @@ +https://gitweb.gentoo.org/repo/gentoo.git/tree/media-video/transcode/files/ffmpeg4.patch?id=ac771a5dab7c + +--- encode/encode_lavc.c ++++ encode/encode_lavc.c +@@ -77,6 +77,13 @@ struct tclavcconfigdata_ { + int luma_elim_threshold; + int chroma_elim_threshold; + int quantizer_noise_shaping; ++ int inter_quant_bias; ++ int intra_quant_bias; ++ int scenechange_factor; ++ int rc_strategy; ++ float rc_initial_cplx; ++ float rc_qsquish; ++ float border_masking; + + /* same as above for flags */ + struct { +@@ -684,7 +691,7 @@ static int tc_lavc_init_multipass(TCLavc + switch (vob->divxmultipass) { + case 1: + CAN_DO_MULTIPASS(multipass_flag); +- pd->ff_vcontext.flags |= CODEC_FLAG_PASS1; ++ pd->ff_vcontext.flags |= AV_CODEC_FLAG_PASS1; + pd->stats_file = fopen(vob->divxlogfile, "w"); + if (pd->stats_file == NULL) { + tc_log_error(MOD_NAME, "could not create 2pass log file" +@@ -694,7 +701,7 @@ static int tc_lavc_init_multipass(TCLavc + break; + case 2: + CAN_DO_MULTIPASS(multipass_flag); +- pd->ff_vcontext.flags |= CODEC_FLAG_PASS2; ++ pd->ff_vcontext.flags |= AV_CODEC_FLAG_PASS2; + pd->stats_file = fopen(vob->divxlogfile, "r"); + if (pd->stats_file == NULL){ + tc_log_error(MOD_NAME, "could not open 2pass log file \"%s\"" +@@ -723,7 +730,7 @@ static int tc_lavc_init_multipass(TCLavc + break; + case 3: + /* fixed qscale :p */ +- pd->ff_vcontext.flags |= CODEC_FLAG_QSCALE; ++ pd->ff_vcontext.flags |= AV_CODEC_FLAG_QSCALE; + pd->ff_venc_frame.quality = vob->divxbitrate; + break; + } +@@ -970,7 +977,7 @@ static void tc_lavc_config_defaults(TCLa + pd->confdata.rc_buffer_size = 0; + pd->confdata.lmin = 2; + pd->confdata.lmax = 31; +- pd->confdata.me_method = ME_EPZS; ++ pd->confdata.me_method = 0; + + memset(&pd->confdata.flags, 0, sizeof(pd->confdata.flags)); + pd->confdata.turbo_setup = 0; +@@ -983,12 +990,12 @@ static void tc_lavc_config_defaults(TCLa + pd->ff_vcontext.me_range = 0; + pd->ff_vcontext.mb_decision = 0; + pd->ff_vcontext.scenechange_threshold = 0; +- pd->ff_vcontext.scenechange_factor = 1; ++ pd->confdata.scenechange_factor = 1; + pd->ff_vcontext.b_frame_strategy = 0; + pd->ff_vcontext.b_sensitivity = 40; + pd->ff_vcontext.brd_scale = 0; + pd->ff_vcontext.bidir_refine = 0; +- pd->ff_vcontext.rc_strategy = 2; ++ pd->confdata.rc_strategy = 2; + pd->ff_vcontext.b_quant_factor = 1.25; + pd->ff_vcontext.i_quant_factor = 0.8; + pd->ff_vcontext.b_quant_offset = 1.25; +@@ -996,8 +1003,8 @@ static void tc_lavc_config_defaults(TCLa + pd->ff_vcontext.qblur = 0.5; + pd->ff_vcontext.qcompress = 0.5; + pd->ff_vcontext.mpeg_quant = 0; +- pd->ff_vcontext.rc_initial_cplx = 0.0; +- pd->ff_vcontext.rc_qsquish = 1.0; ++ pd->confdata.rc_initial_cplx = 0.0; ++ pd->confdata.rc_qsquish = 1.0; + pd->confdata.luma_elim_threshold = 0; + pd->confdata.chroma_elim_threshold = 0; + pd->ff_vcontext.strict_std_compliance = 0; +@@ -1008,7 +1015,7 @@ static void tc_lavc_config_defaults(TCLa + pd->ff_vcontext.temporal_cplx_masking = 0.0; + pd->ff_vcontext.spatial_cplx_masking = 0.0; + pd->ff_vcontext.p_masking = 0.0; +- pd->ff_vcontext.border_masking = 0.0; ++ pd->confdata.border_masking = 0.0; + pd->ff_vcontext.me_pre_cmp = 0; + pd->ff_vcontext.me_cmp = 0; + pd->ff_vcontext.me_sub_cmp = 0; +@@ -1020,8 +1027,6 @@ static void tc_lavc_config_defaults(TCLa + pd->ff_vcontext.pre_me = 1; + pd->ff_vcontext.me_subpel_quality = 8; + pd->ff_vcontext.refs = 1; +- pd->ff_vcontext.intra_quant_bias = FF_DEFAULT_QUANT_BIAS; +- pd->ff_vcontext.inter_quant_bias = FF_DEFAULT_QUANT_BIAS; + pd->ff_vcontext.noise_reduction = 0; + pd->confdata.quantizer_noise_shaping = 0; + pd->ff_vcontext.flags = 0; +@@ -1044,19 +1049,19 @@ static void tc_lavc_config_defaults(TCLa + */ + static void tc_lavc_dispatch_settings(TCLavcPrivateData *pd) + { ++ char buf[1024]; + /* some translation... */ + pd->ff_vcontext.bit_rate_tolerance = pd->confdata.vrate_tolerance * 1000; + pd->ff_vcontext.rc_min_rate = pd->confdata.rc_min_rate * 1000; + pd->ff_vcontext.rc_max_rate = pd->confdata.rc_max_rate * 1000; + pd->ff_vcontext.rc_buffer_size = pd->confdata.rc_buffer_size * 1024; +- pd->ff_vcontext.lmin = (int)(FF_QP2LAMBDA * pd->confdata.lmin + 0.5); +- pd->ff_vcontext.lmax = (int)(FF_QP2LAMBDA * pd->confdata.lmax + 0.5); +- pd->ff_vcontext.me_method = ME_ZERO + pd->confdata.me_method; ++ snprintf(buf, sizeof(buf), "%i", (int)(FF_QP2LAMBDA * pd->confdata.lmin + 0.5)); ++ av_dict_set(&(pd->ff_opts), "lmin", buf, 0); ++ snprintf(buf, sizeof(buf), "%i", (int)(FF_QP2LAMBDA * pd->confdata.lmax + 0.5)); ++ av_dict_set(&(pd->ff_opts), "lmax", buf, 0); + + pd->ff_vcontext.flags = 0; +- SET_FLAG(pd, mv0); + SET_FLAG(pd, qpel); +- SET_FLAG(pd, naq); + SET_FLAG(pd, ilme); + SET_FLAG(pd, ildct); + SET_FLAG(pd, aic); +@@ -1077,8 +1082,8 @@ static void tc_lavc_dispatch_settings(TC + } + if (pd->interlacing.active) { + /* enforce interlacing */ +- pd->ff_vcontext.flags |= CODEC_FLAG_INTERLACED_DCT; +- pd->ff_vcontext.flags |= CODEC_FLAG_INTERLACED_ME; ++ pd->ff_vcontext.flags |= AV_CODEC_FLAG_INTERLACED_DCT; ++ pd->ff_vcontext.flags |= AV_CODEC_FLAG_INTERLACED_ME; + } + if (pd->confdata.flags.alt) { + av_dict_set(&(pd->ff_opts), "alternate_scan", "1", 0); +@@ -1095,15 +1100,31 @@ static void tc_lavc_dispatch_settings(TC + if (pd->confdata.flags.cbp) { + av_dict_set(&(pd->ff_opts), "mpv_flags", "+cbp_rd", 0); + } ++ if (pd->confdata.flags.mv0) { ++ av_dict_set(&(pd->ff_opts), "mpv_flags", "+mv0", 0); ++ } ++ if (pd->confdata.flags.naq) { ++ av_dict_set(&(pd->ff_opts), "mpv_flags", "+naq", 0); ++ } + +- char buf[1024]; + #define set_dict_opt(val, opt) \ + snprintf(buf, sizeof(buf), "%i", pd->confdata.val);\ + av_dict_set(&(pd->ff_opts), opt, buf, 0) ++#define set_dict_float_opt(val, opt) \ ++ snprintf(buf, sizeof(buf), "%f", pd->confdata.val);\ ++ av_dict_set(&(pd->ff_opts), opt, buf, 0) + + set_dict_opt(luma_elim_threshold, "luma_elim_threshold"); + set_dict_opt(chroma_elim_threshold, "chroma_elim_threshold"); + set_dict_opt(quantizer_noise_shaping, "quantizer_noise_shaping"); ++ set_dict_opt(inter_quant_bias, "pbias"); ++ set_dict_opt(intra_quant_bias, "ibias"); ++ set_dict_opt(me_method, "me_method"); ++ set_dict_opt(scenechange_factor, "sc_factor"); ++ set_dict_opt(rc_strategy, "rc_strategy"); ++ set_dict_float_opt(rc_initial_cplx, "rc_init_cplx"); ++ set_dict_float_opt(rc_qsquish, "qsquish"); ++ set_dict_float_opt(border_masking, "border_mask"); + } + + #undef SET_FLAG +@@ -1159,12 +1180,12 @@ static int tc_lavc_read_config(TCLavcPri + { "lmin", PAUX(lmin), TCCONF_TYPE_FLOAT, TCCONF_FLAG_RANGE, 0.01, 255.0 }, + { "lmax", PAUX(lmax), TCCONF_TYPE_FLOAT, TCCONF_FLAG_RANGE, 0.01, 255.0 }, + { "vqdiff", PCTX(max_qdiff), TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 1, 31 }, +- { "vmax_b_frames", PCTX(max_b_frames), TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 0, FF_MAX_B_FRAMES }, ++ { "vmax_b_frames", PCTX(max_b_frames), TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 0, INT_MAX }, + { "vme", PAUX(me_method), TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 0, 16, }, + { "me_range", PCTX(me_range), TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 0, 16000 }, + { "mbd", PCTX(mb_decision), TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 0, 3 }, + { "sc_threshold", PCTX(scenechange_threshold), TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, -1000000, 1000000 }, +- { "sc_factor", PCTX(scenechange_factor), TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 1, 16 }, ++ { "sc_factor", PAUX(scenechange_factor), TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 1, 16 }, + { "vb_strategy", PCTX(b_frame_strategy), TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 0, 10 }, + { "b_sensitivity", PCTX(b_sensitivity), TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 1, 100 }, + { "brd_scale", PCTX(brd_scale), TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 0, 10 }, +@@ -1175,7 +1196,7 @@ static int tc_lavc_read_config(TCLavcPri + { "vrc_maxrate", PAUX(rc_max_rate), TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 0, 24000000 }, + { "vrc_minrate", PAUX(rc_min_rate), TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 0, 24000000 }, + { "vrc_buf_size", PAUX(rc_buffer_size), TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 4, 24000000 }, +- { "vrc_strategy", PCTX(rc_strategy), TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 0, 2 }, ++ { "vrc_strategy", PAUX(rc_strategy), TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 0, 2 }, + { "vb_qfactor", PCTX(b_quant_factor), TCCONF_TYPE_FLOAT, TCCONF_FLAG_RANGE, -31.0, 31.0 }, + { "vi_qfactor", PCTX(i_quant_factor), TCCONF_TYPE_FLOAT, TCCONF_FLAG_RANGE, -31.0, 31.0 }, + { "vb_qoffset", PCTX(b_quant_offset), TCCONF_TYPE_FLOAT, TCCONF_FLAG_RANGE, 0.0, 31.0 }, +@@ -1185,9 +1206,9 @@ static int tc_lavc_read_config(TCLavcPri + { "mpeg_quant", PCTX(mpeg_quant), TCCONF_TYPE_FLAG, 0, 0, 1 }, + // { "vrc_eq", }, // not yet supported + { "vrc_override", rc_override_buf, TCCONF_TYPE_STRING, 0, 0, 0 }, +- { "vrc_init_cplx", PCTX(rc_initial_cplx), TCCONF_TYPE_FLOAT, TCCONF_FLAG_RANGE, 0.0, 9999999.0 }, ++ { "vrc_init_cplx", PAUX(rc_initial_cplx), TCCONF_TYPE_FLOAT, TCCONF_FLAG_RANGE, 0.0, 9999999.0 }, + // { "vrc_init_occupancy", }, // not yet supported +- { "vqsquish", PCTX(rc_qsquish), TCCONF_TYPE_FLOAT, TCCONF_FLAG_RANGE, 0.0, 99.0 }, ++ { "vqsquish", PAUX(rc_qsquish), TCCONF_TYPE_FLOAT, TCCONF_FLAG_RANGE, 0.0, 99.0 }, + { "vlelim", PAUX(luma_elim_threshold), TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, -99, 99 }, + { "vcelim", PAUX(chroma_elim_threshold), TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, -99, 99 }, + { "vstrict", PCTX(strict_std_compliance), TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, -99, 99 }, +@@ -1199,7 +1220,7 @@ static int tc_lavc_read_config(TCLavcPri + { "tcplx_mask", PCTX(temporal_cplx_masking), TCCONF_TYPE_FLOAT, TCCONF_FLAG_RANGE, 0.0, 1.0 }, + { "scplx_mask", PCTX(spatial_cplx_masking), TCCONF_TYPE_FLOAT, TCCONF_FLAG_RANGE, 0.0, 1.0 }, + { "p_mask", PCTX(p_masking), TCCONF_TYPE_FLOAT, TCCONF_FLAG_RANGE, 0.0, 1.0 }, +- { "border_mask", PCTX(border_masking), TCCONF_TYPE_FLOAT, TCCONF_FLAG_RANGE, 0.0, 1.0 }, ++ { "border_mask", PAUX(border_masking), TCCONF_TYPE_FLOAT, TCCONF_FLAG_RANGE, 0.0, 1.0 }, + { "pred", PCTX(prediction_method), TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 0, 4 }, + { "precmp", PCTX(me_pre_cmp), TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 0, 2000 }, + { "cmp", PCTX(me_cmp), TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 0, 2000 }, +@@ -1212,37 +1233,37 @@ static int tc_lavc_read_config(TCLavcPri + { "pre_me", PCTX(pre_me), TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 0, 2000}, + { "subq", PCTX(me_subpel_quality), TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 0, 8 }, + { "refs", PCTX(refs), TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 1, 8 }, +- { "ibias", PCTX(intra_quant_bias), TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, -512, 512 }, +- { "pbias", PCTX(inter_quant_bias), TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, -512, 512 }, ++ { "ibias", PAUX(intra_quant_bias), TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, -512, 512 }, ++ { "pbias", PAUX(inter_quant_bias), TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, -512, 512 }, + { "nr", PCTX(noise_reduction), TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 0, 1000000}, + { "qns", PAUX(quantizer_noise_shaping), TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 0, 3 }, + { "inter_matrix_file", inter_matrix_file, TCCONF_TYPE_STRING, 0, 0, 0 }, + { "intra_matrix_file", intra_matrix_file, TCCONF_TYPE_STRING, 0, 0, 0 }, + +- { "mv0", PAUX(flags.mv0), TCCONF_TYPE_FLAG, 0, 0, CODEC_FLAG_MV0 }, ++ { "mv0", PAUX(flags.mv0), TCCONF_TYPE_FLAG, 0, 0, 1 }, + { "cbp", PAUX(flags.cbp), TCCONF_TYPE_FLAG, 0, 0, 1 }, +- { "qpel", PAUX(flags.qpel), TCCONF_TYPE_FLAG, 0, 0, CODEC_FLAG_QPEL }, ++ { "qpel", PAUX(flags.qpel), TCCONF_TYPE_FLAG, 0, 0, AV_CODEC_FLAG_QPEL }, + { "alt", PAUX(flags.alt), TCCONF_TYPE_FLAG, 0, 0, 1 }, +- { "ilme", PAUX(flags.ilme), TCCONF_TYPE_FLAG, 0, 0, CODEC_FLAG_INTERLACED_ME }, +- { "ildct", PAUX(flags.ildct), TCCONF_TYPE_FLAG, 0, 0, CODEC_FLAG_INTERLACED_DCT }, +- { "naq", PAUX(flags.naq), TCCONF_TYPE_FLAG, 0, 0, CODEC_FLAG_NORMALIZE_AQP }, ++ { "ilme", PAUX(flags.ilme), TCCONF_TYPE_FLAG, 0, 0, AV_CODEC_FLAG_INTERLACED_ME }, ++ { "ildct", PAUX(flags.ildct), TCCONF_TYPE_FLAG, 0, 0, AV_CODEC_FLAG_INTERLACED_DCT }, ++ { "naq", PAUX(flags.naq), TCCONF_TYPE_FLAG, 0, 0, 1 }, + { "vdpart", PAUX(flags.vdpart), TCCONF_TYPE_FLAG, 0, 0, 1 }, + #if LIBAVCODEC_VERSION_INT < ((52<<16)+(0<<8)+0) + { "aic", PAUX(flags.aic), TCCONF_TYPE_FLAG, 0, 0, CODEC_FLAG_H263P_AIC }, + #else +- { "aic", PAUX(flags.aic), TCCONF_TYPE_FLAG, 0, 0, CODEC_FLAG_AC_PRED }, ++ { "aic", PAUX(flags.aic), TCCONF_TYPE_FLAG, 0, 0, AV_CODEC_FLAG_AC_PRED }, + #endif + { "aiv", PAUX(flags.aiv), TCCONF_TYPE_FLAG, 0, 0, 1 }, + { "umv", PAUX(flags.umv), TCCONF_TYPE_FLAG, 0, 0, 1 }, +- { "psnr", PAUX(flags.psnr), TCCONF_TYPE_FLAG, 0, 0, CODEC_FLAG_PSNR }, ++ { "psnr", PAUX(flags.psnr), TCCONF_TYPE_FLAG, 0, 0, AV_CODEC_FLAG_PSNR }, + #if LIBAVCODEC_VERSION_INT < ((52<<16)+(0<<8)+0) + { "trell", PAUX(flags.trell), TCCONF_TYPE_FLAG, 0, 0, CODEC_FLAG_TRELLIS_QUANT }, + #else + { "trell", PCTX(trellis), TCCONF_TYPE_FLAG, 0, 0, 1 }, + #endif +- { "gray", PAUX(flags.gray), TCCONF_TYPE_FLAG, 0, 0, CODEC_FLAG_GRAY }, +- { "v4mv", PAUX(flags.v4mv), TCCONF_TYPE_FLAG, 0, 0, CODEC_FLAG_4MV }, +- { "closedgop", PAUX(flags.closedgop), TCCONF_TYPE_FLAG, 0, 0, CODEC_FLAG_CLOSED_GOP }, ++ { "gray", PAUX(flags.gray), TCCONF_TYPE_FLAG, 0, 0, AV_CODEC_FLAG_GRAY }, ++ { "v4mv", PAUX(flags.v4mv), TCCONF_TYPE_FLAG, 0, 0, AV_CODEC_FLAG_4MV }, ++ { "closedgop", PAUX(flags.closedgop), TCCONF_TYPE_FLAG, 0, 0, AV_CODEC_FLAG_CLOSED_GOP }, + + // { "turbo", PAUX(turbo_setup), TCCONF_TYPE_FLAG, 0, 0, 1 }, // not yet supported + /* End of the config file */ +--- export/export_ffmpeg.c ++++ export/export_ffmpeg.c +@@ -831,14 +831,11 @@ MOD_init + + lavc_venc_context->bit_rate = vob->divxbitrate * 1000; + lavc_venc_context->bit_rate_tolerance = lavc_param_vrate_tolerance * 1000; +- lavc_venc_context->lmin= (int)(FF_QP2LAMBDA * lavc_param_lmin + 0.5); +- lavc_venc_context->lmax= (int)(FF_QP2LAMBDA * lavc_param_lmax + 0.5); + lavc_venc_context->max_qdiff = lavc_param_vqdiff; + lavc_venc_context->qcompress = lavc_param_vqcompress; + lavc_venc_context->qblur = lavc_param_vqblur; + lavc_venc_context->max_b_frames = lavc_param_vmax_b_frames; + lavc_venc_context->b_quant_factor = lavc_param_vb_qfactor; +- lavc_venc_context->rc_strategy = lavc_param_vrc_strategy; + lavc_venc_context->b_frame_strategy = lavc_param_vb_strategy; + lavc_venc_context->b_quant_offset = lavc_param_vb_qoffset; + +@@ -846,8 +843,23 @@ MOD_init + #define set_dict_opt(val, opt) \ + snprintf(buf, sizeof(buf), "%i", val); \ + av_dict_set(&lavc_venc_opts, opt, buf, 0) ++#define set_dict_float_opt(val, opt) \ ++ snprintf(buf, sizeof(buf), "%f", val); \ ++ av_dict_set(&lavc_venc_opts, opt, buf, 0) + set_dict_opt(lavc_param_luma_elim_threshold, "luma_elim_threshold"); + set_dict_opt(lavc_param_chroma_elim_threshold, "chroma_elim_threshold"); ++ set_dict_opt((int)(FF_QP2LAMBDA * lavc_param_lmin + 0.5), "lmin"); ++ set_dict_opt((int)(FF_QP2LAMBDA * lavc_param_lmax + 0.5), "lmax"); ++ set_dict_opt(lavc_param_vrc_strategy, "rc_strategy"); ++ set_dict_float_opt(lavc_param_rc_qsquish, "qsquish"); ++ set_dict_float_opt(lavc_param_rc_qmod_amp, "rc_qmod_amp"); ++ set_dict_opt(lavc_param_rc_qmod_freq, "rc_qmod_freq"); ++ set_dict_opt(lavc_param_rc_eq, "rc_eq"); ++ set_dict_opt(lavc_param_vme, "me_method"); ++ set_dict_opt(lavc_param_ibias, "ibias"); ++ set_dict_opt(lavc_param_pbias, "pbias"); ++ set_dict_float_opt(lavc_param_rc_buffer_aggressivity, "rc_buf_aggressivity"); ++ set_dict_float_opt(lavc_param_rc_initial_cplx, "rc_init_cplx"); + lavc_venc_context->rtp_payload_size = lavc_param_packet_size; + #if LIBAVCODEC_VERSION_INT < ((52<<16)+(0<<8)+0) + if (lavc_param_packet_size) +@@ -856,15 +868,9 @@ MOD_init + lavc_venc_context->strict_std_compliance= lavc_param_strict; + lavc_venc_context->i_quant_factor = lavc_param_vi_qfactor; + lavc_venc_context->i_quant_offset = lavc_param_vi_qoffset; +- lavc_venc_context->rc_qsquish = lavc_param_rc_qsquish; +- lavc_venc_context->rc_qmod_amp = lavc_param_rc_qmod_amp; +- lavc_venc_context->rc_qmod_freq = lavc_param_rc_qmod_freq; +- lavc_venc_context->rc_eq = lavc_param_rc_eq; + lavc_venc_context->rc_max_rate = lavc_param_rc_max_rate * 1000; + lavc_venc_context->rc_min_rate = lavc_param_rc_min_rate * 1000; + lavc_venc_context->rc_buffer_size = lavc_param_rc_buffer_size * 1024; +- lavc_venc_context->rc_buffer_aggressivity= lavc_param_rc_buffer_aggressivity; +- lavc_venc_context->rc_initial_cplx = lavc_param_rc_initial_cplx; + lavc_venc_context->debug = lavc_param_debug; + lavc_venc_context->last_predictor_count= lavc_param_last_pred; + lavc_venc_context->pre_me = lavc_param_pre_me; +@@ -872,8 +878,6 @@ MOD_init + lavc_venc_context->pre_dia_size = lavc_param_pre_dia_size; + lavc_venc_context->me_subpel_quality = lavc_param_me_subpel_quality; + lavc_venc_context->me_range = lavc_param_me_range; +- lavc_venc_context->intra_quant_bias = lavc_param_ibias; +- lavc_venc_context->inter_quant_bias = lavc_param_pbias; + lavc_venc_context->coder_type = lavc_param_coder; + lavc_venc_context->context_model = lavc_param_context; + lavc_venc_context->scenechange_threshold= lavc_param_sc_threshold; +@@ -1079,6 +1083,8 @@ MOD_init + lavc_venc_context->flags |= lavc_param_mv0; + if(lavc_param_qp_rd) + av_dict_set(&lavc_venc_opts, "mpv_flags", "+qp_rd", 0); ++ if (lavc_param_normalize_aqp) ++ av_dict_set(&lavc_venc_opts, "mpv_flags", "+naq", 0); + lavc_venc_context->flags |= lavc_param_ilme; + #if LIBAVCODEC_VERSION_INT < ((52<<16)+(0<<8)+0) + lavc_venc_context->flags |= lavc_param_trell; +@@ -1087,9 +1093,7 @@ MOD_init + #endif + + if (lavc_param_gray) +- lavc_venc_context->flags |= CODEC_FLAG_GRAY; +- if (lavc_param_normalize_aqp) +- lavc_venc_context->flags |= CODEC_FLAG_NORMALIZE_AQP; ++ lavc_venc_context->flags |= AV_CODEC_FLAG_GRAY; + + switch(vob->encode_fields) { + case TC_ENCODE_FIELDS_TOP_FIRST: +@@ -1107,9 +1111,9 @@ MOD_init + } + + lavc_venc_context->flags |= interlacing_active ? +- CODEC_FLAG_INTERLACED_DCT : 0; ++ AV_CODEC_FLAG_INTERLACED_DCT : 0; + lavc_venc_context->flags |= interlacing_active ? +- CODEC_FLAG_INTERLACED_ME : 0; ++ AV_CODEC_FLAG_INTERLACED_ME : 0; + + lavc_venc_context->flags |= lavc_param_psnr; + do_psnr = lavc_param_psnr; +@@ -1156,7 +1160,7 @@ MOD_init + "encoding."); + return TC_EXPORT_ERROR; + } +- lavc_venc_context->flags |= CODEC_FLAG_PASS1; ++ lavc_venc_context->flags |= AV_CODEC_FLAG_PASS1; + stats_file = fopen(vob->divxlogfile, "w"); + if (stats_file == NULL){ + tc_log_warn(MOD_NAME, "Could not create 2pass log file \"%s\".", +@@ -1170,7 +1174,7 @@ MOD_init + "encoding."); + return TC_EXPORT_ERROR; + } +- lavc_venc_context->flags |= CODEC_FLAG_PASS2; ++ lavc_venc_context->flags |= AV_CODEC_FLAG_PASS2; + stats_file= fopen(vob->divxlogfile, "r"); + if (stats_file==NULL){ + tc_log_warn(MOD_NAME, "Could not open 2pass log file \"%s\" for " +@@ -1201,12 +1205,11 @@ MOD_init + break; + case 3: + /* fixed qscale :p */ +- lavc_venc_context->flags |= CODEC_FLAG_QSCALE; ++ lavc_venc_context->flags |= AV_CODEC_FLAG_QSCALE; + lavc_venc_frame->quality = vob->divxbitrate; + break; + } + +- lavc_venc_context->me_method = ME_ZERO + lavc_param_vme; + + /* FIXME: transcode itself contains "broken ffmpeg default settings", thus we need to override them! */ + if (lavc_param_video_preset && strcmp(lavc_param_video_preset, "none")) { +--- export/ffmpeg_cfg.c ++++ export/ffmpeg_cfg.c +@@ -93,8 +93,8 @@ int lavc_param_last_pred= 0; + int lavc_param_pre_me= 1; + int lavc_param_me_subpel_quality= 8; + int lavc_param_me_range=0; +-int lavc_param_ibias=FF_DEFAULT_QUANT_BIAS; +-int lavc_param_pbias=FF_DEFAULT_QUANT_BIAS; ++int lavc_param_ibias=0; ++int lavc_param_pbias=0; + int lavc_param_coder=0; + int lavc_param_context=0; + char *lavc_param_intra_matrix = NULL; +@@ -136,7 +136,7 @@ TCConfigEntry lavcopts_conf[]={ + {"vratetol", &lavc_param_vrate_tolerance, TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 4, 24000000}, + {"vhq", &lavc_param_mb_decision, TCCONF_TYPE_FLAG, 0, 0, 1}, + {"mbd", &lavc_param_mb_decision, TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 0, 9}, +- {"v4mv", &lavc_param_v4mv, TCCONF_TYPE_FLAG, 0, 0, CODEC_FLAG_4MV}, ++ {"v4mv", &lavc_param_v4mv, TCCONF_TYPE_FLAG, 0, 0, AV_CODEC_FLAG_4MV}, + {"vme", &lavc_param_vme, TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 0, 5}, + // {"vqscale", &lavc_param_vqscale, TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 1, 31}, + // {"vqmin", &lavc_param_vqmin, TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 1, 31}, +@@ -147,7 +147,7 @@ TCConfigEntry lavcopts_conf[]={ + {"vqcomp", &lavc_param_vqcompress, TCCONF_TYPE_FLOAT, TCCONF_FLAG_RANGE, 0.0, 1.0}, + {"vqblur", &lavc_param_vqblur, TCCONF_TYPE_FLOAT, TCCONF_FLAG_RANGE, 0.0, 1.0}, + {"vb_qfactor", &lavc_param_vb_qfactor, TCCONF_TYPE_FLOAT, TCCONF_FLAG_RANGE, -31.0, 31.0}, +- {"vmax_b_frames", &lavc_param_vmax_b_frames, TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 0, FF_MAX_B_FRAMES}, ++ {"vmax_b_frames", &lavc_param_vmax_b_frames, TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 0, INT_MAX}, + // {"vpass", &lavc_param_vpass, TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 0, 2}, + {"vrc_strategy", &lavc_param_vrc_strategy, TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 0, 2}, + {"vb_strategy", &lavc_param_vb_strategy, TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 0, 10}, +@@ -158,7 +158,7 @@ TCConfigEntry lavcopts_conf[]={ + {"vstrict", &lavc_param_strict, TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, -99, 99}, + {"vdpart", &lavc_param_data_partitioning, TCCONF_TYPE_FLAG, 0, 0, 1}, + // {"keyint", &lavc_param_keyint, TCCONF_TYPE_INT, 0, 0, 0}, +- {"gray", &lavc_param_gray, TCCONF_TYPE_FLAG, 0, 0, CODEC_FLAG_GRAY}, ++ {"gray", &lavc_param_gray, TCCONF_TYPE_FLAG, 0, 0, AV_CODEC_FLAG_GRAY}, + {"mpeg_quant", &lavc_param_mpeg_quant, TCCONF_TYPE_FLAG, 0, 0, 1}, + {"vi_qfactor", &lavc_param_vi_qfactor, TCCONF_TYPE_FLOAT, TCCONF_FLAG_RANGE, -31.0, 31.0}, + {"vi_qoffset", &lavc_param_vi_qoffset, TCCONF_TYPE_FLOAT, TCCONF_FLAG_RANGE, 0.0, 31.0}, +@@ -184,7 +184,7 @@ TCConfigEntry lavcopts_conf[]={ + {"pred", &lavc_param_prediction_method, TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 0, 20}, + {"format", &lavc_param_format, TCCONF_TYPE_STRING, 0, 0, 0}, + {"debug", &lavc_param_debug, TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 0, 100000000}, +- {"psnr", &lavc_param_psnr, TCCONF_TYPE_FLAG, 0, 0, CODEC_FLAG_PSNR}, ++ {"psnr", &lavc_param_psnr, TCCONF_TYPE_FLAG, 0, 0, AV_CODEC_FLAG_PSNR}, + {"precmp", &lavc_param_me_pre_cmp, TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 0, 2000}, + {"cmp", &lavc_param_me_cmp, TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 0, 2000}, + {"subcmp", &lavc_param_me_sub_cmp, TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 0, 2000}, +@@ -192,9 +192,9 @@ TCConfigEntry lavcopts_conf[]={ + {"ildctcmp", &lavc_param_ildct_cmp, TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 0, 2000}, + {"predia", &lavc_param_pre_dia_size, TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, -2000, 2000}, + {"dia", &lavc_param_dia_size, TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, -2000, 2000}, +- {"qpel", &lavc_param_qpel, TCCONF_TYPE_FLAG, 0, 0, CODEC_FLAG_QPEL}, ++ {"qpel", &lavc_param_qpel, TCCONF_TYPE_FLAG, 0, 0, AV_CODEC_FLAG_QPEL}, + #if LIBAVCODEC_VERSION_INT < ((52<<16)+(0<<8)+0) +- {"trell", &lavc_param_trell, TCCONF_TYPE_FLAG, 0, 0, CODEC_FLAG_TRELLIS_QUANT}, ++ {"trell", &lavc_param_trell, TCCONF_TYPE_FLAG, 0, 0, AV_CODEC_FLAG_TRELLIS_QUANT}, + #else + {"trell", &lavc_param_trell, TCCONF_TYPE_FLAG, 0, 0, 1}, + #endif +@@ -203,9 +203,9 @@ TCConfigEntry lavcopts_conf[]={ + {"subq", &lavc_param_me_subpel_quality, TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 0, 8}, + {"me_range", &lavc_param_me_range, TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 0, 16000}, + #if LIBAVCODEC_VERSION_INT < ((52<<16)+(0<<8)+0) +- {"aic", &lavc_param_aic, TCCONF_TYPE_FLAG, 0, 0, CODEC_FLAG_H263P_AIC}, ++ {"aic", &lavc_param_aic, TCCONF_TYPE_FLAG, 0, 0, AV_CODEC_FLAG_H263P_AIC}, + #else +- {"aic", &lavc_param_aic, TCCONF_TYPE_FLAG, 0, 0, CODEC_FLAG_AC_PRED}, ++ {"aic", &lavc_param_aic, TCCONF_TYPE_FLAG, 0, 0, AV_CODEC_FLAG_AC_PRED}, + #endif + {"umv", &lavc_param_umv, TCCONF_TYPE_FLAG, 0, 0, 1}, + {"ibias", &lavc_param_ibias, TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, -512, 512}, +@@ -215,20 +215,20 @@ TCConfigEntry lavcopts_conf[]={ + {"intra_matrix", &lavc_param_intra_matrix, TCCONF_TYPE_STRING, 0, 0, 0}, + {"inter_matrix", &lavc_param_inter_matrix, TCCONF_TYPE_STRING, 0, 0, 0}, + {"cbp", &lavc_param_cbp, TCCONF_TYPE_FLAG, 0, 0, 1}, +- {"mv0", &lavc_param_mv0, TCCONF_TYPE_FLAG, 0, 0, CODEC_FLAG_MV0}, ++ {"mv0", &lavc_param_mv0, TCCONF_TYPE_FLAG, 0, 0, 1}, + {"nr", &lavc_param_noise_reduction, TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 0, 1000000}, + {"qprd", &lavc_param_qp_rd, TCCONF_TYPE_FLAG, 0, 0, 1}, + {"threads", &lavc_param_threads, TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 1, 16}, + {"ss", &lavc_param_ss, TCCONF_TYPE_FLAG, 0, 0, 1}, + {"svcd_sof", &lavc_param_scan_offset, TCCONF_TYPE_FLAG, 0, 0, 1}, + {"alt", &lavc_param_alt, TCCONF_TYPE_FLAG, 0, 0, 1}, +- {"ilme", &lavc_param_ilme, TCCONF_TYPE_FLAG, 0, 0, CODEC_FLAG_INTERLACED_ME}, ++ {"ilme", &lavc_param_ilme, TCCONF_TYPE_FLAG, 0, 0, AV_CODEC_FLAG_INTERLACED_ME}, + {"inter_threshold", &lavc_param_inter_threshold, TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, -1000000, 1000000}, + {"sc_threshold", &lavc_param_sc_threshold, TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, -1000000, 1000000}, + {"top", &lavc_param_top, TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, -1, 1}, +- {"gmc", &lavc_param_gmc, TCCONF_TYPE_FLAG, 0, 0, CODEC_FLAG_GMC}, +- {"trunc", &lavc_param_trunc, TCCONF_TYPE_FLAG, 0, 0, CODEC_FLAG_TRUNCATED}, +- {"closedgop", &lavc_param_closedgop, TCCONF_TYPE_FLAG, 0, 0, CODEC_FLAG_CLOSED_GOP}, ++ {"gmc", &lavc_param_gmc, TCCONF_TYPE_FLAG, 0, 0, 1}, ++ {"trunc", &lavc_param_trunc, TCCONF_TYPE_FLAG, 0, 0, AV_CODEC_FLAG_TRUNCATED}, ++ {"closedgop", &lavc_param_closedgop, TCCONF_TYPE_FLAG, 0, 0, AV_CODEC_FLAG_CLOSED_GOP}, + {"intra_dc_precision", &lavc_param_intra_dc_precision, TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 0, 16}, + {"skip_top", &lavc_param_skip_top, TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 0, 1000}, + {"skip_bottom", &lavc_param_skip_bottom, TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 0, 1000}, +--- import/import_ffmpeg.c ++++ import/import_ffmpeg.c +@@ -361,7 +361,7 @@ do_avi: + lavc_dec_context->width = x_dim; + lavc_dec_context->height = y_dim; + +- if (vob->decolor) lavc_dec_context->flags |= CODEC_FLAG_GRAY; ++ if (vob->decolor) lavc_dec_context->flags |= AV_CODEC_FLAG_GRAY; + #if LIBAVCODEC_VERSION_INT < ((52<<16)+(0<<8)+0) + lavc_dec_context->error_resilience = 2; + #else diff --git a/multimedia/transcode/files/patch-filter_yuvdenoise_motion.c b/multimedia/transcode/files/patch-filter_yuvdenoise_motion.c new file mode 100644 index 000000000000..f618da1fb270 --- /dev/null +++ b/multimedia/transcode/files/patch-filter_yuvdenoise_motion.c @@ -0,0 +1,61 @@ +--- filter/yuvdenoise/motion.c.orig 2016-09-18 16:54:49 UTC ++++ filter/yuvdenoise/motion.c +@@ -350,32 +350,32 @@ calc_SAD_half_mmx (uint8_t * ref, uint8_ + + __asm__ __volatile__ + ( +- " pxor %%mm0 , %%mm0; /* clear mm0 */" +- " pcmpeqw %%mm6 , %%mm6; /* Build 7f7f7f7f7f7f7f in a register */" +- " psrlw $9 , %%mm6; /* */" +- " packuswb %%mm6 , %%mm6; /* */" +- " ; /* */" +- " .rept 8 ; /* */" +- " movq (%%esi), %%mm1; /* 8 Pixels from filtered frame to mm1 */" +- " movq (%%edi), %%mm2; /* 8 Pixels from filtered frame to mm2 (displaced) */" +- " movq (%%eax), %%mm3; /* reference to mm3 */" +- " psrlq $1 , %%mm1; /* average source pixels */" +- " psrlq $1 , %%mm2; /* shift right by one (divide by two) */" +- " pand %%mm6 , %%mm1; /* kill downshifted bits */" +- " pand %%mm6 , %%mm2; /* kill downshifted bits */" +- " paddusw %%mm2 , %%mm1; /* add up ... */" +- +- " movq %%mm3 , %%mm4; /* copy reference to mm4 */" +- " psubusb %%mm1 , %%mm3; /* positive differences between mm2 and mm1 */" +- " psubusb %%mm4 , %%mm1; /* positive differences between mm1 and mm3 */" +- " paddusb %%mm3 , %%mm1; /* mm1 now contains abs(mm1-mm2) */" +- " paddusw %%mm1 , %%mm0; /* add result to mm0 */" +- " addl %%ecx , %%esi; /* add framewidth to frameaddress */" +- " addl %%ecx , %%edi; /* add framewidth to frameaddress */" +- " addl %%ecx , %%ecx; /* add framewidth to frameaddress */" +- " .endr ; /* */" +- " /* */" +- " movq %%mm0 , %0 ; /* make mm0 available to gcc ... */" ++ " pxor %%mm0 , %%mm0; /* clear mm0 */\n" ++ " pcmpeqw %%mm6 , %%mm6; /* Build 7f7f7f7f7f7f7f in a register */\n" ++ " psrlw $9 , %%mm6; /* */\n" ++ " packuswb %%mm6 , %%mm6; /* */\n" ++ " ; /* */\n" ++ " .rept 8 ; /* */\n" ++ " movq (%%esi), %%mm1; /* 8 Pixels from filtered frame to mm1 */\n" ++ " movq (%%edi), %%mm2; /* 8 Pixels from filtered frame to mm2 (displaced) */\n" ++ " movq (%%eax), %%mm3; /* reference to mm3 */\n" ++ " psrlq $1 , %%mm1; /* average source pixels */\n" ++ " psrlq $1 , %%mm2; /* shift right by one (divide by two) */\n" ++ " pand %%mm6 , %%mm1; /* kill downshifted bits */\n" ++ " pand %%mm6 , %%mm2; /* kill downshifted bits */\n" ++ " paddusw %%mm2 , %%mm1; /* add up ... */\n" ++ " /* */\n" ++ " movq %%mm3 , %%mm4; /* copy reference to mm4 */\n" ++ " psubusb %%mm1 , %%mm3; /* positive differences between mm2 and mm1 */\n" ++ " psubusb %%mm4 , %%mm1; /* positive differences between mm1 and mm3 */\n" ++ " paddusb %%mm3 , %%mm1; /* mm1 now contains abs(mm1-mm2) */\n" ++ " paddusw %%mm1 , %%mm0; /* add result to mm0 */\n" ++ " addl %%ecx , %%esi; /* add framewidth to frameaddress */\n" ++ " addl %%ecx , %%edi; /* add framewidth to frameaddress */\n" ++ " addl %%ecx , %%ecx; /* add framewidth to frameaddress */\n" ++ " .endr ; /* */\n" ++ " /* */\n" ++ " movq %%mm0 , %0 ; /* make mm0 available to gcc ... */\n" + :"=g" (a) + :"S" (frm1),"D" (frm2), "a" (ref), "c" (denoiser.frame.w) + ); diff --git a/multimedia/transcode/files/patch-import-v4l b/multimedia/transcode/files/patch-import-v4l new file mode 100644 index 000000000000..7017cc9c1f51 --- /dev/null +++ b/multimedia/transcode/files/patch-import-v4l @@ -0,0 +1,30 @@ +--- import/v4l/import_v4l.c.orig 2011-11-19 11:50:27.000000000 -0500 ++++ import/v4l/import_v4l.c 2013-06-10 14:51:01.000000000 -0400 +@@ -29,7 +29,7 @@ + #include <sys/ioctl.h> + #include <sys/mman.h> + +-#include "videodev.h" ++#include <linux/videodev.h> + + #define MOD_NAME "import_v4l.so" + #define MOD_VERSION "v0.2.0 (2008-10-26)" +--- import/probe_v4l.c.orig 2011-11-19 11:50:27.000000000 -0500 ++++ import/probe_v4l.c 2013-06-10 14:54:28.000000000 -0400 +@@ -31,14 +31,12 @@ + + #include <sys/ioctl.h> + +-#include "v4l/videodev.h" ++#include <linux/videodev.h> + + #if defined(HAVE_LINUX_VIDEODEV2_H) && defined(HAVE_STRUCT_V4L2_BUFFER) + #define _LINUX_TIME_H +-#include <linux/videodev2.h> +-#else +-#include "v4l/videodev2.h" + #endif ++#include <linux/videodev2.h> + + + void probe_v4l(info_t *ipipe) diff --git a/multimedia/transcode/files/patch-import_Makefile.in b/multimedia/transcode/files/patch-import_Makefile.in new file mode 100644 index 000000000000..f85ba6bc9ec8 --- /dev/null +++ b/multimedia/transcode/files/patch-import_Makefile.in @@ -0,0 +1,11 @@ +--- import/Makefile.in.orig 2009-07-18 08:16:35.000000000 -0400 ++++ import/Makefile.in 2009-07-18 11:11:51.000000000 -0400 +@@ -458,7 +458,7 @@ + distclean-recursive maintainer-clean-recursive + ETAGS = etags + CTAGS = ctags +-DIST_SUBDIRS = framegen nuv v4l ++DIST_SUBDIRS = framegen v4l %%NUV%% + DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) + A52_CFLAGS = @A52_CFLAGS@ + A52_LIBS = @A52_LIBS@ diff --git a/multimedia/transcode/files/patch-import__probe_ffmpeg.c b/multimedia/transcode/files/patch-import__probe_ffmpeg.c new file mode 100644 index 000000000000..9cc46c2c68fb --- /dev/null +++ b/multimedia/transcode/files/patch-import__probe_ffmpeg.c @@ -0,0 +1,11 @@ +--- import/probe_ffmpeg.c.orig 2011-11-19 16:50:27 UTC ++++ import/probe_ffmpeg.c +@@ -120,7 +120,7 @@ + + translate_info(lavf_dmx_context, ipipe->probe_info); + +- av_close_input_file(lavf_dmx_context); ++ avformat_close_input(lavf_dmx_context); + return; + } + diff --git a/multimedia/transcode/files/patch-import_demux__pass.c b/multimedia/transcode/files/patch-import_demux__pass.c new file mode 100644 index 000000000000..64dddc370d37 --- /dev/null +++ b/multimedia/transcode/files/patch-import_demux__pass.c @@ -0,0 +1,11 @@ +--- import/demux_pass.c.orig 2011-11-19 16:50:27 UTC ++++ import/demux_pass.c +@@ -32,7 +32,7 @@ + #include "packets.h" + + +-int gop, gop_pts, gop_cnt; ++//int gop, gop_pts, gop_cnt; + + /* if you listen carefully, then you can hear the desesperate + * whisper of this code calling for a rewrite. Or for a redesign. diff --git a/multimedia/transcode/files/patch-import_extract__ac3.c b/multimedia/transcode/files/patch-import_extract__ac3.c new file mode 100644 index 000000000000..a85d18ed3238 --- /dev/null +++ b/multimedia/transcode/files/patch-import_extract__ac3.c @@ -0,0 +1,11 @@ +--- import/extract_ac3.c.orig 2011-11-19 16:50:27 UTC ++++ import/extract_ac3.c +@@ -334,7 +334,7 @@ static void pes_ac3_loop (void) + FILE *fd; + + #define MAX_BUF 4096 +-char audio[MAX_BUF]; ++static char audio[MAX_BUF]; + + + /* from ac3scan.c */ diff --git a/multimedia/transcode/files/patch-import_extract__mp3.c b/multimedia/transcode/files/patch-import_extract__mp3.c new file mode 100644 index 000000000000..679b6370d983 --- /dev/null +++ b/multimedia/transcode/files/patch-import_extract__mp3.c @@ -0,0 +1,11 @@ +--- import/extract_mp3.c.orig 2011-11-19 16:50:27 UTC ++++ import/extract_mp3.c +@@ -243,7 +243,7 @@ static int mp3scan(int infd, int outfd) + } + + #define MAX_BUF 4096 +-char audio[MAX_BUF]; ++static char audio[MAX_BUF]; + + /* ------------------------------------------------------------ + * diff --git a/multimedia/transcode/files/patch-import_extract__pcm.c b/multimedia/transcode/files/patch-import_extract__pcm.c new file mode 100644 index 000000000000..77b1d62c6ca9 --- /dev/null +++ b/multimedia/transcode/files/patch-import_extract__pcm.c @@ -0,0 +1,11 @@ +--- import/extract_pcm.c.orig 2011-11-19 16:50:27 UTC ++++ import/extract_pcm.c +@@ -33,7 +33,7 @@ + #include "tc.h" + + #define MAX_BUF 4096 +-char audio[MAX_BUF]; ++static char audio[MAX_BUF]; + + #define BUFFER_SIZE 262144 + static uint8_t buffer[BUFFER_SIZE]; diff --git a/multimedia/transcode/files/patch-libav-10.patch b/multimedia/transcode/files/patch-libav-10.patch new file mode 100644 index 000000000000..0286f7365dca --- /dev/null +++ b/multimedia/transcode/files/patch-libav-10.patch @@ -0,0 +1,32 @@ +--- filter/filter_resample.c ++++ filter/filter_resample.c +@@ -37,6 +37,7 @@ + #include "libtc/optstr.h" + #include "libtc/tcavcodec.h" + #include "libtc/tcmodule-plugin.h" ++#include <libavresample/avresample.h> + + + typedef struct { +@@ -45,7 +46,7 @@ typedef struct { + + int bytes_per_sample; + +- ReSampleContext *resample_ctx; ++ AVAudioResampleContext *resample_ctx; + } ResamplePrivateData; + + static const char resample_help[] = "" +--- import/probe_ffmpeg.c ++++ import/probe_ffmpeg.c +@@ -51,8 +51,8 @@ static void translate_info(const AVFormatContext *ctx, ProbeInfo *info) + info->bitrate = st->codec->bit_rate / 1000; + info->width = st->codec->width; + info->height = st->codec->height; +- if (st->r_frame_rate.num > 0 && st->r_frame_rate.den > 0) { +- info->fps = av_q2d(st->r_frame_rate); ++ if (st->avg_frame_rate.num > 0 && st->avg_frame_rate.den > 0) { ++ info->fps = av_q2d(st->avg_frame_rate); + } else { + /* watch out here */ + info->fps = 1.0/av_q2d(st->codec->time_base); diff --git a/multimedia/transcode/files/patch-libtc-tc_functions.c b/multimedia/transcode/files/patch-libtc-tc_functions.c new file mode 100644 index 000000000000..0104d1240ecb --- /dev/null +++ b/multimedia/transcode/files/patch-libtc-tc_functions.c @@ -0,0 +1,33 @@ +--- libtc/tc_functions.c.orig 2008-08-09 17:24:38.000000000 -0400 ++++ libtc/tc_functions.c 2009-02-01 22:13:42.000000000 -0500 +@@ -534,6 +534,15 @@ + /* char device could be several things, depending on system */ + /* *BSD DVD device? v4l? bktr? sunau? */ + if(S_ISCHR(fbuf.st_mode)) { ++#ifdef __FreeBSD__ ++ if (strstr(name, "bktr") || strstr(name, "tuner") || strstr(name, "wbi")) ++ return TC_PROBE_PATH_BKTR; ++ else if (strstr(name, "dsp") || strstr(name, "audio") || strstr(name, "music")) ++ return TC_PROBE_PATH_OSS; ++ else ++ return TC_PROBE_PATH_ABSPATH; ++#endif ++ + switch (major(fbuf.st_rdev)) { + #ifdef OS_BSD + # ifdef __OpenBSD__ +@@ -544,14 +553,6 @@ + case 49: /* bktr */ + return TC_PROBE_PATH_BKTR; + # endif +-# ifdef __FreeBSD__ +- case 4: /* acd */ +- return TC_PROBE_PATH_ABSPATH; +- case 229: /* bktr */ +- return TC_PROBE_PATH_BKTR; +- case 0: /* OSS */ +- return TC_PROBE_PATH_OSS; +-# endif + default: /* libdvdread uses "raw" disk devices here */ + return TC_PROBE_PATH_ABSPATH; + #else diff --git a/multimedia/transcode/files/patch-livav-9.patch b/multimedia/transcode/files/patch-livav-9.patch new file mode 100644 index 000000000000..9f2d2351f4f0 --- /dev/null +++ b/multimedia/transcode/files/patch-livav-9.patch @@ -0,0 +1,31 @@ +--- ./import/probe_ffmpeg.c.original 2013-04-22 20:04:51.058081388 +0200 ++++ ./import/probe_ffmpeg.c 2013-04-22 20:05:25.744081897 +0200 +@@ -109,7 +109,7 @@ void probe_ffmpeg(info_t *ipipe) + return; + } + +- ret = av_find_stream_info(lavf_dmx_context); ++ ret = avformat_find_stream_info(lavf_dmx_context, NULL); + if (ret < 0) { + tc_log_error(__FILE__, "unable to fetch informations from '%s'" + " (libavformat failure)", +--- ./import/decode_lavc.c.original 2013-04-22 20:06:17.260082652 +0200 ++++ ./import/decode_lavc.c 2013-04-22 20:07:47.564083975 +0200 +@@ -170,7 +170,7 @@ void decode_lavc(decode_t *decode) + + // Set these to the expected values so that ffmpeg's decoder can + // properly detect interlaced input. +- lavc_dec_context = avcodec_alloc_context(); ++ lavc_dec_context = avcodec_alloc_context3(NULL); + if (lavc_dec_context == NULL) { + tc_log_error(__FILE__, "Could not allocate enough memory."); + goto decoder_error; +@@ -186,7 +186,7 @@ void decode_lavc(decode_t *decode) + lavc_dec_context->error_concealment = 3; + lavc_dec_context->workaround_bugs = FF_BUG_AUTODETECT; + +- if (avcodec_open(lavc_dec_context, lavc_dec_codec) < 0) { ++ if (avcodec_open2(lavc_dec_context, lavc_dec_codec, NULL) < 0) { + tc_log_error(__FILE__, "Could not initialize the '%s' codec.", + codec->name); + goto decoder_error; diff --git a/multimedia/transcode/pkg-descr b/multimedia/transcode/pkg-descr new file mode 100644 index 000000000000..2fcbbec847da --- /dev/null +++ b/multimedia/transcode/pkg-descr @@ -0,0 +1,21 @@ +transcode is a text-console utility for video stream processing, +running on a platform that supports shared libraries and threads. +Decoding and encoding is done by loading modules that are responsible +for feeding transcode with raw video/audio streams (import modules) +and encoding the frames (export modules). + +It supports elementary video and audio frame transformations, +including de-interlacing or fast resizing of video frames and loading +of external filters. A number of modules are included to enable +import of DVDs on-the-fly, MPEG elementary (ES) or program streams +(VOB), MPEG video, Digital Video (DV), YUV4MPEG streams, NuppelVideo +file format and raw or compressed (pass-through) video frames and +export modules for writing DivX;-), OpenDivX, DivX 4.xx or uncompressed +AVI files with MPEG, AC3 (pass-through) or PCM audio. Additional +export modules to write single frames (PPM) or YUV4MPEG streams are +available, as well as an interface import module to the avifile +library. Its modular concept is intended to provide flexibility +and easy user extensibility to include other video/audio codecs or +file types. + +WWW: http://www.transcoding.org/ diff --git a/multimedia/transcode/pkg-plist b/multimedia/transcode/pkg-plist new file mode 100644 index 000000000000..372010adc8ef --- /dev/null +++ b/multimedia/transcode/pkg-plist @@ -0,0 +1,130 @@ +bin/avifix +bin/aviindex +bin/avimerge +bin/avisplit +bin/avisync +bin/tccat +bin/tcdecode +bin/tcdemux +bin/tcextract +bin/tcmodinfo +bin/tcmp3cut +bin/tcprobe +bin/tcscan +bin/tcxmlcheck +bin/tcxpm2rgb +bin/tcyait +bin/transcode +man/man1/avifix.1.gz +man/man1/aviindex.1.gz +man/man1/avimerge.1.gz +man/man1/avisplit.1.gz +man/man1/avisync.1.gz +man/man1/tccat.1.gz +man/man1/tcdecode.1.gz +man/man1/tcdemux.1.gz +man/man1/tcexport.1.gz +man/man1/tcextract.1.gz +man/man1/tcmodchain.1.gz +man/man1/tcmodinfo.1.gz +man/man1/tcprobe.1.gz +man/man1/tcpvmexportd.1.gz +man/man1/tcscan.1.gz +man/man1/tcxmlcheck.1.gz +man/man1/transcode.1.gz +man/man1/transcode_export.1.gz +man/man1/transcode_filter.1.gz +man/man1/transcode_import.1.gz +%%PORTDOCS%%%%DOCSDIR%%/ChangeLog +%%PORTDOCS%%%%DOCSDIR%%/DV-to-DVD-HOWTO.txt +%%PORTDOCS%%%%DOCSDIR%%/README.Inverse.Telecine.txt +%%PORTDOCS%%%%DOCSDIR%%/README.cluster +%%PORTDOCS%%%%DOCSDIR%%/README.dv +%%PORTDOCS%%%%DOCSDIR%%/README.filter.modfps +%%PORTDOCS%%%%DOCSDIR%%/README.rip +%%PORTDOCS%%%%DOCSDIR%%/README.sync +%%PORTDOCS%%%%DOCSDIR%%/README.vcd +%%PORTDOCS%%%%DOCSDIR%%/README.xvid-credits +%%PORTDOCS%%%%DOCSDIR%%/RELNOTES-0.6.13 +%%PORTDOCS%%%%DOCSDIR%%/RELNOTES-1.1.0 +%%PORTDOCS%%%%DOCSDIR%%/export_ffmpeg.txt +%%PORTDOCS%%%%DOCSDIR%%/export_mp2.txt +%%PORTDOCS%%%%DOCSDIR%%/faq +%%PORTDOCS%%%%DOCSDIR%%/filter-socket.txt +%%PORTDOCS%%%%DOCSDIR%%/filter_dnr.txt +%%PORTDOCS%%%%DOCSDIR%%/filter_logo.txt +%%PORTDOCS%%%%DOCSDIR%%/filter_logoaway.txt +%%PORTDOCS%%%%DOCSDIR%%/filter_text.txt +%%PORTDOCS%%%%DOCSDIR%%/filter_yuvdenoise.txt +%%PORTDOCS%%%%DOCSDIR%%/framerate.txt +%%PORTDOCS%%%%DOCSDIR%%/html/dv.html +%%PORTDOCS%%%%DOCSDIR%%/html/dvd.html +%%PORTDOCS%%%%DOCSDIR%%/html/export_divx.html +%%PORTDOCS%%%%DOCSDIR%%/html/export_divx4.php +%%PORTDOCS%%%%DOCSDIR%%/html/export_divx5.php +%%PORTDOCS%%%%DOCSDIR%%/html/export_fame.php +%%PORTDOCS%%%%DOCSDIR%%/html/export_ogg.php +%%PORTDOCS%%%%DOCSDIR%%/html/export_opendivx.php +%%PORTDOCS%%%%DOCSDIR%%/html/export_xvid.php +%%PORTDOCS%%%%DOCSDIR%%/html/import_avi.html +%%PORTDOCS%%%%DOCSDIR%%/html/import_dv.html +%%PORTDOCS%%%%DOCSDIR%%/html/import_dvd.html +%%PORTDOCS%%%%DOCSDIR%%/html/import_mp3.html +%%PORTDOCS%%%%DOCSDIR%%/html/import_mpeg2.html +%%PORTDOCS%%%%DOCSDIR%%/html/import_mpeg3.html +%%PORTDOCS%%%%DOCSDIR%%/html/import_null.html +%%PORTDOCS%%%%DOCSDIR%%/html/import_nuv.html +%%PORTDOCS%%%%DOCSDIR%%/html/import_ogg.php +%%PORTDOCS%%%%DOCSDIR%%/html/import_raw.html +%%PORTDOCS%%%%DOCSDIR%%/html/import_vob.html +%%PORTDOCS%%%%DOCSDIR%%/html/import_yuv4mpeg.html +%%PORTDOCS%%%%DOCSDIR%%/html/index.html +%%PORTDOCS%%%%DOCSDIR%%/html/intro.html +%%PORTDOCS%%%%DOCSDIR%%/html/mes0-00000.png +%%PORTDOCS%%%%DOCSDIR%%/html/mes4-00000.png +%%PORTDOCS%%%%DOCSDIR%%/html/mes5-00000.png +%%PORTDOCS%%%%DOCSDIR%%/html/mes6-00000.png +%%PORTDOCS%%%%DOCSDIR%%/html/mes7-00000.png +%%PORTDOCS%%%%DOCSDIR%%/html/misc.html +%%PORTDOCS%%%%DOCSDIR%%/html/modules.html +%%PORTDOCS%%%%DOCSDIR%%/html/mpeg.html +%%PORTDOCS%%%%DOCSDIR%%/html/new.png +%%PORTDOCS%%%%DOCSDIR%%/html/other.html +%%PORTDOCS%%%%DOCSDIR%%/html/post.html +%%PORTDOCS%%%%DOCSDIR%%/html/pre.html +%%PORTDOCS%%%%DOCSDIR%%/html/smart.html +%%PORTDOCS%%%%DOCSDIR%%/html/sorry.html +%%PORTDOCS%%%%DOCSDIR%%/html/sub0-00000.png +%%PORTDOCS%%%%DOCSDIR%%/html/sub1-00000.png +%%PORTDOCS%%%%DOCSDIR%%/html/sub2-00000.png +%%PORTDOCS%%%%DOCSDIR%%/html/sub3-00000.png +%%PORTDOCS%%%%DOCSDIR%%/html/subtitles.html +%%PORTDOCS%%%%DOCSDIR%%/html/table.php +%%PORTDOCS%%%%DOCSDIR%%/html/tc.png +%%PORTDOCS%%%%DOCSDIR%%/import-xml.txt +%%PORTDOCS%%%%DOCSDIR%%/import_nvrec.txt +%%PORTDOCS%%%%DOCSDIR%%/import_v4l2.txt +%%PORTDOCS%%%%DOCSDIR%%/import_x11.txt +%%PORTDOCS%%%%DOCSDIR%%/import_yuv.txt +%%PORTDOCS%%%%DOCSDIR%%/pvm3/export_pvm.txt +%%PORTDOCS%%%%DOCSDIR%%/pvm3/pvm_10x.cfg +%%PORTDOCS%%%%DOCSDIR%%/pvm3/pvm_11x.cfg +%%PORTDOCS%%%%DOCSDIR%%/pvm3/pvm_config.txt +%%PORTDOCS%%%%DOCSDIR%%/tech/OPTIMIZERS +%%PORTDOCS%%%%DOCSDIR%%/tech/architecture.txt +%%PORTDOCS%%%%DOCSDIR%%/tech/avi_comments.txt +%%PORTDOCS%%%%DOCSDIR%%/tech/clone.txt +%%PORTDOCS%%%%DOCSDIR%%/tech/export-API.txt +%%PORTDOCS%%%%DOCSDIR%%/tech/filter-API.txt +%%PORTDOCS%%%%DOCSDIR%%/tech/filter_template.c +%%PORTDOCS%%%%DOCSDIR%%/tech/html/index.html +%%PORTDOCS%%%%DOCSDIR%%/tech/html/tc_basic.css +%%PORTDOCS%%%%DOCSDIR%%/tech/html/tc_frame_buffer.html +%%PORTDOCS%%%%DOCSDIR%%/tech/html/tc_input_rotation.html +%%PORTDOCS%%%%DOCSDIR%%/tech/html/tc_libraries.html +%%PORTDOCS%%%%DOCSDIR%%/tech/html/tc_logo.png +%%PORTDOCS%%%%DOCSDIR%%/tech/ibp_support.txt +%%PORTDOCS%%%%DOCSDIR%%/tech/import-API.txt +%%PORTDOCS%%%%DOCSDIR%%/tech/libraries.txt +%%PORTDOCS%%%%DOCSDIR%%/tech/module-system-API.txt +%%PORTDOCS%%%%DOCSDIR%%/template.cfg.txt |