Added old abandoned version of k9copy
git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/applications/k9copy@1091546 283d02a7-25f6-0310-bc7c-ecb5cbfe19dav3.5.13-sru
commit
0d382a262c
@ -0,0 +1,167 @@
|
||||
Basic Installation
|
||||
==================
|
||||
|
||||
These are generic installation instructions.
|
||||
|
||||
The `configure' shell script attempts to guess correct values for
|
||||
various system-dependent variables used during compilation. It uses
|
||||
those values to create a `Makefile' in each directory of the package.
|
||||
It may also create one or more `.h' files containing system-dependent
|
||||
definitions. Finally, it creates a shell script `config.status' that
|
||||
you can run in the future to recreate the current configuration, a file
|
||||
`config.cache' that saves the results of its tests to speed up
|
||||
reconfiguring, and a file `config.log' containing compiler output
|
||||
(useful mainly for debugging `configure').
|
||||
|
||||
If you need to do unusual things to compile the package, please try
|
||||
to figure out how `configure' could check whether to do them, and mail
|
||||
diffs or instructions to the address given in the `README' so they can
|
||||
be considered for the next release. If at some point `config.cache'
|
||||
contains results you don't want to keep, you may remove or edit it.
|
||||
|
||||
The file `configure.in' is used to create `configure' by a program
|
||||
called `autoconf'. You only need `configure.in' if you want to change
|
||||
it or regenerate `configure' using a newer version of `autoconf'.
|
||||
|
||||
The simplest way to compile this package is:
|
||||
|
||||
1. `cd' to the directory containing the package's source code and type
|
||||
`./configure' to configure the package for your system. If you're
|
||||
using `csh' on an old version of System V, you might need to type
|
||||
`sh ./configure' instead to prevent `csh' from trying to execute
|
||||
`configure' itself.
|
||||
|
||||
Running `configure' takes a while. While running, it prints some
|
||||
messages telling which features it is checking for.
|
||||
|
||||
2. Type `make' to compile the package.
|
||||
|
||||
3. Type `make install' to install the programs and any data files and
|
||||
documentation.
|
||||
|
||||
4. You can remove the program binaries and object files from the
|
||||
source code directory by typing `make clean'.
|
||||
|
||||
Compilers and Options
|
||||
=====================
|
||||
|
||||
Some systems require unusual options for compilation or linking that
|
||||
the `configure' script does not know about. You can give `configure'
|
||||
initial values for variables by setting them in the environment. Using
|
||||
a Bourne-compatible shell, you can do that on the command line like
|
||||
this:
|
||||
CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure
|
||||
|
||||
Or on systems that have the `env' program, you can do it like this:
|
||||
env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure
|
||||
|
||||
Compiling For Multiple Architectures
|
||||
====================================
|
||||
|
||||
You can compile the package for more than one kind of computer at the
|
||||
same time, by placing the object files for each architecture in their
|
||||
own directory. To do this, you must use a version of `make' that
|
||||
supports the `VPATH' variable, such as GNU `make'. `cd' to the
|
||||
directory where you want the object files and executables to go and run
|
||||
the `configure' script. `configure' automatically checks for the
|
||||
source code in the directory that `configure' is in and in `..'.
|
||||
|
||||
If you have to use a `make' that does not supports the `VPATH'
|
||||
variable, you have to compile the package for one architecture at a time
|
||||
in the source code directory. After you have installed the package for
|
||||
one architecture, use `make distclean' before reconfiguring for another
|
||||
architecture.
|
||||
|
||||
Installation Names
|
||||
==================
|
||||
|
||||
By default, `make install' will install the package's files in
|
||||
`/usr/local/bin', `/usr/local/man', etc. You can specify an
|
||||
installation prefix other than `/usr/local' by giving `configure' the
|
||||
option `--prefix=PATH'.
|
||||
|
||||
You can specify separate installation prefixes for
|
||||
architecture-specific files and architecture-independent files. If you
|
||||
give `configure' the option `--exec-prefix=PATH', the package will use
|
||||
PATH as the prefix for installing programs and libraries.
|
||||
Documentation and other data files will still use the regular prefix.
|
||||
|
||||
If the package supports it, you can cause programs to be installed
|
||||
with an extra prefix or suffix on their names by giving `configure' the
|
||||
option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
|
||||
|
||||
Optional Features
|
||||
=================
|
||||
|
||||
Some packages pay attention to `--enable-FEATURE' options to
|
||||
`configure', where FEATURE indicates an optional part of the package.
|
||||
They may also pay attention to `--with-PACKAGE' options, where PACKAGE
|
||||
is something like `gnu-as' or `x' (for the X Window System). The
|
||||
`README' should mention any `--enable-' and `--with-' options that the
|
||||
package recognizes.
|
||||
|
||||
For packages that use the X Window System, `configure' can usually
|
||||
find the X include and library files automatically, but if it doesn't,
|
||||
you can use the `configure' options `--x-includes=DIR' and
|
||||
`--x-libraries=DIR' to specify their locations.
|
||||
|
||||
Specifying the System Type
|
||||
==========================
|
||||
|
||||
There may be some features `configure' can not figure out
|
||||
automatically, but needs to determine by the type of host the package
|
||||
will run on. Usually `configure' can figure that out, but if it prints
|
||||
a message saying it can not guess the host type, give it the
|
||||
`--host=TYPE' option. TYPE can either be a short name for the system
|
||||
type, such as `sun4', or a canonical name with three fields:
|
||||
CPU-COMPANY-SYSTEM
|
||||
|
||||
See the file `config.sub' for the possible values of each field. If
|
||||
`config.sub' isn't included in this package, then this package doesn't
|
||||
need to know the host type.
|
||||
|
||||
If you are building compiler tools for cross-compiling, you can also
|
||||
use the `--target=TYPE' option to select the type of system they will
|
||||
produce code for and the `--build=TYPE' option to select the type of
|
||||
system on which you are compiling the package.
|
||||
|
||||
Sharing Defaults
|
||||
================
|
||||
|
||||
If you want to set default values for `configure' scripts to share,
|
||||
you can create a site shell script called `config.site' that gives
|
||||
default values for variables like `CC', `cache_file', and `prefix'.
|
||||
`configure' looks for `PREFIX/share/config.site' if it exists, then
|
||||
`PREFIX/etc/config.site' if it exists. Or, you can set the
|
||||
`CONFIG_SITE' environment variable to the location of the site script.
|
||||
A warning: not all `configure' scripts look for a site script.
|
||||
|
||||
Operation Controls
|
||||
==================
|
||||
|
||||
`configure' recognizes the following options to control how it
|
||||
operates.
|
||||
|
||||
`--cache-file=FILE'
|
||||
Use and save the results of the tests in FILE instead of
|
||||
`./config.cache'. Set FILE to `/dev/null' to disable caching, for
|
||||
debugging `configure'.
|
||||
|
||||
`--help'
|
||||
Print a summary of the options to `configure', and exit.
|
||||
|
||||
`--quiet'
|
||||
`--silent'
|
||||
`-q'
|
||||
Do not print messages saying which checks are being made.
|
||||
|
||||
`--srcdir=DIR'
|
||||
Look for the package's source code in directory DIR. Usually
|
||||
`configure' can determine that directory automatically.
|
||||
|
||||
`--version'
|
||||
Print the version of Autoconf used to generate the `configure'
|
||||
script, and exit.
|
||||
|
||||
`configure' also accepts some other, not widely useful, options.
|
||||
|
@ -0,0 +1,39 @@
|
||||
SUBDIRS = doc dvdread libdvdnav k9Mplayer libk9copy k9author k9decmpeg k9devices k9vamps \
|
||||
po src
|
||||
|
||||
$(top_srcdir)/configure.in: configure.in.in $(top_srcdir)/subdirs
|
||||
cd $(top_srcdir) && $(MAKE) -f admin/Makefile.common configure.in ;
|
||||
|
||||
$(top_srcdir)/subdirs:
|
||||
cd $(top_srcdir) && $(MAKE) -f admin/Makefile.common subdirs
|
||||
|
||||
$(top_srcdir)/acinclude.m4: $(top_srcdir)/admin/acinclude.m4.in $(top_srcdir)/admin/libtool.m4.in
|
||||
@cd $(top_srcdir) && cat admin/acinclude.m4.in admin/libtool.m4.in > acinclude.m4
|
||||
|
||||
MAINTAINERCLEANFILES = subdirs configure.in acinclude.m4 configure.files
|
||||
|
||||
messages: rc.cpp
|
||||
$(EXTRACTRC) `find . -name "*.ui"` >> rc.cpp
|
||||
$(EXTRACTRC) `find . -name "*.rc"` >> rc.cpp
|
||||
$(XGETTEXT) `find -name "*.cpp"` -o $(podir)/k9copy.pot
|
||||
|
||||
package-messages:
|
||||
cd $(top_srcdir) && $(MAKE) -f admin/Makefile.common package-messages
|
||||
$(MAKE) -C po merge
|
||||
|
||||
EXTRA_DIST = admin COPYING configure.in.in
|
||||
|
||||
dist-hook:
|
||||
cd $(top_distdir) && perl admin/am_edit -padmin
|
||||
cd $(top_distdir) && $(MAKE) -f admin/Makefile.common subdirs
|
||||
|
||||
AM_CXXFLAGS = -O0 -g3
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
INCLUDES = -I$(top_srcdir)/dvdread
|
@ -0,0 +1,10 @@
|
||||
all:
|
||||
@echo "This Makefile is only for the CVS repository"
|
||||
@echo "This will be deleted before making the distribution"
|
||||
@echo ""
|
||||
$(MAKE) -f admin/Makefile.common cvs
|
||||
|
||||
dist:
|
||||
$(MAKE) -f admin/Makefile.common dist
|
||||
|
||||
.SILENT:
|
@ -0,0 +1,12 @@
|
||||
install from sources:
|
||||
|
||||
make -f Makefile.cvs
|
||||
./configure --prefix=/usr
|
||||
make
|
||||
make install (as root)
|
||||
|
||||
|
||||
k9copy can now copy dvd with bad sectors.
|
||||
for a faster copy from a dvd with bad sectors : reduce the readahead for the drive :
|
||||
|
||||
as root: hdparm -a8 /dev/dvd
|
@ -0,0 +1,3 @@
|
||||
more options for mp4 encoding
|
||||
improve copy with bad sectors
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,881 @@
|
||||
# generated automatically by aclocal 1.10.1 -*- Autoconf -*-
|
||||
|
||||
# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
|
||||
# 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
# PARTICULAR PURPOSE.
|
||||
|
||||
m4_ifndef([AC_AUTOCONF_VERSION],
|
||||
[m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
|
||||
m4_if(AC_AUTOCONF_VERSION, [2.63],,
|
||||
[m4_warning([this file was generated for autoconf 2.63.
|
||||
You have another version of autoconf. It may work, but is not guaranteed to.
|
||||
If you have problems, you may need to regenerate the build system entirely.
|
||||
To do so, use the procedure documented by the package, typically `autoreconf'.])])
|
||||
|
||||
# Copyright (C) 2002, 2003, 2005, 2006, 2007 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# AM_AUTOMAKE_VERSION(VERSION)
|
||||
# ----------------------------
|
||||
# Automake X.Y traces this macro to ensure aclocal.m4 has been
|
||||
# generated from the m4 files accompanying Automake X.Y.
|
||||
# (This private macro should not be called outside this file.)
|
||||
AC_DEFUN([AM_AUTOMAKE_VERSION],
|
||||
[am__api_version='1.10'
|
||||
dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
|
||||
dnl require some minimum version. Point them to the right macro.
|
||||
m4_if([$1], [1.10.1], [],
|
||||
[AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
|
||||
])
|
||||
|
||||
# _AM_AUTOCONF_VERSION(VERSION)
|
||||
# -----------------------------
|
||||
# aclocal traces this macro to find the Autoconf version.
|
||||
# This is a private macro too. Using m4_define simplifies
|
||||
# the logic in aclocal, which can simply ignore this definition.
|
||||
m4_define([_AM_AUTOCONF_VERSION], [])
|
||||
|
||||
# AM_SET_CURRENT_AUTOMAKE_VERSION
|
||||
# -------------------------------
|
||||
# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
|
||||
# This function is AC_REQUIREd by AC_INIT_AUTOMAKE.
|
||||
AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
|
||||
[AM_AUTOMAKE_VERSION([1.10.1])dnl
|
||||
m4_ifndef([AC_AUTOCONF_VERSION],
|
||||
[m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
|
||||
_AM_AUTOCONF_VERSION(AC_AUTOCONF_VERSION)])
|
||||
|
||||
# AM_AUX_DIR_EXPAND -*- Autoconf -*-
|
||||
|
||||
# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
|
||||
# $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to
|
||||
# `$srcdir', `$srcdir/..', or `$srcdir/../..'.
|
||||
#
|
||||
# Of course, Automake must honor this variable whenever it calls a
|
||||
# tool from the auxiliary directory. The problem is that $srcdir (and
|
||||
# therefore $ac_aux_dir as well) can be either absolute or relative,
|
||||
# depending on how configure is run. This is pretty annoying, since
|
||||
# it makes $ac_aux_dir quite unusable in subdirectories: in the top
|
||||
# source directory, any form will work fine, but in subdirectories a
|
||||
# relative path needs to be adjusted first.
|
||||
#
|
||||
# $ac_aux_dir/missing
|
||||
# fails when called from a subdirectory if $ac_aux_dir is relative
|
||||
# $top_srcdir/$ac_aux_dir/missing
|
||||
# fails if $ac_aux_dir is absolute,
|
||||
# fails when called from a subdirectory in a VPATH build with
|
||||
# a relative $ac_aux_dir
|
||||
#
|
||||
# The reason of the latter failure is that $top_srcdir and $ac_aux_dir
|
||||
# are both prefixed by $srcdir. In an in-source build this is usually
|
||||
# harmless because $srcdir is `.', but things will broke when you
|
||||
# start a VPATH build or use an absolute $srcdir.
|
||||
#
|
||||
# So we could use something similar to $top_srcdir/$ac_aux_dir/missing,
|
||||
# iff we strip the leading $srcdir from $ac_aux_dir. That would be:
|
||||
# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"`
|
||||
# and then we would define $MISSING as
|
||||
# MISSING="\${SHELL} $am_aux_dir/missing"
|
||||
# This will work as long as MISSING is not called from configure, because
|
||||
# unfortunately $(top_srcdir) has no meaning in configure.
|
||||
# However there are other variables, like CC, which are often used in
|
||||
# configure, and could therefore not use this "fixed" $ac_aux_dir.
|
||||
#
|
||||
# Another solution, used here, is to always expand $ac_aux_dir to an
|
||||
# absolute PATH. The drawback is that using absolute paths prevent a
|
||||
# configured tree to be moved without reconfiguration.
|
||||
|
||||
AC_DEFUN([AM_AUX_DIR_EXPAND],
|
||||
[dnl Rely on autoconf to set up CDPATH properly.
|
||||
AC_PREREQ([2.50])dnl
|
||||
# expand $ac_aux_dir to an absolute path
|
||||
am_aux_dir=`cd $ac_aux_dir && pwd`
|
||||
])
|
||||
|
||||
# AM_CONDITIONAL -*- Autoconf -*-
|
||||
|
||||
# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006
|
||||
# Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# serial 8
|
||||
|
||||
# AM_CONDITIONAL(NAME, SHELL-CONDITION)
|
||||
# -------------------------------------
|
||||
# Define a conditional.
|
||||
AC_DEFUN([AM_CONDITIONAL],
|
||||
[AC_PREREQ(2.52)dnl
|
||||
ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])],
|
||||
[$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
|
||||
AC_SUBST([$1_TRUE])dnl
|
||||
AC_SUBST([$1_FALSE])dnl
|
||||
_AM_SUBST_NOTMAKE([$1_TRUE])dnl
|
||||
_AM_SUBST_NOTMAKE([$1_FALSE])dnl
|
||||
if $2; then
|
||||
$1_TRUE=
|
||||
$1_FALSE='#'
|
||||
else
|
||||
$1_TRUE='#'
|
||||
$1_FALSE=
|
||||
fi
|
||||
AC_CONFIG_COMMANDS_PRE(
|
||||
[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then
|
||||
AC_MSG_ERROR([[conditional "$1" was never defined.
|
||||
Usually this means the macro was only invoked conditionally.]])
|
||||
fi])])
|
||||
|
||||
# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006
|
||||
# Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# serial 9
|
||||
|
||||
# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be
|
||||
# written in clear, in which case automake, when reading aclocal.m4,
|
||||
# will think it sees a *use*, and therefore will trigger all it's
|
||||
# C support machinery. Also note that it means that autoscan, seeing
|
||||
# CC etc. in the Makefile, will ask for an AC_PROG_CC use...
|
||||
|
||||
|
||||
# _AM_DEPENDENCIES(NAME)
|
||||
# ----------------------
|
||||
# See how the compiler implements dependency checking.
|
||||
# NAME is "CC", "CXX", "GCJ", or "OBJC".
|
||||
# We try a few techniques and use that to set a single cache variable.
|
||||
#
|
||||
# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was
|
||||
# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular
|
||||
# dependency, and given that the user is not expected to run this macro,
|
||||
# just rely on AC_PROG_CC.
|
||||
AC_DEFUN([_AM_DEPENDENCIES],
|
||||
[AC_REQUIRE([AM_SET_DEPDIR])dnl
|
||||
AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl
|
||||
AC_REQUIRE([AM_MAKE_INCLUDE])dnl
|
||||
AC_REQUIRE([AM_DEP_TRACK])dnl
|
||||
|
||||
ifelse([$1], CC, [depcc="$CC" am_compiler_list=],
|
||||
[$1], CXX, [depcc="$CXX" am_compiler_list=],
|
||||
[$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'],
|
||||
[$1], UPC, [depcc="$UPC" am_compiler_list=],
|
||||
[$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'],
|
||||
[depcc="$$1" am_compiler_list=])
|
||||
|
||||
AC_CACHE_CHECK([dependency style of $depcc],
|
||||
[am_cv_$1_dependencies_compiler_type],
|
||||
[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
|
||||
# We make a subdir and do the tests there. Otherwise we can end up
|
||||
# making bogus files that we don't know about and never remove. For
|
||||
# instance it was reported that on HP-UX the gcc test will end up
|
||||
# making a dummy file named `D' -- because `-MD' means `put the output
|
||||
# in D'.
|
||||
mkdir conftest.dir
|
||||
# Copy depcomp to subdir because otherwise we won't find it if we're
|
||||
# using a relative directory.
|
||||
cp "$am_depcomp" conftest.dir
|
||||
cd conftest.dir
|
||||
# We will build objects and dependencies in a subdirectory because
|
||||
# it helps to detect inapplicable dependency modes. For instance
|
||||
# both Tru64's cc and ICC support -MD to output dependencies as a
|
||||
# side effect of compilation, but ICC will put the dependencies in
|
||||
# the current directory while Tru64 will put them in the object
|
||||
# directory.
|
||||
mkdir sub
|
||||
|
||||
am_cv_$1_dependencies_compiler_type=none
|
||||
if test "$am_compiler_list" = ""; then
|
||||
am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp`
|
||||
fi
|
||||
for depmode in $am_compiler_list; do
|
||||
# Setup a source with many dependencies, because some compilers
|
||||
# like to wrap large dependency lists on column 80 (with \), and
|
||||
# we should not choose a depcomp mode which is confused by this.
|
||||
#
|
||||
# We need to recreate these files for each test, as the compiler may
|
||||
# overwrite some of them when testing with obscure command lines.
|
||||
# This happens at least with the AIX C compiler.
|
||||
: > sub/conftest.c
|
||||
for i in 1 2 3 4 5 6; do
|
||||
echo '#include "conftst'$i'.h"' >> sub/conftest.c
|
||||
# Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
|
||||
# Solaris 8's {/usr,}/bin/sh.
|
||||
touch sub/conftst$i.h
|
||||
done
|
||||
echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
|
||||
|
||||
case $depmode in
|
||||
nosideeffect)
|
||||
# after this tag, mechanisms are not by side-effect, so they'll
|
||||
# only be used when explicitly requested
|
||||
if test "x$enable_dependency_tracking" = xyes; then
|
||||
continue
|
||||
else
|
||||
break
|
||||
fi
|
||||
;;
|
||||
none) break ;;
|
||||
esac
|
||||
# We check with `-c' and `-o' for the sake of the "dashmstdout"
|
||||
# mode. It turns out that the SunPro C++ compiler does not properly
|
||||
# handle `-M -o', and we need to detect this.
|
||||
if depmode=$depmode \
|
||||
source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \
|
||||
depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
|
||||
$SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \
|
||||
>/dev/null 2>conftest.err &&
|
||||
grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
|
||||
grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
|
||||
grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 &&
|
||||
${MAKE-make} -s -f confmf > /dev/null 2>&1; then
|
||||
# icc doesn't choke on unknown options, it will just issue warnings
|
||||
# or remarks (even with -Werror). So we grep stderr for any message
|
||||
# that says an option was ignored or not supported.
|
||||
# When given -MP, icc 7.0 and 7.1 complain thusly:
|
||||
# icc: Command line warning: ignoring option '-M'; no argument required
|
||||
# The diagnosis changed in icc 8.0:
|
||||
# icc: Command line remark: option '-MP' not supported
|
||||
if (grep 'ignoring option' conftest.err ||
|
||||
grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
|
||||
am_cv_$1_dependencies_compiler_type=$depmode
|
||||
break
|
||||
fi
|
||||
fi
|
||||
done
|
||||
|
||||
cd ..
|
||||
rm -rf conftest.dir
|
||||
else
|
||||
am_cv_$1_dependencies_compiler_type=none
|
||||
fi
|
||||
])
|
||||
AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type])
|
||||
AM_CONDITIONAL([am__fastdep$1], [
|
||||
test "x$enable_dependency_tracking" != xno \
|
||||
&& test "$am_cv_$1_dependencies_compiler_type" = gcc3])
|
||||
])
|
||||
|
||||
|
||||
# AM_SET_DEPDIR
|
||||
# -------------
|
||||
# Choose a directory name for dependency files.
|
||||
# This macro is AC_REQUIREd in _AM_DEPENDENCIES
|
||||
AC_DEFUN([AM_SET_DEPDIR],
|
||||
[AC_REQUIRE([AM_SET_LEADING_DOT])dnl
|
||||
AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl
|
||||
])
|
||||
|
||||
|
||||
# AM_DEP_TRACK
|
||||
# ------------
|
||||
AC_DEFUN([AM_DEP_TRACK],
|
||||
[AC_ARG_ENABLE(dependency-tracking,
|
||||
[ --disable-dependency-tracking speeds up one-time build
|
||||
--enable-dependency-tracking do not reject slow dependency extractors])
|
||||
if test "x$enable_dependency_tracking" != xno; then
|
||||
am_depcomp="$ac_aux_dir/depcomp"
|
||||
AMDEPBACKSLASH='\'
|
||||
fi
|
||||
AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
|
||||
AC_SUBST([AMDEPBACKSLASH])dnl
|
||||
_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl
|
||||
])
|
||||
|
||||
# Generate code to set up dependency tracking. -*- Autoconf -*-
|
||||
|
||||
# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005
|
||||
# Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
#serial 3
|
||||
|
||||
# _AM_OUTPUT_DEPENDENCY_COMMANDS
|
||||
# ------------------------------
|
||||
AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
|
||||
[for mf in $CONFIG_FILES; do
|
||||
# Strip MF so we end up with the name of the file.
|
||||
mf=`echo "$mf" | sed -e 's/:.*$//'`
|
||||
# Check whether this is an Automake generated Makefile or not.
|
||||
# We used to match only the files named `Makefile.in', but
|
||||
# some people rename them; so instead we look at the file content.
|
||||
# Grep'ing the first line is not enough: some people post-process
|
||||
# each Makefile.in and add a new line on top of each file to say so.
|
||||
# Grep'ing the whole file is not good either: AIX grep has a line
|
||||
# limit of 2048, but all sed's we know have understand at least 4000.
|
||||
if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
|
||||
dirpart=`AS_DIRNAME("$mf")`
|
||||
else
|
||||
continue
|
||||
fi
|
||||
# Extract the definition of DEPDIR, am__include, and am__quote
|
||||
# from the Makefile without running `make'.
|
||||
DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
|
||||
test -z "$DEPDIR" && continue
|
||||
am__include=`sed -n 's/^am__include = //p' < "$mf"`
|
||||
test -z "am__include" && continue
|
||||
am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
|
||||
# When using ansi2knr, U may be empty or an underscore; expand it
|
||||
U=`sed -n 's/^U = //p' < "$mf"`
|
||||
# Find all dependency output files, they are included files with
|
||||
# $(DEPDIR) in their names. We invoke sed twice because it is the
|
||||
# simplest approach to changing $(DEPDIR) to its actual value in the
|
||||
# expansion.
|
||||
for file in `sed -n "
|
||||
s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
|
||||
sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
|
||||
# Make sure the directory exists.
|
||||
test -f "$dirpart/$file" && continue
|
||||
fdir=`AS_DIRNAME(["$file"])`
|
||||
AS_MKDIR_P([$dirpart/$fdir])
|
||||
# echo "creating $dirpart/$file"
|
||||
echo '# dummy' > "$dirpart/$file"
|
||||
done
|
||||
done
|
||||
])# _AM_OUTPUT_DEPENDENCY_COMMANDS
|
||||
|
||||
|
||||
# AM_OUTPUT_DEPENDENCY_COMMANDS
|
||||
# -----------------------------
|
||||
# This macro should only be invoked once -- use via AC_REQUIRE.
|
||||
#
|
||||
# This code is only required when automatic dependency tracking
|
||||
# is enabled. FIXME. This creates each `.P' file that we will
|
||||
# need in order to bootstrap the dependency handling code.
|
||||
AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
|
||||
[AC_CONFIG_COMMANDS([depfiles],
|
||||
[test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS],
|
||||
[AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"])
|
||||
])
|
||||
|
||||
# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005
|
||||
# Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# serial 8
|
||||
|
||||
# AM_CONFIG_HEADER is obsolete. It has been replaced by AC_CONFIG_HEADERS.
|
||||
AU_DEFUN([AM_CONFIG_HEADER], [AC_CONFIG_HEADERS($@)])
|
||||
|
||||
# Do all the work for Automake. -*- Autoconf -*-
|
||||
|
||||
# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
|
||||
# 2005, 2006, 2008 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# serial 13
|
||||
|
||||
# This macro actually does too much. Some checks are only needed if
|
||||
# your package does certain things. But this isn't really a big deal.
|
||||
|
||||
# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
|
||||
# AM_INIT_AUTOMAKE([OPTIONS])
|
||||
# -----------------------------------------------
|
||||
# The call with PACKAGE and VERSION arguments is the old style
|
||||
# call (pre autoconf-2.50), which is being phased out. PACKAGE
|
||||
# and VERSION should now be passed to AC_INIT and removed from
|
||||
# the call to AM_INIT_AUTOMAKE.
|
||||
# We support both call styles for the transition. After
|
||||
# the next Automake release, Autoconf can make the AC_INIT
|
||||
# arguments mandatory, and then we can depend on a new Autoconf
|
||||
# release and drop the old call support.
|
||||
AC_DEFUN([AM_INIT_AUTOMAKE],
|
||||
[AC_PREREQ([2.60])dnl
|
||||
dnl Autoconf wants to disallow AM_ names. We explicitly allow
|
||||
dnl the ones we care about.
|
||||
m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
|
||||
AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl
|
||||
AC_REQUIRE([AC_PROG_INSTALL])dnl
|
||||
if test "`cd $srcdir && pwd`" != "`pwd`"; then
|
||||
# Use -I$(srcdir) only when $(srcdir) != ., so that make's output
|
||||
# is not polluted with repeated "-I."
|
||||
AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl
|
||||
# test to see if srcdir already configured
|
||||
if test -f $srcdir/config.status; then
|
||||
AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
|
||||
fi
|
||||
fi
|
||||
|
||||
# test whether we have cygpath
|
||||
if test -z "$CYGPATH_W"; then
|
||||
if (cygpath --version) >/dev/null 2>/dev/null; then
|
||||
CYGPATH_W='cygpath -w'
|
||||
else
|
||||
CYGPATH_W=echo
|
||||
fi
|
||||
fi
|
||||
AC_SUBST([CYGPATH_W])
|
||||
|
||||
# Define the identity of the package.
|
||||
dnl Distinguish between old-style and new-style calls.
|
||||
m4_ifval([$2],
|
||||
[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
|
||||
AC_SUBST([PACKAGE], [$1])dnl
|
||||
AC_SUBST([VERSION], [$2])],
|
||||
[_AM_SET_OPTIONS([$1])dnl
|
||||
dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT.
|
||||
m4_if(m4_ifdef([AC_PACKAGE_NAME], 1)m4_ifdef([AC_PACKAGE_VERSION], 1), 11,,
|
||||
[m4_fatal([AC_INIT should be called with package and version arguments])])dnl
|
||||
AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl
|
||||
AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl
|
||||
|
||||
_AM_IF_OPTION([no-define],,
|
||||
[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package])
|
||||
AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl
|
||||
|
||||
# Some tools Automake needs.
|
||||
AC_REQUIRE([AM_SANITY_CHECK])dnl
|
||||
AC_REQUIRE([AC_ARG_PROGRAM])dnl
|
||||
AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version})
|
||||
AM_MISSING_PROG(AUTOCONF, autoconf)
|
||||
AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version})
|
||||
AM_MISSING_PROG(AUTOHEADER, autoheader)
|
||||
AM_MISSING_PROG(MAKEINFO, makeinfo)
|
||||
AM_PROG_INSTALL_SH
|
||||
AM_PROG_INSTALL_STRIP
|
||||
AC_REQUIRE([AM_PROG_MKDIR_P])dnl
|
||||
# We need awk for the "check" target. The system "awk" is bad on
|
||||
# some platforms.
|
||||
AC_REQUIRE([AC_PROG_AWK])dnl
|
||||
AC_REQUIRE([AC_PROG_MAKE_SET])dnl
|
||||
AC_REQUIRE([AM_SET_LEADING_DOT])dnl
|
||||
_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])],
|
||||
[_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])],
|
||||
[_AM_PROG_TAR([v7])])])
|
||||
_AM_IF_OPTION([no-dependencies],,
|
||||
[AC_PROVIDE_IFELSE([AC_PROG_CC],
|
||||
[_AM_DEPENDENCIES(CC)],
|
||||
[define([AC_PROG_CC],
|
||||
defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl
|
||||
AC_PROVIDE_IFELSE([AC_PROG_CXX],
|
||||
[_AM_DEPENDENCIES(CXX)],
|
||||
[define([AC_PROG_CXX],
|
||||
defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl
|
||||
AC_PROVIDE_IFELSE([AC_PROG_OBJC],
|
||||
[_AM_DEPENDENCIES(OBJC)],
|
||||
[define([AC_PROG_OBJC],
|
||||
defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl
|
||||
])
|
||||
])
|
||||
|
||||
|
||||
# When config.status generates a header, we must update the stamp-h file.
|
||||
# This file resides in the same directory as the config header
|
||||
# that is generated. The stamp files are numbered to have different names.
|
||||
|
||||
# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the
|
||||
# loop where config.status creates the headers, so we can generate
|
||||
# our stamp files there.
|
||||
AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK],
|
||||
[# Compute $1's index in $config_headers.
|
||||
_am_arg=$1
|
||||
_am_stamp_count=1
|
||||
for _am_header in $config_headers :; do
|
||||
case $_am_header in
|
||||
$_am_arg | $_am_arg:* )
|
||||
break ;;
|
||||
* )
|
||||
_am_stamp_count=`expr $_am_stamp_count + 1` ;;
|
||||
esac
|
||||
done
|
||||
echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
|
||||
|
||||
# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# AM_PROG_INSTALL_SH
|
||||
# ------------------
|
||||
# Define $install_sh.
|
||||
AC_DEFUN([AM_PROG_INSTALL_SH],
|
||||
[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
|
||||
install_sh=${install_sh-"\$(SHELL) $am_aux_dir/install-sh"}
|
||||
AC_SUBST(install_sh)])
|
||||
|
||||
# Copyright (C) 2003, 2005 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# serial 2
|
||||
|
||||
# Check whether the underlying file-system supports filenames
|
||||
# with a leading dot. For instance MS-DOS doesn't.
|
||||
AC_DEFUN([AM_SET_LEADING_DOT],
|
||||
[rm -rf .tst 2>/dev/null
|
||||
mkdir .tst 2>/dev/null
|
||||
if test -d .tst; then
|
||||
am__leading_dot=.
|
||||
else
|
||||
am__leading_dot=_
|
||||
fi
|
||||
rmdir .tst 2>/dev/null
|
||||
AC_SUBST([am__leading_dot])])
|
||||
|
||||
# Check to see how 'make' treats includes. -*- Autoconf -*-
|
||||
|
||||
# Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# serial 3
|
||||
|
||||
# AM_MAKE_INCLUDE()
|
||||
# -----------------
|
||||
# Check to see how make treats includes.
|
||||
AC_DEFUN([AM_MAKE_INCLUDE],
|
||||
[am_make=${MAKE-make}
|
||||
cat > confinc << 'END'
|
||||
am__doit:
|
||||
@echo done
|
||||
.PHONY: am__doit
|
||||
END
|
||||
# If we don't find an include directive, just comment out the code.
|
||||
AC_MSG_CHECKING([for style of include used by $am_make])
|
||||
am__include="#"
|
||||
am__quote=
|
||||
_am_result=none
|
||||
# First try GNU make style include.
|
||||
echo "include confinc" > confmf
|
||||
# We grep out `Entering directory' and `Leaving directory'
|
||||
# messages which can occur if `w' ends up in MAKEFLAGS.
|
||||
# In particular we don't look at `^make:' because GNU make might
|
||||
# be invoked under some other name (usually "gmake"), in which
|
||||
# case it prints its new name instead of `make'.
|
||||
if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then
|
||||
am__include=include
|
||||
am__quote=
|
||||
_am_result=GNU
|
||||
fi
|
||||
# Now try BSD make style include.
|
||||
if test "$am__include" = "#"; then
|
||||
echo '.include "confinc"' > confmf
|
||||
if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then
|
||||
am__include=.include
|
||||
am__quote="\""
|
||||
_am_result=BSD
|
||||
fi
|
||||
fi
|
||||
AC_SUBST([am__include])
|
||||
AC_SUBST([am__quote])
|
||||
AC_MSG_RESULT([$_am_result])
|
||||
rm -f confinc confmf
|
||||
])
|
||||
|
||||
# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*-
|
||||
|
||||
# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005
|
||||
# Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# serial 5
|
||||
|
||||
# AM_MISSING_PROG(NAME, PROGRAM)
|
||||
# ------------------------------
|
||||
AC_DEFUN([AM_MISSING_PROG],
|
||||
[AC_REQUIRE([AM_MISSING_HAS_RUN])
|
||||
$1=${$1-"${am_missing_run}$2"}
|
||||
AC_SUBST($1)])
|
||||
|
||||
|
||||
# AM_MISSING_HAS_RUN
|
||||
# ------------------
|
||||
# Define MISSING if not defined so far and test if it supports --run.
|
||||
# If it does, set am_missing_run to use it, otherwise, to nothing.
|
||||
AC_DEFUN([AM_MISSING_HAS_RUN],
|
||||
[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
|
||||
AC_REQUIRE_AUX_FILE([missing])dnl
|
||||
test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing"
|
||||
# Use eval to expand $SHELL
|
||||
if eval "$MISSING --run true"; then
|
||||
am_missing_run="$MISSING --run "
|
||||
else
|
||||
am_missing_run=
|
||||
AC_MSG_WARN([`missing' script is too old or missing])
|
||||
fi
|
||||
])
|
||||
|
||||
# Copyright (C) 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# AM_PROG_MKDIR_P
|
||||
# ---------------
|
||||
# Check for `mkdir -p'.
|
||||
AC_DEFUN([AM_PROG_MKDIR_P],
|
||||
[AC_PREREQ([2.60])dnl
|
||||
AC_REQUIRE([AC_PROG_MKDIR_P])dnl
|
||||
dnl Automake 1.8 to 1.9.6 used to define mkdir_p. We now use MKDIR_P,
|
||||
dnl while keeping a definition of mkdir_p for backward compatibility.
|
||||
dnl @MKDIR_P@ is magic: AC_OUTPUT adjusts its value for each Makefile.
|
||||
dnl However we cannot define mkdir_p as $(MKDIR_P) for the sake of
|
||||
dnl Makefile.ins that do not define MKDIR_P, so we do our own
|
||||
dnl adjustment using top_builddir (which is defined more often than
|
||||
dnl MKDIR_P).
|
||||
AC_SUBST([mkdir_p], ["$MKDIR_P"])dnl
|
||||
case $mkdir_p in
|
||||
[[\\/$]]* | ?:[[\\/]]*) ;;
|
||||
*/*) mkdir_p="\$(top_builddir)/$mkdir_p" ;;
|
||||
esac
|
||||
])
|
||||
|
||||
# Helper functions for option handling. -*- Autoconf -*-
|
||||
|
||||
# Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# serial 3
|
||||
|
||||
# _AM_MANGLE_OPTION(NAME)
|
||||
# -----------------------
|
||||
AC_DEFUN([_AM_MANGLE_OPTION],
|
||||
[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])])
|
||||
|
||||
# _AM_SET_OPTION(NAME)
|
||||
# ------------------------------
|
||||
# Set option NAME. Presently that only means defining a flag for this option.
|
||||
AC_DEFUN([_AM_SET_OPTION],
|
||||
[m4_define(_AM_MANGLE_OPTION([$1]), 1)])
|
||||
|
||||
# _AM_SET_OPTIONS(OPTIONS)
|
||||
# ----------------------------------
|
||||
# OPTIONS is a space-separated list of Automake options.
|
||||
AC_DEFUN([_AM_SET_OPTIONS],
|
||||
[AC_FOREACH([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])])
|
||||
|
||||
# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET])
|
||||
# -------------------------------------------
|
||||
# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
|
||||
AC_DEFUN([_AM_IF_OPTION],
|
||||
[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
|
||||
|
||||
# Check to make sure that the build environment is sane. -*- Autoconf -*-
|
||||
|
||||
# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005
|
||||
# Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# serial 4
|
||||
|
||||
# AM_SANITY_CHECK
|
||||
# ---------------
|
||||
AC_DEFUN([AM_SANITY_CHECK],
|
||||
[AC_MSG_CHECKING([whether build environment is sane])
|
||||
# Just in case
|
||||
sleep 1
|
||||
echo timestamp > conftest.file
|
||||
# Do `set' in a subshell so we don't clobber the current shell's
|
||||
# arguments. Must try -L first in case configure is actually a
|
||||
# symlink; some systems play weird games with the mod time of symlinks
|
||||
# (eg FreeBSD returns the mod time of the symlink's containing
|
||||
# directory).
|
||||
if (
|
||||
set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null`
|
||||
if test "$[*]" = "X"; then
|
||||
# -L didn't work.
|
||||
set X `ls -t $srcdir/configure conftest.file`
|
||||
fi
|
||||
rm -f conftest.file
|
||||
if test "$[*]" != "X $srcdir/configure conftest.file" \
|
||||
&& test "$[*]" != "X conftest.file $srcdir/configure"; then
|
||||
|
||||
# If neither matched, then we have a broken ls. This can happen
|
||||
# if, for instance, CONFIG_SHELL is bash and it inherits a
|
||||
# broken ls alias from the environment. This has actually
|
||||
# happened. Such a system could not be considered "sane".
|
||||
AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken
|
||||
alias in your environment])
|
||||
fi
|
||||
|
||||
test "$[2]" = conftest.file
|
||||
)
|
||||
then
|
||||
# Ok.
|
||||
:
|
||||
else
|
||||
AC_MSG_ERROR([newly created file is older than distributed files!
|
||||
Check your system clock])
|
||||
fi
|
||||
AC_MSG_RESULT(yes)])
|
||||
|
||||
# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# AM_PROG_INSTALL_STRIP
|
||||
# ---------------------
|
||||
# One issue with vendor `install' (even GNU) is that you can't
|
||||
# specify the program used to strip binaries. This is especially
|
||||
# annoying in cross-compiling environments, where the build's strip
|
||||
# is unlikely to handle the host's binaries.
|
||||
# Fortunately install-sh will honor a STRIPPROG variable, so we
|
||||
# always use install-sh in `make install-strip', and initialize
|
||||
# STRIPPROG with the value of the STRIP variable (set by the user).
|
||||
AC_DEFUN([AM_PROG_INSTALL_STRIP],
|
||||
[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
|
||||
# Installed binaries are usually stripped using `strip' when the user
|
||||
# run `make install-strip'. However `strip' might not be the right
|
||||
# tool to use in cross-compilation environments, therefore Automake
|
||||
# will honor the `STRIP' environment variable to overrule this program.
|
||||
dnl Don't test for $cross_compiling = yes, because it might be `maybe'.
|
||||
if test "$cross_compiling" != no; then
|
||||
AC_CHECK_TOOL([STRIP], [strip], :)
|
||||
fi
|
||||
INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
|
||||
AC_SUBST([INSTALL_STRIP_PROGRAM])])
|
||||
|
||||
# Copyright (C) 2006 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# _AM_SUBST_NOTMAKE(VARIABLE)
|
||||
# ---------------------------
|
||||
# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in.
|
||||
# This macro is traced by Automake.
|
||||
AC_DEFUN([_AM_SUBST_NOTMAKE])
|
||||
|
||||
# Check how to create a tarball. -*- Autoconf -*-
|
||||
|
||||
# Copyright (C) 2004, 2005 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# serial 2
|
||||
|
||||
# _AM_PROG_TAR(FORMAT)
|
||||
# --------------------
|
||||
# Check how to create a tarball in format FORMAT.
|
||||
# FORMAT should be one of `v7', `ustar', or `pax'.
|
||||
#
|
||||
# Substitute a variable $(am__tar) that is a command
|
||||
# writing to stdout a FORMAT-tarball containing the directory
|
||||
# $tardir.
|
||||
# tardir=directory && $(am__tar) > result.tar
|
||||
#
|
||||
# Substitute a variable $(am__untar) that extract such
|
||||
# a tarball read from stdin.
|
||||
# $(am__untar) < result.tar
|
||||
AC_DEFUN([_AM_PROG_TAR],
|
||||
[# Always define AMTAR for backward compatibility.
|
||||
AM_MISSING_PROG([AMTAR], [tar])
|
||||
m4_if([$1], [v7],
|
||||
[am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'],
|
||||
[m4_case([$1], [ustar],, [pax],,
|
||||
[m4_fatal([Unknown tar format])])
|
||||
AC_MSG_CHECKING([how to create a $1 tar archive])
|
||||
# Loop over all known methods to create a tar archive until one works.
|
||||
_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none'
|
||||
_am_tools=${am_cv_prog_tar_$1-$_am_tools}
|
||||
# Do not fold the above two line into one, because Tru64 sh and
|
||||
# Solaris sh will not grok spaces in the rhs of `-'.
|
||||
for _am_tool in $_am_tools
|
||||
do
|
||||
case $_am_tool in
|
||||
gnutar)
|
||||
for _am_tar in tar gnutar gtar;
|
||||
do
|
||||
AM_RUN_LOG([$_am_tar --version]) && break
|
||||
done
|
||||
am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
|
||||
am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
|
||||
am__untar="$_am_tar -xf -"
|
||||
;;
|
||||
plaintar)
|
||||
# Must skip GNU tar: if it does not support --format= it doesn't create
|
||||
# ustar tarball either.
|
||||
(tar --version) >/dev/null 2>&1 && continue
|
||||
am__tar='tar chf - "$$tardir"'
|
||||
am__tar_='tar chf - "$tardir"'
|
||||
am__untar='tar xf -'
|
||||
;;
|
||||
pax)
|
||||
am__tar='pax -L -x $1 -w "$$tardir"'
|
||||
am__tar_='pax -L -x $1 -w "$tardir"'
|
||||
am__untar='pax -r'
|
||||
;;
|
||||
cpio)
|
||||
am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
|
||||
am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
|
||||
am__untar='cpio -i -H $1 -d'
|
||||
;;
|
||||
none)
|
||||
am__tar=false
|
||||
am__tar_=false
|
||||
am__untar=false
|
||||
;;
|
||||
esac
|
||||
|
||||
# If the value was cached, stop now. We just wanted to have am__tar
|
||||
# and am__untar set.
|
||||
test -n "${am_cv_prog_tar_$1}" && break
|
||||
|
||||
# tar/untar a dummy directory, and stop if the command works
|
||||
rm -rf conftest.dir
|
||||
mkdir conftest.dir
|
||||
echo GrepMe > conftest.dir/file
|
||||
AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
|
||||
rm -rf conftest.dir
|
||||
if test -s conftest.tar; then
|
||||
AM_RUN_LOG([$am__untar <conftest.tar])
|
||||
grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
|
||||
fi
|
||||
done
|
||||
rm -rf conftest.dir
|
||||
|
||||
AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
|
||||
AC_MSG_RESULT([$am_cv_prog_tar_$1])])
|
||||
AC_SUBST([am__tar])
|
||||
AC_SUBST([am__untar])
|
||||
]) # _AM_PROG_TAR
|
||||
|
||||
m4_include([acinclude.m4])
|
@ -0,0 +1,257 @@
|
||||
/* config.h.in. Generated from configure.in by autoheader. */
|
||||
|
||||
/* Define if building universal (internal helper macro) */
|
||||
#undef AC_APPLE_UNIVERSAL_BUILD
|
||||
|
||||
/* 386 architecture */
|
||||
#undef ARCH_386
|
||||
|
||||
/* x86 architecture */
|
||||
#undef ARCH_X86
|
||||
|
||||
/* x86_64 architecture */
|
||||
#undef ARCH_X86_64
|
||||
|
||||
/* HAL API version 0.4 */
|
||||
#undef HAL_0_4
|
||||
|
||||
/* Define if you have the CoreAudio API */
|
||||
#undef HAVE_COREAUDIO
|
||||
|
||||
/* Define to 1 if you have the <crt_externs.h> header file. */
|
||||
#undef HAVE_CRT_EXTERNS_H
|
||||
|
||||
/* Defines if your system has the crypt function */
|
||||
#undef HAVE_CRYPT
|
||||
|
||||
/* Define to 1 if you have the <dlfcn.h> header file. */
|
||||
#undef HAVE_DLFCN_H
|
||||
|
||||
/* compile in HAL support */
|
||||
#undef HAVE_HAL
|
||||
|
||||
/* Define to 1 if you have the <inttypes.h> header file. */
|
||||
#undef HAVE_INTTYPES_H
|
||||
|
||||
/* Define if you have libjpeg */
|
||||
#undef HAVE_LIBJPEG
|
||||
|
||||
/* Define if you have libpng */
|
||||
#undef HAVE_LIBPNG
|
||||
|
||||
/* Define if you have a working libpthread (will enable threaded code) */
|
||||
#undef HAVE_LIBPTHREAD
|
||||
|
||||
/* Define if you have libz */
|
||||
#undef HAVE_LIBZ
|
||||
|
||||
/* Define to 1 if you have the <memory.h> header file. */
|
||||
#undef HAVE_MEMORY_H
|
||||
|
||||
/* Define if your system needs _NSGetEnviron to set up the environment */
|
||||
#undef HAVE_NSGETENVIRON
|
||||
|
||||
/* openGL support */
|
||||
#undef HAVE_OPENGL
|
||||
|
||||
/* Define if you have the res_init function */
|
||||
#undef HAVE_RES_INIT
|
||||
|
||||
/* Define if you have a STL implementation by SGI */
|
||||
#undef HAVE_SGI_STL
|
||||
|
||||
/* Define to 1 if you have the `snprintf' function. */
|
||||
#undef HAVE_SNPRINTF
|
||||
|
||||
/* Define to 1 if you have the <stdint.h> header file. */
|
||||
#undef HAVE_STDINT_H
|
||||
|
||||
/* Define to 1 if you have the <stdlib.h> header file. */
|
||||
#undef HAVE_STDLIB_H
|
||||
|
||||
/* Define to 1 if you have the <strings.h> header file. */
|
||||
#undef HAVE_STRINGS_H
|
||||
|
||||
/* Define to 1 if you have the <string.h> header file. */
|
||||
#undef HAVE_STRING_H
|
||||
|
||||
/* Define if you have strlcat */
|
||||
#undef HAVE_STRLCAT
|
||||
|
||||
/* Define if you have the strlcat prototype */
|
||||
#undef HAVE_STRLCAT_PROTO
|
||||
|
||||
/* Define if you have strlcpy */
|
||||
#undef HAVE_STRLCPY
|
||||
|
||||
/* Define if you have the strlcpy prototype */
|
||||
#undef HAVE_STRLCPY_PROTO
|
||||
|
||||
/* Define to 1 if you have the <sys/stat.h> header file. */
|
||||
#undef HAVE_SYS_STAT_H
|
||||
|
||||
/* Define to 1 if you have the <sys/types.h> header file. */
|
||||
#undef HAVE_SYS_TYPES_H
|
||||
|
||||
/* Define to 1 if you have the <unistd.h> header file. */
|
||||
#undef HAVE_UNISTD_H
|
||||
|
||||
/* Define to 1 if you have the `vsnprintf' function. */
|
||||
#undef HAVE_VSNPRINTF
|
||||
|
||||
/* Suffix for lib directories */
|
||||
#undef KDELIBSUFF
|
||||
|
||||
/* Define a safe value for MAXPATHLEN */
|
||||
#undef KDEMAXPATHLEN
|
||||
|
||||
/* new ffmpeg */
|
||||
#undef NEW_FFMPEG
|
||||
|
||||
/* No openGL support */
|
||||
#undef NO_OPENGL
|
||||
|
||||
/* old ffmpeg */
|
||||
#undef OLD_FFMPEG
|
||||
|
||||
/* Name of package */
|
||||
#undef PACKAGE
|
||||
|
||||
/* Define to the address where bug reports for this package should be sent. */
|
||||
#undef PACKAGE_BUGREPORT
|
||||
|
||||
/* Define to the full name of this package. */
|
||||
#undef PACKAGE_NAME
|
||||
|
||||
/* Define to the full name and version of this package. */
|
||||
#undef PACKAGE_STRING
|
||||
|
||||
/* Define to the one symbol short name of this package. */
|
||||
#undef PACKAGE_TARNAME
|
||||
|
||||
/* Define to the version of this package. */
|
||||
#undef PACKAGE_VERSION
|
||||
|
||||
/* The size of `char *', as computed by sizeof. */
|
||||
#undef SIZEOF_CHAR_P
|
||||
|
||||
/* The size of `int', as computed by sizeof. */
|
||||
#undef SIZEOF_INT
|
||||
|
||||
/* The size of `long', as computed by sizeof. */
|
||||
#undef SIZEOF_LONG
|
||||
|
||||
/* The size of `short', as computed by sizeof. */
|
||||
#undef SIZEOF_SHORT
|
||||
|
||||
/* The size of `size_t', as computed by sizeof. */
|
||||
#undef SIZEOF_SIZE_T
|
||||
|
||||
/* The size of `unsigned long', as computed by sizeof. */
|
||||
#undef SIZEOF_UNSIGNED_LONG
|
||||
|
||||
/* Define to 1 if you have the ANSI C header files. */
|
||||
#undef STDC_HEADERS
|
||||
|
||||
/* Version number of package */
|
||||
#undef VERSION
|
||||
|
||||
/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most
|
||||
significant byte first (like Motorola and SPARC, unlike Intel). */
|
||||
#if defined AC_APPLE_UNIVERSAL_BUILD
|
||||
# if defined __BIG_ENDIAN__
|
||||
# define WORDS_BIGENDIAN 1
|
||||
# endif
|
||||
#else
|
||||
# ifndef WORDS_BIGENDIAN
|
||||
# undef WORDS_BIGENDIAN
|
||||
# endif
|
||||
#endif
|
||||
|
||||
/*
|
||||
* jpeg.h needs HAVE_BOOLEAN, when the system uses boolean in system
|
||||
* headers and I'm too lazy to write a configure test as long as only
|
||||
* unixware is related
|
||||
*/
|
||||
#ifdef _UNIXWARE
|
||||
#define HAVE_BOOLEAN
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* AIX defines FD_SET in terms of bzero, but fails to include <strings.h>
|
||||
* that defines bzero.
|
||||
*/
|
||||
|
||||
#if defined(_AIX)
|
||||
#include <strings.h>
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
#if defined(HAVE_NSGETENVIRON) && defined(HAVE_CRT_EXTERNS_H)
|
||||
# include <sys/time.h>
|
||||
# include <crt_externs.h>
|
||||
# define environ (*_NSGetEnviron())
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
#if !defined(HAVE_STRLCAT_PROTO)
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
unsigned long strlcat(char*, const char*, unsigned long);
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
#if !defined(HAVE_STRLCPY_PROTO)
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
unsigned long strlcpy(char*, const char*, unsigned long);
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* On HP-UX, the declaration of vsnprintf() is needed every time !
|
||||
*/
|
||||
|
||||
#if !defined(HAVE_VSNPRINTF) || defined(hpux)
|
||||
#if __STDC__
|
||||
#include <stdarg.h>
|
||||
#include <stdlib.h>
|
||||
#else
|
||||
#include <varargs.h>
|
||||
#endif
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
#endif
|
||||
int vsnprintf(char *str, size_t n, char const *fmt, va_list ap);
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
#endif
|
||||
int snprintf(char *str, size_t n, char const *fmt, ...);
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
#if defined(__SVR4) && !defined(__svr4__)
|
||||
#define __svr4__ 1
|
||||
#endif
|
||||
|
||||
|
||||
/* Compatibility define */
|
||||
#undef ksize_t
|
||||
|
||||
/* Define the real type of socklen_t */
|
||||
#undef socklen_t
|
@ -0,0 +1,3 @@
|
||||
./admin/configure.in.min
|
||||
configure.in.in
|
||||
./k9devices/configure.in.in
|
@ -0,0 +1,273 @@
|
||||
dnl This file is part of the KDE libraries/packages
|
||||
dnl Copyright (C) 2001 Stephan Kulow (coolo@kde.org)
|
||||
|
||||
dnl This file is free software; you can redistribute it and/or
|
||||
dnl modify it under the terms of the GNU Library General Public
|
||||
dnl License as published by the Free Software Foundation; either
|
||||
dnl version 2 of the License, or (at your option) any later version.
|
||||
|
||||
dnl This library is distributed in the hope that it will be useful,
|
||||
dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
dnl Library General Public License for more details.
|
||||
|
||||
dnl You should have received a copy of the GNU Library General Public License
|
||||
dnl along with this library; see the file COPYING.LIB. If not, write to
|
||||
dnl the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||
dnl Boston, MA 02110-1301, USA.
|
||||
|
||||
# Original Author was Kalle@kde.org
|
||||
# I lifted it in some mater. (Stephan Kulow)
|
||||
# I used much code from Janos Farkas
|
||||
|
||||
dnl Process this file with autoconf to produce a configure script.
|
||||
|
||||
AC_INIT(acinclude.m4) dnl a source file from your sub dir
|
||||
|
||||
dnl This is so we can use kde-common
|
||||
AC_CONFIG_AUX_DIR(admin)
|
||||
|
||||
dnl This ksh/zsh feature conflicts with `cd blah ; pwd`
|
||||
unset CDPATH
|
||||
|
||||
dnl Checking host/target/build systems, for make, install etc.
|
||||
AC_CANONICAL_SYSTEM
|
||||
dnl Perform program name transformation
|
||||
AC_ARG_PROGRAM
|
||||
|
||||
dnl Automake doc recommends to do this only here. (Janos)
|
||||
AM_INIT_AUTOMAKE(k9copy, 1.2.4) dnl searches for some needed programs
|
||||
|
||||
KDE_SET_PREFIX
|
||||
|
||||
dnl generate the config header
|
||||
AM_CONFIG_HEADER(config.h) dnl at the distribution this done
|
||||
|
||||
dnl Checks for programs.
|
||||
AC_CHECK_COMPILERS
|
||||
AC_ENABLE_SHARED(yes)
|
||||
AC_ENABLE_STATIC(no)
|
||||
KDE_PROG_LIBTOOL
|
||||
|
||||
dnl for NLS support. Call them in this order!
|
||||
dnl WITH_NLS is for the po files
|
||||
AM_KDE_WITH_NLS
|
||||
|
||||
KDE_USE_QT(3.0.0)
|
||||
AC_PATH_KDE
|
||||
#MIN_CONFIG(3.0.0)
|
||||
|
||||
dnl PACKAGE set before
|
||||
AC_C_BIGENDIAN
|
||||
AC_CHECK_KDEMAXPATHLEN
|
||||
|
||||
case "$target" in
|
||||
i?86-* | k?-*)
|
||||
AC_DEFINE([ARCH_X86],,[x86 architecture])
|
||||
AC_DEFINE([ARCH_386],,[386 architecture])
|
||||
ARCH_X86=yes
|
||||
ARCH_386=yes
|
||||
ARCH_X86_64=no
|
||||
;;
|
||||
x86_64-*)
|
||||
AC_DEFINE([ARCH_X86_64],,[x86_64 architecture])
|
||||
ARCH_X86=no
|
||||
ARCH_386=no
|
||||
ARCH_X86_64=yes
|
||||
;;
|
||||
*)
|
||||
ARCH_X86=no
|
||||
ARCH_386=no
|
||||
ARCH_X86_64=no
|
||||
;;
|
||||
esac
|
||||
|
||||
AC_MSG_CHECKING(for X86 architecture)
|
||||
AC_MSG_RESULT($ARCH_X86)
|
||||
AM_CONDITIONAL(ARCH_X86, [test "$ARCH_X86" = "yes"])
|
||||
|
||||
AC_MSG_CHECKING(for 386 architecture)
|
||||
AC_MSG_RESULT($ARCH_386)
|
||||
AM_CONDITIONAL(ARCH_386, [test "$ARCH_386" = "yes"])
|
||||
|
||||
AC_MSG_CHECKING(for X86_64 architecture)
|
||||
AC_MSG_RESULT($ARCH_X86_64)
|
||||
AM_CONDITIONAL(ARCH_X86_64, [test "$ARCH_X86_64" = "yes"])
|
||||
|
||||
have_gl=no
|
||||
AC_CHECK_HEADER([GL/gl.h], \
|
||||
[AC_DEFINE(HAVE_OPENGL, 1, [openGL support]) have_gl=yes], \
|
||||
[AC_DEFINE(NO_OPENGL, 1, [No openGL support])])
|
||||
|
||||
|
||||
AC_CHECK_HEADER([ffmpeg/avcodec.h], \
|
||||
[AC_DEFINE(OLD_FFMPEG,1, [old ffmpeg])], \
|
||||
[AC_CHECK_HEADER([libavcodec/avcodec.h], \
|
||||
[AC_DEFINE(NEW_FFMPEG,1, [new ffmpeg])], \
|
||||
[AC_MSG_ERROR([libavcodec may be missing]) ])])
|
||||
|
||||
|
||||
|
||||
|
||||
have_hal=no
|
||||
AC_MSG_CHECKING(for the HAL)
|
||||
|
||||
AC_ARG_ENABLE([k3bdevices],
|
||||
AC_HELP_STRING([--enable-k3bdevices],
|
||||
[do not activate hal/dbus support (use k3bdevice instead)]),
|
||||
[enable_hal=no],
|
||||
[enable_hal=yes])
|
||||
|
||||
|
||||
if test x"$enable_hal" = xyes; then
|
||||
hal_inc=NOTFOUND
|
||||
hal_lib=NOTFOUND
|
||||
hal=NOTFOUND
|
||||
|
||||
search_incs="$kde_includes /usr/include /usr/include/hal /usr/local/include /usr/local/include/hal"
|
||||
AC_FIND_FILE(libhal.h libhal-storage.h, $search_incs, hal_incdir)
|
||||
|
||||
if [test -r $hal_incdir/libhal.h] ; then
|
||||
HAL_INCS="-I$hal_incdir"
|
||||
hal_inc=FOUND
|
||||
fi
|
||||
|
||||
if test -r $hal_incdir/libhal-storage.h ; then
|
||||
hal_storage_version=4
|
||||
grep LibHalVolume $hal_incdir/libhal-storage.h \
|
||||
> /dev/null 2>&1 && hal_storage_version=5
|
||||
if test $hal_storage_version = 4 ; then
|
||||
AC_DEFINE(HAL_0_4, , [HAL API version 0.4])
|
||||
fi
|
||||
fi
|
||||
|
||||
search_libs="$kde_libraries /usr/lib64 /usr/lib /usr/local/lib /lib /lib64"
|
||||
AC_FIND_FILE(libhal.so, $search_libs, hal_libdir)
|
||||
|
||||
if [test -r $hal_libdir/libhal.so] ; then
|
||||
HAL_LIBS="-L$hal_libdir -lhal"
|
||||
hal_lib=FOUND
|
||||
fi
|
||||
|
||||
if [test -r $hal_libdir/libhal-storage.so] ; then
|
||||
HAL_LIBS_STORAGE="-L$hal_libdir -lhal-storage"
|
||||
hal_lib_storage=FOUND
|
||||
fi
|
||||
|
||||
if [test $hal_inc = FOUND] && [test $hal_lib = FOUND] ; then
|
||||
AC_MSG_RESULT(headers $hal_incdir libraries $hal_libdir)
|
||||
hal=FOUND
|
||||
else
|
||||
AC_MSG_RESULT(searched but not found)
|
||||
AC_MSG_ERROR(libhal may be missing)
|
||||
fi
|
||||
|
||||
AC_SUBST(HAL_INCS)
|
||||
AC_SUBST(HAL_LIBS)
|
||||
|
||||
|
||||
########### Check for DBus
|
||||
|
||||
AC_MSG_CHECKING(for DBus)
|
||||
|
||||
dbus_inc=NOTFOUND
|
||||
dbus_lib=NOTFOUND
|
||||
dbus=NOTFOUND
|
||||
|
||||
search_incs="$kde_includes /usr/include /usr/include/dbus-1.0 /usr/local/include /usr/local/include/dbus-1.0"
|
||||
AC_FIND_FILE(dbus/dbus.h, $search_incs, dbus_incdir)
|
||||
|
||||
search_incs_arch_deps="$kde_includes /usr/lib64/dbus-1.0/include /usr/lib/dbus-1.0/include /usr/local/lib/dbus-1.0/include"
|
||||
AC_FIND_FILE(dbus/dbus-arch-deps.h, $search_incs_arch_deps, dbus_incdir_arch_deps)
|
||||
|
||||
if [test -r $dbus_incdir/dbus/dbus.h] && [test -r $dbus_incdir_arch_deps/dbus/dbus-arch-deps.h] ; then
|
||||
DBUS_INCS="-I$dbus_incdir -I$dbus_incdir_arch_deps"
|
||||
dbus_inc=FOUND
|
||||
fi
|
||||
|
||||
search_libs="$kde_libraries /usr/lib64 /usr/lib /usr/local/lib /lib /lib64"
|
||||
AC_FIND_FILE(libdbus-1.so, $search_libs, dbus_libdir)
|
||||
|
||||
if test -r $dbus_libdir/libdbus-1.so ; then
|
||||
DBUS_LIBS="-L$dbus_libdir -ldbus-1"
|
||||
dbus_lib=FOUND
|
||||
fi
|
||||
|
||||
if [test $dbus_inc = FOUND] && [test $dbus_lib = FOUND] ; then
|
||||
AC_MSG_RESULT(headers $dbus_incdir $dbus_incdir_arch_deps libraries $dbus_libdir)
|
||||
dbus=FOUND
|
||||
else
|
||||
AC_MSG_RESULT(searched but not found)
|
||||
AC_MSG_ERROR(dbus may be missing)
|
||||
fi
|
||||
|
||||
AC_SUBST(DBUS_INCS)
|
||||
AC_SUBST(DBUS_LIBS)
|
||||
|
||||
|
||||
########### Check if media HAL backend should be compiled
|
||||
|
||||
HAL_DBUS_LIBS=""
|
||||
if [test "x$hal" = "xFOUND"] && [test "x$dbus" = "xFOUND"] && [ test $hal_storage_version = 5 ] ; then
|
||||
AC_DEFINE(HAVE_HAL, , [compile in HAL support])
|
||||
have_hal=yes
|
||||
HAL_DBUS_LIBS="$HAL_LIBS $HAL_LIBS_STORAGE $DBUS_LIBS"
|
||||
fi
|
||||
|
||||
AC_SUBST(HAL_DBUS_LIBS)
|
||||
else
|
||||
search_incs="$kde_includes /usr/include /usr/local/include"
|
||||
AC_FIND_FILE(k3bdevice.h, $search_incs, k3b_incdir)
|
||||
|
||||
if [test -r $k3b_incdir/k3bdevice.h] ; then
|
||||
k3b_inc=FOUND
|
||||
fi
|
||||
|
||||
search_libs="$kde_libraries /usr/lib64 /usr/lib /usr/local/lib /lib /lib64"
|
||||
AC_FIND_FILE(libk3bdevice.so, $search_libs, k3b_libdir)
|
||||
|
||||
if [test -r $k3b_libdir/libk3bdevice.so] ; then
|
||||
K3B_LIBS="-lk3bdevice"
|
||||
k3b_lib=FOUND
|
||||
fi
|
||||
|
||||
if [test $k3b_inc = FOUND] && [test $k3b_lib = FOUND] ; then
|
||||
AC_MSG_RESULT(headers $k3b_incdir libraries $k3b_libdir)
|
||||
k3b=FOUND
|
||||
else
|
||||
AC_MSG_RESULT(libk3bdevice searched but not found)
|
||||
AC_MSG_ERROR(libk3bdevice may be missing)
|
||||
fi
|
||||
|
||||
AC_SUBST(K3B_LIBS)
|
||||
|
||||
fi
|
||||
|
||||
KDE_CREATE_SUBDIRSLIST
|
||||
AC_CONFIG_FILES([ Makefile ])
|
||||
AC_CONFIG_FILES([ doc/Makefile ])
|
||||
AC_CONFIG_FILES([ doc/k9copy/Makefile ])
|
||||
AC_CONFIG_FILES([ dvdread/Makefile ])
|
||||
AC_CONFIG_FILES([ k9author/Makefile ])
|
||||
AC_CONFIG_FILES([ k9decmpeg/Makefile ])
|
||||
AC_CONFIG_FILES([ k9devices/Makefile ])
|
||||
AC_CONFIG_FILES([ k9Mplayer/Makefile ])
|
||||
AC_CONFIG_FILES([ k9vamps/Makefile ])
|
||||
AC_CONFIG_FILES([ libdvdnav/Makefile ])
|
||||
AC_CONFIG_FILES([ libk9copy/Makefile ])
|
||||
AC_CONFIG_FILES([ po/Makefile ])
|
||||
AC_CONFIG_FILES([ src/Makefile ])
|
||||
AC_CONFIG_FILES([ src/icons/Makefile ])
|
||||
AC_OUTPUT
|
||||
if test "$all_tests" = "bad"; then
|
||||
if test ! "$cache_file" = "/dev/null"; then
|
||||
echo ""
|
||||
echo "Please remove the file $cache_file after changing your setup"
|
||||
echo "so that configure will find the changes next time."
|
||||
echo ""
|
||||
fi
|
||||
else
|
||||
echo ""
|
||||
echo "Good - your configure finished. Start make now"
|
||||
echo ""
|
||||
fi
|
@ -0,0 +1,54 @@
|
||||
#MIN_CONFIG(3.0.0)
|
||||
|
||||
AM_INIT_AUTOMAKE(k9copy, 1.2.4)
|
||||
AC_C_BIGENDIAN
|
||||
AC_CHECK_KDEMAXPATHLEN
|
||||
|
||||
case "$target" in
|
||||
i?86-* | k?-*)
|
||||
AC_DEFINE([ARCH_X86],,[x86 architecture])
|
||||
AC_DEFINE([ARCH_386],,[386 architecture])
|
||||
ARCH_X86=yes
|
||||
ARCH_386=yes
|
||||
ARCH_X86_64=no
|
||||
;;
|
||||
x86_64-*)
|
||||
AC_DEFINE([ARCH_X86_64],,[x86_64 architecture])
|
||||
ARCH_X86=no
|
||||
ARCH_386=no
|
||||
ARCH_X86_64=yes
|
||||
;;
|
||||
*)
|
||||
ARCH_X86=no
|
||||
ARCH_386=no
|
||||
ARCH_X86_64=no
|
||||
;;
|
||||
esac
|
||||
|
||||
AC_MSG_CHECKING(for X86 architecture)
|
||||
AC_MSG_RESULT($ARCH_X86)
|
||||
AM_CONDITIONAL(ARCH_X86, [test "$ARCH_X86" = "yes"])
|
||||
|
||||
AC_MSG_CHECKING(for 386 architecture)
|
||||
AC_MSG_RESULT($ARCH_386)
|
||||
AM_CONDITIONAL(ARCH_386, [test "$ARCH_386" = "yes"])
|
||||
|
||||
AC_MSG_CHECKING(for X86_64 architecture)
|
||||
AC_MSG_RESULT($ARCH_X86_64)
|
||||
AM_CONDITIONAL(ARCH_X86_64, [test "$ARCH_X86_64" = "yes"])
|
||||
|
||||
have_gl=no
|
||||
AC_CHECK_HEADER([GL/gl.h], \
|
||||
[AC_DEFINE(HAVE_OPENGL, 1, [openGL support]) have_gl=yes], \
|
||||
[AC_DEFINE(NO_OPENGL, 1, [No openGL support])])
|
||||
|
||||
|
||||
AC_CHECK_HEADER([ffmpeg/avcodec.h], \
|
||||
[AC_DEFINE(OLD_FFMPEG,1, [old ffmpeg])], \
|
||||
[AC_CHECK_HEADER([libavcodec/avcodec.h], \
|
||||
[AC_DEFINE(NEW_FFMPEG,1, [new ffmpeg])], \
|
||||
[AC_MSG_ERROR([libavcodec may be missing]) ])])
|
||||
|
||||
|
||||
|
||||
|
@ -0,0 +1,6 @@
|
||||
# the SUBDIRS is filled automatically by am_edit. If files are
|
||||
# in this directory they are installed into the english dir
|
||||
|
||||
KDE_LANG = en
|
||||
KDE_DOCS = AUTO
|
||||
SUBDIRS = k9copy
|
@ -0,0 +1,5 @@
|
||||
KDE_LANG = en
|
||||
KDE_DOCS = k9copy
|
||||
kde_docs_KDEDOCS = mainwindow.png open1.png open2.png treeview.png \
|
||||
keepmenus.png playback.png btncopy.png settingsDVD.png btnmp4.png settingsMP4.png \
|
||||
settingsMencoder.png
|
Binary file not shown.
Binary file not shown.
@ -0,0 +1,459 @@
|
||||
<?xml version="1.0" ?>
|
||||
<!DOCTYPE book PUBLIC "-//KDE//DTD DocBook XML V4.1.2-Based Variant V1.0//EN" "dtd/kdex.dtd" [
|
||||
<!-- Define an entity for your application if it is not part of KDE
|
||||
CVS -->
|
||||
<!ENTITY k9copy "<application>k9copy</application>">
|
||||
<!ENTITY kappname "&k9copy;"><!-- replace kmyapplication here
|
||||
do *not* replace kappname-->
|
||||
<!ENTITY package "kde-module"><!-- kdebase, kdeadmin, etc. Leave
|
||||
this unchanged if your
|
||||
application is not maintained in KDE CVS -->
|
||||
<!ENTITY % addindex "IGNORE">
|
||||
<!ENTITY % English "INCLUDE"> <!-- ONLY If you are writing non-English
|
||||
original documentation, change
|
||||
the language here -->
|
||||
]>
|
||||
|
||||
<book lang="&language;">
|
||||
|
||||
|
||||
<bookinfo>
|
||||
<title>&k9copy; Handbook</title>
|
||||
|
||||
<authorgroup>
|
||||
<author>
|
||||
<firstname>Jean-Michel</firstname>
|
||||
<othername></othername>
|
||||
<surname>Petit</surname>
|
||||
<affiliation>
|
||||
<address><email>k9copy@free.fr</email></address>
|
||||
</affiliation>
|
||||
</author>
|
||||
</authorgroup>
|
||||
|
||||
<!-- TRANS:ROLES_OF_TRANSLATORS -->
|
||||
|
||||
<copyright>
|
||||
<year>2004</year>
|
||||
<year>2007</year>
|
||||
<holder>The k9copy Author</holder>
|
||||
</copyright>
|
||||
<!-- Translators: put here the copyright notice of the translation -->
|
||||
<!-- Put here the FDL notice. Read the explanation in fdl-notice.docbook
|
||||
and in the FDL itself on how to use it. -->
|
||||
<legalnotice>&FDLNotice;</legalnotice>
|
||||
|
||||
<!-- Date and version information of the documentation
|
||||
Don't forget to include this last date and this last revision number, we
|
||||
need them for translation coordination !
|
||||
Please respect the format of the date (DD/MM/YYYY) and of the version
|
||||
(V.MM.LL), it could be used by automation scripts.
|
||||
Do NOT change these in the translation. -->
|
||||
|
||||
<date>02/11/2007</date>
|
||||
<releaseinfo>1.1.0</releaseinfo>
|
||||
|
||||
<!-- Abstract about this handbook -->
|
||||
|
||||
<abstract>
|
||||
<para>
|
||||
A DVD Backup tool for KDE. <ulink url="http://k9copy.sourceforge.net">http://k9copy.sourceforge.net</ulink>
|
||||
</para>
|
||||
</abstract>
|
||||
|
||||
<!-- This is a set of Keywords for indexing by search engines.
|
||||
Please at least include KDE, the KDE package it is in, the name
|
||||
of your application, and a few relevant keywords. -->
|
||||
|
||||
<keywordset>
|
||||
<keyword>k9copy</keyword>
|
||||
<keyword>vamps</keyword>
|
||||
<keyword>dvd</keyword>
|
||||
</keywordset>
|
||||
|
||||
</bookinfo>
|
||||
|
||||
<!-- The contents of the documentation begin here. Label
|
||||
each chapter so with the id attribute. This is necessary for two reasons: it
|
||||
allows you to easily reference the chapter from other chapters of your
|
||||
document, and if there is no ID, the name of the generated HTML files will vary
|
||||
from time to time making it hard to manage for maintainers and for the CVS
|
||||
system. Any chapter labelled (OPTIONAL) may be left out at the author's
|
||||
discretion. Other chapters should not be left out in order to maintain a
|
||||
consistent documentation style across all KDE apps. -->
|
||||
|
||||
|
||||
<chapter id="k9copy-app">
|
||||
<title>k9copy shell</title>
|
||||
|
||||
<sect1 id="mainwindow">
|
||||
<title>The Main Window</title>
|
||||
|
||||
<screenshot>
|
||||
<screeninfo>Main Window</screeninfo>
|
||||
<mediaobject>
|
||||
<imageobject>
|
||||
<imagedata fileref="mainwindow.png" format="PNG"/>
|
||||
</imageobject>
|
||||
|
||||
<textobject>
|
||||
<phrase>Screenshot</phrase>
|
||||
</textobject>
|
||||
</mediaobject>
|
||||
</screenshot>
|
||||
|
||||
<para>The main goal of k9copy is to be an easy to use and powerfull DVD backup app.
|
||||
</para>
|
||||
<para>
|
||||
Once oppened, the DVD structure is shown in a treeview (the central widget).
|
||||
</para>
|
||||
<para>
|
||||
The selection is made by checkboxes. You can select the entire DVD, a Titleset or just a specific language or subtitle from a DVD title.
|
||||
</para>
|
||||
<para>The backup can be made in three ways :</para>
|
||||
<para>- backup with orginal menus. In this case, k9copy reproduces the orginial structure of the DVD without the unselected parts.
|
||||
</para>
|
||||
<para>- backup without menus. In this case, k9copy reproduces the orginial structure of the DVD without the unselected parts and without menus.
|
||||
</para>
|
||||
<para>- backup without menus via dvdauthor . In this case, k9copy makes a reauthoring of the DVD. K9copy uses libdvdnav from xine to ensure that the DVD will be copied as it were played with xine.
|
||||
</para>
|
||||
</sect1>
|
||||
|
||||
<sect1 id="backupdvd">
|
||||
<title>Make a dvd backup</title>
|
||||
<sect2>
|
||||
<title>Open the dvd</title>
|
||||
<para>
|
||||
Select a dvd device from the list or click on buttons on right of the list to select a directory or a dvd image file.
|
||||
<inlinemediaobject>
|
||||
<imageobject>
|
||||
<imagedata fileref="open1.png" format="PNG"/>
|
||||
</imageobject>
|
||||
</inlinemediaobject>
|
||||
</para><para>
|
||||
Click on the button Open from the main toolbar or <guimenuitem>File->Open</guimenuitem> from the main menu.
|
||||
<inlinemediaobject>
|
||||
<imageobject>
|
||||
<imagedata fileref="open2.png" format="PNG"/>
|
||||
</imageobject>
|
||||
</inlinemediaobject>
|
||||
</para>
|
||||
|
||||
<para>
|
||||
The treeview will be filled with the DVD structure
|
||||
</para>
|
||||
</sect2>
|
||||
|
||||
<sect2>
|
||||
<title>Selection of titles to copy</title>
|
||||
<screenshot>
|
||||
<screeninfo>DVD structure</screeninfo>
|
||||
<mediaobject>
|
||||
<imageobject>
|
||||
<imagedata fileref="treeview.png" format="PNG"/>
|
||||
</imageobject>
|
||||
<textobject>
|
||||
<phrase>Screenshot</phrase>
|
||||
</textobject>
|
||||
</mediaobject>
|
||||
</screenshot>
|
||||
|
||||
<para>
|
||||
Use the checkbox at the top of the treeview to make a copy of the entire DVD.
|
||||
</para>
|
||||
<para>
|
||||
Use the checkbox beside the titleset to make a copy of a whole titleset.
|
||||
</para>
|
||||
<para>
|
||||
It's now possible to selecte only the wanted chapters from a title.
|
||||
</para>
|
||||
<para>
|
||||
A title must have a video stream : if you select an audio language or a subtitle language, the video stream will be automatically selected. If you deselect the video stream, the title will not be backuped.
|
||||
</para>
|
||||
</sect2>
|
||||
|
||||
<sect2>
|
||||
<title>Playback options of the new DVD</title>
|
||||
<para>
|
||||
If the DVD you want to backup has interactive menus, you can keep them on your backup. Some DVDs have menus whose size is important. To preserve these menus would increase the shrink factor and would involve a loss of quality.
|
||||
<inlinemediaobject>
|
||||
<imageobject>
|
||||
<imagedata fileref="keepmenus.png" format="PNG"/>
|
||||
</imageobject>
|
||||
</inlinemediaobject>
|
||||
</para>
|
||||
<para>
|
||||
If you chose not to preserve the menus, you can then define some playback options :
|
||||
</para>
|
||||
<para>
|
||||
<inlinemediaobject>
|
||||
<imageobject>
|
||||
<imagedata fileref="playback.png" format="PNG"/>
|
||||
</imageobject>
|
||||
</inlinemediaobject>
|
||||
</para>
|
||||
|
||||
<para>
|
||||
When a title is selected, it appears in the Selected Titles list. Use buttons on the right of this list to define in which order the titles will be played.
|
||||
</para>
|
||||
<para>
|
||||
You can define the default audio language or the default subtitle for each title. Hilite a title in the title list and the two comboboxes will be filled with the available languages (those which where selected in the treeview).
|
||||
</para>
|
||||
</sect2>
|
||||
<sect2>
|
||||
<title>Perform the copy</title>
|
||||
<para>
|
||||
Once you have selected the titles, you can proceed with copy :
|
||||
<inlinemediaobject>
|
||||
<imageobject>
|
||||
<imagedata fileref="btncopy.png" format="PNG"/>
|
||||
</imageobject>
|
||||
</inlinemediaobject>
|
||||
</para>
|
||||
|
||||
</sect2>
|
||||
</sect1>
|
||||
<sect1 id="dvdbackupsettings">
|
||||
<title>DVD backup settings</title>
|
||||
<screenshot>
|
||||
<screeninfo>DVD backup settings</screeninfo>
|
||||
<mediaobject>
|
||||
<imageobject>
|
||||
<imagedata fileref="settingsDVD.png" format="PNG"/>
|
||||
</imageobject>
|
||||
<textobject>
|
||||
<phrase>Screenshot</phrase>
|
||||
</textobject>
|
||||
</mediaobject>
|
||||
</screenshot>
|
||||
<para>
|
||||
<itemizedlist>
|
||||
<listitem><para>Temporary files will be placed in the <guilabel>output directory</guilabel> </para></listitem>
|
||||
<listitem><para>Define the max size of the backup</para></listitem>
|
||||
<listitem><para>By default, &k9copy; uses its own burning method. Since the burning options are limited, you can use the a powerfull burning software: k3b.</para></listitem>
|
||||
<listitem><para>AutoBurn allows to run the DVD burning without confirmation.</para></listitem>
|
||||
<listitem><para>When using quickscan, &k9copy; will not analyze the dvd title to estimate the sizes of each stream. The DVD analyze can take a long time if DVD contains many features.</para></listitem>
|
||||
</itemizedlist>
|
||||
</para>
|
||||
</sect1>
|
||||
|
||||
<sect1 id="encodemp4">
|
||||
<title>MPEG-4 Encoding</title>
|
||||
<para>&k9copy; offers the possibility to encode DVD titles in MPEG-4 via MEncoder.
|
||||
</para>
|
||||
<para>
|
||||
Just select an audio stream from a title in the treeview and click on the button <inlinemediaobject>
|
||||
<imageobject>
|
||||
<imagedata fileref="btnmp4.png" format="PNG"/>
|
||||
</imageobject>
|
||||
</inlinemediaobject>
|
||||
</para>
|
||||
</sect1>
|
||||
|
||||
<sect1 id="mp4backupsettings">
|
||||
<title>MPEG-4 settings</title>
|
||||
<screenshot>
|
||||
<screeninfo>MPEG-4 settings</screeninfo>
|
||||
<mediaobject>
|
||||
<imageobject>
|
||||
<imagedata fileref="settingsMP4.png" format="PNG"/>
|
||||
</imageobject>
|
||||
<textobject>
|
||||
<phrase>Screenshot</phrase>
|
||||
</textobject>
|
||||
</mediaobject>
|
||||
</screenshot>
|
||||
<para>
|
||||
<itemizedlist>
|
||||
<listitem><para>Select the codec used to encode mp4. Default codecs are XViD and lavc MP4, but you can add other codecs supported by MEncoder.</para></listitem>
|
||||
<listitem><para>Choose the max size of an avi file an the number of files wanted.</para></listitem>
|
||||
<listitem><para>Enter the width of the mpeg4 video.</para></listitem>
|
||||
<listitem><para>Enter the height of the mpeg4 video.</para></listitem>
|
||||
<listitem><para>Audio will be encoded in mp3 using lame. You can choose the bitrate of the mp3 audio stream.</para></listitem>
|
||||
</itemizedlist>
|
||||
</para>
|
||||
</sect1>
|
||||
|
||||
|
||||
<sect1 id="mencodersettings">
|
||||
<title>MEncoder settings</title>
|
||||
<screenshot>
|
||||
<screeninfo>MEncoder settings</screeninfo>
|
||||
<mediaobject>
|
||||
<imageobject>
|
||||
<imagedata fileref="settingsMencoder.png" format="PNG"/>
|
||||
</imageobject>
|
||||
<textobject>
|
||||
<phrase>Screenshot</phrase>
|
||||
</textobject>
|
||||
</mediaobject>
|
||||
</screenshot>
|
||||
<para>
|
||||
You can add codecs supported by MEncoder:
|
||||
</para>
|
||||
<para>Video example : xvid -xvidencopts bitrate=$VIDBR
|
||||
</para>
|
||||
<para>Audio example : mp3lame -lameopts abr:br=$AUDBR</para>
|
||||
<para>
|
||||
You can use following variables :
|
||||
<itemizedlist>
|
||||
<listitem><para>$VIDBR : video bitrate (calculated)</para></listitem>
|
||||
<listitem><para>$AUDBR : audio bitrate (settings)</para></listitem>
|
||||
<listitem><para>$WIDTH : width (settings)</para></listitem>
|
||||
<listitem><para>$HEIGHT : height (settings)</para></listitem>
|
||||
<listitem><para>$PASS : pass number (runtime)</para></listitem>
|
||||
</itemizedlist>
|
||||
|
||||
</para>
|
||||
</sect1>
|
||||
|
||||
|
||||
</chapter>
|
||||
<chapter id="cmdline-options">
|
||||
<title>Command Line Options</title>
|
||||
|
||||
<para>Usage:</para>
|
||||
<cmdsynopsis>
|
||||
<command>k9copy</command>
|
||||
<arg>--input </arg>
|
||||
<arg>--output</arg>
|
||||
<arg>--play</arg>
|
||||
<arg>--dvdtitle</arg>
|
||||
<arg>--startsector</arg>
|
||||
<arg>--endsector</arg>
|
||||
<arg>--audiofilter</arg>
|
||||
<arg>--subpicturefilter</arg>
|
||||
<arg>--vampsfactor</arg>
|
||||
<arg>--inputsize</arg>
|
||||
<arg>--totalsize</arg>
|
||||
<arg>--dvdsize</arg>
|
||||
<arg>--chapter</arg>
|
||||
<arg>--cell</arg>
|
||||
<arg>--inject</arg>
|
||||
<arg>--initstatus</arg>
|
||||
</cmdsynopsis>
|
||||
|
||||
<para></para>
|
||||
|
||||
<informaltable>
|
||||
<tgroup cols="2">
|
||||
<tbody>
|
||||
|
||||
<row><entry><para><option>--input (argument)</option></para></entry>
|
||||
<entry><para>input device</para></entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><para><option>--output (argument)</option></para></entry>
|
||||
<entry><para>output device</para></entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><para><option>--play</option></para></entry>
|
||||
<entry><para>&k9copy; is used to play a title or part of title to stdout
|
||||
</para></entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><para><option>--dvdtitle (argument)</option></para></entry>
|
||||
<entry><para>the dvd title to play</para></entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><para><option>--startsector (argument)</option></para></entry>
|
||||
<entry><para>sector to start playing from</para></entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><para><option>--endsector (argument)</option></para></entry>
|
||||
<entry><para>sector to end playing from</para></entry>
|
||||
</row>
|
||||
<row><entry><para><option>--audiofilter (argument,argument..)</option></para></entry>
|
||||
<entry><para>Selection of audio streams</para></entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><para><option>--subpicturefilter (argument,argument,..)</option></para></entry>
|
||||
<entry><para>Selection of subtitles</para></entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><para><option>--vampsfactor (argument)</option></para></entry>
|
||||
<entry><para>Shrink factor</para></entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><para><option>--inputsize (argument)</option></para></entry>
|
||||
<entry><para>Size of the cell being copied</para></entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><para><option>--totalsize (argument)</option></para></entry>
|
||||
<entry><para>Total size of titles to play</para></entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><para><option>--dvdsize (argument)</option></para></entry>
|
||||
<entry><para>Final size of the dvd to produce</para></entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><para><option>--chapter (argument)</option></para></entry>
|
||||
<entry><para>Number of the chapter to play</para></entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><para><option>--cell (argument)</option></para></entry>
|
||||
<entry><para>Number of a cell from chapter to play</para></entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><para><option>--inject (argument)</option></para></entry>
|
||||
<entry><para>Name of the file used to save status between 2 calls of k9copy</para></entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><para><option>--initstatus</option></para></entry>
|
||||
<entry><para>Initialize status file</para></entry>
|
||||
</row>
|
||||
|
||||
</tbody>
|
||||
</tgroup>
|
||||
</informaltable>
|
||||
|
||||
</chapter>
|
||||
|
||||
|
||||
<chapter id="credits">
|
||||
<title>Copyright and License</title>
|
||||
|
||||
<para>
|
||||
Program copyright 2004-2007, Jean-Michel Petit
|
||||
</para>
|
||||
|
||||
<!-- TRANS:CREDIT_FOR_TRANSLATORS -->
|
||||
|
||||
&underFDL; <!-- FDL: do not remove. Commercial development should -->
|
||||
<!-- replace this with their copyright and either remove it or re-set this.-->
|
||||
|
||||
<!-- Determine which license your application is licensed under,
|
||||
and delete all the remaining licenses below:
|
||||
|
||||
(NOTE: All documentation are licensed under the FDL,
|
||||
regardless of what license the application uses) -->
|
||||
|
||||
&underGPL; <!-- GPL License -->
|
||||
|
||||
|
||||
</chapter>
|
||||
|
||||
&documentation.index;
|
||||
</book>
|
||||
<!--
|
||||
Local Variables:
|
||||
mode: sgml
|
||||
sgml-minimize-attributes:nil
|
||||
sgml-general-insert-case:lower
|
||||
sgml-indent-step:0
|
||||
sgml-indent-data:nil
|
||||
End:
|
||||
-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -0,0 +1,445 @@
|
||||
<?xml version="1.0" ?>
|
||||
<!DOCTYPE book PUBLIC "-//KDE//DTD DocBook XML V4.1.2-Based Variant V1.0//EN" "dtd/kdex.dtd" [
|
||||
<!-- Define an entity for your application if it is not part of KDE
|
||||
CVS -->
|
||||
<!ENTITY k9copy "<application>K9Copy</application>">
|
||||
<!ENTITY kappname "&k9copy;"><!-- replace kmyapplication here
|
||||
do *not* replace kappname-->
|
||||
<!ENTITY package "kde-module"><!-- kdebase, kdeadmin, etc. Leave
|
||||
this unchanged if your
|
||||
application is not maintained in KDE CVS -->
|
||||
<!ENTITY % addindex "IGNORE">
|
||||
<!ENTITY % English "INCLUDE"> <!-- ONLY If you are writing non-English
|
||||
original documentation, change
|
||||
the language here -->
|
||||
]>
|
||||
|
||||
<book lang="&language;">
|
||||
|
||||
|
||||
<bookinfo>
|
||||
<title>&k9copy; Handbook</title>
|
||||
|
||||
<authorgroup>
|
||||
<author>
|
||||
<firstname>Jean-Michel</firstname>
|
||||
<othername></othername>
|
||||
<surname>Petit</surname>
|
||||
<affiliation>
|
||||
<address><email>k9copy@free.fr</email></address>
|
||||
</affiliation>
|
||||
</author>
|
||||
</authorgroup>
|
||||
|
||||
<!-- TRANS:ROLES_OF_TRANSLATORS -->
|
||||
|
||||
<copyright>
|
||||
<year>2004</year>
|
||||
<year>2006</year>
|
||||
<holder>The K9Copy Authors</holder>
|
||||
</copyright>
|
||||
<!-- Translators: put here the copyright notice of the translation -->
|
||||
<!-- Put here the FDL notice. Read the explanation in fdl-notice.docbook
|
||||
and in the FDL itself on how to use it. -->
|
||||
<legalnotice>&FDLNotice;</legalnotice>
|
||||
|
||||
<!-- Date and version information of the documentation
|
||||
Don't forget to include this last date and this last revision number, we
|
||||
need them for translation coordination !
|
||||
Please respect the format of the date (DD/MM/YYYY) and of the version
|
||||
(V.MM.LL), it could be used by automation scripts.
|
||||
Do NOT change these in the translation. -->
|
||||
|
||||
<date>04/06/2006</date>
|
||||
<releaseinfo>1.1.0</releaseinfo>
|
||||
|
||||
<!-- Abstract about this handbook -->
|
||||
|
||||
<abstract>
|
||||
<para>
|
||||
A DVD Backup tool for KDE. <ulink url="http://k9copy.sourceforge.net">http://k9copy.sourceforge.net</ulink>
|
||||
</para>
|
||||
</abstract>
|
||||
|
||||
<!-- This is a set of Keywords for indexing by search engines.
|
||||
Please at least include KDE, the KDE package it is in, the name
|
||||
of your application, and a few relevant keywords. -->
|
||||
|
||||
<keywordset>
|
||||
<keyword>k9copy</keyword>
|
||||
<keyword>vamps</keyword>
|
||||
<keyword>dvd</keyword>
|
||||
</keywordset>
|
||||
|
||||
</bookinfo>
|
||||
|
||||
<!-- The contents of the documentation begin here. Label
|
||||
each chapter so with the id attribute. This is necessary for two reasons: it
|
||||
allows you to easily reference the chapter from other chapters of your
|
||||
document, and if there is no ID, the name of the generated HTML files will vary
|
||||
from time to time making it hard to manage for maintainers and for the CVS
|
||||
system. Any chapter labelled (OPTIONAL) may be left out at the author's
|
||||
discretion. Other chapters should not be left out in order to maintain a
|
||||
consistent documentation style across all KDE apps. -->
|
||||
|
||||
|
||||
<chapter id="k9copy-app">
|
||||
<title>k9copy shell</title>
|
||||
|
||||
<sect1 id="mainwindow">
|
||||
<title>The Main Window</title>
|
||||
|
||||
<screenshot>
|
||||
<screeninfo>Main Window</screeninfo>
|
||||
<mediaobject>
|
||||
<imageobject>
|
||||
<imagedata fileref="mainwindow.png" format="PNG"/>
|
||||
</imageobject>
|
||||
|
||||
<textobject>
|
||||
<phrase>Screenshot</phrase>
|
||||
</textobject>
|
||||
</mediaobject>
|
||||
</screenshot>
|
||||
|
||||
<para>The main goal of k9copy is to be an easy to use and powerfull DVD backup app.
|
||||
</para>
|
||||
<para>
|
||||
Once oppened, the DVD structure is shown in a treeview (the central widget).
|
||||
</para>
|
||||
<para>
|
||||
The selection is made by checkboxes. You can select the entire DVD, a Titleset or just a specific language or subtitle from a DVD title.
|
||||
</para>
|
||||
<para>For DVD backup there are two possibilities :</para>
|
||||
<para>- backup with orginal menus. In this case, k9copy reproduces the orginial structure of the DVD without the unselected parts.
|
||||
</para>
|
||||
<para>- backup without menus. In this case, k9copy makes a reauthoring of the DVD. K9copy uses libdvdnav from xine to ensure that the DVD will be copied as it were played with xine.
|
||||
</para>
|
||||
</sect1>
|
||||
|
||||
<sect1 id="backupdvd">
|
||||
<title>Making a dvd backup</title>
|
||||
<sect2>
|
||||
<title>Open the dvd</title>
|
||||
<para>
|
||||
Select a dvd device from the list or click on buttons on right of the list to select a directory or a dvd image file.
|
||||
<inlinemediaobject>
|
||||
<imageobject>
|
||||
<imagedata fileref="open1.png" format="PNG"/>
|
||||
</imageobject>
|
||||
</inlinemediaobject>
|
||||
</para><para>
|
||||
Click on the button Open from the main toolbar or <guimenuitem>File->Open</guimenuitem> from the main menu.
|
||||
<inlinemediaobject>
|
||||
<imageobject>
|
||||
<imagedata fileref="open2.png" format="PNG"/>
|
||||
</imageobject>
|
||||
</inlinemediaobject>
|
||||
</para>
|
||||
|
||||
<para>
|
||||
The treeview will be filled with the DVD structure
|
||||
</para>
|
||||
</sect2>
|
||||
|
||||
<sect2>
|
||||
<title>Selection of titles to copy</title>
|
||||
<screenshot>
|
||||
<screeninfo>DVD structure</screeninfo>
|
||||
<mediaobject>
|
||||
<imageobject>
|
||||
<imagedata fileref="treeview.png" format="PNG"/>
|
||||
</imageobject>
|
||||
<textobject>
|
||||
<phrase>Screenshot</phrase>
|
||||
</textobject>
|
||||
</mediaobject>
|
||||
</screenshot>
|
||||
|
||||
<para>
|
||||
Use the checkbox at the top of the treeview to make a copy of the entire DVD.
|
||||
</para>
|
||||
<para>
|
||||
Use the checkbox beside the titleset to make a copy of an entire titleset.
|
||||
</para>
|
||||
<para>
|
||||
A title must have a video stream : if you select an audio language or a subtitle language, the video stream will be automatically selected. If you deselect the video stream, the title will not be backuped.
|
||||
</para>
|
||||
</sect2>
|
||||
|
||||
<sect2>
|
||||
<title>Playback options of the new DVD</title>
|
||||
<para>
|
||||
If the DVD you want to backup has interactive menus, you can keep them on your backup. On some DVDs, menus are very big and keeping them will increase the shrink factor and reduce the quality of the video stream.
|
||||
<inlinemediaobject>
|
||||
<imageobject>
|
||||
<imagedata fileref="keepmenus.png" format="PNG"/>
|
||||
</imageobject>
|
||||
</inlinemediaobject>
|
||||
</para>
|
||||
<para>
|
||||
If you have choosen to not keep original menus, it's possible to define some playback options :
|
||||
</para>
|
||||
<para>
|
||||
<inlinemediaobject>
|
||||
<imageobject>
|
||||
<imagedata fileref="playback.png" format="PNG"/>
|
||||
</imageobject>
|
||||
</inlinemediaobject>
|
||||
</para>
|
||||
|
||||
<para>
|
||||
When a title is selected, it appears in the Selected Titles list. Use buttons on the right of this list to define in which order the titles will be played.
|
||||
</para>
|
||||
<para>
|
||||
You can define the default audio language or the default subtitle for each title. Hilite a title in the title list and the two comboboxes will be filled with the available languages (those which where selected in the treeview).
|
||||
</para>
|
||||
</sect2>
|
||||
<sect2>
|
||||
<title>Executing the copy</title>
|
||||
<para>
|
||||
Once you have selected the titles, you can proceed with copy :
|
||||
<inlinemediaobject>
|
||||
<imageobject>
|
||||
<imagedata fileref="btncopy.png" format="PNG"/>
|
||||
</imageobject>
|
||||
</inlinemediaobject>
|
||||
</para>
|
||||
|
||||
</sect2>
|
||||
</sect1>
|
||||
<sect1 id="dvdbackupsettings">
|
||||
<title>DVD backup settings</title>
|
||||
<screenshot>
|
||||
<screeninfo>DVD backup settings</screeninfo>
|
||||
<mediaobject>
|
||||
<imageobject>
|
||||
<imagedata fileref="settingsDVD.png" format="PNG"/>
|
||||
</imageobject>
|
||||
<textobject>
|
||||
<phrase>Screenshot</phrase>
|
||||
</textobject>
|
||||
</mediaobject>
|
||||
</screenshot>
|
||||
<para>
|
||||
<itemizedlist>
|
||||
<listitem><para>Temporary files will be placed in the <guilabel>output directory</guilabel> </para></listitem>
|
||||
<listitem><para>Define the max size of the backup</para></listitem>
|
||||
<listitem><para>By default, &k9copy; uses its own burning method. Since the burning options are limited, you can use the a powerfull burning software: k3b.</para></listitem>
|
||||
<listitem><para>AutoBurn allows to run the DVD burning without confirmation.</para></listitem>
|
||||
<listitem><para>When using quickscan, &k9copy; will not analyze the dvd title to estimate the sizes of each stream. The DVD analyze can take a long time if DVD contains many features.</para></listitem>
|
||||
</itemizedlist>
|
||||
</para>
|
||||
</sect1>
|
||||
|
||||
<sect1 id="encodemp4">
|
||||
<title>Encoding MPEG-4</title>
|
||||
<para>&k9copy; offers the possibility to encode DVD titles in MPEG-4 by using MEncoder.
|
||||
</para>
|
||||
<para>
|
||||
Just select an audio stream from a title in the treeview and click on the button <inlinemediaobject>
|
||||
<imageobject>
|
||||
<imagedata fileref="btnmp4.png" format="PNG"/>
|
||||
</imageobject>
|
||||
</inlinemediaobject>
|
||||
</para>
|
||||
</sect1>
|
||||
|
||||
<sect1 id="mp4backupsettings">
|
||||
<title>MPEG-4 settings</title>
|
||||
<screenshot>
|
||||
<screeninfo>MPEG-4 settings</screeninfo>
|
||||
<mediaobject>
|
||||
<imageobject>
|
||||
<imagedata fileref="settingsMP4.png" format="PNG"/>
|
||||
</imageobject>
|
||||
<textobject>
|
||||
<phrase>Screenshot</phrase>
|
||||
</textobject>
|
||||
</mediaobject>
|
||||
</screenshot>
|
||||
<para>
|
||||
<itemizedlist>
|
||||
<listitem><para>Select the codec used to encode mp4. Default codecs are XViD and lavc MP4, but you can add other codecs supported by MEncoder.</para></listitem>
|
||||
<listitem><para>Choose the max size of an avi file an the number of files wanted.</para></listitem>
|
||||
<listitem><para>Enter the width of the mpeg4 video.</para></listitem>
|
||||
<listitem><para>Enter the height of the mpeg4 video.</para></listitem>
|
||||
<listitem><para>Audio will be encoded in mp3 using lame. You can choose the bitrate of the mp3 audio stream.</para></listitem>
|
||||
</itemizedlist>
|
||||
</para>
|
||||
</sect1>
|
||||
|
||||
|
||||
</chapter>
|
||||
<chapter id="cmdline-options">
|
||||
<title>Command Line Options</title>
|
||||
|
||||
<para>Usage:</para>
|
||||
<cmdsynopsis>
|
||||
<command>k9copy</command>
|
||||
<group choice="opt">
|
||||
<option>f</option>
|
||||
<option>p</option><option>w</option>
|
||||
<option>a</option><option>x</option>
|
||||
<option>d</option>
|
||||
</group>
|
||||
<arg>--fullscreen</arg>
|
||||
<arg>--play</arg>
|
||||
<arg>--audiodriver</arg>
|
||||
<arg>--videodriver</arg>
|
||||
<arg>--device</arg>
|
||||
<arg>--verbose</arg>
|
||||
<arg>--wizard</arg>
|
||||
<arg rep="repeat"><replaceable>file</replaceable></arg>
|
||||
</cmdsynopsis>
|
||||
|
||||
<para></para>
|
||||
|
||||
<informaltable>
|
||||
<tgroup cols="2">
|
||||
<tbody>
|
||||
|
||||
<row><entry><para><option>-f,--fullscreen</option></para></entry>
|
||||
<entry><para>Starts &k9copy; in fullscreen mode.
|
||||
</para></entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><para><option>-p,--play</option></para></entry>
|
||||
<entry><para>Starts with last played track.
|
||||
</para></entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><para><option>-a,--audiodriver (argument)</option></para></entry>
|
||||
<entry><para>Sets the audio driver. Arguments can be: alsa, arts, oss, ...
|
||||
</para></entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><para><option>-x,--videodriver (argument)</option></para></entry>
|
||||
<entry><para>Sets the video driver. Arguments can be: xv, xshm, dxr3 ,...
|
||||
</para></entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><para><option>-d,--device (argument)</option></para></entry>
|
||||
<entry><para>Sets the Audio-CD/VCD/DVD path to (argument).
|
||||
</para></entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><para><option>--verbose</option></para></entry>
|
||||
<entry><para>Outputs more debug messages.
|
||||
</para></entry>
|
||||
</row>
|
||||
<row><entry><para><option>-w,--wizard</option></para></entry>
|
||||
<entry><para>Runs installation wizard.
|
||||
</para></entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><para><option>file...</option></para></entry>
|
||||
<entry><para>Files to play. Can be local files, a directory, an URL or "AudioCD", "VCD", "DVD".
|
||||
</para></entry>
|
||||
</row>
|
||||
</tbody>
|
||||
</tgroup>
|
||||
</informaltable>
|
||||
|
||||
</chapter>
|
||||
|
||||
|
||||
|
||||
<chapter id="faq">
|
||||
<title>Questions and Answers</title>
|
||||
|
||||
|
||||
<para>
|
||||
<ulink url="http://k9copy.sourceforge.net/index.php?page=faq">Kaffeine-FAQ</ulink>
|
||||
</para>
|
||||
<para>
|
||||
<ulink url="http://xinehq.de/index.php/faq">xine-FAQ</ulink>
|
||||
</para>
|
||||
|
||||
<para>For Questions use the <ulink url="http://lists.sourceforge.net/lists/listinfo/k9copy-user">k9copy-user mailinglist</ulink>.
|
||||
(First check the <ulink url="http://sourceforge.net/mailarchive/forum.php?forum_id=34875">archive</ulink>
|
||||
if the question is still answered.)
|
||||
</para>
|
||||
|
||||
|
||||
</chapter>
|
||||
|
||||
<chapter id="bug">
|
||||
<title>Reporting BUGS</title>
|
||||
|
||||
<para>
|
||||
Before you report a bug, please first make sure the bug has not been reported
|
||||
yet in the bug tracking system at <ulink url="http://www.sourceforge.net/projects/k9copy">http://www.sourceforge.net/projects/k9copy</ulink>.
|
||||
Also have a look into the mailinglist <ulink url="http://sourceforge.net/mailarchive/forum.php?forum_id=34875">archive</ulink>.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
Please use only the tracking system on sourceforge for reporting bugs and log in before
|
||||
submitting (if you've a sourceforge account).
|
||||
</para>
|
||||
|
||||
<para>
|
||||
When you submit a bug, please include all of the following information:
|
||||
|
||||
<itemizedlist>
|
||||
<listitem><para>versions of Kaffeine, xine, KDE, X11</para></listitem>
|
||||
<listitem><para>the backtrace from KDE's Crash Manager</para></listitem>
|
||||
<listitem><para>console output (you can use --verbose to get more)</para></listitem>
|
||||
</itemizedlist>
|
||||
|
||||
</para>
|
||||
|
||||
</chapter>
|
||||
|
||||
<chapter id="credits">
|
||||
<title>Copyright and License</title>
|
||||
|
||||
<para>
|
||||
Program copyright 2003-2005, The Kaffeine Authors
|
||||
</para>
|
||||
|
||||
|
||||
<para>
|
||||
Documentation copyright 2003-2005, Jürgen Kofler <email>k9copy@gmx.net</email>, Christophe Thommeret <email>hftom@free.fr</email>
|
||||
</para>
|
||||
|
||||
<!-- TRANS:CREDIT_FOR_TRANSLATORS -->
|
||||
|
||||
&underFDL; <!-- FDL: do not remove. Commercial development should -->
|
||||
<!-- replace this with their copyright and either remove it or re-set this.-->
|
||||
|
||||
<!-- Determine which license your application is licensed under,
|
||||
and delete all the remaining licenses below:
|
||||
|
||||
(NOTE: All documentation are licensed under the FDL,
|
||||
regardless of what license the application uses) -->
|
||||
|
||||
&underGPL; <!-- GPL License -->
|
||||
|
||||
|
||||
</chapter>
|
||||
|
||||
&documentation.index;
|
||||
</book>
|
||||
<!--
|
||||
Local Variables:
|
||||
mode: sgml
|
||||
sgml-minimize-attributes:nil
|
||||
sgml-general-insert-case:lower
|
||||
sgml-indent-step:0
|
||||
sgml-indent-data:nil
|
||||
End:
|
||||
-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -0,0 +1,8 @@
|
||||
|
||||
METASOURCES = AUTO
|
||||
noinst_LTLIBRARIES = libdvdread.la
|
||||
libdvdread_la_LDFLAGS = $(all_libraries)
|
||||
libdvdread_la_SOURCES = dvd_input.c dvd_reader.c dvd_udf.c ifo_read.c md5.c \
|
||||
nav_read.c
|
||||
noinst_HEADERS = bswap.h dvd_input.h dvd_reader.h dvd_udf.h dvdread_internal.h \
|
||||
ifo_read.h ifo_types.h md5.h nav_read.h nav_types.h
|
@ -0,0 +1,126 @@
|
||||
/* -*- c-basic-offset: 2; indent-tabs-mode: nil -*- */
|
||||
#ifndef BSWAP_H_INCLUDED
|
||||
#define BSWAP_H_INCLUDED
|
||||
|
||||
/*
|
||||
* Copyright (C) 2000, 2001 Billy Biggs <vektor@dumbterm.net>,
|
||||
* Håkan Hjort <d95hjort@dtek.chalmers.se>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#if defined(WORDS_BIGENDIAN)
|
||||
/* All bigendian systems are fine, just ignore the swaps. */
|
||||
#define B2N_16(x) (void)(x)
|
||||
#define B2N_32(x) (void)(x)
|
||||
#define B2N_64(x) (void)(x)
|
||||
|
||||
#else
|
||||
|
||||
/* For __FreeBSD_version */
|
||||
#if defined(HAVE_SYS_PARAM_H)
|
||||
#include <sys/param.h>
|
||||
#endif
|
||||
|
||||
#if defined(__linux__)
|
||||
#include <byteswap.h>
|
||||
#define B2N_16(x) x = bswap_16(x)
|
||||
#define B2N_32(x) x = bswap_32(x)
|
||||
#define B2N_64(x) x = bswap_64(x)
|
||||
|
||||
#elif defined(__NetBSD__)
|
||||
#include <sys/endian.h>
|
||||
#define B2N_16(x) BE16TOH(x)
|
||||
#define B2N_32(x) BE32TOH(x)
|
||||
#define B2N_64(x) BE64TOH(x)
|
||||
|
||||
#elif defined(__OpenBSD__)
|
||||
#include <sys/endian.h>
|
||||
#define B2N_16(x) x = swap16(x)
|
||||
#define B2N_32(x) x = swap32(x)
|
||||
#define B2N_64(x) x = swap64(x)
|
||||
|
||||
#elif defined(__FreeBSD__) && __FreeBSD_version >= 470000
|
||||
#include <sys/endian.h>
|
||||
#define B2N_16(x) x = be16toh(x)
|
||||
#define B2N_32(x) x = be32toh(x)
|
||||
#if __FreeBSD_version >= 500000
|
||||
#define B2N_64(x) x = be64toh(x)
|
||||
#else
|
||||
#define B2N_64(x) \
|
||||
x = ((((x) & 0xff00000000000000) >> 56) | \
|
||||
(((x) & 0x00ff000000000000) >> 40) | \
|
||||
(((x) & 0x0000ff0000000000) >> 24) | \
|
||||
(((x) & 0x000000ff00000000) >> 8) | \
|
||||
(((x) & 0x00000000ff000000) << 8) | \
|
||||
(((x) & 0x0000000000ff0000) << 24) | \
|
||||
(((x) & 0x000000000000ff00) << 40) | \
|
||||
(((x) & 0x00000000000000ff) << 56))
|
||||
#endif /* _FreeBSD_version >= 500000 */
|
||||
|
||||
#elif defined(__DragonFly__)
|
||||
#include <sys/endian.h>
|
||||
#define B2N_16(x) x = be16toh(x)
|
||||
#define B2N_32(x) x = be32toh(x)
|
||||
#define B2N_64(x) x = be64toh(x)
|
||||
|
||||
|
||||
#elif defined(__APPLE__) || defined(__DARWIN__)
|
||||
#include <libkern/OSByteOrder.h>
|
||||
#define B2N_16(x) x = OSSwapBigToHostConstInt16(x)
|
||||
#define B2N_32(x) x = OSSwapBigToHostConstInt32(x)
|
||||
#define B2N_64(x) x = OSSwapBigToHostConstInt64(x)
|
||||
|
||||
#else
|
||||
#if defined(__FreeBSD__) || defined(__sun) || defined(__bsdi__) || defined(WIN32) || defined(__BEOS__) || defined(__INTERIX)
|
||||
/* These systems don't have swap macros */
|
||||
#else
|
||||
/* If there isn't a header provided with your system with this functionality
|
||||
* add the relevant || define( ) to the list above.
|
||||
*/
|
||||
#warning "You should add endian swap macros for your system"
|
||||
#endif
|
||||
|
||||
/* This is a slow but portable implementation, it has multiple evaluation
|
||||
* problems so beware.
|
||||
* Old FreeBSD's and Solaris don't have <byteswap.h> or any other such
|
||||
* functionality!
|
||||
*/
|
||||
|
||||
#define B2N_16(x) \
|
||||
x = ((((x) & 0xff00) >> 8) | \
|
||||
(((x) & 0x00ff) << 8))
|
||||
#define B2N_32(x) \
|
||||
x = ((((x) & 0xff000000) >> 24) | \
|
||||
(((x) & 0x00ff0000) >> 8) | \
|
||||
(((x) & 0x0000ff00) << 8) | \
|
||||
(((x) & 0x000000ff) << 24))
|
||||
#define B2N_64(x) \
|
||||
x = ((((x) & 0xff00000000000000) >> 56) | \
|
||||
(((x) & 0x00ff000000000000) >> 40) | \
|
||||
(((x) & 0x0000ff0000000000) >> 24) | \
|
||||
(((x) & 0x000000ff00000000) >> 8) | \
|
||||
(((x) & 0x00000000ff000000) << 8) | \
|
||||
(((x) & 0x0000000000ff0000) << 24) | \
|
||||
(((x) & 0x000000000000ff00) << 40) | \
|
||||
(((x) & 0x00000000000000ff) << 56))
|
||||
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
#endif /* WORDS_BIGENDIAN */
|
||||
|
||||
#endif /* BSWAP_H_INCLUDED */
|
@ -0,0 +1,414 @@
|
||||
/* -*- c-basic-offset: 2; indent-tabs-mode: nil -*- */
|
||||
/*
|
||||
* Copyright (C) 2002 Samuel Hocevar <sam@zoy.org>,
|
||||
* Håkan Hjort <d95hjort@dtek.chalmers.se>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111, USA.
|
||||
*/
|
||||
|
||||
#include "config.h"
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#define __USE_GNU /* to get O_DIRECT in linux */
|
||||
#include <fcntl.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#include "dvd_reader.h"
|
||||
#include "dvd_input.h"
|
||||
|
||||
#include "dvdread_internal.h"
|
||||
|
||||
/* The function pointers that is the exported interface of this file. */
|
||||
dvd_input_t (*dvdinput_open) (const char *);
|
||||
int (*dvdinput_close) (dvd_input_t);
|
||||
int (*dvdinput_seek) (dvd_input_t, int);
|
||||
int (*dvdinput_title) (dvd_input_t, int);
|
||||
/**
|
||||
* pointer must be aligned to 2048 bytes
|
||||
* if reading from a raw/O_DIRECT file
|
||||
*/
|
||||
int (*dvdinput_read) (dvd_input_t, void *, int, int);
|
||||
|
||||
char * (*dvdinput_error) (dvd_input_t);
|
||||
|
||||
#ifdef HAVE_DVDCSS_DVDCSS_H
|
||||
/* linking to libdvdcss */
|
||||
#include <dvdcss/dvdcss.h>
|
||||
#define DVDcss_open(a) dvdcss_open((char*)(a))
|
||||
#define DVDcss_close dvdcss_close
|
||||
#define DVDcss_seek dvdcss_seek
|
||||
#define DVDcss_title dvdcss_title
|
||||
#define DVDcss_read dvdcss_read
|
||||
#define DVDcss_error dvdcss_error
|
||||
#else
|
||||
/* dlopening libdvdcss */
|
||||
#include <dlfcn.h>
|
||||
typedef struct dvdcss_s *dvdcss_handle;
|
||||
static dvdcss_handle (*DVDcss_open) (const char *);
|
||||
static int (*DVDcss_close) (dvdcss_handle);
|
||||
static int (*DVDcss_seek) (dvdcss_handle, int, int);
|
||||
static int (*DVDcss_title) (dvdcss_handle, int);
|
||||
static int (*DVDcss_read) (dvdcss_handle, void *, int, int);
|
||||
static char * (*DVDcss_error) (dvdcss_handle);
|
||||
#endif
|
||||
|
||||
/* The DVDinput handle, add stuff here for new input methods. */
|
||||
struct dvd_input_s {
|
||||
/* libdvdcss handle */
|
||||
dvdcss_handle dvdcss;
|
||||
|
||||
/* dummy file input */
|
||||
int fd;
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* initialize and open a DVD device or file.
|
||||
*/
|
||||
static dvd_input_t css_open(const char *target)
|
||||
{
|
||||
dvd_input_t dev;
|
||||
|
||||
/* Allocate the handle structure */
|
||||
dev = (dvd_input_t) malloc(sizeof(struct dvd_input_s));
|
||||
if(dev == NULL) {
|
||||
/* malloc has set errno to ENOMEM */
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* Really open it with libdvdcss */
|
||||
dev->dvdcss = DVDcss_open(target);
|
||||
if(dev->dvdcss == 0) {
|
||||
free(dev);
|
||||
dev = NULL;
|
||||
}
|
||||
|
||||
return dev;
|
||||
}
|
||||
|
||||
/**
|
||||
* return the last error message
|
||||
*/
|
||||
static char *css_error(dvd_input_t dev)
|
||||
{
|
||||
return DVDcss_error(dev->dvdcss);
|
||||
}
|
||||
|
||||
/**
|
||||
* seek into the device.
|
||||
*/
|
||||
static int css_seek(dvd_input_t dev, int blocks)
|
||||
{
|
||||
/* DVDINPUT_NOFLAGS should match the DVDCSS_NOFLAGS value. */
|
||||
return DVDcss_seek(dev->dvdcss, blocks, DVDINPUT_NOFLAGS);
|
||||
}
|
||||
|
||||
/**
|
||||
* set the block for the begining of a new title (key).
|
||||
*/
|
||||
static int css_title(dvd_input_t dev, int block)
|
||||
{
|
||||
return DVDcss_title(dev->dvdcss, block);
|
||||
}
|
||||
|
||||
/**
|
||||
* read data from the device.
|
||||
*/
|
||||
static int css_read(dvd_input_t dev, void *buffer, int blocks, int flags)
|
||||
{
|
||||
return DVDcss_read(dev->dvdcss, buffer, blocks, flags);
|
||||
}
|
||||
|
||||
/**
|
||||
* close the DVD device and clean up the library.
|
||||
*/
|
||||
static int css_close(dvd_input_t dev)
|
||||
{
|
||||
int ret;
|
||||
|
||||
ret = DVDcss_close(dev->dvdcss);
|
||||
|
||||
if(ret < 0)
|
||||
return ret;
|
||||
|
||||
free(dev);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Need to use O_BINARY for WIN32 */
|
||||
#ifndef O_BINARY
|
||||
#ifdef _O_BINARY
|
||||
#define O_BINARY _O_BINARY
|
||||
#else
|
||||
#define O_BINARY 0
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/**
|
||||
* initialize and open a DVD device or file.
|
||||
*/
|
||||
static dvd_input_t file_open(const char *target)
|
||||
{
|
||||
dvd_input_t dev;
|
||||
char *use_odirect;
|
||||
int oflags;
|
||||
|
||||
oflags = O_RDONLY | O_BINARY;
|
||||
use_odirect = getenv("DVDREAD_USE_DIRECT");
|
||||
if(use_odirect) {
|
||||
#ifndef O_DIRECT
|
||||
#define O_DIRECT 0
|
||||
#endif
|
||||
oflags |= O_DIRECT;
|
||||
}
|
||||
/* Allocate the library structure */
|
||||
dev = (dvd_input_t) malloc(sizeof(struct dvd_input_s));
|
||||
if(dev == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* Open the device */
|
||||
dev->fd = open(target, oflags);
|
||||
if(dev->fd < 0) {
|
||||
free(dev);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return dev;
|
||||
}
|
||||
|
||||
/**
|
||||
* return the last error message
|
||||
*/
|
||||
static char *file_error(dvd_input_t dev)
|
||||
{
|
||||
/* use strerror(errno)? */
|
||||
return (char *)"unknown error";
|
||||
}
|
||||
|
||||
/**
|
||||
* seek into the device.
|
||||
*/
|
||||
static int file_seek(dvd_input_t dev, int blocks)
|
||||
{
|
||||
off_t pos = (off_t)blocks * (off_t)DVD_VIDEO_LB_LEN;
|
||||
|
||||
pos = lseek(dev->fd, pos, SEEK_SET);
|
||||
if(pos < 0) {
|
||||
return pos;
|
||||
}
|
||||
/* assert pos % DVD_VIDEO_LB_LEN == 0 */
|
||||
return (int) (pos / DVD_VIDEO_LB_LEN);
|
||||
}
|
||||
|
||||
/**
|
||||
* set the block for the begining of a new title (key).
|
||||
*/
|
||||
static int file_title(dvd_input_t dev, int block)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
|
||||
/**
|
||||
* read data from the device.
|
||||
*/
|
||||
static int file_read(dvd_input_t dev, void *buffer, int blocks, int flags)
|
||||
{
|
||||
size_t len;
|
||||
ssize_t ret;
|
||||
unsigned char *buf = buffer;
|
||||
|
||||
len = (size_t)blocks * DVD_VIDEO_LB_LEN;
|
||||
|
||||
while(len > 0) {
|
||||
|
||||
ret = read(dev->fd, buf, len);
|
||||
|
||||
if(ret < 0) {
|
||||
/* One of the reads failed, too bad. We won't even bother
|
||||
* returning the reads that went ok, and as in the posix spec
|
||||
* the file postition is left unspecified after a failure. */
|
||||
return ret;
|
||||
}
|
||||
|
||||
if(ret == 0) {
|
||||
/* Nothing more to read. Return the whole blocks, if any, that we got.
|
||||
and adjust the file possition back to the previous block boundary. */
|
||||
size_t bytes = (size_t)blocks * DVD_VIDEO_LB_LEN - len;
|
||||
off_t over_read = -(bytes % DVD_VIDEO_LB_LEN);
|
||||
/*off_t pos =*/ lseek(dev->fd, over_read, SEEK_CUR);
|
||||
/* should have pos % 2048 == 0 */
|
||||
return (int) (bytes / DVD_VIDEO_LB_LEN);
|
||||
}
|
||||
|
||||
buf+=ret;
|
||||
len -= ret;
|
||||
}
|
||||
|
||||
return blocks;
|
||||
}
|
||||
|
||||
/**
|
||||
* close the DVD device and clean up.
|
||||
*/
|
||||
static int file_close(dvd_input_t dev)
|
||||
{
|
||||
int ret;
|
||||
|
||||
ret = close(dev->fd);
|
||||
|
||||
if(ret < 0)
|
||||
return ret;
|
||||
|
||||
free(dev);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
static void *dvdcss_library = NULL;
|
||||
static int dvdcss_library_init = 0;
|
||||
|
||||
/**
|
||||
* Free any objects allocated by dvdinput_setup.
|
||||
* Should only be called when libdvdread is not to be used any more.
|
||||
* Closes dlopened libraries.
|
||||
*/
|
||||
void dvdinput_free(void)
|
||||
{
|
||||
#ifdef HAVE_DVDCSS_DVDCSS_H
|
||||
/* linked statically, nothing to free */
|
||||
return;
|
||||
#else
|
||||
if(dvdcss_library) {
|
||||
dlclose(dvdcss_library);
|
||||
dvdcss_library = NULL;
|
||||
}
|
||||
dvdcss_library_init = 0;
|
||||
return;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Setup read functions with either libdvdcss or minimal DVD access.
|
||||
*/
|
||||
int dvdinput_setup(void)
|
||||
{
|
||||
char **dvdcss_version = NULL;
|
||||
int verbose;
|
||||
|
||||
/* dlopening libdvdcss */
|
||||
if(dvdcss_library_init) {
|
||||
/* libdvdcss is already dlopened, function ptrs set */
|
||||
if(dvdcss_library) {
|
||||
return 1; /* css available */
|
||||
} else {
|
||||
return 0; /* css not available */
|
||||
}
|
||||
}
|
||||
|
||||
verbose = get_verbose();
|
||||
|
||||
#ifdef HAVE_DVDCSS_DVDCSS_H
|
||||
/* linking to libdvdcss */
|
||||
dvdcss_library = &dvdcss_library; /* Give it some value != NULL */
|
||||
/* the DVDcss_* functions have been #defined at the top */
|
||||
dvdcss_version = &dvdcss_interface_2;
|
||||
|
||||
#else
|
||||
|
||||
dvdcss_library = dlopen("libdvdcss.so.2", RTLD_LAZY);
|
||||
|
||||
if(dvdcss_library != NULL) {
|
||||
#if defined(__OpenBSD__) && !defined(__ELF__)
|
||||
#define U_S "_"
|
||||
#else
|
||||
#define U_S
|
||||
#endif
|
||||
DVDcss_open = (dvdcss_handle (*)(const char*))
|
||||
dlsym(dvdcss_library, U_S "dvdcss_open");
|
||||
DVDcss_close = (int (*)(dvdcss_handle))
|
||||
dlsym(dvdcss_library, U_S "dvdcss_close");
|
||||
DVDcss_title = (int (*)(dvdcss_handle, int))
|
||||
dlsym(dvdcss_library, U_S "dvdcss_title");
|
||||
DVDcss_seek = (int (*)(dvdcss_handle, int, int))
|
||||
dlsym(dvdcss_library, U_S "dvdcss_seek");
|
||||
DVDcss_read = (int (*)(dvdcss_handle, void*, int, int))
|
||||
dlsym(dvdcss_library, U_S "dvdcss_read");
|
||||
DVDcss_error = (char* (*)(dvdcss_handle))
|
||||
dlsym(dvdcss_library, U_S "dvdcss_error");
|
||||
|
||||
dvdcss_version = (char **)dlsym(dvdcss_library, U_S "dvdcss_interface_2");
|
||||
|
||||
if(dlsym(dvdcss_library, U_S "dvdcss_crack")) {
|
||||
if(verbose >= 0) {
|
||||
fprintf(stderr,
|
||||
"libdvdread: Old (pre-0.0.2) version of libdvdcss found.\n"
|
||||
"libdvdread: You should get the latest version from "
|
||||
"http://www.videolan.org/\n" );
|
||||
}
|
||||
dlclose(dvdcss_library);
|
||||
dvdcss_library = NULL;
|
||||
} else if(!DVDcss_open || !DVDcss_close || !DVDcss_title || !DVDcss_seek
|
||||
|| !DVDcss_read || !DVDcss_error || !dvdcss_version) {
|
||||
if(verbose >= 0) {
|
||||
fprintf(stderr, "libdvdread: Missing symbols in libdvdcss.so.2, "
|
||||
"this shouldn't happen !\n");
|
||||
}
|
||||
dlclose(dvdcss_library);
|
||||
dvdcss_library = NULL;
|
||||
}
|
||||
}
|
||||
#endif /* HAVE_DVDCSS_DVDCSS_H */
|
||||
|
||||
dvdcss_library_init = 1;
|
||||
|
||||
if(dvdcss_library) {
|
||||
/*
|
||||
char *psz_method = getenv( "DVDCSS_METHOD" );
|
||||
char *psz_verbose = getenv( "DVDCSS_VERBOSE" );
|
||||
fprintf(stderr, "DVDCSS_METHOD %s\n", psz_method);
|
||||
fprintf(stderr, "DVDCSS_VERBOSE %s\n", psz_verbose);
|
||||
*/
|
||||
if(verbose >= 1) {
|
||||
fprintf(stderr, "libdvdread: Using libdvdcss version %s for DVD access\n",
|
||||
*dvdcss_version);
|
||||
}
|
||||
/* libdvdcss wrapper functions */
|
||||
dvdinput_open = css_open;
|
||||
dvdinput_close = css_close;
|
||||
dvdinput_seek = css_seek;
|
||||
dvdinput_title = css_title;
|
||||
dvdinput_read = css_read;
|
||||
dvdinput_error = css_error;
|
||||
return 1;
|
||||
|
||||
} else {
|
||||
if(verbose >= 1) {
|
||||
fprintf(stderr, "libdvdread: Encrypted DVD support unavailable.\n");
|
||||
}
|
||||
/* libdvdcss replacement functions */
|
||||
dvdinput_open = file_open;
|
||||
dvdinput_close = file_close;
|
||||
dvdinput_seek = file_seek;
|
||||
dvdinput_title = file_title;
|
||||
dvdinput_read = file_read;
|
||||
dvdinput_error = file_error;
|
||||
return 0;
|
||||
}
|
||||
}
|
@ -0,0 +1,55 @@
|
||||
/* -*- c-basic-offset: 2; indent-tabs-mode: nil -*- */
|
||||
#ifndef DVD_INPUT_H_INCLUDED
|
||||
#define DVD_INPUT_H_INCLUDED
|
||||
|
||||
/*
|
||||
* Copyright (C) 2001, 2002 Samuel Hocevar <sam@zoy.org>,
|
||||
* Håkan Hjort <d95hjort@dtek.chalmers.se>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111, USA.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Defines and flags. Make sure they fit the libdvdcss API!
|
||||
*/
|
||||
#define DVDINPUT_NOFLAGS 0
|
||||
|
||||
#define DVDINPUT_READ_DECRYPT (1 << 0)
|
||||
|
||||
typedef struct dvd_input_s *dvd_input_t;
|
||||
|
||||
/**
|
||||
* Pointers which will be filled either the input methods functions.
|
||||
*/
|
||||
extern dvd_input_t (*dvdinput_open) (const char *);
|
||||
extern int (*dvdinput_close) (dvd_input_t);
|
||||
extern int (*dvdinput_seek) (dvd_input_t, int);
|
||||
extern int (*dvdinput_title) (dvd_input_t, int);
|
||||
extern int (*dvdinput_read) (dvd_input_t, void *, int, int);
|
||||
extern char * (*dvdinput_error) (dvd_input_t);
|
||||
|
||||
/**
|
||||
* Free any objects allocated by dvdinput_setup.
|
||||
* Should only be called when libdvdread is not to be used any more.
|
||||
* Closes dlopened libraries.
|
||||
*/
|
||||
void dvdinput_free(void);
|
||||
|
||||
/**
|
||||
* Setup function accessed by dvd_reader.c. Returns 1 if there is CSS support.
|
||||
*/
|
||||
int dvdinput_setup(void);
|
||||
|
||||
#endif /* DVD_INPUT_H_INCLUDED */
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,344 @@
|
||||
/* -*- c-basic-offset: 2; indent-tabs-mode: nil -*- */
|
||||
#ifndef DVD_READER_H_INCLUDED
|
||||
#define DVD_READER_H_INCLUDED
|
||||
|
||||
/*
|
||||
* Copyright (C) 2001, 2002 Billy Biggs <vektor@dumbterm.net>,
|
||||
* Håkan Hjort <d95hjort@dtek.chalmers.se>,
|
||||
* Björn Englund <d4bjorn@dtek.chalmers.se>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or (at
|
||||
* your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#include <sys/types.h>
|
||||
|
||||
/**
|
||||
* The DVD access interface.
|
||||
*
|
||||
* This file contains the functions that form the interface to to
|
||||
* reading files located on a DVD.
|
||||
*/
|
||||
|
||||
/**
|
||||
* The current version. (0.9.4 => 904, 1.2.3 => 10203)
|
||||
*/
|
||||
#define DVDREAD_VERSION 907
|
||||
|
||||
|
||||
/**
|
||||
* The length of one Logical Block of a DVD.
|
||||
*/
|
||||
#define DVD_VIDEO_LB_LEN 2048
|
||||
|
||||
/**
|
||||
* Maximum length of filenames allowed in UDF.
|
||||
*/
|
||||
#define MAX_UDF_FILE_NAME_LEN 2048
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Opaque type that is used as a handle for one instance of an opened DVD.
|
||||
*/
|
||||
typedef struct dvd_reader_s dvd_reader_t;
|
||||
|
||||
/**
|
||||
* Opaque type for a file read handle, much like a normal fd or FILE *.
|
||||
*/
|
||||
typedef struct dvd_file_s dvd_file_t;
|
||||
|
||||
/**
|
||||
* Returns the compiled version. (DVDREAD_VERSION as an int)
|
||||
*/
|
||||
int DVDVersion(void);
|
||||
|
||||
|
||||
/**
|
||||
* Opens a block device of a DVD-ROM file, or an image file, or a directory
|
||||
* name for a mounted DVD or HD copy of a DVD.
|
||||
*
|
||||
* If the given file is a block device, or is the mountpoint for a block
|
||||
* device, then that device is used for CSS authentication using libdvdcss.
|
||||
* If no device is available, then no CSS authentication is performed,
|
||||
* and we hope that the image is decrypted.
|
||||
*
|
||||
* If the path given is a directory, then the files in that directory may be
|
||||
* in any one of these formats:
|
||||
*
|
||||
* path/VIDEO_TS/VTS_01_1.VOB
|
||||
* path/video_ts/vts_01_1.vob
|
||||
* path/VTS_01_1.VOB
|
||||
* path/vts_01_1.vob
|
||||
*
|
||||
* @param path Specifies the the device, file or directory to be used.
|
||||
* @return If successful a a read handle is returned. Otherwise 0 is returned.
|
||||
*
|
||||
* dvd = DVDOpen(path);
|
||||
*
|
||||
* Threads: this function uses chdir() and getcwd().
|
||||
* The current working directory is global to all threads,
|
||||
* so using chdir/getcwd in another thread could give unexpected results.
|
||||
*/
|
||||
dvd_reader_t *DVDOpen( const char * );
|
||||
|
||||
/**
|
||||
* Closes and cleans up the DVD reader object.
|
||||
*
|
||||
* You must close all open files before calling this function.
|
||||
*
|
||||
* @param dvd A read handle that should be closed.
|
||||
*
|
||||
* DVDClose(dvd);
|
||||
*/
|
||||
void DVDClose( dvd_reader_t * );
|
||||
|
||||
/**
|
||||
* Initializes libdvdread to be used with multithreading apps.
|
||||
*
|
||||
* You must call this function before using any other functions of libdvdread
|
||||
* if you are going to use libdvdread in multiple threads in your program.
|
||||
* If you are not using threads, or using libdvdread from just one thread,
|
||||
* you do not need to call this, but you are allowed to do so anyway.
|
||||
*
|
||||
* There are several restrictions on how you can use libdvdread in
|
||||
* multithreading apps, see further documentation.
|
||||
*
|
||||
* If you have called DVDFinish() you need to call DVDInit again to use
|
||||
* libdvdread in multiple threads.
|
||||
*
|
||||
* DVDInit(void);
|
||||
*/
|
||||
void DVDInit(void);
|
||||
|
||||
/**
|
||||
* frees any dlopened objects.
|
||||
*
|
||||
* You must DVDClose all handles opened with DVDOpen before calling this.
|
||||
* Use this function if you need to close the dlopened libs and any other
|
||||
* objects that have been dynamically allocated by libdvdread.
|
||||
*
|
||||
* DVDFinish(void);
|
||||
*/
|
||||
void DVDFinish(void);
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
typedef enum {
|
||||
DVD_READ_INFO_FILE, /**< VIDEO_TS.IFO or VTS_XX_0.IFO (title) */
|
||||
DVD_READ_INFO_BACKUP_FILE, /**< VIDEO_TS.BUP or VTS_XX_0.BUP (title) */
|
||||
DVD_READ_MENU_VOBS, /**< VIDEO_TS.VOB or VTS_XX_0.VOB (title) */
|
||||
DVD_READ_TITLE_VOBS /**< VTS_XX_[1-9].VOB (title). All files in
|
||||
the title set are opened and read as a
|
||||
single file. */
|
||||
} dvd_read_domain_t;
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
typedef struct {
|
||||
off_t size; /**< Total size of file in bytes */
|
||||
int nr_parts; /**< Number of file parts */
|
||||
off_t parts_size[9]; /**< Size of each part in bytes */
|
||||
} dvd_stat_t;
|
||||
|
||||
/**
|
||||
* Stats a file on the DVD given the title number and domain.
|
||||
* The information about the file is stored in a dvd_stat_t
|
||||
* which contains information about the size of the file and
|
||||
* the number of parts in case of a multipart file and the respective
|
||||
* sizes of the parts.
|
||||
* A multipart file is for instance VTS_02_1.VOB, VTS_02_2.VOB, VTS_02_3.VOB
|
||||
* The size of VTS_02_1.VOB will be stored in stat->parts_size[0],
|
||||
* VTS_02_2.VOB in stat->parts_size[1], ...
|
||||
* The total size (sum of all parts) is stored in stat->size and
|
||||
* stat->nr_parts will hold the number of parts.
|
||||
* Only DVD_READ_TITLE_VOBS (VTS_??_[1-9].VOB) can be multipart files.
|
||||
*
|
||||
* This function is only of use if you want to get the size of each file
|
||||
* in the filesystem. These sizes are not needed to use any other
|
||||
* functions in libdvdread.
|
||||
*
|
||||
* @param dvd A dvd read handle.
|
||||
* @param titlenum Which Video Title Set should be used, VIDEO_TS is 0.
|
||||
* @param domain Which domain.
|
||||
* @param stat Pointer to where the result is stored.
|
||||
* @return If successful 0, otherwise -1.
|
||||
*
|
||||
* int DVDFileStat(dvd, titlenum, domain, stat);
|
||||
*/
|
||||
int DVDFileStat(dvd_reader_t *, int, dvd_read_domain_t, dvd_stat_t *);
|
||||
|
||||
/**
|
||||
* Opens a file on the DVD given the title number and domain.
|
||||
*
|
||||
* If the title number is 0, the video manager information is opened
|
||||
* (VIDEO_TS.[IFO,BUP,VOB]). Returns a file structure which may be
|
||||
* used for reads, or 0 if the file was not found.
|
||||
*
|
||||
* @param dvd A dvd read handle.
|
||||
* @param titlenum Which Video Title Set should be used, VIDEO_TS is 0.
|
||||
* @param domain Which domain.
|
||||
* @return If successful a a file read handle is returned, otherwise 0.
|
||||
*
|
||||
* dvd_file = DVDOpenFile(dvd, titlenum, domain); */
|
||||
dvd_file_t *DVDOpenFile( dvd_reader_t *, int, dvd_read_domain_t );
|
||||
|
||||
/**
|
||||
* Closes a file and frees the associated structure.
|
||||
*
|
||||
* @param dvd_file The file read handle to be closed.
|
||||
*
|
||||
* DVDCloseFile(dvd_file);
|
||||
*/
|
||||
void DVDCloseFile( dvd_file_t * );
|
||||
|
||||
/**
|
||||
* Reads block_count number of blocks from the file at the given block offset.
|
||||
* Returns number of blocks read on success, -1 on error. This call is only
|
||||
* for reading VOB data, and should not be used when reading the IFO files.
|
||||
* When reading from an encrypted drive, blocks are decrypted using libdvdcss
|
||||
* where required.
|
||||
*
|
||||
* @param dvd_file A file read handle.
|
||||
* @param offset Block offset from the start of the file to start reading at.
|
||||
* @param block_count Number of block to read.
|
||||
* @param data Pointer to a buffer to write the data into.
|
||||
* It must be aligned to the logical block size of the device when
|
||||
* reading from a raw/O_DIRECT device (2048 bytes for DVD)
|
||||
* @return Returns number of blocks read on success, -1 on error.
|
||||
*
|
||||
* blocks_read = DVDReadBlocks(dvd_file, offset, block_count, data);
|
||||
*/
|
||||
ssize_t DVDReadBlocks( dvd_file_t *, int, size_t, unsigned char * );
|
||||
|
||||
/**
|
||||
* Seek to the given position in the file. Returns the resulting position in
|
||||
* bytes from the beginning of the file. The seek position is only used for
|
||||
* byte reads from the file, the block read call always reads from the given
|
||||
* offset.
|
||||
*
|
||||
* @param dvd_file A file read handle.
|
||||
* @param seek_offset Byte offset from the start of the file to seek to.
|
||||
* @return The resulting position in bytes from the beginning of the file.
|
||||
*
|
||||
* offset_set = DVDFileSeek(dvd_file, seek_offset);
|
||||
*/
|
||||
int DVDFileSeek( dvd_file_t *, int );
|
||||
|
||||
/**
|
||||
* Reads the given number of bytes from the file. This call can only be used
|
||||
* on the information files, and may not be used for reading from a VOB. This
|
||||
* reads from and increments the currrent seek position for the file.
|
||||
*
|
||||
* @param dvd_file A file read handle.
|
||||
* @param data Pointer to a buffer to write the data into.
|
||||
* @param bytes Number of bytes to read.
|
||||
* @return Returns number of bytes read on success, -1 on error.
|
||||
*
|
||||
* bytes_read = DVDReadBytes(dvd_file, data, bytes);
|
||||
*/
|
||||
ssize_t DVDReadBytes( dvd_file_t *, void *, size_t );
|
||||
|
||||
/**
|
||||
* Returns the file size in blocks.
|
||||
*
|
||||
* @param dvd_file A file read handle.
|
||||
* @return The size of the file in blocks, -1 on error.
|
||||
*
|
||||
* blocks = DVDFileSize(dvd_file);
|
||||
*/
|
||||
ssize_t DVDFileSize( dvd_file_t * );
|
||||
|
||||
/**
|
||||
* Get a unique 128 bit disc ID.
|
||||
* This is the MD5 sum of VIDEO_TS.IFO and the VTS_0?_0.IFO files
|
||||
* in title order (those that exist).
|
||||
* If you need a 'text' representation of the id, print it as a
|
||||
* hexadecimal number, using lowercase letters, discid[0] first.
|
||||
* I.e. the same format as the command-line 'md5sum' program uses.
|
||||
*
|
||||
* @param dvd A read handle to get the disc ID from
|
||||
* @param discid The buffer to put the disc ID into. The buffer must
|
||||
* have room for 128 bits (16 chars).
|
||||
* @return 0 on success, -1 on error.
|
||||
*/
|
||||
int DVDDiscID( dvd_reader_t *, unsigned char * );
|
||||
|
||||
/**
|
||||
* Get the UDF VolumeIdentifier and VolumeSetIdentifier
|
||||
* from the PrimaryVolumeDescriptor.
|
||||
*
|
||||
* @param dvd A read handle to get the disc ID from
|
||||
* @param volid The buffer to put the VolumeIdentifier into.
|
||||
* The VolumeIdentifier is latin-1 encoded (8bit unicode)
|
||||
* null terminated and max 32 bytes (including '\0')
|
||||
* @param volid_size No more than volid_size bytes will be copied to volid.
|
||||
* If the VolumeIdentifier is truncated because of this
|
||||
* it will still be null terminated.
|
||||
* @param volsetid The buffer to put the VolumeSetIdentifier into.
|
||||
* The VolumeIdentifier is 128 bytes as
|
||||
* stored in the UDF PrimaryVolumeDescriptor.
|
||||
* Note that this is not a null terminated string.
|
||||
* @param volsetid_size At most volsetid_size bytes will be copied to volsetid.
|
||||
* @return 0 on success, -1 on error.
|
||||
*/
|
||||
int DVDUDFVolumeInfo( dvd_reader_t *, char *, unsigned int,
|
||||
unsigned char *, unsigned int );
|
||||
|
||||
/**
|
||||
* Get the ISO9660 VolumeIdentifier and VolumeSetIdentifier
|
||||
*
|
||||
* * Only use this function as fallback if DVDUDFVolumeInfo returns 0 *
|
||||
* * this will happen on a disc mastered only with a iso9660 filesystem *
|
||||
* * All video DVD discs have UDF filesystem *
|
||||
*
|
||||
* @param dvd A read handle to get the disc ID from
|
||||
* @param volid The buffer to put the VolumeIdentifier into.
|
||||
* The VolumeIdentifier is coded with '0-9','A-Z','_'
|
||||
* null terminated and max 33 bytes (including '\0')
|
||||
* @param volid_size No more than volid_size bytes will be copied to volid.
|
||||
* If the VolumeIdentifier is truncated because of this
|
||||
* it will still be null terminated.
|
||||
* @param volsetid The buffer to put the VolumeSetIdentifier into.
|
||||
* The VolumeIdentifier is 128 bytes as
|
||||
* stored in the ISO9660 PrimaryVolumeDescriptor.
|
||||
* Note that this is not a null terminated string.
|
||||
* @param volsetid_size At most volsetid_size bytes will be copied to volsetid.
|
||||
* @return 0 on success, -1 on error.
|
||||
*/
|
||||
int DVDISOVolumeInfo( dvd_reader_t *, char *, unsigned int,
|
||||
unsigned char *, unsigned int );
|
||||
|
||||
/**
|
||||
* Sets the level of caching that is done when reading from a device
|
||||
*
|
||||
* @param dvd A read handle to get the disc ID from
|
||||
* @param level The level of caching wanted.
|
||||
* -1 - returns the current setting.
|
||||
* 0 - UDF Cache turned off.
|
||||
* 1 - (default level) Pointers to IFO files and some data from
|
||||
* PrimaryVolumeDescriptor are cached.
|
||||
*
|
||||
* @return The level of caching.
|
||||
*/
|
||||
int DVDUDFCacheLevel( dvd_reader_t *, int );
|
||||
|
||||
#ifdef __cplusplus
|
||||
};
|
||||
#endif
|
||||
#endif /* DVD_READER_H_INCLUDED */
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,66 @@
|
||||
/* -*- c-basic-offset: 2; indent-tabs-mode: nil -*- */
|
||||
#ifndef DVD_UDF_H_INCLUDED
|
||||
#define DVD_UDF_H_INCLUDED
|
||||
|
||||
/*
|
||||
* This code is based on dvdudf by:
|
||||
* Christian Wolff <scarabaeus@convergence.de>.
|
||||
*
|
||||
* Modifications by:
|
||||
* Billy Biggs <vektor@dumbterm.net>.
|
||||
* Björn Englund <d4bjorn@dtek.chalmers.se>.
|
||||
*
|
||||
* dvdudf: parse and read the UDF volume information of a DVD Video
|
||||
* Copyright (C) 1999 Christian Wolff for convergence integrated media
|
||||
* GmbH The author can be reached at scarabaeus@convergence.de, the
|
||||
* project's page is at http://linuxtv.org/dvd/
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or (at
|
||||
* your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
* 02110-1301, USA. Or, point your browser to
|
||||
* http://www.gnu.org/copyleft/gpl.html
|
||||
*/
|
||||
|
||||
#if defined(HAVE_INTTYPES_H)
|
||||
#include <inttypes.h>
|
||||
#elif defined(HAVE_STDINT_H)
|
||||
#include <stdint.h>
|
||||
#endif
|
||||
|
||||
#include "dvd_reader.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Looks for a file on the UDF disc/imagefile and returns the block number
|
||||
* where it begins, or 0 if it is not found. The filename should be an
|
||||
* absolute pathname on the UDF filesystem, starting with '/'. For example,
|
||||
* '/VIDEO_TS/VTS_01_1.IFO'. On success, filesize will be set to the size of
|
||||
* the file in bytes.
|
||||
* This implementation relies on that the file size is less than 2^32
|
||||
* A DVD file can at most be 2^30 (-2048 ?).
|
||||
*/
|
||||
uint32_t UDFFindFile( dvd_reader_t *device, char *filename, uint32_t *size );
|
||||
|
||||
void FreeUDFCache(dvd_reader_t *device, void *cache);
|
||||
int UDFGetVolumeIdentifier(dvd_reader_t *device,
|
||||
char *volid, unsigned int volid_size);
|
||||
int UDFGetVolumeSetIdentifier(dvd_reader_t *device,
|
||||
uint8_t *volsetid, unsigned int volsetid_size);
|
||||
#ifdef __cplusplus
|
||||
};
|
||||
#endif
|
||||
#endif /* DVD_UDF_H_INCLUDED */
|
@ -0,0 +1,18 @@
|
||||
/* -*- c-basic-offset: 2; indent-tabs-mode: nil -*- */
|
||||
#ifndef DVDREAD_INTERNAL_H
|
||||
#define DVDREAD_INTERNAL_H
|
||||
|
||||
|
||||
#define CHECK_VALUE(arg) \
|
||||
if(!(arg)) { \
|
||||
fprintf(stderr, "\n*** libdvdread: CHECK_VALUE failed in %s:%i ***" \
|
||||
"\n*** for %s ***\n\n", \
|
||||
__FILE__, __LINE__, # arg ); \
|
||||
}
|
||||
|
||||
|
||||
int get_verbose(void);
|
||||
int dvdread_verbose(dvd_reader_t *dvd);
|
||||
dvd_reader_t *device_of_file(dvd_file_t *file);
|
||||
|
||||
#endif /* DVDREAD_INTERNAL_H */
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,407 @@
|
||||
/* -*- c-basic-offset: 2; indent-tabs-mode: nil -*- */
|
||||
/* md5.c - Functions to compute MD5 message digest of files or memory blocks
|
||||
according to the definition of MD5 in RFC 1321 from April 1992.
|
||||
Copyright (C) 1995, 1996, 2001 Free Software Foundation, Inc.
|
||||
NOTE: The canonical source of this file is maintained with the GNU C
|
||||
Library. Bugs can be reported to bug-glibc@prep.ai.mit.edu.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2, or (at your option) any
|
||||
later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software Foundation,
|
||||
Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
|
||||
|
||||
/* Written by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995. */
|
||||
|
||||
#include "config.h"
|
||||
|
||||
#include <sys/types.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include "md5.h"
|
||||
|
||||
#ifdef _LIBC
|
||||
# include <endian.h>
|
||||
# if __BYTE_ORDER == __BIG_ENDIAN
|
||||
# define WORDS_BIGENDIAN 1
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#ifdef WORDS_BIGENDIAN
|
||||
# define SWAP(n) \
|
||||
(((n) << 24) | (((n) & 0xff00) << 8) | (((n) >> 8) & 0xff00) | ((n) >> 24))
|
||||
#else
|
||||
# define SWAP(n) (n)
|
||||
#endif
|
||||
|
||||
|
||||
/* This array contains the bytes used to pad the buffer to the next
|
||||
64-byte boundary. (RFC 1321, 3.1: Step 1) */
|
||||
static const unsigned char fillbuf[64] = { 0x80, 0 /* , 0, 0, ... */ };
|
||||
|
||||
|
||||
/* Initialize structure containing state of computation.
|
||||
(RFC 1321, 3.3: Step 3) */
|
||||
void
|
||||
md5_init_ctx (ctx)
|
||||
struct md5_ctx *ctx;
|
||||
{
|
||||
ctx->A = 0x67452301;
|
||||
ctx->B = 0xefcdab89;
|
||||
ctx->C = 0x98badcfe;
|
||||
ctx->D = 0x10325476;
|
||||
|
||||
ctx->total[0] = ctx->total[1] = 0;
|
||||
ctx->buflen = 0;
|
||||
}
|
||||
|
||||
/* Put result from CTX in first 16 bytes following RESBUF. The result
|
||||
must be in little endian byte order.
|
||||
|
||||
IMPORTANT: On some systems it is required that RESBUF is correctly
|
||||
aligned for a 32 bits value. */
|
||||
void *
|
||||
md5_read_ctx (ctx, resbuf)
|
||||
const struct md5_ctx *ctx;
|
||||
void *resbuf;
|
||||
{
|
||||
((md5_uint32 *) resbuf)[0] = SWAP (ctx->A);
|
||||
((md5_uint32 *) resbuf)[1] = SWAP (ctx->B);
|
||||
((md5_uint32 *) resbuf)[2] = SWAP (ctx->C);
|
||||
((md5_uint32 *) resbuf)[3] = SWAP (ctx->D);
|
||||
|
||||
return resbuf;
|
||||
}
|
||||
|
||||
/* Process the remaining bytes in the internal buffer and the usual
|
||||
prolog according to the standard and write the result to RESBUF.
|
||||
|
||||
IMPORTANT: On some systems it is required that RESBUF is correctly
|
||||
aligned for a 32 bits value. */
|
||||
void *
|
||||
md5_finish_ctx (ctx, resbuf)
|
||||
struct md5_ctx *ctx;
|
||||
void *resbuf;
|
||||
{
|
||||
/* Take yet unprocessed bytes into account. */
|
||||
md5_uint32 bytes = ctx->buflen;
|
||||
size_t pad;
|
||||
|
||||
/* Now count remaining bytes. */
|
||||
ctx->total[0] += bytes;
|
||||
if (ctx->total[0] < bytes)
|
||||
++ctx->total[1];
|
||||
|
||||
pad = bytes >= 56 ? 64 + 56 - bytes : 56 - bytes;
|
||||
memcpy (&ctx->buffer[bytes], fillbuf, pad);
|
||||
|
||||
/* Put the 64-bit file length in *bits* at the end of the buffer. */
|
||||
*(md5_uint32 *) &ctx->buffer[bytes + pad] = SWAP (ctx->total[0] << 3);
|
||||
*(md5_uint32 *) &ctx->buffer[bytes + pad + 4] = SWAP ((ctx->total[1] << 3) |
|
||||
(ctx->total[0] >> 29));
|
||||
|
||||
/* Process last bytes. */
|
||||
md5_process_block (ctx->buffer, bytes + pad + 8, ctx);
|
||||
|
||||
return md5_read_ctx (ctx, resbuf);
|
||||
}
|
||||
|
||||
/* Compute MD5 message digest for bytes read from STREAM. The
|
||||
resulting message digest number will be written into the 16 bytes
|
||||
beginning at RESBLOCK. */
|
||||
int
|
||||
md5_stream (stream, resblock)
|
||||
FILE *stream;
|
||||
void *resblock;
|
||||
{
|
||||
/* Important: BLOCKSIZE must be a multiple of 64. */
|
||||
#define BLOCKSIZE 4096
|
||||
struct md5_ctx ctx;
|
||||
char buffer[BLOCKSIZE + 72];
|
||||
size_t sum;
|
||||
|
||||
/* Initialize the computation context. */
|
||||
md5_init_ctx (&ctx);
|
||||
|
||||
/* Iterate over full file contents. */
|
||||
while (1)
|
||||
{
|
||||
/* We read the file in blocks of BLOCKSIZE bytes. One call of the
|
||||
computation function processes the whole buffer so that with the
|
||||
next round of the loop another block can be read. */
|
||||
size_t n;
|
||||
sum = 0;
|
||||
|
||||
/* Read block. Take care for partial reads. */
|
||||
do
|
||||
{
|
||||
n = fread (buffer + sum, 1, BLOCKSIZE - sum, stream);
|
||||
|
||||
sum += n;
|
||||
}
|
||||
while (sum < BLOCKSIZE && n != 0);
|
||||
if (n == 0 && ferror (stream))
|
||||
return 1;
|
||||
|
||||
/* If end of file is reached, end the loop. */
|
||||
if (n == 0)
|
||||
break;
|
||||
|
||||
/* Process buffer with BLOCKSIZE bytes. Note that
|
||||
BLOCKSIZE % 64 == 0
|
||||
*/
|
||||
md5_process_block (buffer, BLOCKSIZE, &ctx);
|
||||
}
|
||||
|
||||
/* Add the last bytes if necessary. */
|
||||
if (sum > 0)
|
||||
md5_process_bytes (buffer, sum, &ctx);
|
||||
|
||||
/* Construct result in desired memory. */
|
||||
md5_finish_ctx (&ctx, resblock);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Compute MD5 message digest for LEN bytes beginning at BUFFER. The
|
||||
result is always in little endian byte order, so that a byte-wise
|
||||
output yields to the wanted ASCII representation of the message
|
||||
digest. */
|
||||
void *
|
||||
md5_buffer (buffer, len, resblock)
|
||||
const char *buffer;
|
||||
size_t len;
|
||||
void *resblock;
|
||||
{
|
||||
struct md5_ctx ctx;
|
||||
|
||||
/* Initialize the computation context. */
|
||||
md5_init_ctx (&ctx);
|
||||
|
||||
/* Process whole buffer but last len % 64 bytes. */
|
||||
md5_process_bytes (buffer, len, &ctx);
|
||||
|
||||
/* Put result in desired memory area. */
|
||||
return md5_finish_ctx (&ctx, resblock);
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
md5_process_bytes (buffer, len, ctx)
|
||||
const void *buffer;
|
||||
size_t len;
|
||||
struct md5_ctx *ctx;
|
||||
{
|
||||
/* When we already have some bits in our internal buffer concatenate
|
||||
both inputs first. */
|
||||
if (ctx->buflen != 0)
|
||||
{
|
||||
size_t left_over = ctx->buflen;
|
||||
size_t add = 128 - left_over > len ? len : 128 - left_over;
|
||||
|
||||
memcpy (&ctx->buffer[left_over], buffer, add);
|
||||
ctx->buflen += add;
|
||||
|
||||
if (left_over + add > 64)
|
||||
{
|
||||
md5_process_block (ctx->buffer, (left_over + add) & ~63, ctx);
|
||||
/* The regions in the following copy operation cannot overlap. */
|
||||
memcpy (ctx->buffer, &ctx->buffer[(left_over + add) & ~63],
|
||||
(left_over + add) & 63);
|
||||
ctx->buflen = (left_over + add) & 63;
|
||||
}
|
||||
|
||||
buffer = (const char *) buffer + add;
|
||||
len -= add;
|
||||
}
|
||||
|
||||
/* Process available complete blocks. */
|
||||
if (len > 64)
|
||||
{
|
||||
md5_process_block (buffer, len & ~63, ctx);
|
||||
buffer = (const char *) buffer + (len & ~63);
|
||||
len &= 63;
|
||||
}
|
||||
|
||||
/* Move remaining bytes in internal buffer. */
|
||||
if (len > 0)
|
||||
{
|
||||
memcpy (ctx->buffer, buffer, len);
|
||||
ctx->buflen = len;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* These are the four functions used in the four steps of the MD5 algorithm
|
||||
and defined in the RFC 1321. The first function is a little bit optimized
|
||||
(as found in Colin Plumbs public domain implementation). */
|
||||
/* #define FF(b, c, d) ((b & c) | (~b & d)) */
|
||||
#define FF(b, c, d) (d ^ (b & (c ^ d)))
|
||||
#define FG(b, c, d) FF (d, b, c)
|
||||
#define FH(b, c, d) (b ^ c ^ d)
|
||||
#define FI(b, c, d) (c ^ (b | ~d))
|
||||
|
||||
/* Process LEN bytes of BUFFER, accumulating context into CTX.
|
||||
It is assumed that LEN % 64 == 0. */
|
||||
|
||||
void
|
||||
md5_process_block (buffer, len, ctx)
|
||||
const void *buffer;
|
||||
size_t len;
|
||||
struct md5_ctx *ctx;
|
||||
{
|
||||
md5_uint32 correct_words[16];
|
||||
const md5_uint32 *words = buffer;
|
||||
size_t nwords = len / sizeof (md5_uint32);
|
||||
const md5_uint32 *endp = words + nwords;
|
||||
md5_uint32 A = ctx->A;
|
||||
md5_uint32 B = ctx->B;
|
||||
md5_uint32 C = ctx->C;
|
||||
md5_uint32 D = ctx->D;
|
||||
|
||||
/* First increment the byte count. RFC 1321 specifies the possible
|
||||
length of the file up to 2^64 bits. Here we only compute the
|
||||
number of bytes. Do a double word increment. */
|
||||
ctx->total[0] += len;
|
||||
if (ctx->total[0] < len)
|
||||
++ctx->total[1];
|
||||
|
||||
/* Process all bytes in the buffer with 64 bytes in each round of
|
||||
the loop. */
|
||||
while (words < endp)
|
||||
{
|
||||
md5_uint32 *cwp = correct_words;
|
||||
md5_uint32 A_save = A;
|
||||
md5_uint32 B_save = B;
|
||||
md5_uint32 C_save = C;
|
||||
md5_uint32 D_save = D;
|
||||
|
||||
/* First round: using the given function, the context and a constant
|
||||
the next context is computed. Because the algorithms processing
|
||||
unit is a 32-bit word and it is determined to work on words in
|
||||
little endian byte order we perhaps have to change the byte order
|
||||
before the computation. To reduce the work for the next steps
|
||||
we store the swapped words in the array CORRECT_WORDS. */
|
||||
|
||||
#define OP(a, b, c, d, s, T) \
|
||||
do \
|
||||
{ \
|
||||
a += FF (b, c, d) + (*cwp++ = SWAP (*words)) + T; \
|
||||
++words; \
|
||||
a = rol (a, s); \
|
||||
a += b; \
|
||||
} \
|
||||
while (0)
|
||||
|
||||
/* Before we start, one word to the strange constants.
|
||||
They are defined in RFC 1321 as
|
||||
|
||||
T[i] = (int) (4294967296.0 * fabs (sin (i))), i=1..64, or
|
||||
perl -e 'foreach(1..64){printf "0x%08x\n", int (4294967296 * abs (sin $_))}'
|
||||
*/
|
||||
|
||||
/* Round 1. */
|
||||
OP (A, B, C, D, 7, 0xd76aa478);
|
||||
OP (D, A, B, C, 12, 0xe8c7b756);
|
||||
OP (C, D, A, B, 17, 0x242070db);
|
||||
OP (B, C, D, A, 22, 0xc1bdceee);
|
||||
OP (A, B, C, D, 7, 0xf57c0faf);
|
||||
OP (D, A, B, C, 12, 0x4787c62a);
|
||||
OP (C, D, A, B, 17, 0xa8304613);
|
||||
OP (B, C, D, A, 22, 0xfd469501);
|
||||
OP (A, B, C, D, 7, 0x698098d8);
|
||||
OP (D, A, B, C, 12, 0x8b44f7af);
|
||||
OP (C, D, A, B, 17, 0xffff5bb1);
|
||||
OP (B, C, D, A, 22, 0x895cd7be);
|
||||
OP (A, B, C, D, 7, 0x6b901122);
|
||||
OP (D, A, B, C, 12, 0xfd987193);
|
||||
OP (C, D, A, B, 17, 0xa679438e);
|
||||
OP (B, C, D, A, 22, 0x49b40821);
|
||||
|
||||
/* For the second to fourth round we have the possibly swapped words
|
||||
in CORRECT_WORDS. Redefine the macro to take an additional first
|
||||
argument specifying the function to use. */
|
||||
#undef OP
|
||||
#define OP(f, a, b, c, d, k, s, T) \
|
||||
do \
|
||||
{ \
|
||||
a += f (b, c, d) + correct_words[k] + T; \
|
||||
a = rol (a, s); \
|
||||
a += b; \
|
||||
} \
|
||||
while (0)
|
||||
|
||||
/* Round 2. */
|
||||
OP (FG, A, B, C, D, 1, 5, 0xf61e2562);
|
||||
OP (FG, D, A, B, C, 6, 9, 0xc040b340);
|
||||
OP (FG, C, D, A, B, 11, 14, 0x265e5a51);
|
||||
OP (FG, B, C, D, A, 0, 20, 0xe9b6c7aa);
|
||||
OP (FG, A, B, C, D, 5, 5, 0xd62f105d);
|
||||
OP (FG, D, A, B, C, 10, 9, 0x02441453);
|
||||
OP (FG, C, D, A, B, 15, 14, 0xd8a1e681);
|
||||
OP (FG, B, C, D, A, 4, 20, 0xe7d3fbc8);
|
||||
OP (FG, A, B, C, D, 9, 5, 0x21e1cde6);
|
||||
OP (FG, D, A, B, C, 14, 9, 0xc33707d6);
|
||||
OP (FG, C, D, A, B, 3, 14, 0xf4d50d87);
|
||||
OP (FG, B, C, D, A, 8, 20, 0x455a14ed);
|
||||
OP (FG, A, B, C, D, 13, 5, 0xa9e3e905);
|
||||
OP (FG, D, A, B, C, 2, 9, 0xfcefa3f8);
|
||||
OP (FG, C, D, A, B, 7, 14, 0x676f02d9);
|
||||
OP (FG, B, C, D, A, 12, 20, 0x8d2a4c8a);
|
||||
|
||||
/* Round 3. */
|
||||
OP (FH, A, B, C, D, 5, 4, 0xfffa3942);
|
||||
OP (FH, D, A, B, C, 8, 11, 0x8771f681);
|
||||
OP (FH, C, D, A, B, 11, 16, 0x6d9d6122);
|
||||
OP (FH, B, C, D, A, 14, 23, 0xfde5380c);
|
||||
OP (FH, A, B, C, D, 1, 4, 0xa4beea44);
|
||||
OP (FH, D, A, B, C, 4, 11, 0x4bdecfa9);
|
||||
OP (FH, C, D, A, B, 7, 16, 0xf6bb4b60);
|
||||
OP (FH, B, C, D, A, 10, 23, 0xbebfbc70);
|
||||
OP (FH, A, B, C, D, 13, 4, 0x289b7ec6);
|
||||
OP (FH, D, A, B, C, 0, 11, 0xeaa127fa);
|
||||
OP (FH, C, D, A, B, 3, 16, 0xd4ef3085);
|
||||
OP (FH, B, C, D, A, 6, 23, 0x04881d05);
|
||||
OP (FH, A, B, C, D, 9, 4, 0xd9d4d039);
|
||||
OP (FH, D, A, B, C, 12, 11, 0xe6db99e5);
|
||||
OP (FH, C, D, A, B, 15, 16, 0x1fa27cf8);
|
||||
OP (FH, B, C, D, A, 2, 23, 0xc4ac5665);
|
||||
|
||||
/* Round 4. */
|
||||
OP (FI, A, B, C, D, 0, 6, 0xf4292244);
|
||||
OP (FI, D, A, B, C, 7, 10, 0x432aff97);
|
||||
OP (FI, C, D, A, B, 14, 15, 0xab9423a7);
|
||||
OP (FI, B, C, D, A, 5, 21, 0xfc93a039);
|
||||
OP (FI, A, B, C, D, 12, 6, 0x655b59c3);
|
||||
OP (FI, D, A, B, C, 3, 10, 0x8f0ccc92);
|
||||
OP (FI, C, D, A, B, 10, 15, 0xffeff47d);
|
||||
OP (FI, B, C, D, A, 1, 21, 0x85845dd1);
|
||||
OP (FI, A, B, C, D, 8, 6, 0x6fa87e4f);
|
||||
OP (FI, D, A, B, C, 15, 10, 0xfe2ce6e0);
|
||||
OP (FI, C, D, A, B, 6, 15, 0xa3014314);
|
||||
OP (FI, B, C, D, A, 13, 21, 0x4e0811a1);
|
||||
OP (FI, A, B, C, D, 4, 6, 0xf7537e82);
|
||||
OP (FI, D, A, B, C, 11, 10, 0xbd3af235);
|
||||
OP (FI, C, D, A, B, 2, 15, 0x2ad7d2bb);
|
||||
OP (FI, B, C, D, A, 9, 21, 0xeb86d391);
|
||||
|
||||
/* Add the starting values of the context. */
|
||||
A += A_save;
|
||||
B += B_save;
|
||||
C += C_save;
|
||||
D += D_save;
|
||||
}
|
||||
|
||||
/* Put checksum in context given as argument. */
|
||||
ctx->A = A;
|
||||
ctx->B = B;
|
||||
ctx->C = C;
|
||||
ctx->D = D;
|
||||
}
|
@ -0,0 +1,162 @@
|
||||
/* -*- c-basic-offset: 2; indent-tabs-mode: nil -*- */
|
||||
/* md5.h - Declaration of functions and data types used for MD5 sum
|
||||
computing library functions.
|
||||
Copyright (C) 1995, 1996, 1999 Free Software Foundation, Inc.
|
||||
NOTE: The canonical source of this file is maintained with the GNU C
|
||||
Library. Bugs can be reported to bug-glibc@prep.ai.mit.edu.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2, or (at your option) any
|
||||
later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software Foundation,
|
||||
Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
|
||||
|
||||
#ifndef _MD5_H
|
||||
#define _MD5_H
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
#if defined HAVE_LIMITS_H || _LIBC
|
||||
# include <limits.h>
|
||||
#endif
|
||||
|
||||
/* The following contortions are an attempt to use the C preprocessor
|
||||
to determine an unsigned integral type that is 32 bits wide. An
|
||||
alternative approach is to use autoconf's AC_CHECK_SIZEOF macro, but
|
||||
doing that would require that the configure script compile and *run*
|
||||
the resulting executable. Locally running cross-compiled executables
|
||||
is usually not possible. */
|
||||
|
||||
#ifdef _LIBC
|
||||
# include <sys/types.h>
|
||||
typedef u_int32_t md5_uint32;
|
||||
#else
|
||||
# if defined __STDC__ && __STDC__
|
||||
# define UINT_MAX_32_BITS 4294967295U
|
||||
# else
|
||||
# define UINT_MAX_32_BITS 0xFFFFFFFF
|
||||
# endif
|
||||
|
||||
/* If UINT_MAX isn't defined, assume it's a 32-bit type.
|
||||
This should be valid for all systems GNU cares about because
|
||||
that doesn't include 16-bit systems, and only modern systems
|
||||
(that certainly have <limits.h>) have 64+-bit integral types. */
|
||||
|
||||
# ifndef UINT_MAX
|
||||
# define UINT_MAX UINT_MAX_32_BITS
|
||||
# endif
|
||||
|
||||
# if UINT_MAX == UINT_MAX_32_BITS
|
||||
typedef unsigned int md5_uint32;
|
||||
# else
|
||||
# if USHRT_MAX == UINT_MAX_32_BITS
|
||||
typedef unsigned short md5_uint32;
|
||||
# else
|
||||
# if ULONG_MAX == UINT_MAX_32_BITS
|
||||
typedef unsigned long md5_uint32;
|
||||
# else
|
||||
/* The following line is intended to evoke an error.
|
||||
Using #error is not portable enough. */
|
||||
"Cannot determine unsigned 32-bit data type."
|
||||
# endif
|
||||
# endif
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#undef __P
|
||||
#if defined (__STDC__) && __STDC__
|
||||
#define __P(x) x
|
||||
#else
|
||||
#define __P(x) ()
|
||||
#endif
|
||||
|
||||
/* Structure to save state of computation between the single steps. */
|
||||
struct md5_ctx
|
||||
{
|
||||
md5_uint32 A;
|
||||
md5_uint32 B;
|
||||
md5_uint32 C;
|
||||
md5_uint32 D;
|
||||
|
||||
md5_uint32 total[2];
|
||||
md5_uint32 buflen;
|
||||
char buffer[128];
|
||||
};
|
||||
|
||||
/*
|
||||
* The following three functions are build up the low level used in
|
||||
* the functions `md5_stream' and `md5_buffer'.
|
||||
*/
|
||||
|
||||
/* Initialize structure containing state of computation.
|
||||
(RFC 1321, 3.3: Step 3) */
|
||||
extern void md5_init_ctx __P ((struct md5_ctx *ctx));
|
||||
|
||||
/* Starting with the result of former calls of this function (or the
|
||||
initialization function update the context for the next LEN bytes
|
||||
starting at BUFFER.
|
||||
It is necessary that LEN is a multiple of 64!!! */
|
||||
extern void md5_process_block __P ((const void *buffer, size_t len,
|
||||
struct md5_ctx *ctx));
|
||||
|
||||
/* Starting with the result of former calls of this function (or the
|
||||
initialization function update the context for the next LEN bytes
|
||||
starting at BUFFER.
|
||||
It is NOT required that LEN is a multiple of 64. */
|
||||
extern void md5_process_bytes __P ((const void *buffer, size_t len,
|
||||
struct md5_ctx *ctx));
|
||||
|
||||
/* Process the remaining bytes in the buffer and put result from CTX
|
||||
in first 16 bytes following RESBUF. The result is always in little
|
||||
endian byte order, so that a byte-wise output yields to the wanted
|
||||
ASCII representation of the message digest.
|
||||
|
||||
IMPORTANT: On some systems it is required that RESBUF be correctly
|
||||
aligned for a 32 bits value. */
|
||||
extern void *md5_finish_ctx __P ((struct md5_ctx *ctx, void *resbuf));
|
||||
|
||||
|
||||
/* Put result from CTX in first 16 bytes following RESBUF. The result is
|
||||
always in little endian byte order, so that a byte-wise output yields
|
||||
to the wanted ASCII representation of the message digest.
|
||||
|
||||
IMPORTANT: On some systems it is required that RESBUF is correctly
|
||||
aligned for a 32 bits value. */
|
||||
extern void *md5_read_ctx __P ((const struct md5_ctx *ctx, void *resbuf));
|
||||
|
||||
|
||||
/* Compute MD5 message digest for bytes read from STREAM. The
|
||||
resulting message digest number will be written into the 16 bytes
|
||||
beginning at RESBLOCK. */
|
||||
extern int md5_stream __P ((FILE *stream, void *resblock));
|
||||
|
||||
/* Compute MD5 message digest for LEN bytes beginning at BUFFER. The
|
||||
result is always in little endian byte order, so that a byte-wise
|
||||
output yields to the wanted ASCII representation of the message
|
||||
digest. */
|
||||
extern void *md5_buffer __P ((const char *buffer, size_t len, void *resblock));
|
||||
|
||||
/* The following is from gnupg-1.0.2's cipher/bithelp.h. */
|
||||
/* Rotate a 32 bit integer by n bytes */
|
||||
#if defined __GNUC__ && defined __i386__
|
||||
static md5_uint32
|
||||
rol(md5_uint32 x, int n)
|
||||
{
|
||||
__asm__("roll %%cl,%0"
|
||||
:"=r" (x)
|
||||
:"0" (x),"c" (n));
|
||||
return x;
|
||||
}
|
||||
#else
|
||||
# define rol(x,n) ( ((x) << (n)) | ((x) >> (32-(n))) )
|
||||
#endif
|
||||
|
||||
#endif
|
@ -0,0 +1,8 @@
|
||||
INCLUDES = -I$(top_srcdir)/dvdread -I$(top_srcdir)/libk9copy $(all_includes)
|
||||
METASOURCES = AUTO
|
||||
|
||||
noinst_LTLIBRARIES = libk9mplayer.la
|
||||
libk9mplayer_la_SOURCES = mplayer.ui k9mplayer.cpp
|
||||
|
||||
libk9mplayer_la_LIBADD = $(top_builddir)/libdvdnav/libk9dvdnav.la
|
||||
noinst_HEADERS = k9mplayer.h
|
@ -0,0 +1,234 @@
|
||||
|
||||
#include "k9common.h"
|
||||
#include "k9config.h"
|
||||
#include <qlayout.h>
|
||||
#include <qslider.h>
|
||||
#include <kselect.h>
|
||||
#include "k9mplayer.h"
|
||||
#include <qcombobox.h>
|
||||
#include <kiconloader.h>
|
||||
#include <kpushbutton.h>
|
||||
#include "k9dvd.h"
|
||||
#include "k9dvdtitle.h"
|
||||
#include <kprocess.h>
|
||||
#include <qlabel.h>
|
||||
#include <qtimer.h>
|
||||
#include <qapplication.h>
|
||||
#include <qevent.h>
|
||||
#include <klocale.h>
|
||||
#include <kmessagebox.h>
|
||||
|
||||
K9Mplayer::K9Mplayer(QObject *parent,const char *name,const QStringList args):MPlayer((QWidget*)parent) {
|
||||
m_seeking=FALSE;
|
||||
m_initVol=TRUE;
|
||||
m_title=0;
|
||||
|
||||
m_process=new KProcess(this);
|
||||
m_ratio=4.0/3.0;
|
||||
|
||||
slider->setRange(0, 100);
|
||||
slider->setSteps(1, 1);
|
||||
bPlay->setPixmap(SmallIcon("player_play"));
|
||||
bStop->setPixmap(SmallIcon("player_stop"));
|
||||
bSwitchAudio->setPixmap(SmallIcon("cycle"));
|
||||
connect(m_process,SIGNAL(receivedStdout( KProcess*, char*, int )),this,SLOT(receivedStdout( KProcess*, char*, int )));
|
||||
m_timer=new QTimer(this);
|
||||
connect(m_process,SIGNAL(wroteStdin( KProcess* )),this,SLOT(wroteStdin( KProcess* )));
|
||||
connect(m_timer,SIGNAL(timeout()),this,SLOT(timeout()));
|
||||
m_container=new QWidget(Label);
|
||||
}
|
||||
|
||||
|
||||
K9Mplayer::~K9Mplayer() {}
|
||||
|
||||
void K9Mplayer::resizeEvent ( QResizeEvent * _resizeEvent) {
|
||||
int w,h;
|
||||
w=Label->width();
|
||||
h=Label->width() /m_ratio;
|
||||
if (h>Label->height()) {
|
||||
h=Label->height();
|
||||
w=Label->height()*m_ratio;
|
||||
}
|
||||
|
||||
m_container->resize(w,h);
|
||||
m_container->move((Label->width()-w)/2,(Label->height()-h)/2);
|
||||
}
|
||||
|
||||
|
||||
void K9Mplayer::wroteStdin( KProcess *_process) {
|
||||
m_canwrite = TRUE;
|
||||
}
|
||||
|
||||
void K9Mplayer::timeout() {
|
||||
sendCmd( "get_percent_pos");
|
||||
|
||||
}
|
||||
|
||||
void K9Mplayer::setDevice(const QString & _device) {
|
||||
m_device=_device;
|
||||
}
|
||||
|
||||
|
||||
void K9Mplayer::setTitle( const QString & _numTitle,const QString &_numChapter) {
|
||||
if (m_process->isRunning()) {
|
||||
sendCmd("quit");
|
||||
m_process->wait( 1000);
|
||||
}
|
||||
k9Config config;
|
||||
QString vout[]= {"x11","xv","gl2","sdl"};
|
||||
QString aout[]= {"alsa","oss","sdl"};
|
||||
QString vo=vout[config.getMplayerVout()];
|
||||
QString ao=aout[config.getMplayerAout()];
|
||||
|
||||
|
||||
m_process->clearArguments();
|
||||
*m_process << "mplayer";
|
||||
*m_process << "-vo" << vo << "-ao" << ao << "-sws" << "0";
|
||||
*m_process << "-framedrop";
|
||||
*m_process << "-wid" << QString::number(m_container->winId()) ;
|
||||
*m_process << "-slave" ;
|
||||
*m_process << "-idle";
|
||||
*m_process << "-dvd-device" << m_device;
|
||||
if (_numChapter !="")
|
||||
*m_process << "-chapter" << _numChapter;
|
||||
|
||||
*m_process << QString("dvd://%1").arg(_numTitle);
|
||||
if (!m_process->start( KProcess::NotifyOnExit,KProcess::All)) {
|
||||
KMessageBox::error (qApp->mainWidget(),i18n("Unable to run %1").arg("mplayer") , i18n("Preview"));
|
||||
}
|
||||
m_canwrite=TRUE;
|
||||
|
||||
m_position=0;
|
||||
slider->setValue(m_position);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/*$SPECIALIZATION$*/
|
||||
|
||||
void K9Mplayer::receivedStdout (KProcess *proc, char *buffer, int buflen) {
|
||||
QString buf = QString::fromLatin1(buffer, buflen);
|
||||
sscanf(buf.latin1(),"ANS_PERCENT_POSITION=%d",&m_position);
|
||||
if (!m_seeking && m_position>0) {
|
||||
slider->setValue(m_position);
|
||||
}
|
||||
int audio=0;
|
||||
if (buf.contains("ANS_switch_audio"))
|
||||
sscanf(buf.latin1(),"ANS_switch_audio=%d",&audio);
|
||||
if (audio >0) {
|
||||
for (int i=0;i < m_dvdTitle->getaudioStreamCount();i++) {
|
||||
k9DVDAudioStream * str=m_dvdTitle->getaudioStream(i);
|
||||
if (str->getStreamId() == audio) {
|
||||
cbAudio->setCurrentItem(i);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void K9Mplayer::slotLengthChanged() {}
|
||||
|
||||
void K9Mplayer::slotNewPosition(int _pos,const QTime & _time) {
|
||||
slider->setValue(_pos);
|
||||
|
||||
}
|
||||
|
||||
void K9Mplayer::sliderReleased() {
|
||||
sendCmd( QString("seek %1 1").arg((int)slider->value()));
|
||||
m_seeking=FALSE;
|
||||
}
|
||||
|
||||
void K9Mplayer::sliderChanged( int _value) {}
|
||||
|
||||
void K9Mplayer::sliderPressed() {
|
||||
m_seeking=TRUE;
|
||||
|
||||
}
|
||||
|
||||
void K9Mplayer::bPlayClick() {
|
||||
setTitle(QString::number( m_title),"");
|
||||
}
|
||||
|
||||
void K9Mplayer::bStopClick() {
|
||||
sendCmd("quit");
|
||||
}
|
||||
|
||||
|
||||
void K9Mplayer::bDownClick() {
|
||||
sendCmd( QString("volume -1"));
|
||||
|
||||
}
|
||||
|
||||
void K9Mplayer::bSwitchAudioClick() {
|
||||
sendCmd( QString("switch_audio"));
|
||||
sendCmd( QString("get_property switch_audio"));
|
||||
}
|
||||
|
||||
void K9Mplayer::bUpClick() {
|
||||
sendCmd( QString("volume +1"));
|
||||
|
||||
}
|
||||
|
||||
|
||||
void K9Mplayer::open( k9DVD *_dvd,k9DVDTitle *_title,int chapter) {
|
||||
cbSub->clear();
|
||||
cbAudio->clear();
|
||||
for (int i=0; i< _title->getaudioStreamCount();i++) {
|
||||
k9DVDAudioStream *aud=_title->getaudioStream(i);
|
||||
cbAudio->insertItem(NULL,QString("%1-%2").arg(aud->getID()).arg(aud->getlanguage()),-1);
|
||||
}
|
||||
|
||||
for (int i=0; i< _title->getsubPictureCount();i++) {
|
||||
k9DVDSubtitle *sub=_title->getsubtitle(i);
|
||||
cbSub->insertItem(NULL,QString("%1-%2").arg(sub->getID().first()).arg(sub->getlanguage()),-1);
|
||||
}
|
||||
|
||||
if(_title->getaspectRatio()=="16:9")
|
||||
m_ratio=16.0/9.0;
|
||||
else
|
||||
m_ratio=4.0/3.0;
|
||||
resizeEvent( NULL);
|
||||
|
||||
setDevice( _dvd->getDevice());
|
||||
m_dvdTitle=_title;
|
||||
m_title=_title->getnumTitle();
|
||||
setTitle( QString::number(m_title),QString::number(chapter));
|
||||
if (_title->getaudioStreamCount() >0)
|
||||
cbAudioActivated( 0);
|
||||
if (_title->getsubPictureCount() >0)
|
||||
cbSubActivated( 0);
|
||||
if (!m_timer->isActive())
|
||||
m_timer->start(200,FALSE);
|
||||
|
||||
}
|
||||
|
||||
void K9Mplayer::titleChanged() {}
|
||||
|
||||
void K9Mplayer::cbAudioActivated( int _value) {
|
||||
if (m_dvdTitle) {
|
||||
int value=m_dvdTitle->getaudioStream( _value)->getStreamId();
|
||||
sendCmd(QString( "switch_audio %1").arg(value));
|
||||
}
|
||||
}
|
||||
|
||||
void K9Mplayer::cbSubActivated( int _value) {
|
||||
sendCmd(QString("sub_select %1").arg(_value));
|
||||
|
||||
}
|
||||
|
||||
|
||||
void K9Mplayer::sendCmd( QString _cmd) {
|
||||
while (!m_canwrite) {
|
||||
qApp->processEvents();
|
||||
if ( !m_process->isRunning())
|
||||
return;
|
||||
}
|
||||
|
||||
_cmd +="\n";
|
||||
m_canwrite=FALSE;
|
||||
m_process->writeStdin( _cmd.latin1() ,_cmd.length());
|
||||
|
||||
}
|
||||
|
||||
#include "k9mplayer.moc"
|
||||
|
@ -0,0 +1,66 @@
|
||||
|
||||
#ifndef K9Mplayer_H
|
||||
#define K9Mplayer_H
|
||||
|
||||
#include "k9common.h"
|
||||
#include "../k9Mplayer/mplayer.h"
|
||||
|
||||
|
||||
class k9DVD;
|
||||
class k9DVDTitle;
|
||||
class KProcess;
|
||||
class QTimer;
|
||||
class QResizeEvent;
|
||||
|
||||
class K9Mplayer : public MPlayer
|
||||
{
|
||||
Q_OBJECT
|
||||
private:
|
||||
KProcess *m_process;
|
||||
bool m_seeking,m_initVol;
|
||||
int m_title;
|
||||
k9DVDTitle *m_dvdTitle;
|
||||
QString m_device;
|
||||
QTimer *m_timer;
|
||||
void sendCmd(QString _cmd);
|
||||
int m_position;
|
||||
bool m_canwrite;
|
||||
QWidget *m_container;
|
||||
float m_ratio;
|
||||
public:
|
||||
//K9Mplayer(QWidget* parent = 0, const char* name = 0, WFlags fl = 0 );
|
||||
K9Mplayer(QObject *parent=0,const char *name=0,const QStringList args=0);
|
||||
~K9Mplayer();
|
||||
/*$PUBLIC_FUNCTIONS$*/
|
||||
void setDevice(const QString & _device);
|
||||
void setTitle(const QString & _numTitle,const QString &_numChapter);
|
||||
private slots:
|
||||
void slotLengthChanged();
|
||||
void slotNewPosition(int _pos,const QTime & _time);
|
||||
void receivedStdout (KProcess *proc, char *buffer, int buflen);
|
||||
void wroteStdin(KProcess *_process);
|
||||
void timeout();
|
||||
public slots:
|
||||
/*$PUBLIC_SLOTS$*/
|
||||
virtual void sliderReleased();
|
||||
virtual void bPlayClick();
|
||||
virtual void bStopClick();
|
||||
virtual void sliderPressed();
|
||||
virtual void sliderChanged(int _value);
|
||||
virtual void open(k9DVD *_dvd,k9DVDTitle *_title,int chapter);
|
||||
virtual void titleChanged();
|
||||
virtual void cbAudioActivated (int _value);
|
||||
virtual void cbSubActivated (int _value);
|
||||
virtual void bUpClick();
|
||||
virtual void bDownClick();
|
||||
virtual void bSwitchAudioClick();
|
||||
protected:
|
||||
/*$PROTECTED_FUNCTIONS$*/
|
||||
void resizeEvent ( QResizeEvent * _resiseEvent);
|
||||
protected slots:
|
||||
/*$PROTECTED_SLOTS$*/
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
|
@ -0,0 +1,663 @@
|
||||
#include <klocale.h>
|
||||
/****************************************************************************
|
||||
** Form implementation generated from reading ui file './mplayer.ui'
|
||||
**
|
||||
** Created: dim. oct. 26 08:55:16 2008
|
||||
**
|
||||
** WARNING! All changes made in this file will be lost!
|
||||
****************************************************************************/
|
||||
|
||||
#include "mplayer.h"
|
||||
|
||||
#include <qvariant.h>
|
||||
#include <qpushbutton.h>
|
||||
#include <qlabel.h>
|
||||
#include <qcombobox.h>
|
||||
#include <kpushbutton.h>
|
||||
#include <qslider.h>
|
||||
#include <qframe.h>
|
||||
#include <qlayout.h>
|
||||
#include <qtooltip.h>
|
||||
#include <qwhatsthis.h>
|
||||
#include <qimage.h>
|
||||
#include <qpixmap.h>
|
||||
|
||||
#include "kicondialog.h"
|
||||
#include "kpushbutton.h"
|
||||
static const unsigned char img0_mplayer[] = {
|
||||
0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d,
|
||||
0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, 0x27,
|
||||
0x08, 0x06, 0x00, 0x00, 0x00, 0x9f, 0x74, 0x11, 0xc1, 0x00, 0x00, 0x05,
|
||||
0x28, 0x49, 0x44, 0x41, 0x54, 0x58, 0x85, 0xed, 0x59, 0x7d, 0x6c, 0x53,
|
||||
0x55, 0x14, 0xff, 0xdd, 0xb7, 0x96, 0xc2, 0xf8, 0x18, 0x44, 0xe6, 0x24,
|
||||
0x23, 0xac, 0x54, 0x37, 0x4d, 0x8b, 0x5a, 0xa6, 0x83, 0x65, 0x23, 0x92,
|
||||
0xf8, 0x0f, 0x11, 0x03, 0xc9, 0x02, 0xcd, 0x08, 0x09, 0x9b, 0x6e, 0x2c,
|
||||
0xa2, 0xb8, 0xfd, 0x83, 0xe0, 0x18, 0x6e, 0x44, 0xd4, 0x2c, 0x59, 0x20,
|
||||
0x28, 0x06, 0xe5, 0x63, 0x84, 0x00, 0xe2, 0xf6, 0xc7, 0x16, 0x97, 0x99,
|
||||
0x2c, 0x24, 0x10, 0x15, 0x71, 0x8f, 0xca, 0xe6, 0x36, 0x89, 0x20, 0x5f,
|
||||
0x5b, 0x67, 0x07, 0x03, 0x44, 0x2c, 0xa2, 0x6c, 0x6b, 0x37, 0xee, 0xf1,
|
||||
0x8f, 0xf2, 0xae, 0x7d, 0x7d, 0xaf, 0xeb, 0x74, 0xfd, 0xd0, 0xc4, 0x5f,
|
||||
0xd2, 0xe4, 0xde, 0x7b, 0xce, 0x3b, 0xfd, 0x9d, 0x93, 0x73, 0xce, 0xbd,
|
||||
0xef, 0x3e, 0x26, 0xcb, 0x32, 0xfe, 0x6d, 0xa8, 0xdb, 0x7f, 0x91, 0xa4,
|
||||
0x04, 0x86, 0xfc, 0xa2, 0x0c, 0x36, 0x9a, 0x9e, 0x21, 0x56, 0x84, 0x82,
|
||||
0xd1, 0xd2, 0xe0, 0xa6, 0x93, 0xc7, 0x7f, 0xc4, 0xc8, 0xc8, 0xfd, 0x90,
|
||||
0x3a, 0x67, 0x5a, 0xaf, 0x10, 0x63, 0x0c, 0xdb, 0x6b, 0x5f, 0xd0, 0x75,
|
||||
0x82, 0x45, 0x33, 0xf2, 0x1d, 0xad, 0x77, 0xa9, 0xb1, 0xee, 0x0c, 0x06,
|
||||
0xef, 0x79, 0xc1, 0xa4, 0x51, 0x83, 0x18, 0x16, 0x3b, 0x0e, 0x2c, 0xd5,
|
||||
0x18, 0x18, 0x37, 0xf9, 0x96, 0x06, 0x37, 0x9d, 0xed, 0x70, 0xe3, 0x46,
|
||||
0xff, 0x1d, 0x24, 0x24, 0x48, 0xe3, 0xb2, 0x15, 0x0e, 0xc1, 0x0e, 0x8c,
|
||||
0x29, 0x6d, 0x5a, 0x1a, 0xdc, 0xd4, 0x7d, 0xe9, 0x26, 0x2e, 0x5f, 0xb8,
|
||||
0x01, 0xa3, 0x31, 0x41, 0x57, 0x27, 0xda, 0xc4, 0xf5, 0xa0, 0x22, 0x3f,
|
||||
0xc3, 0x96, 0x45, 0xb9, 0x5f, 0xde, 0xc6, 0x2f, 0xcb, 0x1f, 0x56, 0x29,
|
||||
0x65, 0x67, 0x67, 0xc7, 0x94, 0x54, 0x20, 0x18, 0x63, 0x70, 0x2c, 0xd9,
|
||||
0x89, 0x6b, 0x7d, 0xbf, 0x6a, 0x65, 0xb2, 0x2c, 0xc3, 0x95, 0x6a, 0xa7,
|
||||
0x92, 0xf6, 0xdf, 0xf0, 0x5c, 0xf2, 0x04, 0xb4, 0x2c, 0x9a, 0x11, 0x07,
|
||||
0x8a, 0xe1, 0xc1, 0x18, 0xc3, 0xe9, 0xd3, 0xa7, 0x55, 0x69, 0xc3, 0x9a,
|
||||
0xae, 0x0d, 0xd2, 0x6a, 0xe7, 0x1d, 0x00, 0xc0, 0x1f, 0x79, 0x29, 0x71,
|
||||
0x21, 0x36, 0x56, 0x04, 0x3b, 0x20, 0x29, 0xc4, 0x3f, 0x9c, 0x3f, 0x2d,
|
||||
0x6e, 0xa4, 0xc6, 0x0a, 0x22, 0x52, 0xcd, 0x45, 0x95, 0xad, 0x49, 0x9b,
|
||||
0x14, 0x73, 0x32, 0xe3, 0x85, 0x20, 0x6f, 0x1c, 0x67, 0x1f, 0x8e, 0x07,
|
||||
0x62, 0xdf, 0xdf, 0x22, 0x88, 0xff, 0xc9, 0xc7, 0x12, 0x5b, 0x87, 0x1f,
|
||||
0x17, 0x55, 0xfb, 0x9f, 0x23, 0xff, 0xc5, 0xcf, 0x3e, 0x31, 0x36, 0x10,
|
||||
0x00, 0xbd, 0x52, 0x65, 0xcc, 0xbf, 0xaa, 0xb4, 0xa7, 0xc0, 0xb9, 0x32,
|
||||
0x56, 0xa0, 0xa7, 0x13, 0x2d, 0x4c, 0x0c, 0x38, 0x9d, 0x18, 0xa6, 0x19,
|
||||
0x24, 0xfc, 0x3e, 0xc2, 0x35, 0x4a, 0x39, 0xd6, 0x4a, 0x00, 0x80, 0x7c,
|
||||
0xfe, 0x1d, 0x10, 0x91, 0x98, 0xb7, 0x9e, 0xdb, 0x86, 0xa1, 0xa1, 0x61,
|
||||
0x3c, 0x9f, 0xb9, 0x4d, 0xe8, 0xee, 0x3e, 0x54, 0x0c, 0xfb, 0xb3, 0x69,
|
||||
0x00, 0xfc, 0x0e, 0x70, 0xae, 0xb5, 0x17, 0x29, 0x04, 0xc6, 0x45, 0xaa,
|
||||
0xb2, 0x4e, 0x1e, 0x55, 0xb9, 0xb4, 0xe8, 0xa0, 0x26, 0xd2, 0x0a, 0x76,
|
||||
0x1f, 0x2a, 0x46, 0xeb, 0xb9, 0x6d, 0x58, 0x5f, 0x78, 0x00, 0x00, 0xe0,
|
||||
0xf5, 0x7a, 0x23, 0x46, 0x72, 0x2c, 0x90, 0xe6, 0xdf, 0x3a, 0x1b, 0xb2,
|
||||
0xc1, 0x3f, 0x9a, 0x91, 0x82, 0xef, 0x9c, 0x3d, 0xc8, 0x7e, 0xe2, 0x2d,
|
||||
0xf8, 0x7c, 0x23, 0x00, 0x10, 0xd2, 0x11, 0x00, 0xb0, 0x58, 0x2c, 0x62,
|
||||
0x6c, 0x30, 0x18, 0x60, 0xb7, 0xdb, 0xe1, 0x76, 0xbb, 0x21, 0x49, 0xfe,
|
||||
0xd2, 0x6a, 0x6b, 0x6b, 0x13, 0x63, 0x49, 0x92, 0x34, 0x63, 0x49, 0x92,
|
||||
0xe0, 0xf5, 0x7a, 0x61, 0xb1, 0x58, 0x60, 0xb1, 0x58, 0x54, 0x3a, 0xba,
|
||||
0xe4, 0xf5, 0x16, 0x15, 0x82, 0x47, 0x9a, 0x5e, 0x7f, 0x60, 0x9c, 0xa1,
|
||||
0xfd, 0x4a, 0x35, 0x00, 0xa0, 0xb3, 0xad, 0x57, 0xe8, 0xbd, 0x56, 0x50,
|
||||
0x8b, 0x85, 0x19, 0x5b, 0xb0, 0xfb, 0x50, 0x31, 0x00, 0xa0, 0xbf, 0xbf,
|
||||
0x1f, 0xbb, 0x76, 0xed, 0x12, 0xa9, 0xd3, 0xd5, 0xd5, 0x85, 0xb2, 0xb2,
|
||||
0x32, 0xa1, 0x9f, 0x92, 0xa2, 0x3e, 0x3b, 0xf9, 0x7c, 0x3e, 0x78, 0x3c,
|
||||
0x1e, 0x00, 0x7f, 0xd5, 0x89, 0xc9, 0x64, 0x82, 0xcb, 0xe5, 0x42, 0x6f,
|
||||
0x6f, 0x2f, 0x38, 0xe7, 0xa8, 0xad, 0xad, 0xd5, 0xf0, 0xab, 0x9f, 0x68,
|
||||
0xa3, 0x90, 0xe4, 0xdd, 0x3f, 0xdd, 0x16, 0x06, 0x89, 0x93, 0xca, 0x78,
|
||||
0x75, 0x55, 0x93, 0xd0, 0xfb, 0xe8, 0xf0, 0x5a, 0x7c, 0x7b, 0xe9, 0x3d,
|
||||
0x91, 0xef, 0x00, 0x50, 0x5a, 0x5a, 0x8a, 0xab, 0x57, 0xaf, 0x8a, 0x79,
|
||||
0x73, 0x73, 0x33, 0xf2, 0xf2, 0xf2, 0xc4, 0x3c, 0x30, 0x92, 0x46, 0xa3,
|
||||
0x11, 0x9b, 0x37, 0x6f, 0x06, 0x00, 0x14, 0x16, 0x16, 0x8a, 0x5a, 0x59,
|
||||
0xb7, 0x6e, 0x9d, 0xd0, 0x29, 0x2a, 0x2a, 0xd2, 0xf0, 0x3b, 0xd8, 0x3b,
|
||||
0xe8, 0x1f, 0xc8, 0xb2, 0x8c, 0xc4, 0xc6, 0xeb, 0x44, 0x44, 0xc4, 0x39,
|
||||
0x27, 0xce, 0x39, 0xcd, 0x4b, 0xdd, 0x40, 0x59, 0xe9, 0x15, 0xc4, 0x39,
|
||||
0x27, 0x22, 0xa2, 0x93, 0x27, 0xce, 0x13, 0xe7, 0x9c, 0xb2, 0xd2, 0x2b,
|
||||
0x28, 0x73, 0xee, 0x9b, 0x34, 0x38, 0xe0, 0xa3, 0xac, 0xf4, 0x0a, 0xea,
|
||||
0x38, 0xe3, 0x12, 0xcf, 0x70, 0xce, 0x09, 0x80, 0x6a, 0x0c, 0x80, 0x3a,
|
||||
0x3b, 0x3b, 0xc9, 0xef, 0x3b, 0x91, 0xc3, 0xe1, 0x20, 0x87, 0xc3, 0x21,
|
||||
0x64, 0xc1, 0xba, 0x05, 0x05, 0x05, 0x62, 0x6e, 0x36, 0x9b, 0x55, 0xb6,
|
||||
0x95, 0x5f, 0x62, 0xe3, 0x75, 0x4a, 0x6c, 0xbc, 0x4e, 0xb2, 0x2c, 0xfb,
|
||||
0xcf, 0xf3, 0x8b, 0xfb, 0xe7, 0x92, 0x6f, 0xc5, 0x23, 0x51, 0x6d, 0x71,
|
||||
0x80, 0x3f, 0xea, 0x4a, 0xab, 0xed, 0xe9, 0xe9, 0x81, 0xd9, 0x6c, 0xfe,
|
||||
0xdb, 0x36, 0xa6, 0x7c, 0x76, 0x13, 0x00, 0x70, 0x62, 0x96, 0x8b, 0x19,
|
||||
0x00, 0xe0, 0xa9, 0xa4, 0xd8, 0x5c, 0x22, 0x28, 0xc4, 0x23, 0xd5, 0x4a,
|
||||
0x25, 0x00, 0xf8, 0x64, 0xc1, 0xf4, 0x88, 0x18, 0x0b, 0x07, 0x22, 0x8a,
|
||||
0xe8, 0x1e, 0x20, 0x01, 0x80, 0xe7, 0x5c, 0x1b, 0x8b, 0x76, 0xca, 0x44,
|
||||
0x1a, 0x17, 0x67, 0xd9, 0x29, 0x6e, 0x97, 0x4e, 0xc1, 0x60, 0x8c, 0xa1,
|
||||
0x64, 0xd5, 0x3e, 0x5c, 0x38, 0x7f, 0x0d, 0x73, 0xcc, 0x33, 0x71, 0xb4,
|
||||
0xb9, 0x74, 0xd4, 0x1a, 0x7c, 0xe3, 0xfb, 0xbb, 0xf1, 0xbb, 0x31, 0x53,
|
||||
0xc0, 0x18, 0x43, 0xae, 0xad, 0x4a, 0xd4, 0x83, 0x77, 0x68, 0x18, 0xbd,
|
||||
0xdd, 0xb7, 0x34, 0xc7, 0x93, 0x60, 0xd4, 0x65, 0x4f, 0x8f, 0x2f, 0x79,
|
||||
0xc6, 0x18, 0x72, 0xac, 0x95, 0xf0, 0x0e, 0x0d, 0xa3, 0xbd, 0xbb, 0x5a,
|
||||
0x23, 0x5f, 0xbe, 0xb8, 0x06, 0x39, 0xd6, 0x4a, 0xec, 0xaf, 0x7f, 0x05,
|
||||
0xd6, 0x27, 0x53, 0x55, 0xb2, 0x29, 0x3d, 0x1d, 0x4c, 0xec, 0x18, 0x4e,
|
||||
0xa7, 0x33, 0xe6, 0xef, 0x81, 0x39, 0xd6, 0x4a, 0x18, 0x8d, 0x09, 0x68,
|
||||
0xef, 0xae, 0xc6, 0xec, 0xd9, 0xb3, 0x51, 0x53, 0x53, 0xa3, 0x92, 0x37,
|
||||
0x9f, 0xdc, 0x84, 0xd5, 0x2f, 0xe5, 0xa2, 0x64, 0xd5, 0x5e, 0x30, 0xc6,
|
||||
0xc4, 0xce, 0x6f, 0x7b, 0xd0, 0x1d, 0xe3, 0x76, 0x9e, 0xdf, 0xfb, 0xfe,
|
||||
0x09, 0x00, 0xc0, 0x57, 0x5d, 0x5b, 0xc5, 0x5a, 0x79, 0x79, 0x39, 0x24,
|
||||
0x49, 0x42, 0x5f, 0x5f, 0x9f, 0x58, 0x5b, 0xbf, 0x71, 0x09, 0x00, 0xe0,
|
||||
0xe9, 0x39, 0x9b, 0x60, 0x68, 0xb8, 0x01, 0xfb, 0x74, 0x23, 0x3e, 0x48,
|
||||
0xbc, 0xcc, 0x80, 0x20, 0xf2, 0x0b, 0x32, 0xb6, 0x44, 0x9f, 0xf5, 0x03,
|
||||
0x1c, 0xde, 0xff, 0x35, 0x4c, 0x26, 0xfd, 0xac, 0x4d, 0x4b, 0x4b, 0x83,
|
||||
0x24, 0x49, 0xa2, 0xad, 0x1e, 0xfd, 0xbc, 0x0c, 0x93, 0xa7, 0x98, 0x70,
|
||||
0x2a, 0xd5, 0xc5, 0xb6, 0x4f, 0xba, 0x24, 0x32, 0x44, 0xf5, 0xb4, 0xd1,
|
||||
0x98, 0x80, 0x5c, 0x5b, 0x15, 0x8c, 0x13, 0x0c, 0xd8, 0xf7, 0xe9, 0x5a,
|
||||
0x3c, 0x94, 0x1c, 0xfa, 0x2e, 0x67, 0x66, 0xf2, 0xd4, 0x71, 0x3b, 0x70,
|
||||
0xcc, 0x59, 0x31, 0xaa, 0xdc, 0x60, 0xf0, 0xd3, 0x0b, 0xd5, 0x75, 0x54,
|
||||
0xe4, 0x07, 0xee, 0x79, 0x91, 0x38, 0xd9, 0x84, 0x61, 0xdf, 0x08, 0x5e,
|
||||
0x5e, 0xb9, 0x67, 0xdc, 0xe4, 0x02, 0x71, 0xff, 0x3e, 0xc7, 0x33, 0x0b,
|
||||
0x2d, 0x58, 0xf3, 0xaa, 0x55, 0x89, 0x1c, 0x49, 0xa3, 0x1c, 0xaf, 0x01,
|
||||
0xc0, 0xe3, 0xf1, 0x20, 0x29, 0x29, 0x29, 0xa4, 0x5c, 0x45, 0xfe, 0xe3,
|
||||
0xfa, 0x3c, 0xb6, 0xa1, 0xb8, 0xe5, 0x1f, 0xef, 0x56, 0xc4, 0x09, 0x53,
|
||||
0x93, 0x26, 0x61, 0xe1, 0xa2, 0xc7, 0xb0, 0x74, 0xe5, 0x9c, 0xb0, 0x0d,
|
||||
0x60, 0xd1, 0xbc, 0xad, 0x70, 0x5e, 0x7c, 0x57, 0xb3, 0x9e, 0x9f, 0x9f,
|
||||
0x8f, 0xba, 0xba, 0x3a, 0x31, 0xdf, 0xb3, 0xf3, 0xb8, 0xee, 0xf3, 0x9a,
|
||||
0xa4, 0xdb, 0x71, 0x60, 0x69, 0x58, 0x07, 0x06, 0x06, 0x7c, 0x58, 0xb6,
|
||||
0x22, 0x73, 0x4c, 0x04, 0x43, 0x21, 0xd4, 0xff, 0xe8, 0x1d, 0x1f, 0x8e,
|
||||
0xd4, 0x9e, 0x42, 0x9a, 0x25, 0x59, 0xb3, 0x1e, 0xd5, 0x2f, 0x23, 0xe1,
|
||||
0xb0, 0xa1, 0xb8, 0x85, 0x18, 0x63, 0xf8, 0xe6, 0x87, 0xb7, 0xc1, 0x18,
|
||||
0xd3, 0xcd, 0xed, 0x5c, 0x5b, 0x15, 0x00, 0xfd, 0x2f, 0x23, 0x71, 0xbd,
|
||||
0xfa, 0x50, 0x08, 0xe5, 0xda, 0xaa, 0xe0, 0xf3, 0x8e, 0xa8, 0x64, 0xca,
|
||||
0xce, 0x1b, 0xa8, 0x17, 0x8c, 0xb8, 0x46, 0x5e, 0xc1, 0xc6, 0x92, 0x63,
|
||||
0xa4, 0x97, 0x2e, 0x9c, 0x13, 0x76, 0x1e, 0x7c, 0x31, 0x64, 0x6a, 0xfe,
|
||||
0x09, 0xba, 0x8d, 0x3c, 0xd6, 0xd8, 0xe3, 0x9a, 0x01, 0x00, 0x00, 0x00,
|
||||
0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82
|
||||
};
|
||||
|
||||
static const unsigned char img1_mplayer[] = {
|
||||
0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d,
|
||||
0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x16,
|
||||
0x08, 0x06, 0x00, 0x00, 0x00, 0xc4, 0xb4, 0x6c, 0x3b, 0x00, 0x00, 0x03,
|
||||
0xf8, 0x49, 0x44, 0x41, 0x54, 0x38, 0x8d, 0x95, 0x95, 0xdd, 0x6f, 0x14,
|
||||
0x55, 0x18, 0xc6, 0x7f, 0xe7, 0xcc, 0xc7, 0xee, 0x6c, 0x77, 0x96, 0x2d,
|
||||
0x2d, 0x1f, 0x8b, 0xba, 0x14, 0xd1, 0x34, 0x06, 0x21, 0xb8, 0x2b, 0x26,
|
||||
0xdc, 0x10, 0x63, 0xa2, 0x06, 0x89, 0x5e, 0x60, 0x42, 0x14, 0x13, 0xbd,
|
||||
0x2a, 0x81, 0x3b, 0x13, 0x2f, 0xbc, 0xf2, 0x4a, 0x13, 0xfe, 0x02, 0xc3,
|
||||
0xc5, 0x24, 0xc4, 0x3b, 0x2e, 0xc4, 0x44, 0x63, 0x22, 0x44, 0x88, 0x89,
|
||||
0x51, 0xc4, 0x8f, 0xb2, 0x4d, 0x45, 0x94, 0x10, 0xa8, 0x7c, 0xa5, 0x6c,
|
||||
0xb7, 0xdd, 0xed, 0x7e, 0xb0, 0x3b, 0x3b, 0xb3, 0x33, 0xe7, 0x78, 0xb1,
|
||||
0xb4, 0xb6, 0x48, 0xb1, 0x3c, 0xc9, 0x93, 0xc9, 0x99, 0x39, 0xf3, 0x7b,
|
||||
0x9f, 0xbc, 0x6f, 0xce, 0x8c, 0xe0, 0x21, 0x2a, 0x1c, 0x99, 0xb4, 0x40,
|
||||
0xaf, 0x03, 0x95, 0x43, 0xeb, 0x14, 0x68, 0x40, 0xfb, 0x68, 0x55, 0xb6,
|
||||
0x54, 0xb3, 0xf2, 0x8b, 0xf7, 0x72, 0xb8, 0xd2, 0xbb, 0xe2, 0x21, 0xd0,
|
||||
0xdd, 0xc0, 0x01, 0xd0, 0x3b, 0x11, 0xe4, 0x11, 0xd6, 0x00, 0x00, 0x2a,
|
||||
0xe8, 0xa0, 0xe3, 0x5b, 0xc0, 0xa4, 0x50, 0xd1, 0xc9, 0x82, 0x3e, 0x7e,
|
||||
0xce, 0xf3, 0xbc, 0xf8, 0x7f, 0xc1, 0x85, 0x23, 0x93, 0x5b, 0x41, 0xbc,
|
||||
0x8f, 0x61, 0x1d, 0x4c, 0x0f, 0xa4, 0xb2, 0x1b, 0x87, 0x33, 0x72, 0xc3,
|
||||
0x50, 0x92, 0xd1, 0xe1, 0x16, 0x8e, 0x15, 0x73, 0xad, 0x96, 0xe6, 0x7a,
|
||||
0x45, 0x31, 0x37, 0x3b, 0xab, 0x6a, 0x0d, 0xdf, 0x57, 0x91, 0x7f, 0xce,
|
||||
0xd2, 0x77, 0x3f, 0xd9, 0xa1, 0x4f, 0x9c, 0xf7, 0x3c, 0x2f, 0x7a, 0x20,
|
||||
0xb8, 0x70, 0x64, 0x72, 0x33, 0x88, 0x63, 0xd8, 0x99, 0xbd, 0x3b, 0x9f,
|
||||
0x74, 0x78, 0x6d, 0x97, 0xcb, 0xf6, 0x27, 0x34, 0xeb, 0xb3, 0x16, 0x86,
|
||||
0xec, 0x6f, 0xd5, 0xc0, 0x7c, 0x2b, 0x62, 0xaa, 0xdc, 0xe3, 0x54, 0xa9,
|
||||
0xcb, 0x0f, 0x17, 0xe7, 0x09, 0xfd, 0xe6, 0x5f, 0x09, 0x55, 0xfb, 0xf0,
|
||||
0x59, 0x7d, 0xf2, 0xd4, 0x02, 0xdc, 0xb8, 0x2f, 0xe9, 0xa7, 0xe9, 0x4c,
|
||||
0xe6, 0xd5, 0x37, 0x76, 0xaf, 0x11, 0xef, 0xbe, 0xe8, 0xf0, 0x74, 0xce,
|
||||
0x20, 0x61, 0x19, 0xf4, 0x62, 0x08, 0x23, 0xbd, 0x68, 0x43, 0x0a, 0x86,
|
||||
0x33, 0x26, 0xdb, 0x37, 0x5b, 0x6c, 0x18, 0xb4, 0xf8, 0xbb, 0xa2, 0x87,
|
||||
0x9b, 0x5d, 0xf1, 0x7c, 0x55, 0x6f, 0x29, 0xed, 0x2d, 0x3a, 0xb7, 0x4b,
|
||||
0xa5, 0x92, 0x5e, 0x04, 0xe7, 0x76, 0x1d, 0x3e, 0x8a, 0xed, 0xbe, 0xb5,
|
||||
0xef, 0x85, 0xac, 0x78, 0xbd, 0x68, 0x61, 0x5b, 0x92, 0x30, 0xd2, 0x04,
|
||||
0xbd, 0xfb, 0x1c, 0x2a, 0x82, 0x9e, 0x22, 0x88, 0x34, 0x5a, 0x6b, 0x36,
|
||||
0xad, 0xb5, 0x70, 0x53, 0x96, 0xf8, 0xf3, 0x76, 0x3c, 0xd4, 0x0d, 0xb5,
|
||||
0xb5, 0x89, 0x89, 0x33, 0xc5, 0x62, 0xb1, 0x27, 0xfa, 0x69, 0x2f, 0xec,
|
||||
0x16, 0x46, 0xf2, 0x9b, 0x1d, 0x4f, 0xad, 0xcd, 0x1e, 0xdc, 0xe3, 0xe0,
|
||||
0x3a, 0x92, 0x6f, 0x27, 0xfc, 0x95, 0xe6, 0xba, 0x4c, 0xaf, 0x3c, 0xe7,
|
||||
0xd0, 0x8b, 0x34, 0x5f, 0xfd, 0xea, 0xf3, 0xfd, 0x44, 0xa5, 0x61, 0x04,
|
||||
0xd3, 0xef, 0x6d, 0xe7, 0x8b, 0xd3, 0x66, 0xe1, 0xf0, 0xb8, 0x85, 0xd6,
|
||||
0x07, 0xd2, 0x03, 0xc9, 0x4c, 0x61, 0xab, 0x4d, 0xac, 0x14, 0x8d, 0xb6,
|
||||
0x06, 0xe0, 0xa3, 0xb7, 0xd7, 0x3f, 0x14, 0xfa, 0xf1, 0x89, 0x0a, 0x9d,
|
||||
0x40, 0xd1, 0x0d, 0x15, 0xa3, 0xb9, 0x98, 0xdf, 0xaf, 0x25, 0xdc, 0x5a,
|
||||
0x35, 0xbd, 0xbf, 0xd2, 0x1b, 0xf9, 0xd9, 0x04, 0xd6, 0x01, 0x3b, 0x33,
|
||||
0x99, 0x35, 0x32, 0x9b, 0x8c, 0x68, 0xb6, 0xe5, 0xaa, 0x92, 0x2e, 0xe8,
|
||||
0xb3, 0x1f, 0x13, 0x00, 0x34, 0xfd, 0x14, 0x2d, 0xd2, 0x52, 0x51, 0xdf,
|
||||
0xd6, 0x14, 0xf9, 0xbc, 0x09, 0xe4, 0x10, 0x32, 0x3f, 0xec, 0x0a, 0xfc,
|
||||
0x50, 0xe1, 0x87, 0x8a, 0x7e, 0xde, 0xd5, 0x15, 0x10, 0x2a, 0xe4, 0x6a,
|
||||
0x2d, 0xd3, 0x5f, 0x98, 0x26, 0x08, 0x23, 0x87, 0x61, 0xe7, 0x4d, 0x20,
|
||||
0x85, 0x4c, 0x0c, 0xa4, 0xac, 0x1e, 0xf5, 0xb6, 0x42, 0x0a, 0xb0, 0xcd,
|
||||
0x15, 0xcf, 0xcd, 0x32, 0x5d, 0x9b, 0x4b, 0x2e, 0x2f, 0x22, 0x04, 0xc8,
|
||||
0x84, 0x23, 0x14, 0xae, 0xb9, 0x70, 0xb3, 0xd9, 0xb5, 0x98, 0x69, 0x68,
|
||||
0x0c, 0x09, 0xae, 0xb3, 0x3a, 0x30, 0xc0, 0xd5, 0x5a, 0x06, 0xb1, 0xb0,
|
||||
0x5d, 0xdf, 0x2b, 0x80, 0x92, 0x26, 0x68, 0x1f, 0x15, 0x74, 0x66, 0xda,
|
||||
0x0e, 0xed, 0x38, 0xb9, 0xf8, 0x50, 0xaf, 0x7c, 0xda, 0x1f, 0xa8, 0x3e,
|
||||
0x5c, 0x43, 0xdc, 0xed, 0x0a, 0x1d, 0x05, 0x26, 0x5a, 0x95, 0x81, 0x5b,
|
||||
0x8d, 0x8e, 0xda, 0x12, 0x0b, 0xe7, 0x91, 0x60, 0x0b, 0x32, 0x8d, 0xfe,
|
||||
0x44, 0xee, 0xfa, 0x01, 0xe8, 0xb8, 0x22, 0x55, 0xbb, 0x2c, 0x2d, 0xd5,
|
||||
0xac, 0x00, 0x93, 0x04, 0x35, 0x65, 0x19, 0x1a, 0x7b, 0x89, 0x57, 0xab,
|
||||
0xa4, 0x19, 0x63, 0x9b, 0x31, 0x22, 0xac, 0x2a, 0x93, 0xee, 0x95, 0xac,
|
||||
0xbe, 0x71, 0x47, 0x00, 0x14, 0x0f, 0x9d, 0xdf, 0x23, 0xec, 0xf4, 0x97,
|
||||
0xb9, 0xdc, 0xc6, 0xc1, 0x41, 0xd7, 0x7e, 0xa4, 0x26, 0x18, 0x12, 0x22,
|
||||
0x05, 0xf3, 0xad, 0x90, 0xf2, 0xf4, 0x74, 0xcb, 0xe9, 0x5e, 0xfe, 0x60,
|
||||
0x54, 0x9e, 0xfd, 0xda, 0x04, 0x28, 0xe8, 0xe3, 0xe7, 0x2e, 0x44, 0x63,
|
||||
0x9f, 0xb7, 0xea, 0xb3, 0x87, 0x46, 0x86, 0x06, 0x49, 0x98, 0xa2, 0xff,
|
||||
0x79, 0x5a, 0x08, 0x7d, 0xdf, 0x70, 0x34, 0x2c, 0x1b, 0x58, 0x10, 0x69,
|
||||
0x6e, 0xd6, 0xe7, 0x51, 0x61, 0xe3, 0xbb, 0x51, 0x79, 0xf6, 0x27, 0xa0,
|
||||
0x65, 0x00, 0x94, 0x4a, 0x25, 0xfd, 0x78, 0xe1, 0x9d, 0xa9, 0xa0, 0xc7,
|
||||
0x33, 0x4a, 0xc5, 0x9b, 0x1f, 0x1b, 0x32, 0x44, 0x2a, 0x21, 0x48, 0x58,
|
||||
0xba, 0x6f, 0x73, 0xf9, 0x35, 0x69, 0xff, 0xbb, 0x16, 0xf4, 0xb8, 0x72,
|
||||
0xb3, 0xa9, 0xaa, 0xb5, 0xc6, 0xf8, 0x50, 0x7c, 0xe9, 0x58, 0x56, 0x4c,
|
||||
0x5f, 0x5a, 0x04, 0x03, 0xec, 0x2b, 0x58, 0xd5, 0xaa, 0xce, 0x8f, 0x37,
|
||||
0x7c, 0x73, 0x5b, 0xb3, 0x13, 0x8d, 0xb8, 0x29, 0x8b, 0xb5, 0xae, 0x89,
|
||||
0x6d, 0x49, 0x6c, 0x53, 0xfc, 0xc7, 0x96, 0x01, 0x73, 0x8d, 0x1e, 0x17,
|
||||
0xa7, 0x1a, 0x94, 0x67, 0x9b, 0xe3, 0xeb, 0xa2, 0x89, 0xa3, 0x79, 0x59,
|
||||
0xfa, 0x0d, 0x98, 0xf3, 0x3c, 0x2f, 0x5e, 0x04, 0x97, 0x4a, 0x25, 0xbd,
|
||||
0xb7, 0x98, 0xaa, 0x55, 0xf5, 0xc8, 0x44, 0xc3, 0x37, 0x52, 0xb3, 0x8d,
|
||||
0xde, 0x48, 0xab, 0x13, 0xd9, 0x49, 0x33, 0x12, 0x03, 0x8e, 0x89, 0x29,
|
||||
0x25, 0x52, 0x80, 0xd6, 0x31, 0xd5, 0xf9, 0x36, 0x7f, 0x5c, 0xef, 0xa8,
|
||||
0xcb, 0x37, 0x5b, 0x77, 0xeb, 0xf5, 0xe6, 0xe9, 0xa1, 0xf8, 0xd2, 0xb1,
|
||||
0x7b, 0xd0, 0x8a, 0xe7, 0x79, 0xbd, 0xa5, 0xdd, 0x5b, 0xd4, 0xd8, 0xd8,
|
||||
0x98, 0x04, 0x06, 0x2e, 0xf2, 0xe6, 0x4b, 0x91, 0x4c, 0xef, 0x57, 0x58,
|
||||
0xdb, 0xa4, 0x14, 0x39, 0xd7, 0x31, 0x1c, 0x80, 0x96, 0x1f, 0x77, 0x55,
|
||||
0xac, 0x2a, 0x26, 0xdd, 0x2b, 0xc9, 0x78, 0xe6, 0xcc, 0xbd, 0x9e, 0xce,
|
||||
0x00, 0xf5, 0x15, 0xff, 0x20, 0x4b, 0xe0, 0x02, 0xb0, 0x2b, 0xf1, 0x48,
|
||||
0xb6, 0x29, 0xf2, 0x79, 0x0c, 0x3b, 0x2f, 0xc0, 0x15, 0x28, 0x29, 0x74,
|
||||
0x14, 0x48, 0xd5, 0x2e, 0x67, 0xf5, 0x8d, 0x3b, 0x6b, 0x8c, 0xb9, 0x1a,
|
||||
0xd0, 0x02, 0x7c, 0xcf, 0xf3, 0xd4, 0x52, 0xc6, 0x3f, 0x42, 0xb8, 0xe4,
|
||||
0xbf, 0xe2, 0x7a, 0x6d, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e,
|
||||
0x44, 0xae, 0x42, 0x60, 0x82
|
||||
};
|
||||
|
||||
static const unsigned char img2_mplayer[] = {
|
||||
0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d,
|
||||
0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x16,
|
||||
0x08, 0x06, 0x00, 0x00, 0x00, 0xc4, 0xb4, 0x6c, 0x3b, 0x00, 0x00, 0x04,
|
||||
0x7c, 0x49, 0x44, 0x41, 0x54, 0x38, 0x8d, 0x85, 0x95, 0xdb, 0x6f, 0x54,
|
||||
0x55, 0x14, 0x87, 0xbf, 0xbd, 0xcf, 0x65, 0x6e, 0x9d, 0xe9, 0x94, 0x16,
|
||||
0x4b, 0x11, 0x86, 0x02, 0x31, 0x84, 0x54, 0xa0, 0x4e, 0x45, 0x83, 0x89,
|
||||
0x97, 0x60, 0xd4, 0x54, 0xa2, 0x89, 0x68, 0x8c, 0xb7, 0xf8, 0x56, 0x02,
|
||||
0x0f, 0x24, 0xbc, 0x10, 0xff, 0x00, 0x25, 0xfd, 0x03, 0xd4, 0xf4, 0xe1,
|
||||
0x28, 0x0f, 0xbe, 0xf4, 0x41, 0x1e, 0x4d, 0x30, 0x62, 0x7c, 0x21, 0x48,
|
||||
0x08, 0x65, 0x48, 0xad, 0x88, 0x21, 0xb1, 0x40, 0xa9, 0xd2, 0xce, 0xb4,
|
||||
0xd3, 0x99, 0x33, 0xcc, 0xe5, 0xdc, 0xf6, 0xf6, 0x61, 0xda, 0x42, 0x4d,
|
||||
0x8b, 0x27, 0x59, 0x59, 0x67, 0x9f, 0xbd, 0xd7, 0x77, 0x7e, 0x6b, 0x65,
|
||||
0x65, 0x6d, 0xc1, 0x63, 0x9e, 0xfc, 0x89, 0x49, 0x0b, 0xf4, 0x66, 0x50,
|
||||
0x7d, 0x68, 0x9d, 0x04, 0x0d, 0xe8, 0x26, 0x5a, 0xcd, 0x59, 0xca, 0x2d,
|
||||
0x5e, 0x71, 0x5e, 0xf3, 0x37, 0x8a, 0x15, 0x8f, 0x81, 0x1e, 0x02, 0xde,
|
||||
0x07, 0x3d, 0x88, 0x20, 0x87, 0xb0, 0x52, 0x00, 0x28, 0xaf, 0x81, 0x8e,
|
||||
0xee, 0x01, 0x93, 0x42, 0x85, 0xe7, 0xf2, 0xfa, 0xec, 0x25, 0xc7, 0x71,
|
||||
0xa2, 0xff, 0x05, 0xe7, 0x4f, 0x4c, 0xee, 0x06, 0x71, 0x0a, 0xc3, 0xfa,
|
||||
0xa8, 0x23, 0x95, 0xcc, 0x6e, 0xe9, 0xc9, 0xc8, 0xde, 0xee, 0x38, 0x7b,
|
||||
0x7a, 0x6a, 0x24, 0xac, 0x88, 0xbf, 0xca, 0x1d, 0xdc, 0x29, 0x2a, 0x16,
|
||||
0x4a, 0x25, 0x55, 0xae, 0x36, 0x9b, 0x2a, 0x6c, 0x5e, 0xb2, 0xf4, 0x83,
|
||||
0x2f, 0xf6, 0xeb, 0xf1, 0xcb, 0x8e, 0xe3, 0x84, 0xeb, 0x82, 0xf3, 0x27,
|
||||
0x26, 0x77, 0x80, 0x18, 0xc3, 0xce, 0x0c, 0x0f, 0xee, 0x4a, 0xf0, 0xe6,
|
||||
0xc1, 0x34, 0xfb, 0xb6, 0x6b, 0x9e, 0xc8, 0x5a, 0x18, 0xb2, 0x7d, 0x54,
|
||||
0x03, 0x4b, 0xb5, 0x90, 0xe9, 0xb9, 0x80, 0xf3, 0x85, 0x16, 0x17, 0xa7,
|
||||
0x96, 0xf0, 0x9b, 0xee, 0xcd, 0x98, 0x2a, 0x7f, 0xf6, 0xb4, 0x3e, 0x77,
|
||||
0x7e, 0x05, 0x6e, 0xfc, 0x47, 0xe9, 0xd7, 0x1d, 0x99, 0xcc, 0x1b, 0x6f,
|
||||
0x1f, 0xea, 0x14, 0x9f, 0xbe, 0x92, 0xe0, 0xa9, 0x3e, 0x83, 0x98, 0x65,
|
||||
0xf0, 0xcd, 0x4f, 0x15, 0xf6, 0x6e, 0x8f, 0xe1, 0x87, 0x1a, 0x3f, 0xd4,
|
||||
0x18, 0x52, 0xd0, 0x93, 0x31, 0xd9, 0xb7, 0xc3, 0xa2, 0xb7, 0xcb, 0xe2,
|
||||
0x76, 0x51, 0xf7, 0xb8, 0x2d, 0xf1, 0xec, 0xa2, 0xde, 0x59, 0x18, 0x1e,
|
||||
0x4a, 0xcc, 0x16, 0x0a, 0x05, 0xbd, 0x0a, 0xee, 0x3b, 0x78, 0x7c, 0x14,
|
||||
0x3b, 0xfd, 0xc1, 0x91, 0xe7, 0xb2, 0xe2, 0xad, 0x21, 0x0b, 0xdb, 0x92,
|
||||
0xf8, 0xa1, 0xc6, 0x0b, 0x34, 0xef, 0xbc, 0x90, 0xe5, 0xab, 0x1f, 0x16,
|
||||
0xd9, 0xb5, 0xc5, 0xc2, 0xf3, 0x15, 0x5e, 0xa0, 0xf0, 0x42, 0x8d, 0xd6,
|
||||
0x9a, 0xad, 0x9b, 0x2c, 0xd2, 0x49, 0x4b, 0xfc, 0x31, 0x1b, 0x75, 0xb7,
|
||||
0x7c, 0x6d, 0x6d, 0xe5, 0xfa, 0x85, 0xa1, 0xa1, 0xa1, 0xc0, 0x68, 0xab,
|
||||
0xbd, 0x76, 0x48, 0x18, 0xb1, 0xd1, 0x03, 0xbb, 0x33, 0xf1, 0xe1, 0xbc,
|
||||
0x85, 0x94, 0xe0, 0x07, 0x8a, 0x56, 0xd0, 0x86, 0x6c, 0xeb, 0x89, 0xf1,
|
||||
0xe2, 0x40, 0x8a, 0x93, 0xdf, 0x69, 0x9e, 0xc9, 0x05, 0x78, 0x81, 0x5e,
|
||||
0xde, 0x6f, 0x67, 0xb0, 0xa9, 0x43, 0x52, 0xf7, 0x4d, 0x66, 0x4a, 0x41,
|
||||
0x7f, 0x29, 0xda, 0x3e, 0xd9, 0xcb, 0xcd, 0xdb, 0x46, 0xfe, 0xf8, 0x84,
|
||||
0x05, 0x9c, 0x4a, 0xa7, 0xd3, 0x2f, 0xbd, 0x3a, 0x98, 0x12, 0x5d, 0x1d,
|
||||
0xe0, 0x05, 0x9a, 0x56, 0xd0, 0x56, 0xeb, 0x05, 0x9a, 0xdd, 0x5b, 0xe3,
|
||||
0x00, 0xbc, 0xf7, 0xbc, 0xc1, 0xe9, 0x71, 0xc1, 0xde, 0x2d, 0xfe, 0x9a,
|
||||
0xfd, 0x56, 0xa0, 0xb0, 0x0d, 0x9f, 0xe9, 0x79, 0x65, 0xd7, 0x5b, 0x61,
|
||||
0x60, 0x84, 0xd5, 0x8b, 0x26, 0xb0, 0x19, 0x18, 0xcc, 0x64, 0x3a, 0x65,
|
||||
0x36, 0x1e, 0xe2, 0xd6, 0xe5, 0x46, 0x1d, 0x08, 0xc0, 0xf8, 0x49, 0x9b,
|
||||
0x0f, 0xbf, 0x84, 0xa3, 0x07, 0x5c, 0xa2, 0x48, 0x33, 0x5b, 0x8e, 0x98,
|
||||
0x9a, 0xcb, 0xe2, 0x36, 0x93, 0xd4, 0xe8, 0x90, 0x8a, 0xca, 0x80, 0x2b,
|
||||
0x72, 0x39, 0x13, 0xe8, 0x43, 0xc8, 0x5c, 0x4f, 0x5a, 0xd0, 0xf4, 0x15,
|
||||
0x4d, 0x5f, 0xa1, 0x97, 0xdb, 0x65, 0xc5, 0xaf, 0x0f, 0xcf, 0xb0, 0xbf,
|
||||
0xb7, 0xc2, 0xe4, 0xdf, 0x29, 0x66, 0xdd, 0x76, 0x46, 0x98, 0x26, 0x08,
|
||||
0xa3, 0x0f, 0xc3, 0xce, 0x49, 0x20, 0x89, 0x8c, 0xa5, 0x92, 0x56, 0x40,
|
||||
0xa5, 0xae, 0x70, 0x1b, 0x0a, 0xcf, 0xd7, 0xb4, 0x7c, 0xbd, 0xea, 0x37,
|
||||
0x52, 0xfe, 0xdb, 0x7c, 0x96, 0x52, 0x23, 0xb9, 0xfa, 0x4d, 0x08, 0x01,
|
||||
0x32, 0x96, 0x10, 0x90, 0x5e, 0xcd, 0xdb, 0x6d, 0x59, 0xcc, 0x57, 0x25,
|
||||
0x45, 0x57, 0x52, 0x6d, 0x4a, 0x2a, 0x4d, 0x83, 0x7b, 0x95, 0x18, 0x57,
|
||||
0x67, 0x52, 0x8f, 0x2d, 0x8b, 0x1f, 0x19, 0x08, 0x41, 0xdb, 0x56, 0x7e,
|
||||
0x80, 0x92, 0x26, 0xe8, 0x26, 0xca, 0x6b, 0xcc, 0xd7, 0x13, 0xd4, 0xa3,
|
||||
0x78, 0x3b, 0x7f, 0x40, 0x23, 0xa8, 0xf9, 0x36, 0x7a, 0x7d, 0xc1, 0x00,
|
||||
0xbc, 0x3e, 0xfa, 0xf0, 0x5d, 0x88, 0x76, 0x14, 0x51, 0xab, 0x25, 0x74,
|
||||
0xe8, 0x99, 0x68, 0x35, 0x07, 0xdc, 0xab, 0x36, 0xd4, 0xce, 0x48, 0x24,
|
||||
0xd6, 0x04, 0x6a, 0xe4, 0x86, 0xd3, 0xe4, 0xf0, 0x19, 0x08, 0x96, 0x27,
|
||||
0x84, 0x69, 0x80, 0x04, 0x1e, 0x34, 0x3d, 0xd0, 0x51, 0x51, 0xaa, 0xfa,
|
||||
0x9c, 0xb4, 0x94, 0x5b, 0x04, 0x26, 0xf1, 0xca, 0xca, 0x32, 0x34, 0xf6,
|
||||
0x23, 0x16, 0x33, 0x22, 0xd6, 0x93, 0x7c, 0xf8, 0x0c, 0x80, 0x22, 0x69,
|
||||
0x45, 0x24, 0xad, 0x88, 0xb8, 0x19, 0x61, 0x9b, 0x11, 0xc2, 0x5f, 0x54,
|
||||
0x26, 0xad, 0x5b, 0x59, 0x7d, 0xf7, 0xbe, 0x79, 0xc5, 0x79, 0xcd, 0x1f,
|
||||
0x3a, 0x76, 0xf9, 0x5c, 0xe4, 0x55, 0x3f, 0xb1, 0xa2, 0x44, 0x57, 0x57,
|
||||
0xda, 0x5e, 0x23, 0x52, 0x69, 0x80, 0xcc, 0xea, 0x7a, 0x64, 0xac, 0xc6,
|
||||
0xb6, 0x34, 0x08, 0xa1, 0x57, 0xcf, 0xb5, 0xe7, 0x87, 0x8f, 0x6a, 0x2d,
|
||||
0xd5, 0x13, 0xd1, 0xfc, 0x85, 0x4e, 0x63, 0xa1, 0x6c, 0x02, 0xe4, 0xf5,
|
||||
0xd9, 0x4b, 0xd7, 0xc2, 0x91, 0xef, 0x6b, 0x95, 0xd2, 0xb1, 0xfe, 0xee,
|
||||
0x2e, 0x62, 0xa6, 0x78, 0xd8, 0x6f, 0x3c, 0x04, 0x9f, 0xfe, 0x76, 0x9e,
|
||||
0xac, 0x0d, 0xda, 0x5e, 0xa9, 0x69, 0xfb, 0x8c, 0x17, 0x6a, 0x66, 0x2a,
|
||||
0x4b, 0x28, 0xbf, 0xfa, 0xcb, 0x1e, 0xf9, 0xf3, 0xaf, 0x40, 0xcd, 0x00,
|
||||
0x28, 0x14, 0x0a, 0x7a, 0x5b, 0xfe, 0xe3, 0x69, 0x2f, 0x60, 0xaf, 0x52,
|
||||
0xd1, 0x8e, 0x27, 0xbb, 0x0d, 0x91, 0x8c, 0x09, 0x62, 0x96, 0x26, 0x66,
|
||||
0x69, 0x5e, 0xde, 0x97, 0xe6, 0xf3, 0xf1, 0xfb, 0xc4, 0xcc, 0xf6, 0x3a,
|
||||
0x6e, 0xb7, 0x7d, 0xcc, 0xd4, 0x08, 0x02, 0x6e, 0xcd, 0xb8, 0x6a, 0xb1,
|
||||
0x5c, 0x9d, 0xe8, 0x8e, 0x6e, 0x8c, 0x65, 0xc5, 0x3f, 0x37, 0x56, 0xc1,
|
||||
0x00, 0x47, 0xf2, 0xd6, 0xe2, 0xa2, 0xce, 0x4d, 0x54, 0x9b, 0xe6, 0x80,
|
||||
0xdb, 0x08, 0xfb, 0xd3, 0x49, 0x8b, 0x4d, 0x69, 0x13, 0xdb, 0x92, 0x5c,
|
||||
0xbe, 0x59, 0xc7, 0x36, 0xc5, 0x1a, 0xb3, 0x0c, 0x58, 0xa8, 0x06, 0x4c,
|
||||
0x4d, 0x57, 0x99, 0x2b, 0xb9, 0x13, 0x9b, 0xc3, 0xeb, 0xa3, 0x39, 0x59,
|
||||
0xb8, 0x0a, 0x2c, 0x38, 0x8e, 0x13, 0xad, 0x82, 0x0b, 0x85, 0x82, 0x1e,
|
||||
0x1e, 0x4a, 0x96, 0x17, 0x75, 0xff, 0xf5, 0x6a, 0xd3, 0x48, 0x96, 0xaa,
|
||||
0x41, 0x7f, 0xad, 0x11, 0xda, 0x71, 0x33, 0x14, 0xa9, 0x84, 0x89, 0x29,
|
||||
0x25, 0x52, 0x80, 0xd6, 0x11, 0x8b, 0x4b, 0x75, 0x7e, 0xbf, 0xd3, 0x50,
|
||||
0x7f, 0xce, 0xd4, 0x1e, 0x54, 0x2a, 0xee, 0x8f, 0xdd, 0xd1, 0x8d, 0xb1,
|
||||
0x65, 0x68, 0xd1, 0x71, 0x9c, 0x00, 0xd6, 0x69, 0xa6, 0x91, 0x91, 0x11,
|
||||
0x09, 0xa4, 0xa6, 0x78, 0xf7, 0x70, 0x28, 0x3b, 0x8e, 0x2a, 0xac, 0x01,
|
||||
0x29, 0x45, 0x5f, 0x3a, 0x61, 0x24, 0x00, 0x6a, 0xcd, 0xa8, 0xa5, 0x22,
|
||||
0x55, 0x34, 0x69, 0xdd, 0x8a, 0x47, 0xf3, 0x17, 0x96, 0x6b, 0x3a, 0x0f,
|
||||
0x54, 0x36, 0xbc, 0x41, 0x1e, 0x81, 0x0b, 0xc0, 0x2e, 0x46, 0xfd, 0x59,
|
||||
0x57, 0xe4, 0x72, 0x18, 0x76, 0x4e, 0x40, 0x5a, 0xa0, 0xa4, 0xd0, 0xa1,
|
||||
0x27, 0x55, 0x7d, 0x2e, 0xab, 0xef, 0xde, 0xef, 0x34, 0x16, 0xca, 0x40,
|
||||
0x0d, 0x68, 0x3a, 0x8e, 0xa3, 0x1e, 0x65, 0xfc, 0x0b, 0x65, 0xf3, 0x41,
|
||||
0x6e, 0xc3, 0xc8, 0xf6, 0x9a, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e,
|
||||
0x44, 0xae, 0x42, 0x60, 0x82
|
||||
};
|
||||
|
||||
static const unsigned char img3_mplayer[] = {
|
||||
0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d,
|
||||
0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x16,
|
||||
0x08, 0x06, 0x00, 0x00, 0x00, 0xc4, 0xb4, 0x6c, 0x3b, 0x00, 0x00, 0x04,
|
||||
0x6e, 0x49, 0x44, 0x41, 0x54, 0x38, 0x8d, 0x95, 0x94, 0x4f, 0x68, 0xdb,
|
||||
0x56, 0x1c, 0xc7, 0xbf, 0xcf, 0x96, 0x2d, 0xdb, 0x92, 0x6d, 0x49, 0xb5,
|
||||
0x83, 0x93, 0xda, 0x8e, 0x9b, 0xd0, 0x36, 0x81, 0xae, 0x0d, 0xa5, 0x0c,
|
||||
0xf7, 0x32, 0xe8, 0xc6, 0x46, 0x42, 0xc8, 0x8a, 0xd2, 0x32, 0xda, 0x83,
|
||||
0x19, 0x65, 0xf4, 0xb2, 0xc1, 0x46, 0xa0, 0x97, 0xb2, 0x0d, 0xb6, 0x6b,
|
||||
0x61, 0x30, 0xc6, 0x7a, 0xef, 0x9f, 0xd3, 0x28, 0xad, 0x2e, 0xa5, 0x26,
|
||||
0xec, 0x52, 0xba, 0xd1, 0x43, 0x58, 0x1d, 0xdc, 0x85, 0x26, 0x6d, 0x5d,
|
||||
0xb7, 0x69, 0xfc, 0xa7, 0x69, 0x1c, 0x59, 0xb2, 0x54, 0x63, 0xcb, 0x8a,
|
||||
0xdf, 0x0e, 0x5b, 0x44, 0xbc, 0x64, 0x29, 0xfb, 0x81, 0x4e, 0xfa, 0x7e,
|
||||
0x3f, 0xef, 0xfb, 0x7e, 0xef, 0xbd, 0x1f, 0xa1, 0x94, 0xe2, 0x6d, 0x25,
|
||||
0xcb, 0x72, 0x5f, 0x30, 0x18, 0x3c, 0xea, 0x72, 0xb9, 0x18, 0x5d, 0xd7,
|
||||
0xff, 0x50, 0x14, 0xe5, 0xd5, 0xdb, 0x3c, 0x64, 0x27, 0xb0, 0x2c, 0xcb,
|
||||
0xfe, 0x54, 0x2a, 0xf5, 0x7d, 0x24, 0x12, 0x19, 0x93, 0x24, 0x29, 0x9e,
|
||||
0x4a, 0xa5, 0x62, 0xd1, 0x68, 0x54, 0x20, 0x84, 0xa0, 0x56, 0xab, 0xe9,
|
||||
0xcf, 0x9f, 0x3f, 0x7f, 0xb5, 0xbe, 0xbe, 0x5e, 0x5e, 0x5b, 0x5b, 0x5b,
|
||||
0x58, 0x5e, 0x5e, 0xfe, 0x46, 0x51, 0x14, 0x73, 0x57, 0xb0, 0x2c, 0xcb,
|
||||
0x64, 0x60, 0x60, 0xe0, 0xcb, 0x64, 0x32, 0xf9, 0xd9, 0xc4, 0xc4, 0xc4,
|
||||
0x3b, 0x8d, 0x46, 0x03, 0xe5, 0x72, 0x19, 0x4f, 0x9f, 0x3e, 0xc5, 0xca,
|
||||
0xca, 0x0a, 0x28, 0xa5, 0x48, 0x24, 0x12, 0xd8, 0xbf, 0x7f, 0x3f, 0xf6,
|
||||
0xee, 0xdd, 0x0b, 0x41, 0x10, 0x90, 0xcd, 0x66, 0x17, 0x97, 0x97, 0x97,
|
||||
0xaf, 0x55, 0x2a, 0x95, 0x4b, 0x8a, 0xa2, 0x74, 0xb7, 0x81, 0x65, 0x59,
|
||||
0xe6, 0x0f, 0x1c, 0x38, 0x90, 0x3d, 0x79, 0xf2, 0x64, 0xda, 0xeb, 0xf5,
|
||||
0x32, 0xd9, 0x6c, 0x16, 0xd5, 0x6a, 0x75, 0xd7, 0xed, 0xf6, 0xf5, 0xf5,
|
||||
0x61, 0x72, 0x72, 0x12, 0xdd, 0x6e, 0xb7, 0x7b, 0xeb, 0xd6, 0xad, 0xf9,
|
||||
0x27, 0x4f, 0x9e, 0x7c, 0xa8, 0x28, 0x4a, 0xbd, 0x07, 0x7c, 0xe1, 0xc2,
|
||||
0x85, 0xdb, 0x99, 0x4c, 0x66, 0xb2, 0x54, 0x2a, 0xe1, 0xde, 0xbd, 0x7b,
|
||||
0x6f, 0x6b, 0x61, 0x4f, 0xa5, 0xd3, 0x69, 0x0c, 0x0f, 0x0f, 0xe3, 0xfa,
|
||||
0xf5, 0xeb, 0x77, 0x0b, 0x85, 0xc2, 0x07, 0x8a, 0xa2, 0x74, 0x19, 0x00,
|
||||
0x98, 0x99, 0x99, 0xb9, 0x74, 0xea, 0xd4, 0xa9, 0x8f, 0x2c, 0xcb, 0x42,
|
||||
0x2e, 0x97, 0x03, 0xcf, 0xf3, 0xff, 0x0b, 0xbc, 0xb0, 0xb0, 0x80, 0xfe,
|
||||
0xfe, 0x7e, 0xc8, 0xb2, 0xfc, 0xde, 0xcd, 0x9b, 0x37, 0x7f, 0x06, 0xf0,
|
||||
0x39, 0x99, 0x9e, 0x9e, 0x1e, 0x99, 0x9a, 0x9a, 0xfa, 0x3d, 0x9d, 0x4e,
|
||||
0xef, 0x99, 0x9d, 0x9d, 0x45, 0xb7, 0xdb, 0xdd, 0x66, 0x4c, 0x24, 0x12,
|
||||
0x88, 0x44, 0x22, 0xf8, 0xe7, 0xf0, 0x9c, 0x7e, 0x6f, 0x2d, 0x42, 0x08,
|
||||
0xc6, 0xc7, 0xc7, 0x91, 0xcf, 0xe7, 0x8d, 0x3b, 0x77, 0xee, 0xbc, 0xcf,
|
||||
0x44, 0xa3, 0xd1, 0x33, 0x83, 0x83, 0x83, 0x7b, 0x5a, 0xad, 0x16, 0x38,
|
||||
0x8e, 0xeb, 0x11, 0x87, 0xc3, 0x61, 0xa4, 0xd3, 0x69, 0x48, 0x92, 0x04,
|
||||
0x00, 0xe8, 0x74, 0x3a, 0xb0, 0x6d, 0x1b, 0xba, 0xae, 0x63, 0x7e, 0x7e,
|
||||
0x1e, 0x9a, 0xa6, 0xf5, 0xe8, 0x9b, 0xcd, 0x26, 0x52, 0xa9, 0x54, 0x50,
|
||||
0x14, 0xc5, 0x33, 0x0c, 0xc7, 0x71, 0x87, 0xfd, 0x7e, 0x3f, 0x74, 0x5d,
|
||||
0xef, 0x69, 0x81, 0xdb, 0xed, 0xc6, 0x91, 0x23, 0x47, 0x10, 0x0a, 0x85,
|
||||
0x60, 0xdb, 0xb6, 0x93, 0xca, 0x30, 0x0c, 0xd8, 0xb6, 0x8d, 0x83, 0x07,
|
||||
0x0f, 0xe2, 0xf1, 0xe3, 0xc7, 0xce, 0x3f, 0x00, 0xd0, 0x34, 0x0d, 0x92,
|
||||
0x24, 0x81, 0xe7, 0xf9, 0x11, 0xc6, 0xe7, 0xf3, 0x0d, 0x79, 0xbd, 0x5e,
|
||||
0x34, 0x9b, 0x4d, 0x04, 0x83, 0x41, 0x47, 0xe4, 0xf3, 0xf9, 0x60, 0x59,
|
||||
0x16, 0x54, 0x55, 0x05, 0x00, 0x50, 0x4a, 0x1d, 0xb0, 0x69, 0x9a, 0xa0,
|
||||
0x94, 0x42, 0x10, 0x04, 0xb4, 0xdb, 0x6d, 0xc7, 0xb3, 0xb1, 0xb1, 0x01,
|
||||
0xb7, 0xdb, 0x0d, 0x9f, 0xcf, 0x37, 0xc4, 0x74, 0x3a, 0x9d, 0xf6, 0xea,
|
||||
0xea, 0x2a, 0x62, 0xb1, 0x18, 0xdc, 0x6e, 0xb7, 0x23, 0xb2, 0x6d, 0x1b,
|
||||
0xa5, 0x52, 0x09, 0x7e, 0xbf, 0x1f, 0x0c, 0xc3, 0x38, 0xad, 0x78, 0xf3,
|
||||
0xe6, 0x0d, 0x28, 0xa5, 0xa0, 0x94, 0xc2, 0xe3, 0xf1, 0xf4, 0xec, 0x32,
|
||||
0x14, 0x0a, 0x61, 0x6d, 0x6d, 0x0d, 0x96, 0x65, 0x59, 0x8c, 0x61, 0x18,
|
||||
0xc5, 0xf5, 0xf5, 0xf5, 0x77, 0x93, 0xc9, 0x64, 0x4f, 0x62, 0xc3, 0x30,
|
||||
0xb0, 0xba, 0xba, 0xea, 0x40, 0x36, 0xbf, 0xcd, 0xf4, 0x9b, 0x8f, 0x65,
|
||||
0xab, 0x87, 0x65, 0x59, 0xa8, 0xaa, 0x0a, 0xc3, 0x30, 0x9e, 0x31, 0xa6,
|
||||
0x69, 0xce, 0x69, 0x9a, 0x76, 0xc6, 0x34, 0x4d, 0x88, 0xa2, 0xe8, 0x88,
|
||||
0x78, 0x9e, 0x47, 0xb5, 0x5a, 0xc5, 0xeb, 0xd7, 0xaf, 0xb7, 0x01, 0x29,
|
||||
0xa5, 0x88, 0x44, 0x22, 0x88, 0xc7, 0xe3, 0x20, 0x84, 0xf4, 0x84, 0x69,
|
||||
0x34, 0x1a, 0x68, 0x34, 0x1a, 0x7f, 0xba, 0x87, 0x86, 0x86, 0x5e, 0xba,
|
||||
0x5c, 0xae, 0xe9, 0x56, 0xab, 0x25, 0xf6, 0xf7, 0xf7, 0x43, 0x92, 0x24,
|
||||
0xb0, 0x2c, 0x0b, 0x96, 0x65, 0x11, 0x8f, 0xc7, 0xd1, 0x6e, 0xb7, 0xb1,
|
||||
0xb2, 0xb2, 0x02, 0xc3, 0x30, 0xd0, 0x6c, 0x36, 0xd1, 0xe9, 0x74, 0x30,
|
||||
0x3a, 0x3a, 0x8a, 0xe3, 0xc7, 0x8f, 0x23, 0x10, 0x08, 0x38, 0x5a, 0xc3,
|
||||
0x30, 0x90, 0xcb, 0xe5, 0x50, 0x2c, 0x16, 0x2b, 0xe5, 0x72, 0xf9, 0x2b,
|
||||
0x42, 0x29, 0x45, 0x26, 0x93, 0x39, 0x97, 0x4c, 0x26, 0x7f, 0x18, 0x18,
|
||||
0x18, 0x10, 0x4f, 0x9c, 0x38, 0x81, 0x44, 0x22, 0xd1, 0x73, 0x8d, 0x28,
|
||||
0xa5, 0xd0, 0x75, 0xdd, 0x39, 0xb0, 0xad, 0x29, 0x01, 0xa0, 0x5c, 0x2e,
|
||||
0xe3, 0xfe, 0xfd, 0xfb, 0x28, 0x95, 0x4a, 0x66, 0xb1, 0x58, 0xfc, 0xfa,
|
||||
0xca, 0x95, 0x2b, 0x3f, 0x39, 0x4f, 0x3a, 0x93, 0xc9, 0xfc, 0x38, 0x38,
|
||||
0x38, 0xf8, 0x85, 0x24, 0x49, 0xcc, 0xb1, 0x63, 0xc7, 0x30, 0x3a, 0x3a,
|
||||
0x8a, 0x68, 0x34, 0x8a, 0xdd, 0xaa, 0x56, 0xab, 0x61, 0x69, 0x69, 0x09,
|
||||
0xf9, 0x7c, 0x1e, 0xaa, 0xaa, 0x76, 0x0b, 0x85, 0xc2, 0xb5, 0xab, 0x57,
|
||||
0xaf, 0x9e, 0x03, 0x00, 0x66, 0x53, 0x64, 0x9a, 0xe6, 0xcc, 0x8b, 0x17,
|
||||
0x2f, 0xb8, 0x7a, 0xbd, 0xfe, 0xb1, 0xaa, 0xaa, 0x7d, 0x0f, 0x1f, 0x3e,
|
||||
0xc4, 0xa1, 0x43, 0x87, 0x10, 0x0e, 0x87, 0x21, 0x08, 0x82, 0xb3, 0x48,
|
||||
0xad, 0x56, 0x43, 0xbd, 0x5e, 0x47, 0xa3, 0xd1, 0xc0, 0xd2, 0xd2, 0x12,
|
||||
0xaa, 0xd5, 0x2a, 0x34, 0x4d, 0x53, 0x55, 0x55, 0x9d, 0x35, 0x0c, 0xe3,
|
||||
0xfc, 0x26, 0x6f, 0xdb, 0x3c, 0x3e, 0x7d, 0xfa, 0xf4, 0xd1, 0x40, 0x20,
|
||||
0xf0, 0x5b, 0x38, 0x1c, 0x0e, 0xb0, 0x2c, 0x0b, 0x42, 0x08, 0x58, 0x96,
|
||||
0x75, 0x5a, 0xa0, 0x69, 0x1a, 0x2c, 0xcb, 0x72, 0xae, 0xa4, 0x6d, 0xdb,
|
||||
0xed, 0x4a, 0xa5, 0x32, 0x7e, 0xe3, 0xc6, 0x8d, 0xbb, 0x5b, 0x39, 0x3b,
|
||||
0x0e, 0xfa, 0xb3, 0x67, 0xcf, 0xfe, 0x22, 0x8a, 0xe2, 0x27, 0x5e, 0xaf,
|
||||
0x17, 0x84, 0x10, 0x74, 0x3a, 0x1d, 0x6c, 0x6c, 0x6c, 0x80, 0x10, 0x02,
|
||||
0xaf, 0xd7, 0x0b, 0x8e, 0xe3, 0x10, 0x0e, 0x87, 0x31, 0x36, 0x36, 0x86,
|
||||
0x07, 0x0f, 0x1e, 0xdc, 0xbe, 0x78, 0xf1, 0xe2, 0xd4, 0xbf, 0x19, 0xcc,
|
||||
0x36, 0x2a, 0x80, 0x56, 0xab, 0x75, 0x5e, 0xd7, 0xf5, 0xa4, 0x24, 0x49,
|
||||
0xe9, 0x58, 0x2c, 0x86, 0x7d, 0xfb, 0xf6, 0x41, 0x10, 0x04, 0x88, 0xa2,
|
||||
0x88, 0xe1, 0xe1, 0x61, 0xf0, 0x3c, 0x0f, 0x42, 0x08, 0x2e, 0x5f, 0xbe,
|
||||
0x9c, 0x9b, 0x9b, 0x9b, 0xfb, 0x74, 0x27, 0xc6, 0x8e, 0x89, 0x81, 0xbf,
|
||||
0x07, 0x3f, 0xcb, 0xb2, 0xdf, 0xf9, 0xfd, 0xfe, 0x89, 0x44, 0x22, 0x11,
|
||||
0x1f, 0x19, 0x19, 0x09, 0xa5, 0x52, 0x29, 0xb8, 0x5c, 0x2e, 0xe3, 0xd1,
|
||||
0xa3, 0x47, 0x95, 0x42, 0xa1, 0xf0, 0xeb, 0xe2, 0xe2, 0xe2, 0xb7, 0x8a,
|
||||
0xa2, 0x68, 0x3b, 0xf9, 0xff, 0x13, 0xbc, 0x65, 0x01, 0x0f, 0x80, 0x21,
|
||||
0x8e, 0xe3, 0x0e, 0x7b, 0x3c, 0x1e, 0xb7, 0xa6, 0x69, 0x79, 0x00, 0xcf,
|
||||
0x14, 0x45, 0xb1, 0x76, 0xf3, 0xfd, 0x05, 0x05, 0x39, 0x26, 0x66, 0x88,
|
||||
0x20, 0x72, 0x94, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae,
|
||||
0x42, 0x60, 0x82
|
||||
};
|
||||
|
||||
|
||||
/*
|
||||
* Constructs a MPlayer as a child of 'parent', with the
|
||||
* name 'name' and widget flags set to 'f'.
|
||||
*/
|
||||
MPlayer::MPlayer( QWidget* parent, const char* name, WFlags fl )
|
||||
: QWidget( parent, name, fl )
|
||||
{
|
||||
QImage img;
|
||||
img.loadFromData( img0_mplayer, sizeof( img0_mplayer ), "PNG" );
|
||||
image0 = img;
|
||||
img.loadFromData( img1_mplayer, sizeof( img1_mplayer ), "PNG" );
|
||||
image1 = img;
|
||||
img.loadFromData( img2_mplayer, sizeof( img2_mplayer ), "PNG" );
|
||||
image2 = img;
|
||||
img.loadFromData( img3_mplayer, sizeof( img3_mplayer ), "PNG" );
|
||||
image3 = img;
|
||||
if ( !name )
|
||||
setName( "MPlayer" );
|
||||
setEnabled( TRUE );
|
||||
setIcon( image0 );
|
||||
MPlayerLayout = new QGridLayout( this, 1, 1, 3, 3, "MPlayerLayout");
|
||||
|
||||
textLabel1 = new QLabel( this, "textLabel1" );
|
||||
|
||||
MPlayerLayout->addWidget( textLabel1, 0, 0 );
|
||||
|
||||
cbAudio = new QComboBox( FALSE, this, "cbAudio" );
|
||||
|
||||
MPlayerLayout->addWidget( cbAudio, 0, 1 );
|
||||
spacer1 = new QSpacerItem( 190, 20, QSizePolicy::Expanding, QSizePolicy::Minimum );
|
||||
MPlayerLayout->addItem( spacer1, 0, 5 );
|
||||
|
||||
cbSub = new QComboBox( FALSE, this, "cbSub" );
|
||||
|
||||
MPlayerLayout->addWidget( cbSub, 0, 4 );
|
||||
|
||||
textLabel1_2 = new QLabel( this, "textLabel1_2" );
|
||||
|
||||
MPlayerLayout->addWidget( textLabel1_2, 0, 3 );
|
||||
|
||||
bSwitchAudio = new KPushButton( this, "bSwitchAudio" );
|
||||
bSwitchAudio->setMaximumSize( QSize( 22, 22 ) );
|
||||
bSwitchAudio->setFlat( TRUE );
|
||||
|
||||
MPlayerLayout->addWidget( bSwitchAudio, 0, 2 );
|
||||
|
||||
layout6 = new QHBoxLayout( 0, 0, 6, "layout6");
|
||||
|
||||
bStop = new KPushButton( this, "bStop" );
|
||||
bStop->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, bStop->sizePolicy().hasHeightForWidth() ) );
|
||||
bStop->setMinimumSize( QSize( 30, 30 ) );
|
||||
bStop->setPixmap( image1 );
|
||||
bStop->setFlat( TRUE );
|
||||
layout6->addWidget( bStop );
|
||||
|
||||
bPlay = new KPushButton( this, "bPlay" );
|
||||
bPlay->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, bPlay->sizePolicy().hasHeightForWidth() ) );
|
||||
bPlay->setMinimumSize( QSize( 30, 30 ) );
|
||||
bPlay->setPixmap( image2 );
|
||||
bPlay->setFlat( TRUE );
|
||||
layout6->addWidget( bPlay );
|
||||
|
||||
slider = new QSlider( this, "slider" );
|
||||
slider->setOrientation( QSlider::Horizontal );
|
||||
layout6->addWidget( slider );
|
||||
|
||||
layout5 = new QHBoxLayout( 0, 0, 6, "layout5");
|
||||
|
||||
bDown = new KPushButton( this, "bDown" );
|
||||
bDown->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)1, (QSizePolicy::SizeType)1, 0, 0, bDown->sizePolicy().hasHeightForWidth() ) );
|
||||
bDown->setMinimumSize( QSize( 22, 22 ) );
|
||||
bDown->setMaximumSize( QSize( 22, 22 ) );
|
||||
QFont bDown_font( bDown->font() );
|
||||
bDown_font.setBold( TRUE );
|
||||
bDown->setFont( bDown_font );
|
||||
bDown->setFlat( TRUE );
|
||||
layout5->addWidget( bDown );
|
||||
|
||||
pixmapLabel1 = new QLabel( this, "pixmapLabel1" );
|
||||
pixmapLabel1->setMaximumSize( QSize( 22, 22 ) );
|
||||
pixmapLabel1->setPixmap( image3 );
|
||||
pixmapLabel1->setScaledContents( TRUE );
|
||||
layout5->addWidget( pixmapLabel1 );
|
||||
|
||||
bUp = new KPushButton( this, "bUp" );
|
||||
bUp->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)1, (QSizePolicy::SizeType)1, 0, 0, bUp->sizePolicy().hasHeightForWidth() ) );
|
||||
bUp->setMinimumSize( QSize( 22, 22 ) );
|
||||
bUp->setMaximumSize( QSize( 22, 22 ) );
|
||||
QFont bUp_font( bUp->font() );
|
||||
bUp_font.setBold( TRUE );
|
||||
bUp->setFont( bUp_font );
|
||||
bUp->setFlat( TRUE );
|
||||
layout5->addWidget( bUp );
|
||||
layout6->addLayout( layout5 );
|
||||
|
||||
MPlayerLayout->addMultiCellLayout( layout6, 4, 4, 0, 5 );
|
||||
|
||||
frame4 = new QFrame( this, "frame4" );
|
||||
frame4->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)7, (QSizePolicy::SizeType)0, 0, 0, frame4->sizePolicy().hasHeightForWidth() ) );
|
||||
frame4->setFrameShape( QFrame::HLine );
|
||||
frame4->setFrameShadow( QFrame::Raised );
|
||||
|
||||
MPlayerLayout->addMultiCellWidget( frame4, 1, 1, 0, 5 );
|
||||
|
||||
Label = new QLabel( this, "Label" );
|
||||
Label->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)7, (QSizePolicy::SizeType)7, 0, 0, Label->sizePolicy().hasHeightForWidth() ) );
|
||||
Label->setPaletteBackgroundColor( QColor( 0, 0, 0 ) );
|
||||
Label->setAlignment( int( QLabel::AlignCenter ) );
|
||||
|
||||
MPlayerLayout->addMultiCellWidget( Label, 2, 2, 0, 5 );
|
||||
|
||||
frame3 = new QFrame( this, "frame3" );
|
||||
frame3->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)7, (QSizePolicy::SizeType)0, 0, 0, frame3->sizePolicy().hasHeightForWidth() ) );
|
||||
frame3->setFrameShape( QFrame::HLine );
|
||||
frame3->setFrameShadow( QFrame::Raised );
|
||||
|
||||
MPlayerLayout->addMultiCellWidget( frame3, 3, 3, 0, 5 );
|
||||
languageChange();
|
||||
resize( QSize(559, 458).expandedTo(minimumSizeHint()) );
|
||||
clearWState( WState_Polished );
|
||||
|
||||
// signals and slots connections
|
||||
connect( bStop, SIGNAL( clicked() ), this, SLOT( bStopClick() ) );
|
||||
connect( bPlay, SIGNAL( clicked() ), this, SLOT( bPlayClick() ) );
|
||||
connect( slider, SIGNAL( sliderReleased() ), this, SLOT( sliderReleased() ) );
|
||||
connect( slider, SIGNAL( sliderPressed() ), this, SLOT( sliderPressed() ) );
|
||||
connect( slider, SIGNAL( valueChanged(int) ), this, SLOT( sliderChanged(int) ) );
|
||||
connect( cbAudio, SIGNAL( activated(int) ), this, SLOT( cbAudioActivated(int) ) );
|
||||
connect( cbSub, SIGNAL( activated(int) ), this, SLOT( cbSubActivated(int) ) );
|
||||
connect( bDown, SIGNAL( clicked() ), this, SLOT( bDownClick() ) );
|
||||
connect( bUp, SIGNAL( clicked() ), this, SLOT( bUpClick() ) );
|
||||
connect( bSwitchAudio, SIGNAL( clicked() ), this, SLOT( bSwitchAudioClick() ) );
|
||||
}
|
||||
|
||||
/*
|
||||
* Destroys the object and frees any allocated resources
|
||||
*/
|
||||
MPlayer::~MPlayer()
|
||||
{
|
||||
// no need to delete child widgets, Qt does it all for us
|
||||
}
|
||||
|
||||
/*
|
||||
* Sets the strings of the subwidgets using the current
|
||||
* language.
|
||||
*/
|
||||
void MPlayer::languageChange()
|
||||
{
|
||||
setCaption( tr2i18n( "Preview" ) );
|
||||
textLabel1->setText( tr2i18n( "Audio" ) );
|
||||
textLabel1_2->setText( tr2i18n( "Subpicture" ) );
|
||||
bSwitchAudio->setText( QString::null );
|
||||
bStop->setText( QString::null );
|
||||
bPlay->setText( QString::null );
|
||||
bPlay->setAccel( QKeySequence( QString::null ) );
|
||||
bDown->setText( tr2i18n( "-" ) );
|
||||
bDown->setAccel( QKeySequence( QString::null ) );
|
||||
bUp->setText( tr2i18n( "+" ) );
|
||||
bUp->setAccel( QKeySequence( QString::null ) );
|
||||
Label->setText( QString::null );
|
||||
}
|
||||
|
||||
void MPlayer::bStopClick()
|
||||
{
|
||||
qWarning( "MPlayer::bStopClick(): Not implemented yet" );
|
||||
}
|
||||
|
||||
void MPlayer::cbAudioActivated(int)
|
||||
{
|
||||
qWarning( "MPlayer::cbAudioActivated(int): Not implemented yet" );
|
||||
}
|
||||
|
||||
void MPlayer::slider_sliderReleased()
|
||||
{
|
||||
qWarning( "MPlayer::slider_sliderReleased(): Not implemented yet" );
|
||||
}
|
||||
|
||||
void MPlayer::sliderReleased()
|
||||
{
|
||||
qWarning( "MPlayer::sliderReleased(): Not implemented yet" );
|
||||
}
|
||||
|
||||
void MPlayer::sliderPressed()
|
||||
{
|
||||
qWarning( "MPlayer::sliderPressed(): Not implemented yet" );
|
||||
}
|
||||
|
||||
void MPlayer::sliderChanged(int)
|
||||
{
|
||||
qWarning( "MPlayer::sliderChanged(int): Not implemented yet" );
|
||||
}
|
||||
|
||||
void MPlayer::bPlayClick()
|
||||
{
|
||||
qWarning( "MPlayer::bPlayClick(): Not implemented yet" );
|
||||
}
|
||||
|
||||
void MPlayer::cbSubActivated(int)
|
||||
{
|
||||
qWarning( "MPlayer::cbSubActivated(int): Not implemented yet" );
|
||||
}
|
||||
|
||||
void MPlayer::bUpClick()
|
||||
{
|
||||
qWarning( "MPlayer::bUpClick(): Not implemented yet" );
|
||||
}
|
||||
|
||||
void MPlayer::bDownClick()
|
||||
{
|
||||
qWarning( "MPlayer::bDownClick(): Not implemented yet" );
|
||||
}
|
||||
|
||||
void MPlayer::bSwitchAudioClick()
|
||||
{
|
||||
qWarning( "MPlayer::bSwitchAudioClick(): Not implemented yet" );
|
||||
}
|
||||
|
||||
#include "mplayer.moc"
|
@ -0,0 +1,439 @@
|
||||
<!DOCTYPE UI><UI version="3.3" stdsetdef="1">
|
||||
<class>MPlayer</class>
|
||||
<widget class="QWidget">
|
||||
<property name="name">
|
||||
<cstring>MPlayer</cstring>
|
||||
</property>
|
||||
<property name="enabled">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>559</width>
|
||||
<height>458</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="caption">
|
||||
<string>Preview</string>
|
||||
</property>
|
||||
<property name="icon">
|
||||
<pixmap>image0</pixmap>
|
||||
</property>
|
||||
<grid>
|
||||
<property name="name">
|
||||
<cstring>unnamed</cstring>
|
||||
</property>
|
||||
<property name="margin">
|
||||
<number>3</number>
|
||||
</property>
|
||||
<property name="spacing">
|
||||
<number>3</number>
|
||||
</property>
|
||||
<widget class="QLabel" row="0" column="0">
|
||||
<property name="name">
|
||||
<cstring>textLabel1</cstring>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Audio</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QComboBox" row="0" column="1">
|
||||
<property name="name">
|
||||
<cstring>cbAudio</cstring>
|
||||
</property>
|
||||
</widget>
|
||||
<spacer row="0" column="5">
|
||||
<property name="name">
|
||||
<cstring>spacer1</cstring>
|
||||
</property>
|
||||
<property name="orientation">
|
||||
<enum>Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeType">
|
||||
<enum>Expanding</enum>
|
||||
</property>
|
||||
<property name="sizeHint">
|
||||
<size>
|
||||
<width>190</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
<widget class="QComboBox" row="0" column="4">
|
||||
<property name="name">
|
||||
<cstring>cbSub</cstring>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QLabel" row="0" column="3">
|
||||
<property name="name">
|
||||
<cstring>textLabel1_2</cstring>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Subpicture</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="KPushButton" row="0" column="2">
|
||||
<property name="name">
|
||||
<cstring>bSwitchAudio</cstring>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>22</width>
|
||||
<height>22</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string></string>
|
||||
</property>
|
||||
<property name="flat">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QLayoutWidget" row="4" column="0" rowspan="1" colspan="6">
|
||||
<property name="name">
|
||||
<cstring>layout6</cstring>
|
||||
</property>
|
||||
<hbox>
|
||||
<property name="name">
|
||||
<cstring>unnamed</cstring>
|
||||
</property>
|
||||
<widget class="KPushButton">
|
||||
<property name="name">
|
||||
<cstring>bStop</cstring>
|
||||
</property>
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy>
|
||||
<hsizetype>0</hsizetype>
|
||||
<vsizetype>0</vsizetype>
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>30</width>
|
||||
<height>30</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string></string>
|
||||
</property>
|
||||
<property name="pixmap">
|
||||
<pixmap>image1</pixmap>
|
||||
</property>
|
||||
<property name="flat">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="KPushButton">
|
||||
<property name="name">
|
||||
<cstring>bPlay</cstring>
|
||||
</property>
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy>
|
||||
<hsizetype>0</hsizetype>
|
||||
<vsizetype>0</vsizetype>
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>30</width>
|
||||
<height>30</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string></string>
|
||||
</property>
|
||||
<property name="pixmap">
|
||||
<pixmap>image2</pixmap>
|
||||
</property>
|
||||
<property name="accel">
|
||||
<string></string>
|
||||
</property>
|
||||
<property name="flat">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QSlider">
|
||||
<property name="name">
|
||||
<cstring>slider</cstring>
|
||||
</property>
|
||||
<property name="orientation">
|
||||
<enum>Horizontal</enum>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QLayoutWidget">
|
||||
<property name="name">
|
||||
<cstring>layout5</cstring>
|
||||
</property>
|
||||
<hbox>
|
||||
<property name="name">
|
||||
<cstring>unnamed</cstring>
|
||||
</property>
|
||||
<widget class="KPushButton">
|
||||
<property name="name">
|
||||
<cstring>bDown</cstring>
|
||||
</property>
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy>
|
||||
<hsizetype>1</hsizetype>
|
||||
<vsizetype>1</vsizetype>
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>22</width>
|
||||
<height>22</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>22</width>
|
||||
<height>22</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="font">
|
||||
<font>
|
||||
<bold>1</bold>
|
||||
</font>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>-</string>
|
||||
</property>
|
||||
<property name="accel">
|
||||
<string></string>
|
||||
</property>
|
||||
<property name="flat">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QLabel">
|
||||
<property name="name">
|
||||
<cstring>pixmapLabel1</cstring>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>22</width>
|
||||
<height>22</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="pixmap">
|
||||
<pixmap>image3</pixmap>
|
||||
</property>
|
||||
<property name="scaledContents">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="KPushButton">
|
||||
<property name="name">
|
||||
<cstring>bUp</cstring>
|
||||
</property>
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy>
|
||||
<hsizetype>1</hsizetype>
|
||||
<vsizetype>1</vsizetype>
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>22</width>
|
||||
<height>22</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>22</width>
|
||||
<height>22</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="font">
|
||||
<font>
|
||||
<bold>1</bold>
|
||||
</font>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>+</string>
|
||||
</property>
|
||||
<property name="accel">
|
||||
<string></string>
|
||||
</property>
|
||||
<property name="flat">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</hbox>
|
||||
</widget>
|
||||
</hbox>
|
||||
</widget>
|
||||
<widget class="QFrame" row="1" column="0" rowspan="1" colspan="6">
|
||||
<property name="name">
|
||||
<cstring>frame4</cstring>
|
||||
</property>
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy>
|
||||
<hsizetype>7</hsizetype>
|
||||
<vsizetype>0</vsizetype>
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="frameShape">
|
||||
<enum>HLine</enum>
|
||||
</property>
|
||||
<property name="frameShadow">
|
||||
<enum>Raised</enum>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QLabel" row="2" column="0" rowspan="1" colspan="6">
|
||||
<property name="name">
|
||||
<cstring>Label</cstring>
|
||||
</property>
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy>
|
||||
<hsizetype>7</hsizetype>
|
||||
<vsizetype>7</vsizetype>
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="paletteBackgroundColor">
|
||||
<color>
|
||||
<red>0</red>
|
||||
<green>0</green>
|
||||
<blue>0</blue>
|
||||
</color>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string></string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>AlignCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QFrame" row="3" column="0" rowspan="1" colspan="6">
|
||||
<property name="name">
|
||||
<cstring>frame3</cstring>
|
||||
</property>
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy>
|
||||
<hsizetype>7</hsizetype>
|
||||
<vsizetype>0</vsizetype>
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="frameShape">
|
||||
<enum>HLine</enum>
|
||||
</property>
|
||||
<property name="frameShadow">
|
||||
<enum>Raised</enum>
|
||||
</property>
|
||||
</widget>
|
||||
</grid>
|
||||
</widget>
|
||||
<images>
|
||||
<image name="image0">
|
||||
<data format="PNG" length="1377">89504e470d0a1a0a0000000d494844520000002f0000002708060000009f7411c100000528494441545885ed597d6c535514ffddb796c2f81844e62423ac54374d8b5aa683652392f80f1103c902cd08099b6e2ca2b8fd83e0186e44d42c59202806e5638400e2f6c71697992c241015718fcae63689205f5b670703442ca26c6b37eef18ff2ae7d7dafeb74fdd0c45fd2e4de7bce3bfd9d9373cebdef3e26cb32fe6da8db7f91a40486fca20c369a9e21568482d1d2e0a693c77fc4c8c8fd903a675aaf10630cdb6b5fd075824533f21dad77a9b1ee0c06ef79c1a4518318163b0e2cd5181837f99606379ded70e346ff1d242448e3b2150ec10e8c296d5a1adcd47de9262e5fb801a331415727dac4f5a0223fc39645b95fdec62fcb1f5629656767c79454201863702cd9896b7dbf6a65b22cc3956aa792f6dff05cf204b42c9a11078ae1c118c3e9d3a75569c39aae0dd26ae71d00c01f792971213656043b2029c43f9c3f2d6ea4c60a2252cd4595ad499b147332e385206f1c671f8e0762dfdf2288ffc9c7125b871f1755fb9f23ffc5cf3e31361000bd5265ccbfaab4a7c0b93256a0a7132d4c0c389d18a61924fc3ec2354a39d64a00807cfe1d109198b79edb86a1a1613c9fb94de8ee3e540cfbb36900fc0e70aeb5172904c645aab24e1e55b9b4e8a026d20a761f2a46ebb96d585f780000e0f57a2346722c90e6df3a1bb2c13f9a9182ef9c3dc87ee22df87c230010d21100b0582c626c301860b7dbe176bb2149fed26a6b6b1363499234634992e0f57a61b15860b158543abae4f5161582479a5e7f609ca1fd4a3500a0b3ad57e8bd56508b85195bb0fb503100a0bfbf1fbb76ed12a9d3d5d585b2b232a19f92a23e3bf97c3e783c1e007fd589c96482cbe5426f6f2f38e7a8adadd5f0ab9f68a390e4dd3fdd16068993ca78755593d0fbe8f05a7c7be93d91ef00505a5a8aab57af8a79737333f2f2f2c43c309246a3119b376f06001416168a5a59b76e9dd0292a2ad2f03bd83be81fc8b28cc4c6eb4444c43927ce39cd4bdd4059e915c4392722a29327ce13e79cb2d22b2873ee9b3438e0a3acf40aea38e312cf70ce09806a0c803a3b3bc9ef3b91c3e12087c32164c1ba050505626e369b55b6955f62e3754a6cbc4eb22cfbcff38bfbe7926fc523516d71803fea4aabede9e981d96cfedb36a67c7613007062968b1900e0a9a4d85c2228c423d54a2500f864c1f488180b07228ae81e200180e75c1b8b76ca441a1767d9296e974ec1608ca164d53e5c387f0d73cc3371b4b974d41a7ce3fbbbf1bb3153c01843aead4ad483776818bdddb734c79360d4654f8f2f79c61872ac95f00e0da3bdbb5a235fbeb80639d64aecaf7f05d6275355b2293d1d4cec184ea733e6ef8139d64a188d0968efaec6ecd9b3515353a392379fdc84d52fe5a264d55e30c6c4ce6f7bd01de3769edffbfe0900c0575d5bc55a7979392449425f5f9f585bbf710900e0e9399b6068b801fb74233e48bccc8020f20b32b6449ff5031cdeff354c26fdac4d4b4b832449a2ad1efdbc0c93a798702ad5c5b64fba243244f5b4d198805c5b158c130cd8f7e95a3c941cfa2e6766f2d4713b70cc5931aadc60f0d30bd57554e407ee799138d98461df085e5eb967dce40271ff3ec7330b2d58f3aa55891c49a31caf01c0e3f120292929a45c45fee3fa3cb6a1b8e51fef56c40953932661e1a2c7b074e59cb00d60d1bcad705e7c57b39e9f9f8fbaba3a31dfb3f3b8eef39aa4db716069580706067c58b622734c044321d4ffe81d1f8ed49e429a2559b31ed52f23e1b0a1b8851863f8e687b7c118d3cded5c5b1500fd2f2371bdfa5008e5daaae0f38ea864cace1ba8178cb8465ec1c69263a4972e9c13761e7c31646afe09ba8d3cd6d8e39a010000000049454e44ae426082</data>
|
||||
</image>
|
||||
<image name="image1">
|
||||
<data format="PNG" length="1073">89504e470d0a1a0a0000000d4948445200000016000000160806000000c4b46c3b000003f849444154388d9595dd6f145518c67fe7ccc7ee6c77962d2d1f8bba14d1340621b82b26dc1063a206895e60421413bd2a813b132fbcf24a13fe02c3c524c43b2ec444632244888951c48fb24d459410a87ca56cb7dded7eb03b3bb333e778b1b4b648b13cc993c99939f37b9fbc6fce8ce0212a1c99b440af039543eb146840fb6855b654b3f28bf772b8d2bbe221d0ddc001d03b11e411d600002ae8a0e35bc0a450d1c9823e7ecef3bcf87fc18523935b41bc8f611d4c0fa4b21b873372c35092d1e1168e1573ad96e67a4531373bab6a0ddf57917fced2773fd9a14f9cf73c2f7a20b8706472338863d899bd3b9f74786d97cbf62734ebb31686ec6fd5c07c2b62aadce354a9cb0f17e709fde65f0955fbf0597df2d402dcb82fe9a7e94ce6d53776af11efbee8f074ce206119f4620823bd68430a863326db375b6c18b4f8bba2879b5df17c556f29ed2d3ab74ba5925e04e7761d3e8aedbeb5ef85ac78bd68615b9230d204bdfb1c2a829e2288345a6b36adb5705396f8f3763cd40db5b5898933c562b127fa692fec1646f29b1d4fadcd1edce3e03a926f27fc95e6ba4caf3ce7d08b345ffdeaf3fd44a56104d3ef6de78bd366e1f0b885d607d203c94c61ab4dac148db606e0a3b7d73f14faf1890a9d40d10d15a3b998dfaf25dc5a35bdbfd21bf9d904d6013b339935329b8c68b6e5aa922ee8b31f130034fd142dd25251dfd614f9bc09e410323fec0afc50e1878a7eded515102ae46a2dd35f982608238761e74d20854c0ca4ac1ef5b6420ab0cd15cfcd325d9b4b2e2f2204c8842314aeb970b3d9b59869680c09aeb33a30c0d55a06b1b05ddf2b809226681f157466da0eed38b9f850af7cda1fa83e5c43dced0a1d05265a95815b8d8eda120be791600b328dfe44eefa01e8b82255bb2c2dd5ac0093043565191a7b8957aba419639b3122ac2a93ee95acbe714700140f9ddf23ecf497b9dcc6c141d77ea42618122205f3ad90f2f474cbe95efe60549efdda0428e8e3e72e44639fb7eab3874686064998a2ff795a087ddf70342c1b5810696ed6e75161e3bb5179f627a06500944a25fd78e19da9a0c7334ac59b1f1b32442a214858ba6f73f93569ffbb16f4b872b3a9aab5c6f8507ce958564c5f5a0403ec2b58d5aace8f377c735bb3138db8298bb5ae896d496c53fcc79601738d1e17a71a94679be3eba289a37959fa0d98f33c2f5e04974a25bdb798aa55f5c844c33752b38dde48ab13d9493312038e8929255280d631d5f9367f5cefa8cb375b77ebf5e6e9a1f8d2b17bd08ae779bda5dd5bd4d8d89804062ef2e64b914cef5758dba41439d7311c80961f7755ac2a26dd2bc978e6ccbd9ece00f515ff204be002b02bf148b629f2790c3b2fc0152829741448d52e67f58d3b6b8cb91ad0027ccff3d452c63f42b8e4bfe27a6d4a0000000049454e44ae426082</data>
|
||||
</image>
|
||||
<image name="image2">
|
||||
<data format="PNG" length="1205">89504e470d0a1a0a0000000d4948445200000016000000160806000000c4b46c3b0000047c49444154388d8595db6f54551487bfbdcf656e9de994164b118602318454a04e4583899760d454a289688cb7f856020f24bc10ff0025fd03d4f4e1280fbef4411e4d30627c2148086548ad8821b140a9d2ceb4d39933cce5dcf6f661da424d8b275959679fbdd7777e6b65656dc1639efc89490bf466507d689d040de8265acd59ca2d5e715ef3378a158f811e02de073d882087b0520028af818eee01934285e7f2faec25c771a2ff05e74f4cee06710ac3faa82395cc6ee9c9c8deee387b7a6a24ac88bfca1ddc292a164a2555ae369b2a6c5eb2f4832ff6ebf1cb8ee384eb82f32726778018c3ce0c0fee4af0e6c134fbb66b9ec85a18b27d54034bb590e9b980f3851617a796f09beecd982a7ff6b43e777e056efc47e9d71d99cc1b6f1fea149fbe92e0a93e839865f0cd4f15f66e8fe1871a3fd41852d09331d9b7c3a2b7cbe27651f7b82df1eca2de59181e4acc160a05bd0aee3b787c143bfdc191e7b2e2ad210bdb92f8a1c60b34efbc90e5ab1f16d9b5c5c2f3155ea0f0428dd69aad9b2cd2494bfc311b75b77c6d6de5fa85a1a1a1c068abbd764818b1d103bb33f1e1bc8594e0078a56d0866ceb89f1e2408a93df699ec90578815ede6f67b0a94352f74d664a417f29da3ed9cbcddb46fef884059c4aa7d32fbd3a98125d1de0059a56d056eb059add5be300bcf7bcc1e971c1de2dfe9afd56a0b00d9fe97965d75b616084d58b26b01918cc643a65361ee2d6e5461d08c0f8499b0fbf84a3075ca248335b8e989acbe23693d4e8908aca802b723913e843c85c4f5ad0f4154d5fa197db65c5af0fcfb0bfb7c2e4df2966dd7646982608a30fc3ce4920898ca5925640a5ae701b0acfd7b47cbdea3752fedb7c965223b9fa4d0801329610905ecddb6d59cc57254557526d4a2a4d837b95185767528f2d8b1f190841db567e809226e826ca6bccd713d4a3783b7f4023a8f9367a7dc100bc3efaf05d88761451ab2574e899683507dcab36d4ce4824d6046ae486d3e4f019089627846980041e343dd05151aafa9cb4945b0426f1caca3234f623163322d6937cf80c8022694524ad88b819619b11c25f5426ad5b597df7be79c579cd1f3a76f95ce4553fb1a2445757da5e23526980ccea7a64acc6b63408a157cfb5e7878f6a2dd513d1fc854e63a16c02e4f5d94bd7c291ef6b95d2b1feee2e62a678d86f3c049ffe769eac0dda5ea969fb8c176a662a4b28bffacb1ef9f3af40cd0028140a7a5bfee3692f60af52d18e27bb0d918c0962962666695ede97e6f3f1fbc4ccf63a6eb77dccd408026ecdb86ab15c9de88e6e8c65c53f3756c10047f2d6e2a2ce4d549be680db08fbd3498b4d6913db925cbe59c736c51ab30c58a8064c4d57992bb9139bc3eba33959b80a2c388e13ad820b85821e1e4a961775fff56ad34896aa417fad11da713314a9848929255280d6118b4b757ebfd3507fced41e542aee8fddd18db16568d1719c00d669a691911109a4a678f770283b8e2aac0129455f3a6124006acda8a522553469dd8a47f317966b3a0f5436bc411e810bc02e46fd5957e47218764e405aa0a4d0a127557d2eabefdeef3416ca400d683a8ea31e65fc0b65f3416ec3c8f69a0000000049454e44ae426082</data>
|
||||
</image>
|
||||
<image name="image3">
|
||||
<data format="PNG" length="1191">89504e470d0a1a0a0000000d4948445200000016000000160806000000c4b46c3b0000046e49444154388d95944f68db561cc7bfcf962ddb926d49b58393da8e9bd03681ae0da50cf732e8c64642c88ad232da831965f4b2c146a097b20db66b6130c67aef9fd328ad2ea526ec52bad143581ddc85266d5db769fca7691c59b25463cb8adf0e5b44bc6429fb814efa7e3feffb7eefbd1fa194e26d25cb725f30183cea72b9185dd7ff5014e5d5db3c6427b02ccbfe542af57d2412199324299e4aa562d168542084a056abe9cf9f3f7fb5bebe5e5e5b5b5b585e5efe4651147357b02ccb646060e0cb6432f9d9c4c4c43b8d4603e572194f9f3ec5caca0a28a5482412d8bf7f3ff6eedd0b411090cd6617979797af552a954b8aa274b7816559e60f1c38903d79f264daebf532d96c16d56a75d7edf6f5f561727212dd6eb77bebd6adf9274f9e7ca8284abd077ce1c285db994c66b2542ae1debd7b6f6b614fa5d3690c0f0fe3faf5eb770b85c2078aa2741900989999b974ead4a98f2ccb422e9703cff3ff0bbcb0b080fefe7ec8b2fcdecd9b377f06f039999e9e1e999a9afa3d9d4eef999d9d45b7dbdd664c2412884422f8e7f09c7e6f2d4208c6c7c791cfe78d3b77eebccf44a3d1338383837b5aad16388eeb1187c361a4d36948920400e8743ab06d1bbaae637e7e1e9aa6f5e89bcd2652a9545014c5330cc77187fd7e3f745def6981dbedc6912347100a8560dbb693ca300cd8b68d83070fe2f1e3c7ce3f00d0340d922481e7f911c6e7f30d79bd5e349b4d04834147e4f3f960591654550500504a1db0699aa094421004b4db6dc7b3b1b101b7db0d9fcf37c4743a9df6eaea2a62b118dc6eb723b26d1ba552097ebf1f0cc338ad78f3e60d28a5a094c2e3f1f4ec32140a616d6d0d9665598c6118c5f5f5f57793c9644f62c330b0babaea4036bfcdf49b8f65ab876559a8aa0ac3309e31a669ce699a76c6344d88a2e888789e47b55ac5ebd7afb70129a588442288c7e32084f48469341a68341a7fba8786865eba5caee956ab25f6f7f7439224b02c0b9665118fc7d16eb7b1b2b202c330d06c36d1e974303a3a8ae3c78f231008385ac33090cbe5502c162be572f92b422945269339974c267f181818104f9c38814422d1738d28a5d075dd39b0ad2901a05c2ee3fefdfb28954a66b158fcfaca952b3f394f3a93c9fc383838f8852449ccb163c7303a3a8a68348addaa56ab61696909f97c1eaaaa760b85c2b5ab57af9e03006653649ae6cc8b172fb87abdfeb1aaaa7d0f1f3ec4a14387100e87210882b348ad5643bd5e47a3d1c0d2d212aad52a344d5355559d350ce3fc266fdb3c3e7dfaf4d14020f05b381c0eb02c0b42085896755aa0691a2ccb72aea46ddbed4aa5327ee3c68dbb5b393b0efab367cffe228ae2275eaf178410743a1d6c6c6c801002afd70b8ee3100e8731363686070f1edcbe78f1e2d4bf19cc362a8056ab755ed7f5a42449e9582c867dfbf641100488a288e1e161f03c0f42082e5fbe9c9b9b9bfb7427c68e8981bf073fcbb2dff9fdfe894422111f191909a55229b85c2ee3d1a3479542a1f0ebe2e2e2b78aa2683bf9ff13bc65010f80218ee30e7b3c1eb7a6697900cf1445b176f3fd0505392666882072940000000049454e44ae426082</data>
|
||||
</image>
|
||||
</images>
|
||||
<connections>
|
||||
<connection>
|
||||
<sender>bStop</sender>
|
||||
<signal>clicked()</signal>
|
||||
<receiver>MPlayer</receiver>
|
||||
<slot>bStopClick()</slot>
|
||||
</connection>
|
||||
<connection>
|
||||
<sender>bPlay</sender>
|
||||
<signal>clicked()</signal>
|
||||
<receiver>MPlayer</receiver>
|
||||
<slot>bPlayClick()</slot>
|
||||
</connection>
|
||||
<connection>
|
||||
<sender>slider</sender>
|
||||
<signal>sliderReleased()</signal>
|
||||
<receiver>MPlayer</receiver>
|
||||
<slot>sliderReleased()</slot>
|
||||
</connection>
|
||||
<connection>
|
||||
<sender>slider</sender>
|
||||
<signal>sliderPressed()</signal>
|
||||
<receiver>MPlayer</receiver>
|
||||
<slot>sliderPressed()</slot>
|
||||
</connection>
|
||||
<connection>
|
||||
<sender>slider</sender>
|
||||
<signal>valueChanged(int)</signal>
|
||||
<receiver>MPlayer</receiver>
|
||||
<slot>sliderChanged(int)</slot>
|
||||
</connection>
|
||||
<connection>
|
||||
<sender>cbAudio</sender>
|
||||
<signal>activated(int)</signal>
|
||||
<receiver>MPlayer</receiver>
|
||||
<slot>cbAudioActivated(int)</slot>
|
||||
</connection>
|
||||
<connection>
|
||||
<sender>cbSub</sender>
|
||||
<signal>activated(int)</signal>
|
||||
<receiver>MPlayer</receiver>
|
||||
<slot>cbSubActivated(int)</slot>
|
||||
</connection>
|
||||
<connection>
|
||||
<sender>bDown</sender>
|
||||
<signal>clicked()</signal>
|
||||
<receiver>MPlayer</receiver>
|
||||
<slot>bDownClick()</slot>
|
||||
</connection>
|
||||
<connection>
|
||||
<sender>bUp</sender>
|
||||
<signal>clicked()</signal>
|
||||
<receiver>MPlayer</receiver>
|
||||
<slot>bUpClick()</slot>
|
||||
</connection>
|
||||
<connection>
|
||||
<sender>bSwitchAudio</sender>
|
||||
<signal>clicked()</signal>
|
||||
<receiver>MPlayer</receiver>
|
||||
<slot>bSwitchAudioClick()</slot>
|
||||
</connection>
|
||||
</connections>
|
||||
<slots>
|
||||
<slot>bStopClick()</slot>
|
||||
<slot>cbAudioActivated(int)</slot>
|
||||
<slot>slider_sliderReleased()</slot>
|
||||
<slot>sliderReleased()</slot>
|
||||
<slot>sliderPressed()</slot>
|
||||
<slot>sliderChanged( int )</slot>
|
||||
<slot>bPlayClick()</slot>
|
||||
<slot>cbSubActivated(int)</slot>
|
||||
<slot>bUpClick()</slot>
|
||||
<slot>bDownClick()</slot>
|
||||
<slot>bSwitchAudioClick()</slot>
|
||||
</slots>
|
||||
<layoutdefaults spacing="6" margin="11"/>
|
||||
<includehints>
|
||||
<includehint>kicondialog.h</includehint>
|
||||
<includehint>kpushbutton.h</includehint>
|
||||
<includehint>kpushbutton.h</includehint>
|
||||
<includehint>kpushbutton.h</includehint>
|
||||
<includehint>kpushbutton.h</includehint>
|
||||
</includehints>
|
||||
</UI>
|
@ -0,0 +1,18 @@
|
||||
AM_CPPFLAGS= -I$(srcdir) $(all_includes)
|
||||
|
||||
KDE_CXXFLAGS = $(ENABLE_PERMISSIVE_FLAG)
|
||||
|
||||
METASOURCES = AUTO
|
||||
|
||||
noinst_LTLIBRARIES = libk9author.la
|
||||
libk9author_la_LDFLAGS = $(all_libraries)
|
||||
libk9author_la_SOURCES = chapterEdit.ui import.ui k9avidecode.cpp k9avifile.cpp \
|
||||
k9canvasselection.cpp k9chapteredit.cpp k9import.cpp k9importfiles.cpp k9lvitemimport.cpp \
|
||||
k9menu.cpp k9menubutton.cpp k9menuedit.cpp k9menueditor.cpp k9newdvd.cpp \
|
||||
k9newtitle.cpp k9title.cpp menuEdit.ui newTitle.ui
|
||||
noinst_HEADERS = k9avidecode.h k9avifile.h k9canvasselection.h k9chapteredit.h \
|
||||
k9import.h k9importfiles.h k9lvitemimport.h k9menu.h k9menubutton.h k9menuedit.h \
|
||||
k9menueditor.h k9newdvd.h k9newtitle.h k9title.h
|
||||
libk9author_la_LIBADD = $(top_builddir)/libk9copy/libk9copy.la $(LIB_KDEUI)
|
||||
INCLUDES = -I$(top_srcdir)/dvdread -I$(top_srcdir)/k9devices \
|
||||
-I$(top_srcdir)/k9vamps -I$(top_srcdir)/libk9copy -I$(top_srcdir)/src $(all_includes)
|
@ -0,0 +1,212 @@
|
||||
#include <klocale.h>
|
||||
/****************************************************************************
|
||||
** Form implementation generated from reading ui file './chapterEdit.ui'
|
||||
**
|
||||
** Created: dim. oct. 26 08:56:28 2008
|
||||
**
|
||||
** WARNING! All changes made in this file will be lost!
|
||||
****************************************************************************/
|
||||
|
||||
#include "chapterEdit.h"
|
||||
|
||||
#include <qvariant.h>
|
||||
#include <qpushbutton.h>
|
||||
#include <ktimewidget.h>
|
||||
#include <qlabel.h>
|
||||
#include <kurlrequester.h>
|
||||
#include <kpushbutton.h>
|
||||
#include <qcheckbox.h>
|
||||
#include <qslider.h>
|
||||
#include <qlayout.h>
|
||||
#include <qtooltip.h>
|
||||
#include <qwhatsthis.h>
|
||||
#include "ktimewidget.h"
|
||||
#include "kurlrequester.h"
|
||||
#include "klineedit.h"
|
||||
#include "kpushbutton.h"
|
||||
|
||||
/*
|
||||
* Constructs a chapterEdit as a child of 'parent', with the
|
||||
* name 'name' and widget flags set to 'f'.
|
||||
*/
|
||||
chapterEdit::chapterEdit( QWidget* parent, const char* name, WFlags fl )
|
||||
: QWidget( parent, name, fl )
|
||||
{
|
||||
if ( !name )
|
||||
setName( "chapterEdit" );
|
||||
setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)5, (QSizePolicy::SizeType)5, 0, 0, sizePolicy().hasHeightForWidth() ) );
|
||||
chapterEditLayout = new QGridLayout( this, 1, 1, 11, 6, "chapterEditLayout");
|
||||
|
||||
twstart = new KTimeWidget( this, "twstart" );
|
||||
twstart->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, twstart->sizePolicy().hasHeightForWidth() ) );
|
||||
|
||||
chapterEditLayout->addWidget( twstart, 1, 2 );
|
||||
|
||||
textLabel1 = new QLabel( this, "textLabel1" );
|
||||
|
||||
chapterEditLayout->addWidget( textLabel1, 1, 1 );
|
||||
|
||||
textLabel3 = new QLabel( this, "textLabel3" );
|
||||
|
||||
chapterEditLayout->addWidget( textLabel3, 0, 1 );
|
||||
|
||||
urFile = new KURLRequester( this, "urFile" );
|
||||
urFile->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)1, (QSizePolicy::SizeType)5, 0, 0, urFile->sizePolicy().hasHeightForWidth() ) );
|
||||
urFile->setMinimumSize( QSize( 200, 0 ) );
|
||||
|
||||
chapterEditLayout->addMultiCellWidget( urFile, 0, 0, 2, 4 );
|
||||
|
||||
bStart = new KPushButton( this, "bStart" );
|
||||
bStart->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, bStart->sizePolicy().hasHeightForWidth() ) );
|
||||
|
||||
chapterEditLayout->addWidget( bStart, 1, 3 );
|
||||
spacer2 = new QSpacerItem( 16, 20, QSizePolicy::Expanding, QSizePolicy::Minimum );
|
||||
chapterEditLayout->addMultiCell( spacer2, 1, 2, 4, 4 );
|
||||
|
||||
ckBreakStart = new QCheckBox( this, "ckBreakStart" );
|
||||
|
||||
chapterEditLayout->addMultiCellWidget( ckBreakStart, 2, 2, 2, 3 );
|
||||
spacer1 = new QSpacerItem( 21, 60, QSizePolicy::Minimum, QSizePolicy::Expanding );
|
||||
chapterEditLayout->addItem( spacer1, 6, 2 );
|
||||
|
||||
textLabel2 = new QLabel( this, "textLabel2" );
|
||||
|
||||
chapterEditLayout->addWidget( textLabel2, 4, 1 );
|
||||
|
||||
ckBreakEnd = new QCheckBox( this, "ckBreakEnd" );
|
||||
|
||||
chapterEditLayout->addMultiCellWidget( ckBreakEnd, 5, 5, 2, 3 );
|
||||
|
||||
twend = new KTimeWidget( this, "twend" );
|
||||
twend->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, twend->sizePolicy().hasHeightForWidth() ) );
|
||||
|
||||
chapterEditLayout->addWidget( twend, 4, 2 );
|
||||
spacer3 = new QSpacerItem( 20, 31, QSizePolicy::Minimum, QSizePolicy::Fixed );
|
||||
chapterEditLayout->addItem( spacer3, 3, 2 );
|
||||
|
||||
layout3 = new QGridLayout( 0, 1, 1, 0, 6, "layout3");
|
||||
|
||||
lPosition = new QLabel( this, "lPosition" );
|
||||
lPosition->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, lPosition->sizePolicy().hasHeightForWidth() ) );
|
||||
|
||||
layout3->addWidget( lPosition, 1, 1 );
|
||||
|
||||
slider = new QSlider( this, "slider" );
|
||||
slider->setOrientation( QSlider::Horizontal );
|
||||
|
||||
layout3->addWidget( slider, 1, 0 );
|
||||
|
||||
image = new QLabel( this, "image" );
|
||||
image->setMinimumSize( QSize( 320, 200 ) );
|
||||
image->setPaletteBackgroundColor( QColor( 0, 0, 0 ) );
|
||||
image->setScaledContents( TRUE );
|
||||
|
||||
layout3->addMultiCellWidget( image, 0, 0, 0, 1 );
|
||||
|
||||
chapterEditLayout->addMultiCellLayout( layout3, 0, 6, 0, 0 );
|
||||
|
||||
bEnd = new KPushButton( this, "bEnd" );
|
||||
bEnd->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, bEnd->sizePolicy().hasHeightForWidth() ) );
|
||||
|
||||
chapterEditLayout->addWidget( bEnd, 4, 3 );
|
||||
|
||||
bTitleButton = new QPushButton( this, "bTitleButton" );
|
||||
bTitleButton->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, bTitleButton->sizePolicy().hasHeightForWidth() ) );
|
||||
|
||||
chapterEditLayout->addWidget( bTitleButton, 7, 0 );
|
||||
languageChange();
|
||||
resize( QSize(627, 300).expandedTo(minimumSizeHint()) );
|
||||
clearWState( WState_Polished );
|
||||
|
||||
// signals and slots connections
|
||||
connect( urFile< |