rm -f src/*/*.o extras/*/*.o
rm -f lib/*.so* lib/*.a
rm -f plugins/*.so plugins/*.a
+ rm -rf extras/MacOSX/build
libdvdcss-clean:
-cd extras/libdvdcss && $(MAKE) clean
libdvdcss-snapshot: snapshot-common
# Remove vlc sources and icons, doc, debian directory...
rm -Rf tmp/vlc/src tmp/vlc/share tmp/vlc/plugins tmp/vlc/doc
- rm -Rf tmp/vlc/extras/GNUgetopt tmp/vlc/extras/MacOSX_app
+ rm -Rf tmp/vlc/extras/GNUgetopt tmp/vlc/extras/MacOSX
rm -Rf tmp/vlc/debian
# Remove useless headers
rm -f tmp/vlc/include/*
vlc.app: Makefile.opts
ifneq (,$(findstring darwin,$(SYS)))
rm -Rf vlc.app
- mkdir -p vlc.app/Contents/Resources
- mkdir -p vlc.app/Contents/MacOS/lib
- mkdir -p vlc.app/Contents/MacOS/share
- $(INSTALL) -m 644 extras/MacOSX_app/Contents/Info.plist vlc.app/Contents/
- $(INSTALL) -m 644 extras/MacOSX_app/Contents/PkgInfo vlc.app/Contents/
+ cd extras/MacOSX ; pbxbuild | grep -v '^ ' | grep -v '^\t'
+ cp -r extras/MacOSX/build/vlc.bundle ./vlc.app
+ $(INSTALL) -d vlc vlc.app/Contents/MacOS/share
+ $(INSTALL) -d vlc vlc.app/Contents/MacOS/plugins
$(INSTALL) vlc vlc.app/Contents/MacOS/
- $(INSTALL) share/vlc.icns vlc.app/Contents/Resources/
ifneq (,$(PLUGINS))
$(INSTALL) $(PLUGINS:%=plugins/%.so) vlc.app/Contents/MacOS/plugins
endif
#include <sys/types.h>
#include <fcntl.h>
#include <sys/mman.h>
+#include <stdlib.h>
+#include <sys/stat.h>
+
+#ifdef HAVE_UNISTD_H
+# include <unistd.h>
+#endif
/* This mess was copied from the GNU getpagesize.h. */
#ifndef HAVE_GETPAGESIZE
-# ifdef HAVE_UNISTD_H
-# include <unistd.h>
-# endif
/* Assume that all systems that can run configure have sys/param.h. */
# ifndef HAVE_SYS_PARAM_H
/*
* First, make a file with some known garbage in it.
*/
- data = malloc(pagesize);
+ data = (char*)malloc(pagesize);
if (!data)
exit(1);
for (i = 0; i < pagesize; ++i)
fd = open("conftestmmap", O_RDWR);
if (fd < 0)
exit(1);
- data2 = malloc(2 * pagesize);
+ data2 = (char*)malloc(2 * pagesize);
if (!data2)
exit(1);
data2 += (pagesize - ((int) data2 & (pagesize - 1))) & (pagesize - 1);
*/
for (i = 0; i < pagesize; ++i)
*(data2 + i) = *(data2 + i) + 1;
- data3 = malloc(pagesize);
+ data3 = (char*)malloc(pagesize);
if (!data3)
exit(1);
if (read(fd, data3, pagesize) != pagesize)
}
EOF
-if { (eval echo configure:2442: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:2445: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
ac_cv_func_mmap_fixed_mapped=yes
else
fi
echo $ac_n "checking return type of signal handlers""... $ac_c" 1>&6
-echo "configure:2465: checking return type of signal handlers" >&5
+echo "configure:2468: checking return type of signal handlers" >&5
if eval "test \"`echo '$''{'ac_cv_type_signal'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2470 "configure"
+#line 2473 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <signal.h>
int i;
; return 0; }
EOF
-if { (eval echo configure:2487: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2490: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_type_signal=void
else
echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6
-echo "configure:2506: checking for dlopen in -ldl" >&5
+echo "configure:2509: checking for dlopen in -ldl" >&5
ac_lib_var=`echo dl'_'dlopen | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
ac_save_LIBS="$LIBS"
LIBS="-ldl $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 2514 "configure"
+#line 2517 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
dlopen()
; return 0; }
EOF
-if { (eval echo configure:2525: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2528: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
fi
echo $ac_n "checking for pow in -lm""... $ac_c" 1>&6
-echo "configure:2546: checking for pow in -lm" >&5
+echo "configure:2549: checking for pow in -lm" >&5
ac_lib_var=`echo m'_'pow | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
ac_save_LIBS="$LIBS"
LIBS="-lm $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 2554 "configure"
+#line 2557 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
pow()
; return 0; }
EOF
-if { (eval echo configure:2565: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2568: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
THREAD_LIB=error
if test "x${THREAD_LIB}" = xerror; then
echo $ac_n "checking for pthread_attr_init in -lpthread""... $ac_c" 1>&6
-echo "configure:2589: checking for pthread_attr_init in -lpthread" >&5
+echo "configure:2592: checking for pthread_attr_init in -lpthread" >&5
ac_lib_var=`echo pthread'_'pthread_attr_init | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
ac_save_LIBS="$LIBS"
LIBS="-lpthread $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 2597 "configure"
+#line 2600 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
pthread_attr_init()
; return 0; }
EOF
-if { (eval echo configure:2608: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2611: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
fi
if test "x${THREAD_LIB}" = xerror; then
echo $ac_n "checking for pthread_attr_init in -lpthreads""... $ac_c" 1>&6
-echo "configure:2631: checking for pthread_attr_init in -lpthreads" >&5
+echo "configure:2634: checking for pthread_attr_init in -lpthreads" >&5
ac_lib_var=`echo pthreads'_'pthread_attr_init | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
ac_save_LIBS="$LIBS"
LIBS="-lpthreads $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 2639 "configure"
+#line 2642 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
pthread_attr_init()
; return 0; }
EOF
-if { (eval echo configure:2650: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2653: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
fi
if test "x${THREAD_LIB}" = xerror; then
echo $ac_n "checking for pthread_attr_init in -lc_r""... $ac_c" 1>&6
-echo "configure:2673: checking for pthread_attr_init in -lc_r" >&5
+echo "configure:2676: checking for pthread_attr_init in -lc_r" >&5
ac_lib_var=`echo c_r'_'pthread_attr_init | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
ac_save_LIBS="$LIBS"
LIBS="-lc_r $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 2681 "configure"
+#line 2684 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
pthread_attr_init()
; return 0; }
EOF
-if { (eval echo configure:2692: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2695: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
fi
if test "x${THREAD_LIB}" = xerror; then
echo $ac_n "checking for pthread_attr_init""... $ac_c" 1>&6
-echo "configure:2715: checking for pthread_attr_init" >&5
+echo "configure:2718: checking for pthread_attr_init" >&5
if eval "test \"`echo '$''{'ac_cv_func_pthread_attr_init'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2720 "configure"
+#line 2723 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char pthread_attr_init(); below. */
; return 0; }
EOF
-if { (eval echo configure:2743: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2746: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_pthread_attr_init=yes"
else
fi
echo $ac_n "checking for cthread_fork in -lthreads""... $ac_c" 1>&6
-echo "configure:2766: checking for cthread_fork in -lthreads" >&5
+echo "configure:2769: checking for cthread_fork in -lthreads" >&5
ac_lib_var=`echo threads'_'cthread_fork | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
ac_save_LIBS="$LIBS"
LIBS="-lthreads $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 2774 "configure"
+#line 2777 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
cthread_fork()
; return 0; }
EOF
-if { (eval echo configure:2785: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2788: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
cat > conftest.$ac_ext <<EOF
-#line 2807 "configure"
+#line 2810 "configure"
#include "confdefs.h"
#include <pthread.h>
EOF
rm -f conftest*
cat > conftest.$ac_ext <<EOF
-#line 2823 "configure"
+#line 2826 "configure"
#include "confdefs.h"
#include <strings.h>
EOF
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:2843: checking for $ac_hdr" >&5
+echo "configure:2846: checking for $ac_hdr" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2848 "configure"
+#line 2851 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2853: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2856: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:2883: checking for $ac_hdr" >&5
+echo "configure:2886: checking for $ac_hdr" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2888 "configure"
+#line 2891 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2893: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2896: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:2923: checking for $ac_hdr" >&5
+echo "configure:2926: checking for $ac_hdr" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2928 "configure"
+#line 2931 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2933: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2936: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:2963: checking for $ac_hdr" >&5
+echo "configure:2966: checking for $ac_hdr" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2968 "configure"
+#line 2971 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2973: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2976: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:3003: checking for $ac_hdr" >&5
+echo "configure:3006: checking for $ac_hdr" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3008 "configure"
+#line 3011 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3013: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3016: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:3043: checking for $ac_hdr" >&5
+echo "configure:3046: checking for $ac_hdr" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3048 "configure"
+#line 3051 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3053: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3056: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:3084: checking for $ac_hdr" >&5
+echo "configure:3087: checking for $ac_hdr" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3089 "configure"
+#line 3092 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3094: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3097: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
echo $ac_n "checking for ntohl in sys/param.h""... $ac_c" 1>&6
-echo "configure:3122: checking for ntohl in sys/param.h" >&5
+echo "configure:3125: checking for ntohl in sys/param.h" >&5
if eval "test \"`echo '$''{'ac_cv_c_ntohl_sys_param_h'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
CFLAGS="${save_CFLAGS} -Wall -Werror"
cat > conftest.$ac_ext <<EOF
-#line 3128 "configure"
+#line 3131 "configure"
#include "confdefs.h"
#include <sys/param.h>
int main() {
void foo() { int meuh; ntohl(meuh); }
; return 0; }
EOF
-if { (eval echo configure:3135: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3138: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_c_ntohl_sys_param_h=yes
else
fi
echo $ac_n "checking if \$CC accepts -finline-limit""... $ac_c" 1>&6
-echo "configure:3156: checking if \$CC accepts -finline-limit" >&5
+echo "configure:3159: checking if \$CC accepts -finline-limit" >&5
if eval "test \"`echo '$''{'ac_cv_c_inline_limit'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
CFLAGS="${save_CFLAGS} -finline-limit-30000"
cat > conftest.$ac_ext <<EOF
-#line 3162 "configure"
+#line 3165 "configure"
#include "confdefs.h"
int main() {
; return 0; }
EOF
-if { (eval echo configure:3169: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3172: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_c_inline_limit=yes
else
fi
echo $ac_n "checking if \$CC accepts -bundle -undefined error""... $ac_c" 1>&6
-echo "configure:3187: checking if \$CC accepts -bundle -undefined error" >&5
+echo "configure:3190: checking if \$CC accepts -bundle -undefined error" >&5
if eval "test \"`echo '$''{'ac_cv_ld_darwin'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
CFLAGS="${save_CFLAGS} -bundle -undefined error"
cat > conftest.$ac_ext <<EOF
-#line 3193 "configure"
+#line 3196 "configure"
#include "confdefs.h"
int main() {
; return 0; }
EOF
-if { (eval echo configure:3200: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3203: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_ld_darwin=yes
else
fi
echo $ac_n "checking if \$CC accepts -shared""... $ac_c" 1>&6
-echo "configure:3218: checking if \$CC accepts -shared" >&5
+echo "configure:3221: checking if \$CC accepts -shared" >&5
if eval "test \"`echo '$''{'ac_cv_ld_plugins'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
CFLAGS="${save_CFLAGS} -shared"
cat > conftest.$ac_ext <<EOF
-#line 3224 "configure"
+#line 3227 "configure"
#include "confdefs.h"
int main() {
; return 0; }
EOF
-if { (eval echo configure:3231: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3234: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_ld_plugins=yes
else
if test x"${SOFLAGS}" = x; then
echo $ac_n "checking for soname setting""... $ac_c" 1>&6
-echo "configure:3250: checking for soname setting" >&5
+echo "configure:3253: checking for soname setting" >&5
if eval "test \"`echo '$''{'ac_cv_ld_soname'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
try_SOFLAGS="-Wl,-soname -Wl,"
LDFLAGS="${save_LDFLAGS} ${try_SOFLAGS}foo.so.0"
cat > conftest.$ac_ext <<EOF
-#line 3259 "configure"
+#line 3262 "configure"
#include "confdefs.h"
int main() {
; return 0; }
EOF
-if { (eval echo configure:3266: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3269: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
ac_cv_ld_soname="${try_SOFLAGS}"
else
try_SOFLAGS="-Wl,-h -Wl,"
LDFLAGS="${save_LDFLAGS} ${try_SOFLAGS}foo.so.0"
cat > conftest.$ac_ext <<EOF
-#line 3278 "configure"
+#line 3281 "configure"
#include "confdefs.h"
int main() {
; return 0; }
EOF
-if { (eval echo configure:3285: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3288: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
ac_cv_ld_soname="${try_SOFLAGS}"
else
fi
echo $ac_n "checking __attribute__ ((aligned ())) support""... $ac_c" 1>&6
-echo "configure:3314: checking __attribute__ ((aligned ())) support" >&5
+echo "configure:3317: checking __attribute__ ((aligned ())) support" >&5
if eval "test \"`echo '$''{'ac_cv_c_attribute_aligned'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
CFLAGS="${save_CFLAGS} -Werror"
for ac_cv_c_attr_align_try in 2 4 8 16 32 64; do
cat > conftest.$ac_ext <<EOF
-#line 3322 "configure"
+#line 3325 "configure"
#include "confdefs.h"
int main() {
static char c __attribute__ ((aligned($ac_cv_c_attr_align_try))) = 0; return c;
; return 0; }
EOF
-if { (eval echo configure:3329: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3332: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_c_attribute_aligned=$ac_cv_c_attr_align_try
else
LDFLAGS="${save_LDFLAGS}"
echo $ac_n "checking for boolean_t in sys/types.h""... $ac_c" 1>&6
-echo "configure:3352: checking for boolean_t in sys/types.h" >&5
+echo "configure:3355: checking for boolean_t in sys/types.h" >&5
if eval "test \"`echo '$''{'ac_cv_c_boolean_t_sys_types_h'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3357 "configure"
+#line 3360 "configure"
#include "confdefs.h"
#include <sys/types.h>
int main() {
void quux() { boolean_t foo; }
; return 0; }
EOF
-if { (eval echo configure:3364: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3367: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_c_boolean_t_sys_types_h=yes
else
fi
echo $ac_n "checking for boolean_t in pthread.h""... $ac_c" 1>&6
-echo "configure:3385: checking for boolean_t in pthread.h" >&5
+echo "configure:3388: checking for boolean_t in pthread.h" >&5
if eval "test \"`echo '$''{'ac_cv_c_boolean_t_pthread_h'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3390 "configure"
+#line 3393 "configure"
#include "confdefs.h"
#include <pthread.h>
int main() {
void quux() { boolean_t foo; }
; return 0; }
EOF
-if { (eval echo configure:3397: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3400: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_c_boolean_t_pthread_h=yes
else
fi
echo $ac_n "checking for boolean_t in cthreads.h""... $ac_c" 1>&6
-echo "configure:3418: checking for boolean_t in cthreads.h" >&5
+echo "configure:3421: checking for boolean_t in cthreads.h" >&5
if eval "test \"`echo '$''{'ac_cv_c_boolean_t_cthreads_h'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3423 "configure"
+#line 3426 "configure"
#include "confdefs.h"
#include <cthreads.h>
int main() {
void quux() { boolean_t foo; }
; return 0; }
EOF
-if { (eval echo configure:3430: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3433: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_c_boolean_t_cthreads_h=yes
else
fi
echo $ac_n "checking for working const""... $ac_c" 1>&6
-echo "configure:3451: checking for working const" >&5
+echo "configure:3454: checking for working const" >&5
if eval "test \"`echo '$''{'ac_cv_c_const'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3456 "configure"
+#line 3459 "configure"
#include "confdefs.h"
int main() {
/* Ultrix mips cc rejects this. */
-typedef int charset[2]; const charset x;
+typedef int charset[2]; const charset x = {0,0};
/* SunOS 4.1.1 cc rejects this. */
char const *const *ccp;
char **p;
; return 0; }
EOF
-if { (eval echo configure:3505: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3508: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_c_const=yes
else
fi
echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6
-echo "configure:3526: checking for ANSI C header files" >&5
+echo "configure:3529: checking for ANSI C header files" >&5
if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3531 "configure"
+#line 3534 "configure"
#include "confdefs.h"
#include <stdlib.h>
#include <stdarg.h>
#include <float.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3539: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3542: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
if test $ac_cv_header_stdc = yes; then
# SunOS 4.x string.h does not declare mem*, contrary to ANSI.
cat > conftest.$ac_ext <<EOF
-#line 3556 "configure"
+#line 3559 "configure"
#include "confdefs.h"
#include <string.h>
EOF
if test $ac_cv_header_stdc = yes; then
# ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
cat > conftest.$ac_ext <<EOF
-#line 3574 "configure"
+#line 3577 "configure"
#include "confdefs.h"
#include <stdlib.h>
EOF
:
else
cat > conftest.$ac_ext <<EOF
-#line 3595 "configure"
+#line 3598 "configure"
#include "confdefs.h"
#include <ctype.h>
#define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
exit (0); }
EOF
-if { (eval echo configure:3606: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:3609: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
:
else
fi
echo $ac_n "checking for size_t""... $ac_c" 1>&6
-echo "configure:3630: checking for size_t" >&5
+echo "configure:3633: checking for size_t" >&5
if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3635 "configure"
+#line 3638 "configure"
#include "confdefs.h"
#include <sys/types.h>
#if STDC_HEADERS
fi
echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6
-echo "configure:3663: checking whether time.h and sys/time.h may both be included" >&5
+echo "configure:3666: checking whether time.h and sys/time.h may both be included" >&5
if eval "test \"`echo '$''{'ac_cv_header_time'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3668 "configure"
+#line 3671 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <sys/time.h>
struct tm *tp;
; return 0; }
EOF
-if { (eval echo configure:3677: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3680: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_header_time=yes
else
ALTIVEC_MODULES="idctaltivec motionaltivec"
echo $ac_n "checking if \$CC groks MMX inline assembly""... $ac_c" 1>&6
-echo "configure:3711: checking if \$CC groks MMX inline assembly" >&5
+echo "configure:3714: checking if \$CC groks MMX inline assembly" >&5
if eval "test \"`echo '$''{'ac_cv_mmx_inline'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3716 "configure"
+#line 3719 "configure"
#include "confdefs.h"
int main() {
void quux(){void *p;asm volatile("packuswb %%mm1,%%mm2"::"r"(p));}
; return 0; }
EOF
-if { (eval echo configure:3723: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3726: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_mmx_inline=yes
else
fi
echo $ac_n "checking if \$CC groks MMX EXT inline assembly""... $ac_c" 1>&6
-echo "configure:3741: checking if \$CC groks MMX EXT inline assembly" >&5
+echo "configure:3744: checking if \$CC groks MMX EXT inline assembly" >&5
if eval "test \"`echo '$''{'ac_cv_mmxext_inline'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3746 "configure"
+#line 3749 "configure"
#include "confdefs.h"
int main() {
void quux(){void *p;asm volatile("maskmovq %%mm1,%%mm2"::"r"(p));}
; return 0; }
EOF
-if { (eval echo configure:3753: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3756: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_mmxext_inline=yes
else
fi
echo $ac_n "checking if \$CC groks 3D Now! inline assembly""... $ac_c" 1>&6
-echo "configure:3771: checking if \$CC groks 3D Now! inline assembly" >&5
+echo "configure:3774: checking if \$CC groks 3D Now! inline assembly" >&5
if eval "test \"`echo '$''{'ac_cv_3dnow_inline'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3776 "configure"
+#line 3779 "configure"
#include "confdefs.h"
int main() {
void quux(){void *p;asm volatile("pfadd %%mm1,%%mm2"::"r"(p));}
; return 0; }
EOF
-if { (eval echo configure:3783: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3786: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_3dnow_inline=yes
else
fi
echo $ac_n "checking if \$CC groks SSE inline assembly""... $ac_c" 1>&6
-echo "configure:3805: checking if \$CC groks SSE inline assembly" >&5
+echo "configure:3808: checking if \$CC groks SSE inline assembly" >&5
if eval "test \"`echo '$''{'ac_cv_sse_inline'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3810 "configure"
+#line 3813 "configure"
#include "confdefs.h"
int main() {
void quux(){void *p;asm volatile("xorps %%xmm1,%%xmm2"::"r"(p));}
; return 0; }
EOF
-if { (eval echo configure:3817: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3820: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_sse_inline=yes
else
fi
echo $ac_n "checking if \$CC groks Altivec inline assembly""... $ac_c" 1>&6
-echo "configure:3839: checking if \$CC groks Altivec inline assembly" >&5
+echo "configure:3842: checking if \$CC groks Altivec inline assembly" >&5
if eval "test \"`echo '$''{'ac_cv_altivec_inline'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3844 "configure"
+#line 3847 "configure"
#include "confdefs.h"
int main() {
void quux(){asm volatile("vperm 0,1,2,3");}
; return 0; }
EOF
-if { (eval echo configure:3851: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3854: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_altivec_inline=yes
else
save_CFLAGS=$CFLAGS
CFLAGS="$CFLAGS -Wa,-m7400"
cat > conftest.$ac_ext <<EOF
-#line 3861 "configure"
+#line 3864 "configure"
#include "confdefs.h"
int main() {
void quux(){asm volatile("vperm 0,1,2,3");}
; return 0; }
EOF
-if { (eval echo configure:3868: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3871: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_altivec_inline=yes; CFLAGS_ALTIVEC="-Wa,-m7400"
else
fi
echo $ac_n "checking if \$CC groks Altivec C extensions""... $ac_c" 1>&6
-echo "configure:3894: checking if \$CC groks Altivec C extensions" >&5
+echo "configure:3897: checking if \$CC groks Altivec C extensions" >&5
if eval "test \"`echo '$''{'ac_cv_c_altivec'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
CFLAGS="$CFLAGS -faltivec"
# Darwin test
cat > conftest.$ac_ext <<EOF
-#line 3902 "configure"
+#line 3905 "configure"
#include "confdefs.h"
int main() {
void quux(){vec_mtvscr((vector unsigned int)(0));}
; return 0; }
EOF
-if { (eval echo configure:3909: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3912: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_c_altivec=-faltivec
else
# Linux/PPC test
CFLAGS="$save_CFLAGS $CFLAGS_ALTIVEC -fvec"
cat > conftest.$ac_ext <<EOF
-#line 3920 "configure"
+#line 3923 "configure"
#include "confdefs.h"
int main() {
void quux(){vec_mtvscr((vector unsigned int)(0));}
; return 0; }
EOF
-if { (eval echo configure:3927: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3930: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_c_altivec="-fvec"
else
fi
echo $ac_n "checking if linker needs -framework vecLib""... $ac_c" 1>&6
-echo "configure:3954: checking if linker needs -framework vecLib" >&5
+echo "configure:3957: checking if linker needs -framework vecLib" >&5
if eval "test \"`echo '$''{'ac_cv_ld_altivec'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
save_LDFLAGS=$LDFLAGS
LDFLAGS="$LDFLAGS -framework vecLib"
cat > conftest.$ac_ext <<EOF
-#line 3961 "configure"
+#line 3964 "configure"
#include "confdefs.h"
int main() {
; return 0; }
EOF
-if { (eval echo configure:3968: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3971: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
ac_cv_ld_altivec=yes
else
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:3994: checking for $ac_hdr" >&5
+echo "configure:3997: checking for $ac_hdr" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3999 "configure"
+#line 4002 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:4004: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:4007: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:4037: checking for $ac_hdr" >&5
+echo "configure:4040: checking for $ac_hdr" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 4042 "configure"
+#line 4045 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:4047: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:4050: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:4073: checking for $ac_hdr" >&5
+echo "configure:4076: checking for $ac_hdr" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 4078 "configure"
+#line 4081 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:4083: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:4086: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
BSD_DVD_STRUCT=0
LINUX_DVD_STRUCT=0
cat > conftest.$ac_ext <<EOF
-#line 4112 "configure"
+#line 4115 "configure"
#include "confdefs.h"
#include <sys/cdio.h>
EOF
EOF
cat > conftest.$ac_ext <<EOF
-#line 4125 "configure"
+#line 4128 "configure"
#include "confdefs.h"
#include <sys/cdio.h>
EOF
rm -f conftest*
cat > conftest.$ac_ext <<EOF
-#line 4145 "configure"
+#line 4148 "configure"
#include "confdefs.h"
#include <sys/dvdio.h>
EOF
EOF
cat > conftest.$ac_ext <<EOF
-#line 4158 "configure"
+#line 4161 "configure"
#include "confdefs.h"
#include <sys/dvdio.h>
EOF
rm -f conftest*
cat > conftest.$ac_ext <<EOF
-#line 4178 "configure"
+#line 4181 "configure"
#include "confdefs.h"
#include <linux/cdrom.h>
EOF
NEED_BSDI_LIBDVD=0
cat > conftest.$ac_ext <<EOF
-#line 4197 "configure"
+#line 4200 "configure"
#include "confdefs.h"
#include <dvd.h>
EOF
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:4219: checking for $ac_hdr" >&5
+echo "configure:4222: checking for $ac_hdr" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 4224 "configure"
+#line 4227 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:4229: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:4232: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
ac_safe=`echo "sys/scsi/scsi_types.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for sys/scsi/scsi_types.h""... $ac_c" 1>&6
-echo "configure:4269: checking for sys/scsi/scsi_types.h" >&5
+echo "configure:4272: checking for sys/scsi/scsi_types.h" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 4274 "configure"
+#line 4277 "configure"
#include "confdefs.h"
#include <sys/scsi/scsi_types.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:4279: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:4282: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
ac_safe=`echo "sys/scsi/impl/uscsi.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for sys/scsi/impl/uscsi.h""... $ac_c" 1>&6
-echo "configure:4298: checking for sys/scsi/impl/uscsi.h" >&5
+echo "configure:4301: checking for sys/scsi/impl/uscsi.h" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 4303 "configure"
+#line 4306 "configure"
#include "confdefs.h"
#include <sys/scsi/impl/uscsi.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:4308: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:4311: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
enableval="$enable_pth"
if test x$enableval = xyes; then
echo $ac_n "checking for pth_init in -lpth""... $ac_c" 1>&6
-echo "configure:4460: checking for pth_init in -lpth" >&5
+echo "configure:4463: checking for pth_init in -lpth" >&5
ac_lib_var=`echo pth'_'pth_init | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
ac_save_LIBS="$LIBS"
LIBS="-lpth $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 4468 "configure"
+#line 4471 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
pth_init()
; return 0; }
EOF
-if { (eval echo configure:4479: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4482: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
fi
cat > conftest.$ac_ext <<EOF
-#line 4507 "configure"
+#line 4510 "configure"
#include "confdefs.h"
#include <pth.h>
EOF
if test x$enable_vcd != xno
then
cat > conftest.$ac_ext <<EOF
-#line 4614 "configure"
+#line 4617 "configure"
#include "confdefs.h"
#include <linux/cdrom.h>
EOF
# Extract the first word of "esd-config", so it can be a program name with args.
set dummy esd-config; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:4696: checking for $ac_word" >&5
+echo "configure:4699: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_ESD_CONFIG'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
enableval="$enable_macosx"
if test x$enable_macosx = xyes
then
- BUILTINS="${BUILTINS} macosx macosx_qt"
- LIB_MACOSX="-framework CoreAudio -framework Carbon -framework AGL -framework QuickTime"
- LIB_TS="${LIB_TS} -framework AGL -framework Carbon"
- LIB_SDL="${LIB_SDL} -framework AGL -framework Carbon"
+ BUILTINS="${BUILTINS} macosx"
+ LIB_MACOSX="-framework CoreAudio -framework Cocoa -framework AGL -framework QuickTime"
+ LIB="${LIB} -ObjC"
fi
else
- for ac_hdr in Carbon/Carbon.h
+ for ac_hdr in Cocoa/Cocoa.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:4763: checking for $ac_hdr" >&5
+echo "configure:4765: checking for $ac_hdr" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 4768 "configure"
+#line 4770 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:4773: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:4775: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
cat >> confdefs.h <<EOF
#define $ac_tr_hdr 1
EOF
- BUILTINS="${BUILTINS} macosx macosx_qt"
- LIB_MACOSX="-framework CoreAudio -framework Carbon -framework AGL -framework QuickTime"
- LIB_TS="${LIB_TS} -framework AGL -framework Carbon"
- LIB_SDL="${LIB_SDL} -framework AGL -framework Carbon"
+ BUILTINS="${BUILTINS} macosx"
+ LIB_MACOSX="-framework CoreAudio -framework Cocoa -framework AGL -framework QuickTime"
+ LIB="${LIB} -ObjC"
else
echo "$ac_t""no" 1>&6
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:4818: checking for $ac_hdr" >&5
+echo "configure:4819: checking for $ac_hdr" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 4823 "configure"
+#line 4824 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:4828: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:4829: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
# Extract the first word of "sdl12-config", so it can be a program name with args.
set dummy sdl12-config; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:4906: checking for $ac_word" >&5
+echo "configure:4907: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_SDL12_CONFIG'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
# Extract the first word of "sdl11-config", so it can be a program name with args.
set dummy sdl11-config; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:4946: checking for $ac_word" >&5
+echo "configure:4947: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_SDL11_CONFIG'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
# Extract the first word of "sdl-config", so it can be a program name with args.
set dummy sdl-config; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:4987: checking for $ac_word" >&5
+echo "configure:4988: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_SDL_CONFIG'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:5033: checking for $ac_hdr" >&5
+echo "configure:5034: checking for $ac_hdr" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 5038 "configure"
+#line 5039 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:5043: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:5044: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:5106: checking for $ac_hdr" >&5
+echo "configure:5107: checking for $ac_hdr" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 5111 "configure"
+#line 5112 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:5116: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:5117: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:5155: checking for $ac_hdr" >&5
+echo "configure:5156: checking for $ac_hdr" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 5160 "configure"
+#line 5161 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:5165: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:5166: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
# Extract the first word of "gnome-config", so it can be a program name with args.
set dummy gnome-config; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:5262: checking for $ac_word" >&5
+echo "configure:5263: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_GNOME_CONFIG'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:5307: checking for $ac_hdr" >&5
+echo "configure:5308: checking for $ac_hdr" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 5312 "configure"
+#line 5313 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:5317: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:5318: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
# Extract the first word of "gtk-config", so it can be a program name with args.
set dummy gtk-config; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:5367: checking for $ac_word" >&5
+echo "configure:5368: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_GTK_CONFIG'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:5412: checking for $ac_hdr" >&5
+echo "configure:5413: checking for $ac_hdr" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 5417 "configure"
+#line 5418 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:5422: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:5423: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:5473: checking for $ac_hdr" >&5
+echo "configure:5474: checking for $ac_hdr" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 5478 "configure"
+#line 5479 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:5483: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:5484: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:5535: checking for $ac_hdr" >&5
+echo "configure:5536: checking for $ac_hdr" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 5540 "configure"
+#line 5541 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:5545: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:5546: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
then
ac_safe=`echo "sys/asoundlib.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for sys/asoundlib.h""... $ac_c" 1>&6
-echo "configure:5585: checking for sys/asoundlib.h" >&5
+echo "configure:5586: checking for sys/asoundlib.h" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 5590 "configure"
+#line 5591 "configure"
#include "confdefs.h"
#include <sys/asoundlib.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:5595: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:5596: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
echo "$ac_t""yes" 1>&6
echo $ac_n "checking for main in -lasound""... $ac_c" 1>&6
-echo "configure:5612: checking for main in -lasound" >&5
+echo "configure:5613: checking for main in -lasound" >&5
ac_lib_var=`echo asound'_'main | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
ac_save_LIBS="$LIBS"
LIBS="-lasound $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 5620 "configure"
+#line 5621 "configure"
#include "confdefs.h"
int main() {
main()
; return 0; }
EOF
-if { (eval echo configure:5627: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5628: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
[ --enable-macosx MacOS X support (default enabled on MacOS X)],
[if test x$enable_macosx = xyes
then
- BUILTINS="${BUILTINS} macosx macosx_qt"
- LIB_MACOSX="-framework CoreAudio -framework Carbon -framework AGL -framework QuickTime"
- LIB_TS="${LIB_TS} -framework AGL -framework Carbon"
- LIB_SDL="${LIB_SDL} -framework AGL -framework Carbon"
+ BUILTINS="${BUILTINS} macosx"
+ LIB_MACOSX="-framework CoreAudio -framework Cocoa -framework AGL -framework QuickTime"
+ LIB="${LIB} -ObjC"
fi],
- [AC_CHECK_HEADERS(Carbon/Carbon.h,
- BUILTINS="${BUILTINS} macosx macosx_qt"
- LIB_MACOSX="-framework CoreAudio -framework Carbon -framework AGL -framework QuickTime"
- LIB_TS="${LIB_TS} -framework AGL -framework Carbon"
- LIB_SDL="${LIB_SDL} -framework AGL -framework Carbon"
+ [AC_CHECK_HEADERS(Cocoa/Cocoa.h,
+ BUILTINS="${BUILTINS} macosx"
+ LIB_MACOSX="-framework CoreAudio -framework Cocoa -framework AGL -framework QuickTime"
+ LIB="${LIB} -ObjC"
)])
dnl
--- /dev/null
+{
+ IBClasses = (
+ {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; },
+ {
+ ACTIONS = {
+ fullscreen_toggle = id;
+ pause = id;
+ play = id;
+ speedslider_update = id;
+ timeslider_update = id;
+ };
+ CLASS = Intf_Controller;
+ LANGUAGE = ObjC;
+ OUTLETS = {
+ o_currenttime = id;
+ o_menu_fullscreen = id;
+ o_outputpanel = id;
+ o_pause = id;
+ o_play = id;
+ o_playlistds = id;
+ o_qdview = id;
+ o_stepf = id;
+ o_stepr = id;
+ o_stop = id;
+ o_timeslider = id;
+ };
+ SUPERCLASS = NSObject;
+ },
+ {
+ CLASS = Intf_PlaylistDS;
+ LANGUAGE = ObjC;
+ OUTLETS = {o_table = id; };
+ SUPERCLASS = NSObject;
+ },
+ {CLASS = VlcQuickDrawView; LANGUAGE = ObjC; SUPERCLASS = NSQuickDrawView; }
+ );
+ IBVersion = 1;
+}
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist SYSTEM "file://localhost/System/Library/DTDs/PropertyList.dtd">
+<plist version="0.9">
+<dict>
+ <key>IBDocumentLocation</key>
+ <string>87 157 428 240 0 0 1280 938 </string>
+ <key>IBFramework Version</key>
+ <string>219.0</string>
+ <key>IBMainMenuLocation</key>
+ <string>420 524 257 44 0 0 1280 938 </string>
+ <key>IBSystem Version</key>
+ <string>5L14</string>
+ <key>IBUserGuides</key>
+ <dict/>
+</dict>
+</plist>
--- /dev/null
+{
+ IBClasses = (
+ {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; },
+ {
+ ACTIONS = {
+ fullscreen_toggle = id;
+ pause = id;
+ play = id;
+ speedslider_update = id;
+ timeslider_update = id;
+ };
+ CLASS = Intf_Controller;
+ LANGUAGE = ObjC;
+ OUTLETS = {
+ o_currenttime = id;
+ o_menu_fullscreen = id;
+ o_outputpanel = id;
+ o_pause = id;
+ o_play = id;
+ o_playlistds = id;
+ o_qdview = id;
+ o_stepf = id;
+ o_stepr = id;
+ o_stop = id;
+ o_timeslider = id;
+ };
+ SUPERCLASS = NSObject;
+ },
+ {
+ CLASS = Intf_PlaylistDS;
+ LANGUAGE = ObjC;
+ OUTLETS = {o_table = id; };
+ SUPERCLASS = NSObject;
+ },
+ {CLASS = VlcQuickDrawView; LANGUAGE = ObjC; SUPERCLASS = NSQuickDrawView; }
+ );
+ IBVersion = 1;
+}
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist SYSTEM "file://localhost/System/Library/DTDs/PropertyList.dtd">
+<plist version="0.9">
+<dict>
+ <key>IBDocumentLocation</key>
+ <string>87 157 428 240 0 0 1280 938 </string>
+ <key>IBFramework Version</key>
+ <string>219.0</string>
+ <key>IBMainMenuLocation</key>
+ <string>420 524 257 44 0 0 1280 938 </string>
+ <key>IBSystem Version</key>
+ <string>5L14</string>
+ <key>IBUserGuides</key>
+ <dict/>
+</dict>
+</plist>
--- /dev/null
+// !$*UTF8*$!
+{
+ F510A6CD01738ED001A80A1F = {
+ uiCtxt = {
+ sepNavWindowFrame = "{{15, 431}, {750, 502}}";
+ };
+ };
+ F511306E0170620B01A80A1F = {
+ activeBuildStyle = F51130710170620B01A80A1F;
+ activeTarget = F52EEB23017E3F0701A80A1F;
+ addToTargets = (
+ F52EEB23017E3F0701A80A1F,
+ );
+ breakpoints = (
+ );
+ perUserDictionary = {
+ PBXWorkspaceConfiguration = {
+ ContentSize = "{1280, 819}";
+ LeftSlideOut = {
+ ActiveTab = 0;
+ Frame = "{{0, 23}, {1280, 796}}";
+ Split0 = {
+ ActiveTab = 2;
+ Frame = "{{323, 0}, {957, 796}}";
+ Split0 = {
+ Frame = "{{0, 75}, {957, 721}}";
+ };
+ SplitCount = 1;
+ Tab0 = {
+ Debugger = {
+ Frame = "{{0, 0}, {484, 208}}";
+ Split0 = {
+ Frame = "{{0, 25}, {484, 183}}";
+ Split0 = {
+ Frame = "{{0, 0}, {236, 183}}";
+ };
+ Split1 = {
+ Frame = "{{245, 0}, {239, 183}}";
+ };
+ SplitCount = 2;
+ };
+ SplitCount = 1;
+ Tab0 = {
+ Frame = "{{0, 0}, {100, 50}}";
+ };
+ Tab1 = {
+ Frame = "{{0, 0}, {100, 50}}";
+ };
+ TabCount = 2;
+ };
+ Frame = "{{0, 0}, {484, 208}}";
+ LauncherConfigVersion = 4;
+ };
+ Tab1 = {
+ Frame = "{{0, 0}, {484, 208}}";
+ LauncherConfigVersion = 3;
+ Runner = {
+ Frame = "{{0, 0}, {484, 208}}";
+ };
+ };
+ Tab2 = {
+ BuildMessageFrame = "{{0, 0}, {959, 43}}";
+ BuildTranscriptFrame = "{{0, 52}, {959, 0}}";
+ Frame = "{{0, 0}, {957, 50}}";
+ };
+ Tab3 = {
+ Frame = "{{0, 0}, {612, 295}}";
+ };
+ TabCount = 4;
+ };
+ SplitCount = 1;
+ Tab0 = {
+ Frame = "{{0, 0}, {298, 796}}";
+ };
+ Tab1 = {
+ ClassesFrame = "{{0, 0}, {202, 56}}";
+ Frame = "{{0, 0}, {200, 100}}";
+ MembersFrame = "{{0, 65}, {202, 35}}";
+ OptionsSetName = "Hierarchy, all classes";
+ };
+ Tab2 = {
+ Frame = "{{0, 0}, {200, 100}}";
+ };
+ Tab3 = {
+ Frame = "{{0, 0}, {200, 718}}";
+ Split0 = {
+ Frame = "{{0, 0}, {200, 349}}";
+ };
+ Split1 = {
+ Frame = "{{0, 358}, {200, 360}}";
+ };
+ SplitCount = 2;
+ };
+ Tab4 = {
+ Frame = "{{0, 0}, {250, 781}}";
+ };
+ TabCount = 5;
+ };
+ };
+ };
+ wantsIndex = 1;
+ wantsSCM = 0;
+ };
+ F52EEB23017E3F0701A80A1F = {
+ activeExec = 0;
+ customExecs = {
+ };
+ };
+}
--- /dev/null
+// !$*UTF8*$!
+{
+ archiveVersion = 1;
+ classes = {
+ };
+ objectVersion = 34;
+ objects = {
+ F510A6CC01738ED001A80A1F = {
+ isa = PBXFileReference;
+ name = intf_vlc_wrapper.h;
+ path = plugins/macosx/intf_vlc_wrapper.h;
+ refType = 4;
+ };
+ F510A6CD01738ED001A80A1F = {
+ isa = PBXFileReference;
+ name = intf_vlc_wrapper.c;
+ path = plugins/macosx/intf_vlc_wrapper.c;
+ refType = 4;
+ };
+ F511306E0170620B01A80A1F = {
+ buildStyles = (
+ F51130710170620B01A80A1F,
+ );
+ isa = PBXProject;
+ mainGroup = F511306F0170620B01A80A1F;
+ productRefGroup = F511306F0170620B01A80A1F;
+ projectDirPath = "";
+ targets = (
+ F52EEB23017E3F0701A80A1F,
+ );
+ };
+ F511306F0170620B01A80A1F = {
+ children = (
+ F5121224017062C501A80A1F,
+ F5121225017062C501A80A1F,
+ F52EEB22017E3F0701A80A1F,
+ );
+ isa = PBXGroup;
+ refType = 4;
+ };
+ F51130710170620B01A80A1F = {
+ buildRules = (
+ );
+ buildSettings = {
+ COPY_PHASE_STRIP = YES;
+ };
+ isa = PBXBuildStyle;
+ name = Deployment;
+ };
+ F51212220170627901A80A1F = {
+ children = (
+ F51212230170627901A80A1F,
+ );
+ isa = PBXVariantGroup;
+ name = MainMenu.nib;
+ path = "";
+ refType = 4;
+ };
+ F51212230170627901A80A1F = {
+ isa = PBXFileReference;
+ name = English;
+ path = English.lproj/MainMenu.nib;
+ refType = 4;
+ };
+ F5121224017062C501A80A1F = {
+ children = (
+ F512122B0170635601A80A1F,
+ F512122C0170635601A80A1F,
+ F512122D0170635601A80A1F,
+ F512122F0170635601A80A1F,
+ F51212300170635601A80A1F,
+ F51212310170635601A80A1F,
+ F51212320170635601A80A1F,
+ F510A6CC01738ED001A80A1F,
+ F510A6CD01738ED001A80A1F,
+ F53A3B49018DECF201A80A1F,
+ F53A3B4A018DECF201A80A1F,
+ );
+ isa = PBXGroup;
+ name = Files;
+ path = ../..;
+ refType = 2;
+ };
+ F5121225017062C501A80A1F = {
+ children = (
+ F51212220170627901A80A1F,
+ F51352740170655D01A80A1F,
+ F513527F0170659801A80A1F,
+ F51352800170659801A80A1F,
+ F51352810170659801A80A1F,
+ F51352820170659801A80A1F,
+ F52EEB2F017E3F8C01A80A1F,
+ );
+ isa = PBXGroup;
+ path = Resources;
+ refType = 2;
+ };
+ F512122B0170635601A80A1F = {
+ isa = PBXFileReference;
+ name = aout_macosx.c;
+ path = plugins/macosx/aout_macosx.c;
+ refType = 4;
+ };
+ F512122C0170635601A80A1F = {
+ isa = PBXFileReference;
+ name = intf_controller.c;
+ path = plugins/macosx/intf_controller.c;
+ refType = 4;
+ };
+ F512122D0170635601A80A1F = {
+ isa = PBXFileReference;
+ name = intf_controller.h;
+ path = plugins/macosx/intf_controller.h;
+ refType = 4;
+ };
+ F512122F0170635601A80A1F = {
+ isa = PBXFileReference;
+ name = intf_main.c;
+ path = plugins/macosx/intf_main.c;
+ refType = 4;
+ };
+ F51212300170635601A80A1F = {
+ isa = PBXFileReference;
+ name = macosx.c;
+ path = plugins/macosx/macosx.c;
+ refType = 4;
+ };
+ F51212310170635601A80A1F = {
+ isa = PBXFileReference;
+ name = macosx.h;
+ path = plugins/macosx/macosx.h;
+ refType = 4;
+ };
+ F51212320170635601A80A1F = {
+ isa = PBXFileReference;
+ name = vout_macosx.c;
+ path = plugins/macosx/vout_macosx.c;
+ refType = 4;
+ };
+ F51352740170655D01A80A1F = {
+ isa = PBXFileReference;
+ path = pause.png;
+ refType = 4;
+ };
+ F513527F0170659801A80A1F = {
+ isa = PBXFileReference;
+ path = play.png;
+ refType = 4;
+ };
+ F51352800170659801A80A1F = {
+ isa = PBXFileReference;
+ path = stepf.png;
+ refType = 4;
+ };
+ F51352810170659801A80A1F = {
+ isa = PBXFileReference;
+ path = stepr.png;
+ refType = 4;
+ };
+ F51352820170659801A80A1F = {
+ isa = PBXFileReference;
+ path = stop.png;
+ refType = 4;
+ };
+ F52EEB22017E3F0701A80A1F = {
+ isa = PBXBundleReference;
+ path = vlc.bundle;
+ refType = 3;
+ };
+ F52EEB23017E3F0701A80A1F = {
+ buildPhases = (
+ F52EEB24017E3F0701A80A1F,
+ F52EEB25017E3F0701A80A1F,
+ F52EEB2C017E3F0701A80A1F,
+ F52EEB2D017E3F0701A80A1F,
+ F52EEB2E017E3F0701A80A1F,
+ );
+ buildSettings = {
+ DEBUGGING_SYMBOLS = NO;
+ OPTIMIZATION_CFLAGS = "-O3";
+ OTHER_CFLAGS = "";
+ OTHER_LDFLAGS = "-bundle -undefined suppress";
+ OTHER_REZFLAGS = "";
+ PRODUCT_NAME = vlc;
+ SECTORDER_FLAGS = "";
+ WARNING_CFLAGS = "-Wmost -Wno-four-char-constants -Wno-unknown-pragmas";
+ WRAPPER_EXTENSION = bundle;
+ };
+ dependencies = (
+ );
+ isa = PBXBundleTarget;
+ name = vlc;
+ productInstallPath = "$(USER_LIBRARY_DIR)/Bundles";
+ productName = vlc.app;
+ productReference = F52EEB22017E3F0701A80A1F;
+ productSettingsXML = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>
+<!DOCTYPE plist SYSTEM \"file://localhost/System/Library/DTDs/PropertyList.dtd\">
+<plist version=\"0.9\">
+<dict>
+ <key>CFBundleDevelopmentRegion</key>
+ <string>English</string>
+ <key>CFBundleDocumentTypes</key>
+ <array>
+ <dict>
+ <key>CFBundleTypeExtensions</key>
+ <array>
+ <string>VOB</string>
+ </array>
+ <key>CFBundleTypeIconFile</key>
+ <string>vlc.icns</string>
+ <key>CFBundleTypeName</key>
+ <string>VOB File (DVD)</string>
+ <key>CFBundleTypeRole</key>
+ <string>Viewer</string>
+ </dict>
+ </array>
+ <key>CFBundleExecutable</key>
+ <string>vlc</string>
+ <key>CFBundleGetInfoString</key>
+ <string>VideoLan Client</string>
+ <key>CFBundleIconFile</key>
+ <string>vlc.icns</string>
+ <key>CFBundleIdentifier</key>
+ <string>org.videolan.vlc</string>
+ <key>CFBundleInfoDictionaryVersion</key>
+ <string>6.0</string>
+ <key>CFBundleName</key>
+ <string>vlc</string>
+ <key>CFBundlePackageType</key>
+ <string>APPL</string>
+ <key>CFBundleShortVersionString</key>
+ <string>vlc 0.2.90</string>
+ <key>CFBundleVersion</key>
+ <string>0.2.90</string>
+ <key>NSMainNibFile</key>
+ <string>MainMenu</string>
+ <key>NSPrincipalClass</key>
+ <string>NSApplication</string>
+</dict>
+</plist>
+";
+ shouldUseHeadermap = 0;
+ };
+ F52EEB24017E3F0701A80A1F = {
+ buildActionMask = 2147483647;
+ files = (
+ );
+ isa = PBXHeadersBuildPhase;
+ name = Headers;
+ };
+ F52EEB25017E3F0701A80A1F = {
+ buildActionMask = 2147483647;
+ files = (
+ F52EEB26017E3F0701A80A1F,
+ F52EEB27017E3F0701A80A1F,
+ F52EEB28017E3F0701A80A1F,
+ F52EEB29017E3F0701A80A1F,
+ F52EEB2A017E3F0701A80A1F,
+ F52EEB2B017E3F0701A80A1F,
+ F52EEB30017E3F8C01A80A1F,
+ );
+ isa = PBXResourcesBuildPhase;
+ name = "Bundle Resources";
+ };
+ F52EEB26017E3F0701A80A1F = {
+ fileRef = F51212220170627901A80A1F;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ F52EEB27017E3F0701A80A1F = {
+ fileRef = F51352740170655D01A80A1F;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ F52EEB28017E3F0701A80A1F = {
+ fileRef = F513527F0170659801A80A1F;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ F52EEB29017E3F0701A80A1F = {
+ fileRef = F51352800170659801A80A1F;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ F52EEB2A017E3F0701A80A1F = {
+ fileRef = F51352810170659801A80A1F;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ F52EEB2B017E3F0701A80A1F = {
+ fileRef = F51352820170659801A80A1F;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ F52EEB2C017E3F0701A80A1F = {
+ buildActionMask = 2147483647;
+ files = (
+ );
+ isa = PBXSourcesBuildPhase;
+ name = Sources;
+ };
+ F52EEB2D017E3F0701A80A1F = {
+ buildActionMask = 2147483647;
+ files = (
+ );
+ isa = PBXFrameworksBuildPhase;
+ name = "Frameworks & Libraries";
+ };
+ F52EEB2E017E3F0701A80A1F = {
+ buildActionMask = 2147483647;
+ files = (
+ );
+ isa = PBXRezBuildPhase;
+ name = "ResourceManager Resources";
+ };
+ F52EEB2F017E3F8C01A80A1F = {
+ isa = PBXFileReference;
+ path = vlc.icns;
+ refType = 4;
+ };
+ F52EEB30017E3F8C01A80A1F = {
+ fileRef = F52EEB2F017E3F8C01A80A1F;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ F53A3B49018DECF201A80A1F = {
+ isa = PBXFileReference;
+ name = intf_qdview.h;
+ path = plugins/macosx/intf_qdview.h;
+ refType = 4;
+ };
+ F53A3B4A018DECF201A80A1F = {
+ isa = PBXFileReference;
+ name = intf_qdview.c;
+ path = plugins/macosx/intf_qdview.c;
+ refType = 4;
+ };
+ };
+ rootObject = F511306E0170620B01A80A1F;
+}
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist SYSTEM "file://localhost/System/Library/DTDs/PropertyList.dtd">
-<plist version="0.9">
-<dict>
- <key>CFBundleDevelopmentRegion</key>
- <string>English</string>
- <key>CFBundleExecutable</key>
- <string>vlc</string>
- <key>CFBundleIconFile</key>
- <string>vlc.icns</string>
- <key>CFBundleInfoDictionaryVersion</key>
- <string>6.0</string>
- <key>CFBundlePackageType</key>
- <string>APPL</string>
- <key>CFBundleSignature</key>
- <string>????</string>
- <key>CFBundleVersion</key>
- <string>0.1</string>
- <key>CSResourcesFileMapped</key>
- <true/>
-</dict>
-</plist>
+++ /dev/null
-APPL????
\ No newline at end of file
# Objects
#
-PLUGIN_MACOSX = macosx.o intf_macosx.o vout_macosx.o
-PLUGIN_MACOSXQT = macosx_qt.o intf_macosx_qt.o vout_macosx_qt.o
-PLUGIN_MACOSXCOMMON = aout_macosx.o
+PLUGIN_MACOSX = macosx.o intf_main.o intf_controller.o aout_macosx.o vout_macosx.o intf_vlc_wrapper.o intf_qdview.o
+BUILTIN_MACOSX = $(PLUGIN_MACOSX:%.o=BUILTIN_%.o)
-BUILTIN_MACOSX = $(PLUGIN_MACOSX:%.o=BUILTIN_MACOSX_%.o) \
- $(PLUGIN_MACOSXCOMMON:%.o=BUILTIN_MACOSX_%.o)
-BUILTIN_MACOSXQT = $(PLUGIN_MACOSXQT:%.o=BUILTIN_MACOSXQT_%.o) \
- $(PLUGIN_MACOSXCOMMON:%.o=BUILTIN_MACOSXQT_%.o)
-
-ALL_OBJ = $(PLUGIN_MACOSX) $(BUILTIN_MACOSX) $(PLUGIN_MACOSXQT) $(BUILTIN_MACOSXQT) $(PLUGIN_MACOSXCOMMON)
+ALL_OBJ = $(PLUGIN_MACOSX) $(BUILTIN_MACOSX)
#
# Virtual targets
include ../../Makefile.modules
-$(PLUGIN_MACOSX) $(PLUGIN_MACOSXQT) $(PLUGIN_MACOSXCOMMON): %.o: .dep/%.d
+$(PLUGIN_MACOSX): %.o: .dep/%.d
$(PLUGIN_MACOSX): %.o: %.c
- $(CC) $(CFLAGS) $(PCFLAGS) -fpascal-strings -c -o $@ $<
-
-$(BUILTIN_MACOSX): BUILTIN_MACOSX_%.o: .dep/%.d
-$(BUILTIN_MACOSX): BUILTIN_MACOSX_%.o: %.c
- $(CC) $(CFLAGS) -DBUILTIN -DMODULE_NAME=macosx -fpascal-strings -c -o $@ $<
+ $(CC) $(CFLAGS) $(PCFLAGS) -ObjC -c -o $@ $<
-$(BUILTIN_MACOSXQT): BUILTIN_MACOSXQT_%.o: .dep/%.d
-$(BUILTIN_MACOSXQT): BUILTIN_MACOSXQT_%.o: %.c
- $(CC) $(CFLAGS) -DBUILTIN -DMODULE_NAME=macosx_qt -fpascal-strings -c -o $@ $<
+$(BUILTIN_MACOSX): BUILTIN_%.o: .dep/%.d
+$(BUILTIN_MACOSX): BUILTIN_%.o: %.c
+ $(CC) $(CFLAGS) -DBUILTIN -ObjC -c -o $@ $<
#
# Real targets
#
-../macosx.so: $(PLUGIN_MACOSX) $(PLUGIN_MACOSXCOMMON)
- $(CC) $(PCFLAGS) -o $@ $^ $(PLCFLAGS) $(LIB_MACOSX)
+../macosx.so: $(PLUGIN_MACOSX)
+ $(CC) $(PCFLAGS) -o $@ $^ $(PLCFLAGS) $(LIB_MACOSX) -lobjc
../macosx.a: $(BUILTIN_MACOSX)
ar r $@ $^
$(RANLIB) $@
-../macosx_qt.so: $(PLUGIN_MACOSXQT) $(PLUGIN_MACOSXCOMMON)
- $(CC) $(PCFLAGS) -o $@ $^ $(PLCFLAGS) $(LIB_MACOSX)
-
-../macosx_qt.a: $(BUILTIN_MACOSXQT)
- ar r $@ $^
- $(RANLIB) $@
-
--- /dev/null
+/*****************************************************************************
+ * intf_controller.c : MacOS X plugin for vlc
+ *****************************************************************************
+ * Copyright (C) 2001 VideoLAN
+ * $$
+ *
+ * Authors: Florian G. Pflug <fgp@phlo.org>
+ *
+ * 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., 59 Temple Place - Suite 330, Boston, MA 02111, USA.
+ *****************************************************************************/
+
+/* Remark:
+ I need to subclass NSQuickDrawView, and post a notification when its display
+ method is called. This is necessary because GetPortBound and similar functions
+ return the actual on-screen size of the QDPort, which isn't updated immidiately
+ after calling e.g. setFrame
+*/
+
+#include <QuickTime/QuickTime.h>
+#include <ApplicationServices/ApplicationServices.h>
+#import "intf_controller.h"
+#import "intf_vlc_wrapper.h"
+
+@implementation Intf_Controller
+//Initialization & Event-Management
+ - (void) awakeFromNib {
+ o_vlc = [Intf_VlcWrapper instance] ;
+ b_window_is_fullscreen = FALSE ;
+ [NSTimer scheduledTimerWithTimeInterval: 0.5
+ target: self
+ selector: @selector(manage:)
+ userInfo: nil
+ repeats:TRUE
+ ] ;
+ [o_vlc initWithDelegate:self] ;
+ }
+
+ - (void) manage:(NSTimer *)timer {
+ if ([o_vlc manage])
+ [NSApp terminate: self] ;
+
+ [o_currenttime setStringValue: [o_vlc getTimeAsString]] ;
+ [o_timeslider setFloatValue: [o_vlc getTimeAsFloat]] ;
+ }
+
+ - (void)applicationDidBecomeActive:(NSNotification*)aNotification {
+ if (b_window_is_fullscreen) {
+ [o_window orderFront:self] ;
+ [o_vlc play] ;
+ }
+ }
+
+ - (void)applicationDidResignActive:(NSNotification*)aNotification {
+ if (b_window_is_fullscreen) {
+ [o_vlc pause] ;
+ [o_window orderOut:self] ;
+ }
+ }
+
+
+
+
+//Functions attached to user interface
+ - (IBAction) pause:(id)sender {
+ [o_vlc pause] ;
+ }
+
+ - (IBAction) play:(id)sender {
+ [o_vlc play] ;
+ }
+
+ - (IBAction) timeslider_update:(id)slider {
+ [o_vlc setTimeAsFloat: [o_timeslider floatValue]] ;
+ }
+
+ - (IBAction) speedslider_update:(id)slider {
+ [o_vlc setSpeed: (intf_speed_t) [slider intValue]] ;
+ }
+
+ - (IBAction) fullscreen_toggle:(id)sender {
+ [self requestQDPortFullscreen:!b_window_is_fullscreen] ;
+ }
+
+
+
+
+//Callbacks - we are the delegate for the VlcWrapper
+ - (void) requestQDPortFullscreen:(bool)b_fullscreen {
+ NSRect s_rect ;
+ VlcQuickDrawView *o_qdview ;
+
+ s_rect.origin.x = s_rect.origin.y = 0 ;
+
+ [self releaseQDPort] ;
+ o_window = [NSWindow alloc] ;
+ if (b_fullscreen) {
+ [o_window
+ initWithContentRect: [[NSScreen mainScreen] frame]
+ styleMask: NSBorderlessWindowMask
+ backing: NSBackingStoreBuffered
+ defer:NO screen:[NSScreen mainScreen]
+ ] ;
+ [o_window setLevel:CGShieldingWindowLevel()] ;
+ b_window_is_fullscreen = TRUE ;
+ }
+ else {
+ s_rect.size = [o_vlc videoSize] ;
+ [o_window
+ initWithContentRect: s_rect
+ styleMask: (NSTitledWindowMask | NSMiniaturizableWindowMask | NSResizableWindowMask)
+ backing: NSBackingStoreBuffered
+ defer:NO screen:[NSScreen mainScreen]
+ ] ;
+ [o_window setAspectRatio:[o_vlc videoSize]] ;
+ [o_window center] ;
+ [o_window setDelegate:self] ;
+ b_window_is_fullscreen = FALSE ;
+ }
+ o_qdview = [[VlcQuickDrawView alloc] init] ;
+ [o_qdview setPostsFrameChangedNotifications:YES] ;
+ [[NSNotificationCenter defaultCenter]
+ addObserver: o_vlc
+ selector: @selector(sizeChangeQDPort)
+ name: VlcQuickDrawViewDidResize
+ object: o_qdview
+ ] ;
+ [o_window setContentView:o_qdview] ;
+ [o_window orderFront:self] ;
+ [o_vlc setQDPort:[o_qdview qdPort]] ;
+ [o_menu_fullscreen setState:(b_window_is_fullscreen ? NSOnState : NSOffState)] ;
+ }
+
+ - (void) releaseQDPort {
+ [[NSNotificationCenter defaultCenter]
+ removeObserver: nil
+ name: nil
+ object: [o_window contentView]
+ ] ;
+ [o_vlc setQDPort:nil] ;
+ if (o_window) {
+ [o_window close] ;
+ o_window = nil ;
+ }
+ }
+
+ - (void) resizeQDPortFullscreen:(bool)b_fullscreen {
+ if (b_window_is_fullscreen != b_fullscreen) {
+ [self requestQDPortFullscreen:b_fullscreen] ;
+ }
+ else if (!b_window_is_fullscreen && !b_fullscreen) {
+ [o_window setAspectRatio:[o_vlc videoSize]] ;
+ }
+ }
+@end
+
+@implementation Intf_PlaylistDS
+ - (void ) awakeFromNib {
+ o_vlc = [Intf_VlcWrapper instance] ;
+ o_playlist = [[NSMutableArray arrayWithCapacity:10] retain] ;
+ }
+
+ - (void) readPlaylist {
+ static unsigned int i_length_old = 0;
+ unsigned int i ;
+
+ if (i_length_old == [o_vlc getPlaylistLength])
+ return ;
+
+ [o_playlist removeAllObjects] ;
+ [o_vlc lockPlaylist] ;
+ for(i=0; i < [o_vlc getPlaylistLength]; i++)
+ [o_playlist addObject:[o_vlc getPlaylistItem:i]] ;
+ [o_vlc unlockPlaylist] ;
+ }
+
+ - (int) numberOfRowsInTableView:(NSTableView*)o_table {
+ [self readPlaylist] ;
+ return [o_playlist count] ;
+ }
+
+ - (id) tableView:(NSTableView*)o_table objectValueForTableColumn:(NSTableColumn*)o_column row:(int)i_row {
+ return [o_playlist objectAtIndex:i_row] ;
+ }
+
+ - (void)tableView:(NSTableView *)aTableView setObjectValue:anObject forTableColumn:(NSTableColumn *)aTableColumn row:(int)rowIndex {
+ }
+@end
--- /dev/null
+/*****************************************************************************
+ * intf_controller.h : MacOS X plugin for vlc
+ *****************************************************************************
+ * Copyright (C) 2001 VideoLAN
+ * $$
+ *
+ * Authors: Florian G. Pflug <fgp@phlo.org>
+ *
+ * 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., 59 Temple Place - Suite 330, Boston, MA 02111, USA.
+ *****************************************************************************/
+
+#import <Cocoa/Cocoa.h>
+#import "intf_vlc_wrapper.h"
+#import "intf_qdview.h"
+
+@interface Intf_PlaylistDS : NSObject {
+ Intf_VlcWrapper* o_vlc ;
+ NSMutableArray* o_playlist ;
+
+ IBOutlet NSTableView *o_table ;
+}
+
+- (void ) awakeFromNib ;
+- (void) readPlaylist ;
+
+- (int) numberOfRowsInTableView:(NSTableView*)o_table ;
+- (id) tableView:(NSTableView*)o_table objectValueForTableColumn:(NSTableColumn*)o_column row:(int)i_row ;
+- (void)tableView:(NSTableView *)aTableView setObjectValue:anObject forTableColumn:(NSTableColumn *)aTableColumn row:(int)rowIndex ;
+@end
+
+@interface Intf_Controller : NSObject <VlcWrapper_Delegate> {
+ Intf_VlcWrapper* o_vlc ;
+
+ NSWindow *o_window ;
+ bool b_window_is_fullscreen ;
+
+ IBOutlet NSButton *o_play ;
+ IBOutlet NSButton *o_pause ;
+ IBOutlet NSButton *o_stop ;
+ IBOutlet NSButton *o_stepr ;
+ IBOutlet NSButton *o_stepf ;
+ IBOutlet NSSlider *o_timeslider ;
+ IBOutlet NSTextField *o_currenttime ;
+ IBOutlet NSMenuItem *o_menu_fullscreen ;
+
+ IBOutlet Intf_PlaylistDS *o_playlistds ;
+}
+
+//Initialization & Event-Management
+- (void) awakeFromNib ;
+- (void) manage:(NSTimer *)timer ;
+- (void)applicationDidBecomeActive:(NSNotification*)aNotification ;
+- (void)applicationDidResignActive:(NSNotification*)aNotification ;
+
+//Functions atteched to user interface
+- (IBAction) pause:(id)sender ;
+- (IBAction) play:(id)sender ;
+- (IBAction) timeslider_update:(id)slider ;
+- (IBAction) speedslider_update:(id)slider ;
+- (IBAction) fullscreen_toggle:(id)sender ;
+@end
+++ /dev/null
-/*****************************************************************************
- * intf_macosx.c: MacOS X interface plugin
- *****************************************************************************
- * Copyright (C) 2001 VideoLAN
- *
- * Authors: Colin Delacroix <colin@zoy.org>
- *
- * 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., 59 Temple Place - Suite 330, Boston, MA 02111, USA.
- *****************************************************************************/
-
-#include "modules_inner.h"
-
-/*****************************************************************************
- * Preamble
- *****************************************************************************/
-#include "defs.h"
-
-#include <stdlib.h> /* malloc(), free() */
-#include <sys/param.h> /* for MAXPATHLEN */
-
-#include "config.h"
-#include "common.h"
-#include "threads.h"
-#include "mtime.h"
-#include "tests.h"
-
-#include "interface.h"
-#include "intf_msg.h"
-#include "intf_playlist.h"
-
-#include "stream_control.h"
-#include "input_ext-intf.h"
-
-#include "audio_output.h"
-
-#include "video.h"
-#include "video_output.h"
-
-#include "main.h"
-
-#include "modules.h"
-#include "modules_export.h"
-
-#include "macosx_common.h"
-
-extern main_t *p_main;
-
-
-/*****************************************************************************
- * Constants & more
- *****************************************************************************/
-
-//how often to have callback to main loop. Target of 30fps then 30hz + maybe some more...
-//it doesn't really scale if we move to 2x the hz... something else is slowing us down...
-#define kMainLoopFrequency (kEventDurationSecond / 45) //45 for good measure
-
-// Menu defs
-enum
-{
-/* kMenuApple = 128,
- kMenuFile = 129,
- kMenuControls = 130,
-
- kAppleAbout = 1,
- kAppleQuit = 7, //is this always the same?
-
- kFileNew = 1,
- kFileOpen = 2,
- kFileCloseDivisor = 3,
- kFileClose = 4,
-
- kControlsPlayORPause = 1,
- kControlsStop = 2,
- kControlsForward = 3,
- kControlsRewind = 4,
- kControlsChapterDiv = 5,
- kControlsChapterNext = 6,
- kControlsChapterPrevious = 7,
- kControlsDVDdiv = 8,
- kControlsDVDMenu = 9,
- kControlsVolumeDiv = 10,
- kControlsVolumeUp = 11,
- kControlsVolumeDown = 12,
- kControlsVolumeMute = 13,
- kControlsEjectDiv = 14,
- kControlsEject = 15
-*/
-
- kMenuApple = 128,
- kMenuFile,
- kMenuControls,
-
- kAppleAbout = 1,
- kAppleQuit = 8, //is this always the same?
-
- kFileNew = 1,
- kFileOpen,
- kFileCloseDivisor,
- kFileClose,
- kFileQuitHack,
-
- kControlsPlayORPause = 1,
- kControlsStop,
- kControlsForward,
- kControlsRewind,
- kControlsChapterDiv,
- kControlsChapterNext,
- kControlsChapterPrevious,
- kControlsDVDdiv,
- kControlsDVDMenu,
- kControlsVolumeDiv,
- kControlsVolumeUp,
- kControlsVolumeDown,
- kControlsVolumeMute,
- kControlsEjectDiv,
- kControlsEject
-
-#if 0
-//virtual key codes ; raw subtract 0x40 from these values
-//http://devworld.apple.com/techpubs/mac/Text/Text-577.html#HEADING577-0
- kLeftArrow = 0x7B,
- kRightArrow = 0x7C,
- kDownArrow = 0x7D,
- kUpArrow = 0x7E,
-
-//http://devworld.apple.com/techpubs/mac/Text/Text-571.html#MARKER-9-18
- kPeriod = 47, //(decimal)
- kSpace = 49, //(decimal)
- kEscape = 53 //(decimal)
-#endif
-
-};
-
-// Initial Window Constants
-enum
-{
- kAboutWindowOffset = 200,
- kAboutWindowWidth = 200, //400
- kAboutWindowHeight = 50 //100
-};
-
-
-/*****************************************************************************
- * intf_sys_t: description and status of the interface
- *****************************************************************************/
-typedef struct intf_sys_s
-{
- EventLoopTimerRef manageTimer;
- Rect aboutRect;
- WindowRef p_aboutWindow;
- int playback_status; //moved from vout ; prolly didn't belong
- //there for a good reason ; more like Beos
-} intf_sys_t;
-
-/*****************************************************************************
- * Local prototypes.
- *****************************************************************************/
-static int intf_Probe ( probedata_t *p_data );
-static int intf_Open ( intf_thread_t *p_intf );
-static void intf_Close ( intf_thread_t *p_intf );
-static void intf_Run ( intf_thread_t *p_intf );
-
-/* OS Specific */
-
-static int MakeAboutWindow ( intf_thread_t *p_intf );
-
-void CarbonManageCallback ( EventLoopTimerRef inTimer, void *inUserData );
-
-OSErr MyOpenDocument(const FSSpecPtr defaultLocationfssPtr);
-
-void playorpause ( intf_thread_t *p_intf );
-void stop ( intf_thread_t *p_intf );
-void silence ( intf_thread_t *p_intf );
-
-
-#ifndef CarbonEvents
-void EventLoop( intf_thread_t *p_intf );
-void DoEvent( intf_thread_t *p_intf , EventRecord *event);
-void DoMenuCommand( intf_thread_t *p_intf , long menuResult);
-void DrawWindow(WindowRef window);
-void DrawAboutWindow(WindowRef window);
-#else
-/*
-pascal OSErr QuitEventHandler(const AppleEvent *theEvent, AppleEvent *theReply, SInt32 refCon);
-static pascal OSStatus MyKeyHandler( EventHandlerCallRef inCallRef, EventRef inEvent, void* userData );
-static pascal OSStatus MyWindowEventHandler(EventHandlerCallRef myHandler, EventRef event, void* userData);
-*/
-#endif
-
-/*****************************************************************************
- * Functions exported as capabilities. They are declared as static so that
- * we don't pollute the namespace too much.
- *****************************************************************************/
-void _M( intf_getfunctions )( function_list_t * p_function_list )
-{
- p_function_list->pf_probe = intf_Probe;
- p_function_list->functions.intf.pf_open = intf_Open;
- p_function_list->functions.intf.pf_close = intf_Close;
- p_function_list->functions.intf.pf_run = intf_Run;
-}
-
-/*****************************************************************************
- * intf_Probe: probe the interface and return a score
- *****************************************************************************
- * This function checks the interface can be run and returns a score to the
- * plugin manager so that it can select the best plugin.
- *****************************************************************************/
-static int intf_Probe( probedata_t *p_data )
-{
- if( TestMethod( INTF_METHOD_VAR, "macosx" ) )
- {
- return( 999 );
- }
-
- /* Under MacOS X, this plugin always works */
- return( 100 );
-}
-
-/*****************************************************************************
- * intf_Open: initialize interface
- *****************************************************************************/
-static int intf_Open( intf_thread_t *p_intf )
-{
- MenuHandle menu;
-// MenuRef windMenu;
-
- /* Allocate instance and initialize some members */
- p_intf->p_sys = malloc( sizeof( intf_sys_t ) );
- if( p_intf->p_sys == NULL )
- {
- return( 1 );
- };
-
- /* Init Mac stuff */
- InitCursor();
- SetQDGlobalsRandomSeed( TickCount() );
-
-// neat menu but don't know if we want it.
-// Install the Windows menu. Free of charge!
-// CreateStandardWindowMenu( 0, &windMenu );
-// InsertMenu( windMenu, 0 );
-// DrawMenuBar();
-
- menu = NewMenu( kMenuApple, "\p\024" );
- AppendMenu( menu, "\pAbout VLCÉ/A" );
- InsertMenu( menu, 0 );
-
- menu = NewMenu( kMenuFile, "\pFile" );
- AppendMenu( menu, "\pNew Viewer Window/N" );
- AppendMenu( menu, "\pOpenÉ/O" );
- AppendMenu( menu, "\p(-" );
- AppendMenu( menu, "\pClose/W" );
- //standard OS X application menu quit isn't working nicely
- AppendMenu( menu, "\pQuit/Q" );
- InsertMenu( menu, 0 );
-
-//BIG HONKING MENU - in order Mac OS 9 dvd player
-//can't get key codes right for menus... argh that's why they use resources!
-
- menu = NewMenu( kMenuControls, "\pControls" );
-
- AppendMenu( menu, "\pPlay/," );
-// SetMenuItemCommandKey(menu, 0, false, kSpace);
-// SetMenuItemModifiers( menu, 0, kMenuNoCommandModifier);
-
- AppendMenu( menu, "\pStop/." );
-
- AppendMenu( menu, "\pFast Forward/f" );
-// SetMenuItemCommandKey(menu, 2, false, kRightArrow);
-
- AppendMenu( menu, "\pRewind/r" );
-// SetMenuItemCommandKey(menu, 3, false, kLeftArrow);
-
- AppendMenu( menu, "\p(-" ); //4
-
- AppendMenu( menu, "\pNext Chapter/c" );
-// SetMenuItemCommandKey(menu, 5, false, kRightArrow);
-// SetMenuItemModifiers( menu, 5, kMenuNoCommandModifier);
-
- AppendMenu( menu, "\pPrevious Chapter/p" );
-// SetMenuItemCommandKey(menu, 6, false, kLeftArrow);
-// SetMenuItemModifiers( menu, 6, kMenuNoCommandModifier);
-
- AppendMenu( menu, "\p(-" ); //7
-
- AppendMenu( menu, "\pDVD Menu/v" );
-// SetMenuItemCommandKey(menu, 8, false, kEscape);
-// SetMenuItemModifiers( menu, 8, kMenuNoCommandModifier);
-
- AppendMenu( menu, "\p(-" ); //9
-
- AppendMenu( menu, "\pVolume Up/u" );
-// SetMenuItemCommandKey(menu, 10, false, kUpArrow);
-
- AppendMenu( menu, "\pVolume Down/d" );
-// SetMenuItemCommandKey(menu, 11, false, kDownArrow);
-
- AppendMenu( menu, "\pMute/M" ); //12
-
- AppendMenu( menu, "\p(-" ); //13
-
- AppendMenu( menu, "\pEject/E" ); //14
-
- InsertMenu( menu, 0 );
-
-//Hmm, eventually we might want more than one player window, but for now we assume one only (like OS 9 player)
-//and since we start with a window open, we temporarily disable the 'new' menu
- DisableMenuItem( GetMenuHandle(kMenuFile), kFileNew);
-
-//FIXME - Disabled Menus which are not implemented yet
- DisableMenuItem( GetMenuHandle(kMenuControls), kControlsDVDMenu);
- DisableMenuItem( GetMenuHandle(kMenuControls), kControlsEject);
-
- DrawMenuBar();
-
- if( MakeAboutWindow( p_intf ) )
- {
- intf_ErrMsg( "vout error: can't make about window" );
- return( 1 );
- }
-
- return( 0 );
-}
-
-/*****************************************************************************
- * intf_Close: destroy interface
- *****************************************************************************/
-static void intf_Close( intf_thread_t *p_intf )
-{
- /* Destroy structure */
- free( p_intf->p_sys );
-}
-
-/*****************************************************************************
- * intf_Run: main loop
- *****************************************************************************/
-static void intf_Run( intf_thread_t *p_intf )
-{
- OSStatus err;
- EventLoopTimerUPP manageUPP;
-
-/*
-Eventually we want to use Carbon events, or maybe even write this app in Cocoa
-
-//kinda going out of bounds here... need to bring window creation to this file.
- main_t *p_main;
-
- EventTypeSpec windowEventType = { kEventClassWindow, kEventWindowClose };
- EventHandlerUPP windowHandlerUPP;
-
- EventTypeSpec keyboardEventType = { kEventClassKeyboard, kEventRawKeyDown };
- EventHandlerUPP keyboardHandlerUPP;
-*/
-
- manageUPP = NewEventLoopTimerUPP ( CarbonManageCallback );
- err = InstallEventLoopTimer ( GetCurrentEventLoop(), 0, kMainLoopFrequency, manageUPP, (void *) p_intf, &p_intf->p_sys->manageTimer );
- assert(err == noErr);
- DisposeEventLoopTimerUPP(manageUPP);
-
-/*
- windowHandlerUPP = NewEventHandlerUPP ( MyWindowEventHandler );
- err = InstallWindowEventHandler ( p_main->p_vout->p_sys->p_window , windowHandlerUPP, GetEventTypeCount(windowEventType), &windowEventType, (void *) p_intf, NULL );
- assert(err == noErr);
- DisposeEventHandlerUPP(windowHandlerUPP);
-*/
-
-
-#ifndef CarbonEvents
- //UGLY Event Loop!
- EventLoop( p_intf );
-#else
- RunApplicationEventLoop();
-#endif
- err = RemoveEventLoopTimer(p_intf->p_sys->manageTimer);
- assert(err == noErr);
-}
-
-
-/*****************************************************************************
- * MakeAboutWindow: similar to MakeWindow in vout_macosx.c ;
- * open and set-up a Mac OS window to be used for 'about' program...
- * create it hidden and only show it when requested
- *****************************************************************************/
-static int MakeAboutWindow( intf_thread_t *p_intf )
-{
- int left = 0;
- int top = 0;
- int bottom = kAboutWindowHeight;
- int right = kAboutWindowWidth;
-
- WindowAttributes windowAttr = kWindowCloseBoxAttribute |
- kWindowStandardHandlerAttribute |
- kWindowInWindowMenuAttribute;
-
- SetRect( &p_intf->p_sys->aboutRect, left, top, right, bottom );
- OffsetRect( &p_intf->p_sys->aboutRect, kAboutWindowOffset, kAboutWindowOffset );
-
- CreateNewWindow( kDocumentWindowClass, windowAttr, &p_intf->p_sys->aboutRect, &p_intf->p_sys->p_aboutWindow );
- if ( p_intf->p_sys->p_aboutWindow == nil )
- {
- return( 1 );
- }
-
- InstallStandardEventHandler(GetWindowEventTarget(p_intf->p_sys->p_aboutWindow));
- SetWindowTitleWithCFString( p_intf->p_sys->p_aboutWindow, CFSTR("About DVD.app & VLC") );
-
- return( 0 );
-}
-
-
-void CarbonManageCallback ( EventLoopTimerRef inTimer, void *inUserData )
-{
- intf_thread_t * p_intf = (intf_thread_t *) inUserData;
-
- /* Manage core vlc functions through the callback */
- p_intf->pf_manage( p_intf );
-
- if ( p_intf->b_die )
- {
- QuitApplicationEventLoop();
- }
-}
-
-#ifndef CarbonEvents
-
-void EventLoop( intf_thread_t *p_intf )
-{
- Boolean gotEvent;
- EventRecord event;
-
- do
- {
- p_intf->pf_manage( p_intf );
- gotEvent = WaitNextEvent(everyEvent,&event,32767,nil);
- if (gotEvent)
- DoEvent( p_intf, &event);
- } while (! p_intf->b_die );
-
- //ExitToShell();
-}
-
-
-void DoEvent( intf_thread_t *p_intf , EventRecord *event)
-{
- short part;
- Boolean hit;
- char key;
- Rect tempRect;
- WindowRef whichWindow;
-
- switch (event->what)
- {
- case mouseDown:
- part = FindWindow(event->where, &whichWindow);
- switch (part)
- {
- case inMenuBar: /* process a moused menu command */
- DoMenuCommand( p_intf, MenuSelect(event->where));
- break;
-
- case inSysWindow:
- break;
-
- case inContent:
- if (whichWindow != FrontWindow())
- SelectWindow(whichWindow);
- break;
-
- case inDrag: /* pass screenBits.bounds */
- GetRegionBounds(GetGrayRgn(), &tempRect);
- DragWindow(whichWindow, event->where, &tempRect);
- break;
-
- case inGrow:
- break;
-
- case inGoAway:
- p_intf->b_die = true;
- return;
- break;
-
- case inZoomIn:
- case inZoomOut:
- hit = TrackBox(whichWindow, event->where, part);
- if (hit)
- {
- SetPort(GetWindowPort(whichWindow)); // window must be current port
- EraseRect(GetWindowPortBounds(whichWindow, &tempRect)); // inval/erase because of ZoomWindow bug
- ZoomWindow(whichWindow, part, true);
- InvalWindowRect(whichWindow, GetWindowPortBounds(whichWindow, &tempRect));
- }
- break;
- }
- break;
-
- case keyDown:
- case autoKey:
- key = event->message & charCodeMask;
- if (event->modifiers & cmdKey)
- if (event->what == keyDown)
- DoMenuCommand( p_intf, MenuKey(key));
-
- case activateEvt: /* if you needed to do something special */
- break;
-
- case updateEvt:
- DrawWindow((WindowRef) event->message);
- break;
-
- case kHighLevelEvent:
- AEProcessAppleEvent( event );
- break;
-
- case diskEvt:
- break;
- }
-}
-
-//the code for playorpause and stop taken almost directly from the BeOS code
-void playorpause ( intf_thread_t *p_intf )
-{
- int i_index;
-
- // pause the playback
- if (p_intf->p_input != NULL )
- {
- // mute the volume if currently playing
- if (p_intf->p_sys->playback_status == PLAYING)
- {
- vlc_mutex_lock( &p_aout_bank->lock );
- for( i_index = 0 ; i_index < p_aout_bank->i_count ; i_index++ )
- {
- p_aout_bank->pp_aout[i_index]->i_savedvolume =
- p_aout_bank->pp_aout[i_index]->i_volume;
- p_aout_bank->pp_aout[i_index]->i_volume = 0;
- }
- vlc_mutex_unlock( &p_aout_bank->lock );
- p_intf->p_sys->playback_status = PAUSED;
- SetMenuItemText( GetMenuHandle(kMenuControls), kControlsPlayORPause, "\pPlay");
- }
- else
- // restore the volume
- {
- vlc_mutex_lock( &p_aout_bank->lock );
- for( i_index = 0 ; i_index < p_aout_bank->i_count ; i_index++ )
- {
- p_aout_bank->pp_aout[i_index]->i_volume =
- p_aout_bank->pp_aout[i_index]->i_savedvolume;
- p_aout_bank->pp_aout[i_index]->i_savedvolume = 0;
- }
- vlc_mutex_unlock( &p_aout_bank->lock );
- p_intf->p_sys->playback_status = PLAYING;
- SetMenuItemText( GetMenuHandle(kMenuControls), kControlsPlayORPause, "\pPause");
- }
- //snooze(400000);
- input_SetStatus(p_intf->p_input, INPUT_STATUS_PAUSE);
- }
-}
-
-void stop ( intf_thread_t *p_intf )
-{
- int i_index;
-
- // this currently stops playback not nicely
- if( p_intf->p_input != NULL )
- {
- // silence the sound, otherwise very horrible
- vlc_mutex_lock( &p_aout_bank->lock );
- for( i_index = 0 ; i_index < p_aout_bank->i_count ; i_index++ )
- {
- p_aout_bank->pp_aout[i_index]->i_savedvolume = p_aout_bank->pp_aout[i_index]->i_volume;
- p_aout_bank->pp_aout[i_index]->i_volume = 0;
- }
- vlc_mutex_unlock( &p_aout_bank->lock );
-
- //snooze( 400000 );
- input_SetStatus( p_intf->p_input, INPUT_STATUS_END );
- }
- p_intf->p_sys->playback_status = STOPPED;
-}
-
-
-void DoMenuCommand( intf_thread_t *p_intf , long menuResult)
-{
- short menuID; /* the resource ID of the selected menu */
- short menuItem; /* the item number of the selected menu */
- int i_index;
- vout_thread_t *p_vout;
-
- menuID = HiWord(menuResult); /* use macros to get item & menu number */
- menuItem = LoWord(menuResult);
-
- switch (menuID)
- {
- case kMenuApple:
- switch (menuItem)
- {
- case kAppleAbout:
- ShowWindow( p_intf->p_sys->p_aboutWindow );
- SelectWindow( p_intf->p_sys->p_aboutWindow );
- DrawAboutWindow( p_intf->p_sys->p_aboutWindow); //kludge
- EnableMenuItem( GetMenuHandle(kMenuFile), kFileClose);
- break;
-
- case kAppleQuit:
- p_intf->b_die = true;
- //hrmm... don't know what is going on w/ the Quit item in the new application menu...documentation???
- break;
-
- default:
- break;
- }
- break;
-
- case kMenuFile:
- switch (menuItem)
- {
- case kFileNew:
- vlc_mutex_lock( &p_vout_bank->lock );
- /* XXX: only test the first video output */
- if( p_vout_bank->i_count )
- {
- p_vout = p_vout_bank->pp_vout[0];
- ShowWindow( p_vout->p_sys->p_window );
- SelectWindow( p_vout->p_sys->p_window );
- }
- vlc_mutex_unlock( &p_vout_bank->lock );
- DisableMenuItem( GetMenuHandle(kMenuFile), kFileNew);
- EnableMenuItem( GetMenuHandle(kMenuFile), kFileClose);
- //hmm, can't say to play() right now because I don't know if a file is in playlist yet.
- //need to see if I can tell this or eve if calling play() w/o a file is bad...not sure of either
- break;
-
- case kFileOpen:
- playorpause( p_intf );
- MyOpenDocument(nil);
- // starts playing automatically on open? playorpause( p_intf );
- break;
-
- case kFileClose:
- HideWindow( FrontWindow() );
-
- vlc_mutex_lock( &p_vout_bank->lock );
- /* XXX: only test the first video output */
- if( p_vout_bank->i_count )
- {
- p_vout = p_vout_bank->pp_vout[0];
- printf("ok\n");
- }
- else printf("NO\n");
- vlc_mutex_unlock( &p_vout_bank->lock );
-
- if ( ! IsWindowVisible( p_vout->p_sys->p_window ) && ! IsWindowVisible( p_intf->p_sys->p_aboutWindow ) )
- {
- //calling this even if no file open shouldn't be bad... not sure of opposite situation above
- stop( p_intf );
- EnableMenuItem( GetMenuHandle(kMenuFile), kFileNew);
- DisableMenuItem( GetMenuHandle(kMenuFile), kFileClose);
- }
- break;
-
- case kFileQuitHack:
- stop( p_intf );
- p_intf->b_die = true;
- break;
-
- default:
- break;
- }
- break;
-
- case kMenuControls:
- switch (menuItem)
- {
- case kControlsPlayORPause:
- playorpause( p_intf );
- break;
-
- case kControlsStop:
- stop( p_intf );
- break;
-
- case kControlsForward:
- // cycle the fast playback modes
- if (p_intf->p_input != NULL )
- {
- vlc_mutex_lock( &p_aout_bank->lock );
- for( i_index = 0 ; i_index < p_aout_bank->i_count ; i_index++ )
- {
- p_aout_bank->pp_aout[i_index]->i_savedvolume =
- p_aout_bank->pp_aout[i_index]->i_volume;
- p_aout_bank->pp_aout[i_index]->i_volume = 0;
- }
- vlc_mutex_unlock( &p_aout_bank->lock );
- //snooze(400000);
- input_SetStatus(p_intf->p_input, INPUT_STATUS_FASTER);
- }
- break;
-
- case kControlsRewind:
- // cycle the slow playback modes
- if (p_intf->p_input != NULL )
- {
- vlc_mutex_lock( &p_aout_bank->lock );
- for( i_index = 0 ; i_index < p_aout_bank->i_count ; i_index++ )
- {
- p_aout_bank->pp_aout[i_index]->i_savedvolume =
- p_aout_bank->pp_aout[i_index]->i_volume;
- p_aout_bank->pp_aout[i_index]->i_volume = 0;
- }
- vlc_mutex_unlock( &p_aout_bank->lock );
- //snooze(400000);
- input_SetStatus(p_intf->p_input, INPUT_STATUS_FASTER);
- }
- break;
-
- case kControlsChapterNext:
- if( p_intf->p_input != NULL )
- {
- /* FIXME: temporary hack */
- p_intf->p_input->b_eof = 1;
- }
- break;
-
- case kControlsChapterPrevious:
- if( p_intf->p_input != NULL )
- {
- /* FIXME: temporary hack */
- intf_PlaylistPrev( p_main->p_playlist );
- intf_PlaylistPrev( p_main->p_playlist );
- p_intf->p_input->b_eof = 1;
- }
- break;
-
- case kControlsDVDMenu:
- //Fixme
- SysBeep(30);
- break;
-
- case kControlsVolumeUp:
- // adjust the volume
- vlc_mutex_lock( &p_aout_bank->lock );
- for( i_index = 0 ; i_index < p_aout_bank->i_count ; i_index++ )
- {
-// ++p_aout_bank->pp_aout[i_index]->i_volume;
- p_aout_bank->pp_aout[i_index]->i_savedvolume = ++p_aout_bank->pp_aout[i_index]->i_volume;
- }
- vlc_mutex_unlock( &p_aout_bank->lock );
- break;
-
- case kControlsVolumeDown:
- // adjust the volume
- vlc_mutex_lock( &p_aout_bank->lock );
- for( i_index = 0 ; i_index < p_aout_bank->i_count ; i_index++ )
- {
-// --p_aout_bank->pp_aout[i_index]->i_volume;
- p_aout_bank->pp_aout[i_index]->i_savedvolume = --p_aout_bank->pp_aout[i_index]->i_volume;
- }
- vlc_mutex_unlock( &p_aout_bank->lock );
- break;
-
- case kControlsVolumeMute:
- // mute
- vlc_mutex_lock( &p_aout_bank->lock );
- for( i_index = 0 ; i_index < p_aout_bank->i_count ; i_index++ )
- {
- if( p_aout_bank->pp_aout[i_index]->i_savedvolume )
- {
- p_aout_bank->pp_aout[i_index]->i_volume =
- p_aout_bank->pp_aout[i_index]->i_savedvolume;
- p_aout_bank->pp_aout[i_index]->i_savedvolume = 0;
- }
- else
- {
- p_aout_bank->pp_aout[i_index]->i_savedvolume =
- p_aout_bank->pp_aout[i_index]->i_volume;
- p_aout_bank->pp_aout[i_index]->i_volume = 0;
- }
- }
- vlc_mutex_unlock( &p_aout_bank->lock );
- break;
-
- case kControlsEject:
- //Fixme
- SysBeep(30);
- break;
-
- default:
- break;
- }
- break;
-
- default:
- break;
- }
- HiliteMenu(0); /* unhighlight what MenuSelect (or MenuKey) hilited */
-}
-
-void DrawWindow(WindowRef window)
-{
- Rect tempRect;
- GrafPtr previousPort;
-
- GetPort(&previousPort);
- SetPort(GetWindowPort(window));
- BeginUpdate(window);
- EraseRect(GetWindowPortBounds(window, &tempRect));
- DrawControls(window);
- DrawGrowIcon(window);
- EndUpdate(window);
- SetPort(previousPort);
-}
-
-void DrawAboutWindow(WindowRef window)
-{
- GrafPtr previousPort;
-
- GetPort(&previousPort);
- SetPort(GetWindowPort(window));
-
- MoveTo(10,30);
- DrawString("\phttp://www.videolan.org");
-
- SetPort(previousPort);
-}
-
-#else
-
-static pascal OSStatus MyEventHandler(EventHandlerCallRef myHandler, EventRef event, void* userData)
-{
- WindowRef window;
- Rect bounds;
- UInt32 whatHappened;
- HICommand commandStruct;
- MenuRef theMenuRef;
- UInt16 theMenuItem;
- OSStatus result = eventNotHandledErr; // report failure by default
-
- GetEventParameter(event, kEventParamDirectObject, typeWindowRef, NULL, sizeof(window), NULL, &window);
-
- whatHappened = GetEventKind(event);
-
- switch (whatHappened)
- {
- case kEventWindowActivated:
- break;
-
- case kEventWindowDeactivated:
- break;
-
- case kEventWindowDrawContent:
- //DoUpdate(window);
- result = noErr;
- break;
-
- case kEventWindowBoundsChanged:
- InvalWindowRect(window, GetWindowPortBounds(window, &bounds));
- //DoUpdate(window);
- result = noErr;
- break;
-
- case kEventWindowClickContentRgn:
- /*DoContentClick(window);
- DoUpdate(window);
- AdjustMenus();*/
- result = noErr;
- break;
-
- case kEventCommandProcess:
- GetEventParameter (event, kEventParamDirectObject,
- typeHICommand, NULL, sizeof(HICommand),
- NULL, &commandStruct);
- theMenuRef = commandStruct.menu.menuRef;
-
- if (theMenuRef == GetMenuHandle(kMenuApple))
- {
- // Because the event didn't occur *in* the window, the
- // window reference isn't valid until we set it here
- window = FrontWindow();
-
- theMenuItem = commandStruct.menu.menuItemIndex;
- switch ( theMenuItem )
- {
- case iStop:
- SetLight(window, true);
- break;
- case iGo:
- SetLight(window, false);
- break;
- }
- DoUpdate(window);
- AdjustMenus();
- result = noErr;
- }
- */
- break;
-
- case kEventMouseMoved:
- /*
- CursorRgn = NewRgn();
- GetEventParameter (event, kEventParamMouseLocation, typeQDPoint,
- NULL, sizeof(Point), NULL, &wheresMyMouse);
- AdjustCursor(wheresMyMouse, CursorRgn);
- DisposeRgn(CursorRgn);
- */
- result = noErr;
- break;
-
- default:
- // If nobody handled the event, it gets propagated to the
- // application-level handler.
- break;
- }
- return result;
-}
-#endif
-
-//FIXME Adding this has introduced or surfaced a lot of bugs...
-//comented out a lot of things to strip this down to make this a 'quicky'
-OSErr MyOpenDocument(const FSSpecPtr defaultLocationfssPtr)
-{
- NavDialogOptions dialogOptions;
-// AEDesc defaultLocation;
-// NavEventUPP eventProc = NewNavEventProc(myEventProc);
-// NavObjectFilterUPP filterProc =
-// NewNavObjectFilterProc(myFilterProc);
- OSErr anErr = noErr;
-
- // Specify default options for dialog box
- anErr = NavGetDefaultDialogOptions(&dialogOptions);
- if (anErr == noErr)
- {
- // Adjust the options to fit our needs
- // Set default location option
-// dialogOptions.dialogOptionFlags |= kNavSelectDefaultLocation;
- // Clear preview option
- dialogOptions.dialogOptionFlags ^= kNavAllowPreviews;
-
- // make descriptor for default location
-// anErr = AECreateDesc(typeFSS, defaultLocationfssPtr,
-// sizeof(*defaultLocationfssPtr),
-// &defaultLocation );
- if (anErr == noErr)
- {
- // Get 'open' resource. A nil handle being returned is OK,
- // this simply means no automatic file filtering.
- NavTypeListHandle typeList = (NavTypeListHandle)GetResource(
- 'open', 128);
- NavReplyRecord reply;
-
- // Call NavGetFile() with specified options and
- // declare our app-defined functions and type list
-// anErr = NavGetFile (&defaultLocation, &reply, &dialogOptions,
- anErr = NavGetFile (nil, &reply, &dialogOptions,
-// eventProc, nil, filterProc,
- nil, nil, nil,
- typeList, nil);
- if (anErr == noErr && reply.validRecord)
- {
- // Deal with multiple file selection
- long count;
-
- anErr = AECountItems(&(reply.selection), &count);
- // Set up index for file list
- if (anErr == noErr)
- {
- long index;
-
- for (index = 1; index <= count; index++)
- {
- AEKeyword theKeyword;
- DescType actualType;
- Size actualSize;
- FSSpec documentFSSpec;
-
- // Get a pointer to selected file
- anErr = AEGetNthPtr(&(reply.selection), index,
- typeFSS, &theKeyword,
- &actualType,&documentFSSpec,
- sizeof(documentFSSpec),
- &actualSize);
- if (anErr == noErr)
- {
-// anErr = DoOpenFile(&documentFSSpec);
-//HERE
- FSRef newRef;
- char path[MAXPATHLEN];
-
- //make an FSRef out of an FSSpec
- anErr = FSpMakeFSRef( &documentFSSpec, &newRef);
- if (anErr != noErr)
- {
- return(anErr);
- }
- //make a path out of the FSRef
- anErr = FSRefMakePath( &newRef, path, MAXPATHLEN);
- if (anErr != noErr)
- {
- return(anErr);
- }
-
- //else, ok...add it to playlist!
- intf_PlaylistAdd( p_main->p_playlist, PLAYLIST_END, path );
-
-
- }
- }
- }
- // Dispose of NavReplyRecord, resources, descriptors
- anErr = NavDisposeReply(&reply);
- }
- if (typeList != NULL)
- {
- ReleaseResource( (Handle)typeList);
- }
- //(void) AEDisposeDesc(&defaultLocation);
- }
- }
-// DisposeRoutineDescriptor(eventProc);
-// DisposeRoutineDescriptor(filterProc);
- return anErr;
-}
-
/*****************************************************************************
- * intf_macosx.c: MacOS X interface plugin
+ * intf_main.c: MacOS X interface plugin
*****************************************************************************
* Copyright (C) 2001 VideoLAN
*
- * Authors: Colin Delacroix <colin@zoy.org>
+ * Authors: Colin Delacroix <colin@zoy.org>
+ * Florian G. Pflug <fgp@phlo.org>
*
* 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
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.
*****************************************************************************/
+#define MODULE_NAME macosx
#include "modules_inner.h"
/*****************************************************************************
#include "interface.h"
#include "intf_msg.h"
-#include "intf_playlist.h"
-
-#include "main.h"
#include "modules.h"
#include "modules_export.h"
-#include "macosx_qt_common.h"
+/* OS specific */
+#import <Cocoa/Cocoa.h>
+
+
+/*****************************************************************************
+ * intf_sys_t: description and status of the interface
+ *****************************************************************************/
+typedef struct intf_sys_s
+{
+ NSAutoreleasePool *o_pool ;
+} intf_sys_t;
/*****************************************************************************
static void intf_Close ( intf_thread_t *p_intf );
static void intf_Run ( intf_thread_t *p_intf );
-/* OS specific */
-#define kMainLoopFrequency (kEventDurationSecond) //45 for good measure
-
-static pascal OSStatus FS_suspend_resume_handler(EventHandlerCallRef ref, EventRef event, void *dummy) ;
-static pascal void APP_timer_handler(EventLoopTimerRef timer, void *dummy) ;
-
/*****************************************************************************
* Functions exported as capabilities. They are declared as static so that
* we don't pollute the namespace too much.
*****************************************************************************/
static int intf_Probe( probedata_t *p_data )
{
- if( TestMethod( INTF_METHOD_VAR, "macosx_qt" ) )
+ if( TestMethod( INTF_METHOD_VAR, "macosx" ) )
{
return( 999 );
}
/* Under MacOS X, this plugin always works */
- return( 90 );
+ return( 100 );
}
/*****************************************************************************
return( 1 );
};
+ p_intf->p_sys->o_pool =[[NSAutoreleasePool alloc] init];
+
+ [NSApplication sharedApplication];
+ [NSBundle loadNibNamed:@"MainMenu" owner:NSApp];
+
return( 0 );
}
static void intf_Close( intf_thread_t *p_intf )
{
/* Destroy structure */
+ [NSApp terminate:NSApp] ;
+ [p_intf->p_sys->o_pool release] ;
free( p_intf->p_sys );
}
*****************************************************************************/
static void intf_Run( intf_thread_t *p_intf )
{
- static EventTypeSpec suspendResumeEvent[2] = {{kEventClassApplication,kEventAppActivated}, {kEventClassApplication,kEventAppDeactivated}} ;
-
- BeginFullScreen(&p_intf->p_sys->before_fullscreen, nil, 0, 0, &p_intf->p_sys->p_window, 0, fullScreenAllowEvents) ;
- InstallStandardEventHandler(GetApplicationEventTarget()) ;
- InstallApplicationEventHandler(NewEventHandlerUPP(FS_suspend_resume_handler), 2, suspendResumeEvent, &p_intf->p_sys->p_window, NULL) ;
- InstallEventLoopTimer(GetMainEventLoop(), 0, kMainLoopFrequency, NewEventLoopTimerUPP(APP_timer_handler), NULL, &p_intf->p_sys->r_timer) ;
- ShowWindow(p_intf->p_sys->p_window );
- p_intf->p_sys->b_active = 1 ;
-
- RunApplicationEventLoop() ;
-
- p_intf->p_sys->b_active = 0 ;
- EndFullScreen(p_intf->p_sys->before_fullscreen, nil) ;
+ [NSApp run] ;
}
-
-static pascal void APP_timer_handler(EventLoopTimerRef timer, void *dummy)
-{
- p_main->p_intf->pf_manage(p_main->p_intf) ;
-
- if (p_main->p_intf->b_die) QuitApplicationEventLoop() ;
-}
-
-static pascal OSStatus FS_suspend_resume_handler(EventHandlerCallRef ref, EventRef event, void *dummy)
-{
- switch (GetEventKind(event))
- {
- case kEventAppActivated: ShowWindow(p_main->p_intf->p_sys->p_window) ;
- SetPortWindowPort(p_main->p_intf->p_sys->p_window) ;
- intf_WarnMsg(1, "Application is on foreground") ;
- break ;
- case kEventAppDeactivated: HideWindow(p_main->p_intf->p_sys->p_window) ;
- intf_WarnMsg(1, "Application sent to background") ;
- break ;
- }
-
- return noErr ;
-}
-
--- /dev/null
+//
+// intf_qdview.c
+// vlc
+//
+// Created by fgp on Mon Oct 29 2001.
+// Copyright (c) 2001 __MyCompanyName__. All rights reserved.
+//
+
+#import "intf_qdview.h"
+
+NSString *VlcQuickDrawViewDidResize = @"VlcQuickDrawViewDidDraw" ;
+
+@implementation VlcQuickDrawView
+
+- (id)initWithFrame:(NSRect)frame {
+ self = [super initWithFrame:frame];
+ return self;
+}
+
+- (void)drawRect:(NSRect)rect {
+ [super drawRect:rect] ;
+ [[NSNotificationCenter defaultCenter] postNotificationName:VlcQuickDrawViewDidResize object:self] ;
+}
+
+@end
--- /dev/null
+//
+// intf_qdview.h
+// vlc
+//
+// Created by fgp on Mon Oct 29 2001.
+// Copyright (c) 2001 __MyCompanyName__. All rights reserved.
+//
+
+#import <Cocoa/Cocoa.h>
+
+extern NSString *VlcQuickDrawViewDidResize ;
+
+@interface VlcQuickDrawView : NSQuickDrawView {
+}
+
+@end
--- /dev/null
+/*****************************************************************************
+ * intf_vlc_wrapper.c : MacOS X plugin for vlc
+ *****************************************************************************
+ * Copyright (C) 2001 VideoLAN
+ * $$
+ *
+ * Authors: Florian G. Pflug <fgp@phlo.org>
+ *
+ * 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., 59 Temple Place - Suite 330, Boston, MA 02111, USA.
+ *****************************************************************************/
+
+#include "defs.h"
+
+#include <stdlib.h> /* malloc(), free() */
+#include <sys/param.h> /* for MAXPATHLEN */
+
+#include "config.h"
+#include "common.h"
+#include "threads.h"
+#include "mtime.h"
+#include "tests.h"
+
+#include "interface.h"
+#include "intf_msg.h"
+#include "intf_playlist.h"
+
+#include "main.h"
+
+#include "modules.h"
+#include "modules_export.h"
+
+#define OSX_COM_STRUCT vout_sys_s
+#define OSX_COM_TYPE vout_sys_t
+#include "macosx.h"
+
+#include "video.h"
+#include "video_output.h"
+#include "stream_control.h"
+#include "input_ext-intf.h"
+
+#import "intf_vlc_wrapper.h"
+
+#define p_area p_main->p_intf->p_input->stream.p_selected_area
+
+@implementation Intf_VlcWrapper
+//Initialization,.....
+ + (Intf_VlcWrapper*) instance {
+ static bool b_initialized = 0;
+ static Intf_VlcWrapper* o_vlc = nil ;
+
+ if (!b_initialized) {
+ o_vlc = [[Intf_VlcWrapper alloc] init] ;
+ b_initialized = TRUE ;
+ }
+
+ return o_vlc ;
+ }
+
+ - (Intf_VlcWrapper*) initWithDelegate:(id)_o_delegate {
+ e_speed = SPEED_NORMAL ;
+ o_delegate = _o_delegate ;
+
+ return self ;
+ }
+
+
+
+
+ - (bool) manage {
+ vout_thread_t *p_vout ;
+ bool b_resize=FALSE, b_request=FALSE, b_release=FALSE;
+ bool b_fullscreen=FALSE ;
+
+ p_main->p_intf->pf_manage( p_main->p_intf ) ;
+
+ if ((p_vout = [self lockVout])) {
+ i_width = p_vout->i_width ;
+ i_height = p_vout->i_height ;
+ b_fullscreen = !!p_vout->b_fullscreen ;
+
+ //Also mange the notifications for the output.
+ if (p_vout->i_changes & (VOUT_SIZE_CHANGE | VOUT_FULLSCREEN_CHANGE)) b_resize = TRUE ;
+ if (p_vout->p_sys->i_changes & OSX_VOUT_INTF_REQUEST_QDPORT) b_request = TRUE ;
+ if (p_vout->p_sys->i_changes & OSX_VOUT_INTF_RELEASE_QDPORT) b_release = TRUE ;
+
+ p_vout->i_changes &= ~(VOUT_SIZE_CHANGE | VOUT_FULLSCREEN_CHANGE) ;
+ p_vout->p_sys->i_changes &= ~(OSX_VOUT_INTF_REQUEST_QDPORT | OSX_VOUT_INTF_RELEASE_QDPORT) ;
+
+ [self unlockVout] ;
+ }
+
+ if (b_resize) [o_delegate resizeQDPortFullscreen:b_fullscreen] ;
+ if (b_release) [o_delegate releaseQDPort] ;
+ if (b_request) [o_delegate requestQDPortFullscreen:b_fullscreen] ;
+
+ return p_main->p_intf->b_die ;
+ }
+
+
+
+
+//Function for the GUI.
+ - (void) setQDPort:(CGrafPtr)p_qdport {
+ vout_thread_t *p_vout;
+
+ if ((p_vout = [self lockVout])) {
+ p_vout->p_sys->p_qdport = p_qdport ;
+ p_vout->p_sys->i_changes |= OSX_INTF_VOUT_QDPORT_CHANGE ;
+ [self unlockVout] ;
+ }
+ }
+
+ - (void) sizeChangeQDPort {
+ vout_thread_t *p_vout;
+
+ if ((p_vout = [self lockVout])) {
+ p_vout->p_sys->i_changes |= OSX_INTF_VOUT_SIZE_CHANGE ;
+ [self unlockVout] ;
+ }
+ }
+
+ - (NSSize) videoSize {
+ return NSMakeSize(i_width, i_height) ;
+ }
+
+
+
+
+//Playback control
+ - (void) play {
+ if (![self hasInput]) return ;
+
+ switch (e_speed)
+ {
+ case SPEED_SLOW:
+ input_SetStatus(p_main->p_intf->p_input, INPUT_STATUS_SLOWER) ;
+ break ;
+ case SPEED_NORMAL:
+ input_SetStatus(p_main->p_intf->p_input, INPUT_STATUS_PLAY) ;
+ break ;
+ case SPEED_FAST:
+ input_SetStatus(p_main->p_intf->p_input, INPUT_STATUS_FASTER) ;
+ break ;
+ }
+ }
+
+ - (void) pause {
+ if (![self hasInput]) return ;
+
+ input_SetStatus(p_main->p_intf->p_input, INPUT_STATUS_PAUSE) ;
+ }
+
+ - (void) stop {
+ return ;
+ }
+
+ - (void) stepf {
+ return ;
+ }
+
+ - (void) stepr {
+ return ;
+ }
+
+ - (void) setSpeed:(intf_speed_t) _e_speed {
+ e_speed = _e_speed ;
+ [self play] ;
+ }
+
+ - (NSString *) getTimeAsString {
+ static char psz_currenttime[ OFFSETTOTIME_MAX_SIZE ] ;
+
+ if (![self hasInput]) return [NSString stringWithCString:"00:00:00"] ;
+
+ input_OffsetToTime( p_main->p_intf->p_input, psz_currenttime, p_area->i_tell ) ;
+ return [NSString stringWithCString:psz_currenttime] ;
+ }
+
+ - (float) getTimeAsFloat {
+ if (![self hasInput]) return 0.0 ;
+
+ return (float)p_area->i_tell / (float)p_area->i_size ;
+ }
+
+ - (void) setTimeAsFloat:(float) f_position {
+ if (![self hasInput]) return ;
+
+ input_Seek(p_main->p_intf->p_input, p_area->i_size * f_position) ;
+ }
+
+
+
+
+//Playlist control
+ - (void) lockPlaylist {
+ vlc_mutex_lock(&p_main->p_playlist->change_lock) ;
+ }
+
+ - (void) unlockPlaylist {
+ vlc_mutex_unlock(&p_main->p_playlist->change_lock) ;
+ }
+
+ - (int) getPlaylistLength {
+ return p_main->p_playlist->i_size ;
+ }
+
+ - (NSString*) getPlaylistItem:(int) i_pos {
+ if (i_pos >= p_main->p_playlist->i_size)
+ return nil ;
+
+ return [NSString stringWithCString:p_main->p_playlist->p_item[i_pos].psz_name] ;
+ }
+
+ - (void) playNextPlaylistItem {
+ intf_PlaylistNext(p_main->p_playlist) ;
+ }
+
+ - (void) playPrevPlaylistItem {
+ intf_PlaylistPrev(p_main->p_playlist) ;
+ }
+
+ - (void) addPlaylistItem:(NSString*)o_filename {
+ intf_PlaylistAdd(p_main->p_playlist, PLAYLIST_END, [o_filename lossyCString]) ;
+ }
+
+
+
+
+// Private Functions. This are just some utilities for other functions
+ - (bool) hasInput {
+ return (p_main->p_intf->p_input != NULL) ? TRUE : FALSE ;
+ }
+
+ - (struct vout_thread_s*) lockVout {
+ vlc_mutex_lock(&p_vout_bank->lock) ;
+ if (p_vout_bank->i_count) {
+ vlc_mutex_lock(&p_vout_bank->pp_vout[0]->change_lock) ;
+ vlc_mutex_lock(&p_vout_bank->pp_vout[0]->p_sys->lock) ;
+ return p_vout_bank->pp_vout[0] ;
+ }
+ else
+ {
+ vlc_mutex_unlock(&p_vout_bank->lock) ;
+ return NULL ;
+ }
+ }
+
+ - (void) unlockVout {
+ vlc_mutex_lock(&p_vout_bank->pp_vout[0]->p_sys->lock) ;
+ vlc_mutex_unlock(&p_vout_bank->pp_vout[0]->change_lock) ;
+ vlc_mutex_unlock(&p_vout_bank->lock) ;
+ }
+@end
--- /dev/null
+/*****************************************************************************
+ * intf_vlc_wrapper.h : MacOS X plugin for vlc
+ *****************************************************************************
+ * Copyright (C) 2001 VideoLAN
+ * $$
+ *
+ * Authors: Florian G. Pflug <fgp@phlo.org>
+ *
+ * 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., 59 Temple Place - Suite 330, Boston, MA 02111, USA.
+ *****************************************************************************/
+
+#import <Cocoa/Cocoa.h>
+
+struct vlc_thread_s ;
+typedef enum intf_speed_e {SPEED_SLOW=0, SPEED_NORMAL, SPEED_FAST} intf_speed_t ;
+@protocol VlcWrapper_Delegate
+ - (void) requestQDPortFullscreen:(bool)b_fullscreen ;
+ - (void) releaseQDPort ;
+ - (void) resizeQDPortFullscreen:(bool)b_fullscreen ;
+@end
+
+
+// Intf_VlcWrapper is a singleton class (there is only one instance at any time)
+@interface Intf_VlcWrapper : NSObject {
+ id<VlcWrapper_Delegate> o_delegate ;
+ intf_speed_t e_speed ;
+
+ unsigned int i_width, i_height ;
+}
+
+// Initialization,....
++ (Intf_VlcWrapper*) instance ;
+- (Intf_VlcWrapper*) initWithDelegate:(id)o_delegate ;
+
+- (bool) manage ;
+
+//Function for the GUI.
+- (void) setQDPort:(CGrafPtr)p_qdport ;
+- (void) sizeChangeQDPort ;
+- (NSSize) videoSize ;
+
+// Playback control
+- (void) play ;
+- (void) pause ;
+- (void) stop ;
+- (void) stepf ;
+- (void) stepr ;
+- (void) setSpeed:(intf_speed_t)e_speed ;
+- (NSString*) getTimeAsString ;
+- (float) getTimeAsFloat ;
+- (void) setTimeAsFloat:(float)i_offset ;
+
+// Playlist control
+- (void) lockPlaylist ;
+- (void) unlockPlaylist ;
+- (int) getPlaylistLength ;
+- (NSString*) getPlaylistItem:(int)i_pos ;
+- (void) playNextPlaylistItem ;
+- (void) playPrevPlaylistItem ;
+- (void) addPlaylistItem:(NSString*)o_filename ;
+
+//private
+- (bool) hasInput ;
+- (struct vout_thread_s*) lockVout ;
+- (void) unlockVout ;
+@end
+
* macosx.c : MacOS X plugin for vlc
*****************************************************************************
* Copyright (C) 2001 VideoLAN
- * $Id: macosx.c,v 1.6 2001/10/08 16:20:25 massiot Exp $
+ * $Id: macosx.c,v 1.7 2001/10/30 10:48:14 massiot Exp $
*
* Authors: Colin Delacroix <colin@zoy.org>
* Eugenio Jarosiewicz <ej0@cise.ufl.edu>
+ * Florian G. Pflug <fgp@phlo.org>
*
* 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
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.
*****************************************************************************/
+#define MODULE_NAME macosx
#include "modules_inner.h"
/*****************************************************************************
--- /dev/null
+/*****************************************************************************
+ * macosx.h : MacOS X plugin for vlc
+ *****************************************************************************
+ * Copyright (C) 2001 VideoLAN
+ * $$
+ *
+ * Authors: Florian G. Pflug <fgp@phlo.org>
+ *
+ * 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., 59 Temple Place - Suite 330, Boston, MA 02111, USA.
+ *****************************************************************************/
+
+/*****************************************************************************
+ * The vout struct as access from both, the output and the interface module
+ *****************************************************************************/
+#include <QuickTime/QuickTime.h>
+
+#define OSX_INTF_VOUT_QDPORT_CHANGE 0x0001
+#define OSX_INTF_VOUT_SIZE_CHANGE 0x0002
+#define OSX_VOUT_INTF_REQUEST_QDPORT 0x0004
+#define OSX_VOUT_INTF_RELEASE_QDPORT 0x0008
+
+/* This struct is included as the _FIRST_ member in vout_sys_t */
+/* That way the interface can cast the vout_sys_t to osx_com_t */
+/* and doesn't need the definition of vout_sys_t */
+#ifndef OSX_COM_TYPE
+ #define OSX_COM_TYPE osx_com_t
+ #define OSX_COM_STRUCT osx_com_s
+#endif
+typedef struct OSX_COM_STRUCT {
+ vlc_mutex_t lock ;
+ unsigned int i_changes ;
+
+ CGrafPtr p_qdport ;
+} OSX_COM_TYPE ;
+++ /dev/null
-/*****************************************************************************
- * macosx.c : MacOS X plugin for vlc
- *****************************************************************************
- * Copyright (C) 2001 VideoLAN
- * $Id: macosx_common.h,v 1.3 2001/10/08 16:20:25 massiot Exp $
- *
- * Authors: Colin Delacroix <colin@zoy.org>
- *
- * 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., 59 Temple Place - Suite 330, Boston, MA 02111, USA.
- *****************************************************************************/
-
-/*****************************************************************************
- * Constants & more
- *****************************************************************************/
-
-#ifndef __CARBONPREFIX__
- #define __CARBONPREFIX__
-
- // Needed for carbonization
- #define TARGET_API_MAC_CARBON 1
-
- // For the pascal to C or C to pascal string conversions in carbon
- #define OLDP2C 1
-#endif
-
-#include <Carbon/Carbon.h>
-
-
-#define PLAYING 0
-#define PAUSED 1
-#define STOPPED 2
-
-
-/*****************************************************************************
- * Type declarations that unfortunately need to be known to both
- * ...
- * Kind of a hack due to the fact that on Mac OS, there is little difference
- * between the interface and the video output, and hence little separation
- * between those elements.
- *****************************************************************************/
-
-/*****************************************************************************
- * vout_sys_t: MacOS X video output method descriptor
- *****************************************************************************
- * This structure is part of the video output thread descriptor.
- * It describes the MacOS X specific properties of an output thread.
- *****************************************************************************/
-typedef struct vout_sys_s
-{
- Rect wrect;
- WindowRef p_window;
- short gwLocOffscreen;
- GWorldPtr p_gw[ 2 ];
- Boolean gNewNewGWorld; /* can we allocate in VRAm or AGP memory ? */
-
- GDHandle theGDList;
- Ptr theBase;
- int theRow;
- int theDepth;
-} vout_sys_t;
+++ /dev/null
-/*****************************************************************************
- * macosx.c : MacOS X plugin for vlc
- *****************************************************************************
- * Copyright (C) 2001 VideoLAN
- * $Id: macosx_qt.c,v 1.1 2001/10/08 23:10:28 massiot Exp $
- *
- * Authors: Colin Delacroix <colin@zoy.org>
- * Eugenio Jarosiewicz <ej0@cise.ufl.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 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., 59 Temple Place - Suite 330, Boston, MA 02111, USA.
- *****************************************************************************/
-
-#include "modules_inner.h"
-
-/*****************************************************************************
- * Preamble
- *****************************************************************************/
-#include "defs.h"
-
-#include <stdlib.h> /* malloc(), free() */
-
-#include "config.h"
-#include "common.h" /* boolean_t, byte_t */
-#include "threads.h"
-#include "mtime.h"
-
-#include "modules.h"
-
-/*****************************************************************************
- * Capabilities defined in the other files.
- *****************************************************************************/
-void _M( aout_getfunctions )( function_list_t * p_function_list );
-void _M( vout_getfunctions )( function_list_t * p_function_list );
-void _M( intf_getfunctions )( function_list_t * p_function_list );
-
-/*****************************************************************************
- * Build configuration tree.
- *****************************************************************************/
-MODULE_CONFIG_START
-ADD_WINDOW( "Configuration for MacOS X QuickTime module" )
- ADD_COMMENT( "Ha, ha -- nothing to configure yet" )
-MODULE_CONFIG_STOP
-
-MODULE_INIT_START
- p_module->i_capabilities = MODULE_CAPABILITY_NULL
- | MODULE_CAPABILITY_VOUT
- | MODULE_CAPABILITY_AOUT
- | MODULE_CAPABILITY_INTF;
- p_module->psz_longname = "MacOS X QuickTime output";
-MODULE_INIT_STOP
-
-MODULE_ACTIVATE_START
- _M( vout_getfunctions )( &p_module->p_functions->vout );
- _M( aout_getfunctions )( &p_module->p_functions->aout );
- _M( intf_getfunctions )( &p_module->p_functions->intf );
-MODULE_ACTIVATE_STOP
-
-MODULE_DEACTIVATE_START
-MODULE_DEACTIVATE_STOP
-
+++ /dev/null
-/*****************************************************************************
- * macosx.c : MacOS X plugin for vlc
- *****************************************************************************
- * Copyright (C) 2001 VideoLAN
- * $Id: macosx_qt_common.h,v 1.1 2001/10/08 23:10:28 massiot Exp $
- *
- * Authors: Colin Delacroix <colin@zoy.org>
- *
- * 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., 59 Temple Place - Suite 330, Boston, MA 02111, USA.
- *****************************************************************************/
-
-/*****************************************************************************
- * Constants & more
- *****************************************************************************/
-
-#ifndef __CARBONPREFIX__
- #define __CARBONPREFIX__
-
- // Needed for carbonization
- #define TARGET_API_MAC_CARBON 1
-
- // For the pascal to C or C to pascal string conversions in carbon
- #define OLDP2C 1
-#endif
-
-#include <Carbon/Carbon.h>
-#include <QuickTime/QuickTime.h>
-#include <CoreServices/CoreServices.h>
-#include <QuickTime/QuickTime.h>
-#include <ApplicationServices/ApplicationServices.h>
-
-
-/*****************************************************************************
- * Type declarations that unfortunately need to be known to both
- * ...
- * Kind of a hack due to the fact that on Mac OS, there is little difference
- * between the interface and the video output, and hence little separation
- * between those elements.
- *****************************************************************************/
-extern main_t *p_main;
-
-/*****************************************************************************
- * vout_sys_t: MacOS X video output method descriptor
- *****************************************************************************
- * This structure is part of the video output thread descriptor.
- * It describes the MacOS X specific properties of an output thread.
- *****************************************************************************/
-typedef struct vout_sys_s
-{
- ImageDescriptionHandle h_img_descr ;
- ImageSequence i_seq ;
- unsigned int i_img_size ;
- unsigned char *p_img ;
-} vout_sys_t;
-
-/*****************************************************************************
- * intf_sys_t: description and status of the interface
- *****************************************************************************/
-typedef struct intf_sys_s
-{
- Ptr before_fullscreen ;
- WindowRef p_window;
- EventLoopTimerRef r_timer ;
-
- unsigned int b_active ;
-} intf_sys_t;
-
+
/*****************************************************************************
* vout_macosx.c: MacOS X video output plugin
*****************************************************************************
* Copyright (C) 2001 VideoLAN
*
* Authors: Colin Delacroix <colin@zoy.org>
+ * Florian G. Pflug <fgp@phlo.org>
*
* 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
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.
*****************************************************************************/
+#define MODULE_NAME macosx
#include "modules_inner.h"
/*****************************************************************************
#include "mtime.h"
#include "tests.h"
+#include "interface.h"
#include "intf_msg.h"
#include "video.h"
#include "modules.h"
#include "main.h"
-#include "macosx_common.h"
+#include "macosx.h"
+#include <QuickTime/QuickTime.h>
/*****************************************************************************
- * Constants & more
+ * vout_sys_t: MacOS X video output method descriptor
+ *****************************************************************************
+ * This structure is part of the video output thread descriptor.
+ * It describes the MacOS X specific properties of an output thread.
*****************************************************************************/
-
-// Initial Window Constants
-enum
+typedef unsigned int yuv2_data_t ;
+typedef struct vout_sys_s
{
- kWindowOffset = 100
-};
+ osx_com_t osx_communication ;
-// where is the off screen
-enum
-{
- kNoWhere = 0,
- kInVRAM,
- kInAGP,
- kInSystem
-};
+ ImageDescriptionHandle h_img_descr ;
+ ImageSequence i_seq ;
+ unsigned int c_codec ;
+ MatrixRecordPtr p_matrix ;
+
+ yuv2_data_t *p_yuv2 ;
+ unsigned i_yuv2_size ;
+ PlanarPixmapInfoYUV420 s_ppiy420 ;
+} vout_sys_t;
/*****************************************************************************
static int vout_Manage ( struct vout_thread_s * );
static void vout_Display ( struct vout_thread_s * );
-/* OS specific */
-
-static int CreateDisplay ( struct vout_thread_s * );
-static int MakeWindow ( struct vout_thread_s * );
-static int AllocBuffer ( struct vout_thread_s * , short index );
-
-void BlitToWindow ( struct vout_thread_s * , short index );
-GDHandle GetWindowDevice ( struct vout_thread_s * );
-void FillOffscreen ( struct vout_thread_s * , short index);
-
-void FindBestMemoryLocation( struct vout_thread_s * );
+/* OS Specific */
+static void fillout_PPIYUV420( picture_t *p_y420, PlanarPixmapInfoYUV420 *p_ppiy420 ) ;
+static void fillout_ImageDescription(ImageDescriptionHandle h_descr, unsigned int i_with, unsigned int i_height, unsigned int c_codec) ;
+static void fillout_ScalingMatrix( vout_thread_t *p_vout ) ;
+static OSErr new_QTSequence(ImageSequence *i_seq, CGrafPtr p_port, ImageDescriptionHandle h_descr, MatrixRecordPtr p_matrix) ;
+static int create_QTSequenceBestCodec( vout_thread_t *p_vout ) ;
+static void dispose_QTSequence( vout_thread_t *p_vout ) ;
+static void convert_Y420_to_YUV2( picture_t *p_y420, yuv2_data_t *p_yuv2 ) ;
/*****************************************************************************
* Functions exported as capabilities. They are declared as static so that
*****************************************************************************/
static int vout_Create( vout_thread_t *p_vout )
{
- //intf_ErrMsg( "vout_Create()" );
-
- /* Allocate structure */
p_vout->p_sys = malloc( sizeof( vout_sys_t ) );
if( p_vout->p_sys == NULL )
{
intf_ErrMsg( "error: %s", strerror( ENOMEM ) );
return( 1 );
}
+ p_vout->p_sys->h_img_descr = (ImageDescriptionHandle)NewHandleClear( sizeof( ImageDescription ) ) ;
+ p_vout->p_sys->p_matrix = (MatrixRecordPtr)malloc( sizeof( MatrixRecord ) ) ;
+ p_vout->p_sys->c_codec = 'NONE' ;
- p_vout->p_sys->gwLocOffscreen = kNoWhere;
- p_vout->p_sys->p_window = NULL;
- p_vout->p_sys->p_gw[ 0 ] = NULL;
- p_vout->p_sys->p_gw[ 1 ] = NULL;
-
- if ( CreateDisplay( p_vout ) )
- {
- intf_ErrMsg( "vout error: can't open display" );
- free( p_vout->p_sys );
- return( 1 );
- }
-
-#if 0
- intf_ErrMsg( "vout p_vout->i_width %d" , p_vout->i_width);
- intf_ErrMsg( "vout p_vout->i_height %d" , p_vout->i_height);
- intf_ErrMsg( "vout p_vout->i_bytes_per_pixel %d" , p_vout->i_bytes_per_pixel);
- intf_ErrMsg( "vout p_vout->i_screen_depth %d" , p_vout->i_screen_depth);
-#endif
-
- return( 0 );
-}
-
-/*****************************************************************************
- * Find the best memory (AGP, VRAM, system) location
- *****************************************************************************/
-void FindBestMemoryLocation( vout_thread_t *p_vout )
-{
- long versionSystem;
-
- Gestalt( gestaltSystemVersion, &versionSystem );
- if ( 0x00000900 <= ( versionSystem & 0x00000FF00 ) )
- {
- intf_ErrMsg( "FindBestMemoryLocation : gNewNewGWorld = true" );
- p_vout->p_sys->gNewNewGWorld = true;
- }
- else
- {
- // now it is tricky
- // we will try to allocate in VRAM and find out where the allocation really ended up.
- GWorldPtr pgwTest = NULL;
- Rect rectTest = {0, 0, 10, 10};
- short wPixDepth =
- (**(GetPortPixMap( GetWindowPort( p_vout->p_sys->p_window ) ))).pixelSize;
- GDHandle hgdWindow = GetWindowDevice( p_vout );
-
- intf_ErrMsg( "FindBestMemoryLocation : gNewNewGWorld = false !" );
-#if 0
- p_vout->i_screen_depth = wPixDepth;
- p_vout->i_bytes_per_pixel = wPixDepth;
- p_vout->i_bytes_per_line = (**(**hgdWindow).gdPMap).rowBytes & 0x3FFF ;
-#endif
- if( ( noErr == NewGWorld( &pgwTest, wPixDepth, &rectTest, NULL, hgdWindow,
- noNewDevice | useDistantHdwrMem ) )
- && ( pgwTest ) )
- {
- p_vout->p_sys->gNewNewGWorld = true;
- }
-
- if( pgwTest )
- {
- DisposeGWorld( pgwTest );
- }
- }
-}
-
-/*****************************************************************************
- * CreateDisplay: setup display params...
- *****************************************************************************/
-static int CreateDisplay( vout_thread_t *p_vout )
-{
- PixMapHandle hPixmap0, hPixmap1;
- void * hPixmapBaseAddr0, * hPixmapBaseAddr1;
-
- //intf_ErrMsg( "CreateDisplay()" );
-
- if( MakeWindow( p_vout ) )
- {
- intf_ErrMsg( "vout error: can't open window display" );
- return( 1 );
- }
-
- // FindBestMemoryLocation( p_vout );
-
- //try to allocate @ best location, will eventaully trickle down to worst
- p_vout->p_sys->gwLocOffscreen = kInVRAM;
- if( AllocBuffer( p_vout, 0 ) || AllocBuffer( p_vout, 1 ) )
- {
- intf_ErrMsg( "vout error: can't alloc offscreen buffers" );
- return( 1 );
- }
-
-//FIXME ? - lock this down until the end...
- hPixmap0 = GetGWorldPixMap( p_vout->p_sys->p_gw[0] );
- LockPixels(hPixmap0);
- hPixmap1 = GetGWorldPixMap( p_vout->p_sys->p_gw[1] );
- LockPixels(hPixmap1);
-
- //FIXME hopefully this is the same for all Gworlds & window since they are the same size
- p_vout->i_bytes_per_line = (**hPixmap0).rowBytes & 0x3FFF;
-
- if ( (hPixmap0 == NULL) || (hPixmap1 == NULL) )
- {
- intf_ErrMsg( "vout error: pixmap problem");
- UnlockPixels(hPixmap0);
- UnlockPixels(hPixmap1);
- return( 1 );
- }
-
- hPixmapBaseAddr0 = GetPixBaseAddr( hPixmap0 );
- hPixmapBaseAddr1 = GetPixBaseAddr( hPixmap1 );
- if ( (hPixmapBaseAddr0 == NULL) || (hPixmapBaseAddr1 == NULL) )
- {
- intf_ErrMsg( "vout error: pixmap base addr problem");
- return( 1 );
- }
-
-//FIXME - if I ever dispose of the Gworlds and recreate them, i'll have a new address
-//and I'll need to tell vout about them... dunno what problems vout might have if we just updateGworld
- p_vout->pf_setbuffers( p_vout, hPixmapBaseAddr0, hPixmapBaseAddr1 );
-
- return 0;
-}
-
-/*****************************************************************************
- * MakeWindow: open and set-up a Mac OS main window
- *****************************************************************************/
-static int MakeWindow( vout_thread_t *p_vout )
-{
- int left = 0;
- int top = 0;
- int bottom = p_vout->i_height;
- int right = p_vout->i_width;
- ProcessSerialNumber PSN;
-
- WindowAttributes windowAttr = kWindowStandardDocumentAttributes |
- kWindowStandardHandlerAttribute |
- kWindowInWindowMenuAttribute;
-
- SetRect( &p_vout->p_sys->wrect, left, top, right, bottom );
- OffsetRect( &p_vout->p_sys->wrect, kWindowOffset, kWindowOffset );
-
- CreateNewWindow( kDocumentWindowClass, windowAttr, &p_vout->p_sys->wrect, &p_vout->p_sys->p_window );
- if ( p_vout->p_sys->p_window == nil )
- {
- return( 1 );
- }
-
- InstallStandardEventHandler(GetWindowEventTarget(p_vout->p_sys->p_window));
- SetPort( GetWindowPort( p_vout->p_sys->p_window ) );
- SetWindowTitleWithCFString( p_vout->p_sys->p_window, CFSTR("VLC") );
- ShowWindow( p_vout->p_sys->p_window );
- SelectWindow( p_vout->p_sys->p_window );
-
- //in case we are run from the command line, bring us to front instead of Terminal
- GetCurrentProcess(&PSN);
- SetFrontProcess(&PSN);
-
-{
- short wPixDepth = (**(GetPortPixMap( GetWindowPort( p_vout->p_sys->p_window ) ))).pixelSize;
- p_vout->i_screen_depth = wPixDepth;
- p_vout->i_bytes_per_pixel = p_vout->i_screen_depth / 8;
- p_vout->i_bytes_per_line = p_vout->i_width * p_vout->i_bytes_per_pixel;
-
- p_vout->i_bytes_per_line = (**(**GetWindowDevice( p_vout )).gdPMap).rowBytes & 0x3FFF ;
-
- switch ( p_vout->i_screen_depth )
- {
- case 32:
- case 24:
- p_vout->i_red_mask = 0xff0000;
- p_vout->i_green_mask = 0xff00;
- p_vout->i_blue_mask = 0xff;
- break;
- case 16:
- case 15:
- p_vout->i_red_mask = 0x00007c00;
- p_vout->i_green_mask = 0x000003e0;
- p_vout->i_blue_mask = 0x0000001f;
- break;
- default:
- break;
- }
-}
-
-#if 0
- p_vout->i_red_lshift = 0x10;
- p_vout->i_red_rshift = 0x0;
- p_vout->i_green_lshift = 0x8;
- p_vout->i_green_rshift = 0x0;
- p_vout->i_blue_lshift = 0x0;
- p_vout->i_blue_rshift = 0x0;
-
- p_vout->i_white_pixel = 0xffffff;
- p_vout->i_black_pixel = 0x0;
- p_vout->i_gray_pixel = 0x808080;
- p_vout->i_blue_pixel = 0x32;
-#endif
+ EnterMovies() ;
return( 0 );
}
-/*****************************************************************************
- * AllocBuffer: forces offscreen allocation (if different than current) in
- * memory type specified
- *****************************************************************************/
-static int AllocBuffer ( vout_thread_t *p_vout, short index )
-{
- Rect bounds;
- GDHandle hgdWindow = GetWindowDevice( p_vout );
-
- switch ( p_vout->p_sys->gwLocOffscreen )
- {
- case kInVRAM:
- if ( noErr == NewGWorld( &p_vout->p_sys->p_gw[index], p_vout->i_screen_depth,
- GetPortBounds( GetWindowPort( p_vout->p_sys->p_window ), &bounds ), NULL,
- hgdWindow, noNewDevice | useDistantHdwrMem ) )
- {
- intf_ErrMsg( "Allocate off screen image in VRAM" );
- break;
- }
- intf_ErrMsg( "Unable to allocate off screen image in VRAM, trying next best AGP" );
- p_vout->p_sys->gwLocOffscreen = kInAGP;
- case kInAGP:
- if (noErr == NewGWorld( &p_vout->p_sys->p_gw[index], p_vout->i_screen_depth,
- GetPortBounds( GetWindowPort( p_vout->p_sys->p_window ), &bounds ), NULL,
- hgdWindow, noNewDevice | useLocalHdwrMem ) )
- {
- intf_ErrMsg( "Allocate off screen image in AGP" );
- break;
- }
- intf_ErrMsg( "Unable to allocate off screen image in AGP, trying next best System" );
- p_vout->p_sys->gwLocOffscreen = kInSystem;
- case kInSystem:
- default:
- if ( noErr == NewGWorld( &p_vout->p_sys->p_gw[index], p_vout->i_screen_depth,
- GetPortBounds( GetWindowPort( p_vout->p_sys->p_window ), &bounds ), NULL,
- hgdWindow, noNewDevice | keepLocal) )
- {
- intf_ErrMsg( "Allocate off screen image in System" );
- break;
- }
- intf_ErrMsg( "Unable to allocate off screen image in System, no options left - failing" );
- p_vout->p_sys->gwLocOffscreen = kNoWhere;
- return( 1 ); // nothing was allocated
- }
- return( 0 );
-}
-
/*****************************************************************************
* vout_Init: initialize video thread output method
*****************************************************************************/
static int vout_Init( vout_thread_t *p_vout )
{
- //intf_ErrMsg( "vout_Init()" );
- return( 0 );
+ p_vout->b_need_render = 0 ;
+ p_vout->i_bytes_per_line = p_vout->i_width ;
+ p_vout->p_sys->c_codec = 'NONE' ;
+ vlc_mutex_lock( &p_vout->p_sys->osx_communication.lock ) ;
+ p_vout->p_sys->osx_communication.i_changes |= OSX_VOUT_INTF_REQUEST_QDPORT ;
+ vlc_mutex_unlock( &p_vout->p_sys->osx_communication.lock ) ;
+
+ return 0 ;
}
/*****************************************************************************
*****************************************************************************/
static void vout_End( vout_thread_t *p_vout )
{
- //intf_ErrMsg( "vout_End()" );
- ;
+ vlc_mutex_lock( &p_vout->p_sys->osx_communication.lock ) ;
+ p_vout->p_sys->osx_communication.i_changes |= OSX_VOUT_INTF_RELEASE_QDPORT ;
+ vlc_mutex_unlock( &p_vout->p_sys->osx_communication.lock ) ;
+
+ dispose_QTSequence( p_vout ) ;
}
/*****************************************************************************
*****************************************************************************/
static void vout_Destroy( vout_thread_t *p_vout )
{
- //intf_ErrMsg( "vout_Destroy()" );
-
-//FIXME Big Lock around Gworlds
- PixMapHandle hPixmap0, hPixmap1;
- hPixmap0 = GetGWorldPixMap( p_vout->p_sys->p_gw[0] );
- hPixmap1 = GetGWorldPixMap( p_vout->p_sys->p_gw[1] );
- UnlockPixels(hPixmap0);
- UnlockPixels(hPixmap1);
-
- if ( p_vout->p_sys->p_gw[0] )
- {
- DisposeGWorld( p_vout->p_sys->p_gw[0] );
- }
- if ( p_vout->p_sys->p_gw[1] )
- {
- DisposeGWorld( p_vout->p_sys->p_gw[1] );
- }
- if ( p_vout->p_sys->p_window )
- {
- DisposeWindow( p_vout->p_sys->p_window );
- }
-
+ free( p_vout->p_sys->p_matrix ) ;
+ DisposeHandle( (Handle)p_vout->p_sys->h_img_descr ) ;
free( p_vout->p_sys );
}
* console events. It returns a non null value on error.
*****************************************************************************/
static int vout_Manage( vout_thread_t *p_vout )
-{
-// intf_ErrMsg( "vout_Manage()" );
- return( 0 );
+{
+ vlc_mutex_lock( &p_vout->p_sys->osx_communication.lock ) ;
+ if ( p_vout->p_sys->osx_communication.i_changes & OSX_INTF_VOUT_QDPORT_CHANGE ) {
+ dispose_QTSequence( p_vout ) ;
+ create_QTSequenceBestCodec( p_vout ) ;
+ }
+ else if ( p_vout->p_sys->osx_communication.i_changes & OSX_INTF_VOUT_SIZE_CHANGE ) {
+ fillout_ScalingMatrix( p_vout ) ;
+ SetDSequenceMatrix( p_vout->p_sys->i_seq, p_vout->p_sys->p_matrix ) ;
+ }
+
+ p_vout->p_sys->osx_communication.i_changes &= ~(
+ OSX_INTF_VOUT_QDPORT_CHANGE |
+ OSX_INTF_VOUT_SIZE_CHANGE
+ ) ;
+ vlc_mutex_unlock( &p_vout->p_sys->osx_communication.lock ) ;
+
+ return 0 ;
}
+
/*****************************************************************************
- * vout_Display: displays previously rendered output
+ * vout_OSX_Display: displays previously rendered output
*****************************************************************************
* This function send the currently rendered image to image, waits until
* it is displayed and switch the two rendering buffers, preparing next frame.
*****************************************************************************/
-static void vout_Display( vout_thread_t *p_vout )
+void vout_Display( vout_thread_t *p_vout )
{
-// intf_ErrMsg( "vout_Display()" );
+ CodecFlags out_flags ;
+
+ switch (p_vout->p_sys->c_codec)
+ {
+ case 'yuv2':
+ convert_Y420_to_YUV2(p_vout->p_rendered_pic, p_vout->p_sys->p_yuv2) ;
+ DecompressSequenceFrameS(
+ p_vout->p_sys->i_seq,
+ (void *)p_vout->p_sys->p_yuv2,
+ p_vout->p_sys->i_yuv2_size,
+ codecFlagUseScreenBuffer,
+ &out_flags,
+ nil
+ ) ;
+ break ;
+ case 'y420':
+ fillout_PPIYUV420(p_vout->p_rendered_pic, &p_vout->p_sys->s_ppiy420) ;
+ DecompressSequenceFrameS(
+ p_vout->p_sys->i_seq,
+ (void *)&p_vout->p_sys->s_ppiy420,
+ sizeof(PlanarPixmapInfoYUV420),
+ codecFlagUseScreenBuffer,
+ &out_flags,
+ nil
+ ) ;
+ break ;
+ }
+}
-//we should not be called if we set the status to paused or stopped via the interface
-// if ( p_vout->p_sys->playback_status != PAUSED && p_vout->p_sys->playback_status != STOPPED )
- BlitToWindow ( p_vout, p_vout->i_buffer_index );
+static void fillout_PPIYUV420( picture_t *p_y420, PlanarPixmapInfoYUV420 *p_ppiy420 )
+{
+ p_ppiy420->componentInfoY.offset = (void *)p_y420->p_y - (void *)p_ppiy420 ;
+ p_ppiy420->componentInfoY.rowBytes = p_y420->i_width ;
+ p_ppiy420->componentInfoCb.offset = (void *)p_y420->p_u - (void *)p_ppiy420 ;
+ p_ppiy420->componentInfoCb.rowBytes = p_y420->i_width / 2;
+ p_ppiy420->componentInfoCr.offset = (void *)p_y420->p_v - (void *)p_ppiy420 ;
+ p_ppiy420->componentInfoCr.rowBytes = p_y420->i_width / 2;
}
-/*****************************************************************************
- * flushQD: flushes buffered window area
- *****************************************************************************/
-void flushQD( vout_thread_t *p_vout )
+static void fillout_ImageDescription(ImageDescriptionHandle h_descr, unsigned int i_width, unsigned int i_height, unsigned int c_codec)
{
- CGrafPtr thePort;
-
- //intf_ErrMsg( "flushQD()" );
-
- thePort = GetWindowPort( p_vout->p_sys->p_window );
+ ImageDescriptionPtr p_descr ;
+
+ HLock((Handle)h_descr) ;
+ p_descr = *h_descr ;
+ p_descr->idSize = sizeof(ImageDescription) ;
+ p_descr->cType = c_codec ;
+ p_descr->resvd1 = 0 ; //Reserved
+ p_descr->resvd2 = 0 ; //Reserved
+ p_descr->dataRefIndex = 0 ; //Reserved
+ p_descr->version = 1 ; //
+ p_descr->revisionLevel = 0 ;
+ p_descr->vendor = 'appl' ; //How do we get a vendor id??
+ p_descr->width = i_width ;
+ p_descr->height = i_height ;
+ p_descr->hRes = Long2Fix(72) ;
+ p_descr->vRes = Long2Fix(72) ;
+ p_descr->spatialQuality = codecLosslessQuality ;
+ p_descr->frameCount = 1 ;
+ p_descr->clutID = -1 ; //We don't need a color table
- /* flush the entire port */
- if (QDIsPortBuffered(thePort))
- QDFlushPortBuffer(thePort, NULL);
-
-#if 0
- /* flush part of the port */
- if (QDIsPortBuffered(thePort)) {
- RgnHandle theRgn;
- theRgn = NewRgn();
- /* local port coordinates */
- SetRectRgn(theRgn, 10, 10, 100, 30);
- QDFlushPortBuffer(thePort, theRgn);
- DisposeRgn(theRgn);
+ switch (c_codec)
+ {
+ case 'yuv2':
+ p_descr->dataSize=i_width * i_height * 2 ;
+ p_descr->depth = 24 ;
+ break ;
+ case 'y420':
+ p_descr->dataSize=i_width * i_height * 1.5 ;
+ p_descr->depth = 12 ;
+ break ;
}
-#endif
-
+
+ HUnlock((Handle)h_descr) ;
}
-/*****************************************************************************
- * BlitToWindow: checks offscreen and blits it to the front
- *****************************************************************************/
+static void fillout_ScalingMatrix( vout_thread_t *p_vout)
+{
+ Rect s_rect ;
+ Fixed factor_x ;
+ Fixed factor_y ;
+
+ GetPortBounds( p_vout->p_sys->osx_communication.p_qdport, &s_rect ) ;
+// if (((s_rect.right - s_rect.left) / ((float) p_vout->i_width)) < ((s_rect.bottom - s_rect.top) / ((float) p_vout->i_height)))
+ factor_x = FixDiv(Long2Fix(s_rect.right - s_rect.left), Long2Fix(p_vout->i_width)) ;
+// else
+ factor_y = FixDiv(Long2Fix(s_rect.bottom - s_rect.top), Long2Fix(p_vout->i_height)) ;
+
+ SetIdentityMatrix(p_vout->p_sys->p_matrix) ;
+ ScaleMatrix( p_vout->p_sys->p_matrix, factor_x, factor_y, Long2Fix(0), Long2Fix(0) ) ;
+}
-void BlitToWindow( vout_thread_t *p_vout, short index )
+static OSErr new_QTSequence( ImageSequence *i_seq, CGrafPtr p_qdport, ImageDescriptionHandle h_descr, MatrixRecordPtr p_matrix )
{
- Rect rectDest, rectSource;
- GrafPtr pCGrafSave, windowPort = GetWindowPort( p_vout->p_sys->p_window );
+ return DecompressSequenceBeginS(
+ i_seq,
+ h_descr,
+ NULL,
+ 0,
+ p_qdport,
+ NULL, //device to display (is set implicit via the qdPort)
+ NULL, //src-rect
+ p_matrix, //matrix
+ 0, //just do plain copying
+ NULL, //no mask region
+ codecFlagUseScreenBuffer,
+ codecLosslessQuality,
+ (DecompressorComponent) bestSpeedCodec
+ ) ;
+}
- //intf_ErrMsg( "BlitToWindow() for %d", index );
+static int create_QTSequenceBestCodec( vout_thread_t *p_vout )
+{
+ if ( p_vout->p_sys->osx_communication.p_qdport == nil)
+ {
+ p_vout->p_sys->c_codec = 'NONE' ;
+ return 1 ;
+ }
- GetPortBounds( p_vout->p_sys->p_gw[index], &rectSource );
- GetPortBounds( windowPort, &rectDest );
-
- GetPort ( &pCGrafSave );
- SetPortWindowPort( p_vout->p_sys->p_window );
-//FIXME have global lock - kinda bad but oh well
-// if ( LockPixels( GetGWorldPixMap( p_vout->p_sys->p_gw[index] ) ) )
-// {
-
-//LockPortBits(GetWindowPort( p_vout->p_sys->p_window ));
-//NoPurgePixels( GetGWorldPixMap( p_vout->p_sys->p_gw[index] ) );
-
- CopyBits( GetPortBitMapForCopyBits( p_vout->p_sys->p_gw[index] ),
- GetPortBitMapForCopyBits( GetWindowPort( p_vout->p_sys->p_window ) ),
- &rectSource, &rectDest, srcCopy, NULL);
-
-//UnlockPortBits(GetWindowPort( p_vout->p_sys->p_window ));
-//AllowPurgePixels( GetGWorldPixMap( p_vout->p_sys->p_gw[index] ) );
-
-// UnlockPixels( GetGWorldPixMap( p_vout->p_sys->p_gw[index] ) );
- //flushQD( p_vout );
-// }
- SetPort ( pCGrafSave );
+ SetPort( p_vout->p_sys->osx_communication.p_qdport ) ;
+ fillout_ScalingMatrix( p_vout ) ;
+ fillout_ImageDescription(
+ p_vout->p_sys->h_img_descr,
+ p_vout->i_width,
+ p_vout->i_height,
+ 'y420'
+ ) ;
+ if ( !new_QTSequence(
+ &p_vout->p_sys->i_seq,
+ p_vout->p_sys->osx_communication.p_qdport,
+ p_vout->p_sys->h_img_descr,
+ p_vout->p_sys->p_matrix
+ ) )
+ {
+ p_vout->p_sys->c_codec = 'y420' ;
+ return 0 ;
+ }
+
+ p_vout->p_sys->c_codec = 'NONE' ;
+ return 1 ;
}
-
-/*****************************************************************************
- * GetWindowDevice: returns GDHandle that window resides on (most of it anyway)
- *****************************************************************************/
-GDHandle GetWindowDevice( vout_thread_t *p_vout )
+static void dispose_QTSequence( vout_thread_t *p_vout )
{
- GrafPtr pgpSave;
- Rect rectWind, rectSect;
- long greatestArea, sectArea;
- GDHandle hgdNthDevice, hgdZoomOnThisDevice = NULL;
-
- //intf_ErrMsg( "GetWindowDevice()" );
-
- GetPort( &pgpSave );
- SetPortWindowPort( p_vout->p_sys->p_window );
- GetPortBounds( GetWindowPort( p_vout->p_sys->p_window ), &rectWind );
- LocalToGlobal( ( Point* ) &rectWind.top );
- LocalToGlobal( ( Point* ) &rectWind.bottom );
- hgdNthDevice = GetDeviceList();
- greatestArea = 0;
- // check window against all gdRects in gDevice list and remember
- // which gdRect contains largest area of window}
- while ( hgdNthDevice )
+ CDSequenceEnd( p_vout->p_sys->i_seq ) ;
+ switch (p_vout->p_sys->c_codec)
{
- if ( TestDeviceAttribute( hgdNthDevice, screenDevice ) )
- {
- if ( TestDeviceAttribute( hgdNthDevice, screenActive ) )
- {
- // The SectRect routine calculates the intersection
- // of the window rectangle and this gDevice
- // rectangle and returns TRUE if the rectangles intersect,
- // FALSE if they don't.
- SectRect( &rectWind, &( **hgdNthDevice ).gdRect, &rectSect );
- // determine which screen holds greatest window area
- // first, calculate area of rectangle on current device
- sectArea = ( long )( rectSect.right - rectSect.left ) * ( rectSect.bottom - rectSect.top );
- if ( sectArea > greatestArea )
- {
- greatestArea = sectArea; // set greatest area so far
- hgdZoomOnThisDevice = hgdNthDevice; // set zoom device
- }
- hgdNthDevice = GetNextDevice( hgdNthDevice );
- }
- }
- } // of WHILE
- SetPort( pgpSave );
- return hgdZoomOnThisDevice;
+ case 'yuv2':
+ free( (void *)p_vout->p_sys->p_yuv2 ) ;
+ p_vout->p_sys->i_yuv2_size = 0 ;
+ break ;
+ case 'y420':
+ break ;
+ }
+ p_vout->p_sys->c_codec = 'NONE' ;
}
-/*****************************************************************************
- * FillOffScreen: fills offscreen buffer with random bright color
- *****************************************************************************/
-
-void FillOffscreen( vout_thread_t *p_vout, short index )
+static void convert_Y420_to_YUV2( picture_t *p_y420, yuv2_data_t *p_yuv2 )
{
- static RGBColor rgbColorOld;
- GDHandle hGDSave;
- CGrafPtr pCGrafSave;
- Rect rectSource;
- RGBColor rgbColor;
-
- //intf_ErrMsg( "FillOffscreen" );
-
- GetPortBounds( p_vout->p_sys->p_gw[index], &rectSource );
-
- do
- rgbColor.red = ( Random () + 32767) / 2 + 32767;
- while ( abs ( rgbColor.red - rgbColorOld.red ) < 3000 );
- do
- rgbColor.green = (Random () + 32767) / 2 + 32767;
- while ( abs ( rgbColor.green - rgbColorOld.green ) < 3000);
- do
- rgbColor.blue = (Random () + 32767) / 2 + 32767;
- while ( abs ( rgbColor.blue - rgbColorOld.blue ) < 3000);
+ unsigned int width = p_y420->i_width, height = p_y420->i_height ;
+ unsigned int x, y ;
- rgbColorOld = rgbColor;
-
- GetGWorld( &pCGrafSave, &hGDSave );
- SetGWorld( p_vout->p_sys->p_gw[index], NULL );
-//FIXME have global lock - kinda bad but oh well
-// if ( LockPixels( GetGWorldPixMap( p_vout->p_sys->p_gw[index] ) ) )
-// {
- // draw some background
- EraseRect( &rectSource );
- RGBForeColor( &rgbColor );
- PaintRect( &rectSource );
-// UnlockPixels( GetGWorldPixMap( p_vout->p_sys->p_gw[index] ) );
-// }
- SetGWorld( pCGrafSave, hGDSave );
+ for( x=0; x < height; x++ )
+ {
+ for( y=0; y < (width/2); y++ )
+ {
+ p_yuv2[(width/2)*x + y] =
+ (p_y420->p_y[width*x + 2*y]) << 24 |
+ ((p_y420->p_u[(width/2)*(x/2) + y] ^ 0x80) << 16) |
+ (p_y420->p_y[width*x + 2*y + 1] << 8) |
+ (p_y420->p_v[(width/2)*(x/2) + y] ^ 0x80) ;
+ }
+ }
}
+++ /dev/null
-/*****************************************************************************
- * vout_macosx.c: MacOS X video output plugin
- *****************************************************************************
- * Copyright (C) 2001 VideoLAN
- *
- * Authors: Colin Delacroix <colin@zoy.org>
- *
- * 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., 59 Temple Place - Suite 330, Boston, MA 02111, USA.
- *****************************************************************************/
-
-#include "modules_inner.h"
-
-/*****************************************************************************
- * Preamble
- *****************************************************************************/
-#include "defs.h"
-
-#include <errno.h> /* ENOMEM */
-#include <stdlib.h> /* free() */
-#include <string.h> /* strerror() */
-
-#include "config.h"
-#include "common.h"
-#include "threads.h"
-#include "mtime.h"
-#include "tests.h"
-
-#include "interface.h"
-#include "intf_msg.h"
-
-#include "video.h"
-#include "video_output.h"
-
-#include "modules.h"
-#include "main.h"
-
-#include "macosx_qt_common.h"
-
-/*****************************************************************************
- * Local prototypes
- *****************************************************************************/
-static int vout_Probe ( probedata_t *p_data );
-static int vout_Create ( struct vout_thread_s * );
-static int vout_Init ( struct vout_thread_s * );
-static void vout_End ( struct vout_thread_s * );
-static void vout_Destroy ( struct vout_thread_s * );
-static int vout_Manage ( struct vout_thread_s * );
-void vout_OSX_Display ( struct vout_thread_s * );
-
-/* OS specific */
-static int vout_OSX_create_sequence( vout_thread_t *p_vout ) ;
-
-/*****************************************************************************
- * Functions exported as capabilities. They are declared as static so that
- * we don't pollute the namespace too much.
- *****************************************************************************/
-void _M( vout_getfunctions )( function_list_t * p_function_list )
-{
- p_function_list->pf_probe = vout_Probe;
- p_function_list->functions.vout.pf_create = vout_Create;
- p_function_list->functions.vout.pf_init = vout_Init;
- p_function_list->functions.vout.pf_end = vout_End;
- p_function_list->functions.vout.pf_destroy = vout_Destroy;
- p_function_list->functions.vout.pf_manage = vout_Manage;
- p_function_list->functions.vout.pf_display = vout_OSX_Display;
- p_function_list->functions.vout.pf_setpalette = NULL;
-}
-
-/*****************************************************************************
- * intf_Probe: return a score
- *****************************************************************************/
-static int vout_Probe( probedata_t *p_data )
-{
- if( TestMethod( VOUT_METHOD_VAR, "macosx_qt" ) )
- {
- return( 999 );
- }
-
- return( 90 );
-}
-
-/*****************************************************************************
- * vout_Create: allocates MacOS X video thread output method
- *****************************************************************************
- * This function allocates and initializes a MacOS X vout method.
- *****************************************************************************/
-static int vout_Create( vout_thread_t *p_vout )
-{
- p_vout->p_sys = malloc( sizeof( vout_sys_t ) );
- if( p_vout->p_sys == NULL )
- {
- intf_ErrMsg( "error: %s", strerror( ENOMEM ) );
- return( 1 );
- }
-
- EnterMovies() ;
-
- return( 0 );
-}
-
-/*****************************************************************************
- * MakeWindow: open and set-up a Mac OS main window
- *****************************************************************************/
-static int vout_OSX_create_sequence( vout_thread_t *p_vout )
-{
- ImageDescriptionPtr descr_ptr ;
- OSErr qterror ;
-
- p_vout->p_sys->h_img_descr = (ImageDescriptionHandle)NewHandleClear(sizeof(ImageDescription)) ;
- p_vout->p_sys->i_img_size = p_vout->i_width * p_vout->i_height * 1.5 ; //before: 2
- if (! (p_vout->p_sys->p_img = malloc(p_vout->p_sys->i_img_size))) {
- intf_ErrMsg("couldn't allocate image:") ;
- return 1 ;
- }
-
- HLock((Handle)p_vout->p_sys->h_img_descr) ;
- descr_ptr = *p_vout->p_sys->h_img_descr ;
- descr_ptr->idSize = sizeof(ImageDescription) ;
- descr_ptr->cType = 'y420' ; //before: yuv2
- descr_ptr->resvd1 = 0 ; //Reserved
- descr_ptr->resvd2 = 0 ; //Reserved
- descr_ptr->dataRefIndex = 0 ; //Reserved
- descr_ptr->version = 1 ; //
- descr_ptr->revisionLevel = 0 ;
- descr_ptr->vendor = 'appl' ; //How do we get a vendor id??
- descr_ptr->width = p_vout->i_width ;
- descr_ptr->height = p_vout->i_height ;
- descr_ptr->hRes = Long2Fix(72) ;
- descr_ptr->vRes = Long2Fix(72) ;
- descr_ptr->spatialQuality = codecLosslessQuality ;
- descr_ptr->dataSize = p_vout->p_sys->i_img_size ;
- descr_ptr->frameCount = 1 ;
- //memcpy(descr_ptr->name, "\pComponent Video\0") ;
- descr_ptr->depth = 12 ; //before: 24
- descr_ptr->clutID = -1 ; //We don't need a color table
- HUnlock((Handle)p_vout->p_sys->h_img_descr) ;
-
- SetPortWindowPort(p_main->p_intf->p_sys->p_window) ;
- qterror = DecompressSequenceBeginS(&p_vout->p_sys->i_seq,
- p_vout->p_sys->h_img_descr,
- (void *)p_vout->p_sys->p_img,
- p_vout->p_sys->i_img_size,
- GetWindowPort(p_main->p_intf->p_sys->p_window),
- NULL, //device to display (is set implicit via the qdPort)
- NULL, //src-rect
- NULL, //matrix
- 0, //just do plain copying
- NULL, //no mask region
- codecFlagUseScreenBuffer,
- codecLosslessQuality,
- (DecompressorComponent) bestSpeedCodec) ;
- intf_WarnMsg(1, "DecompressSequenceBeginS: %d\n", qterror) ;
-
- if (qterror)
- {
- return(1) ;
- }
-
- p_vout->b_need_render = 0 ;
- p_vout->i_bytes_per_line = p_vout->i_width ;
-
- return( 0 );
-}
-
-/*****************************************************************************
- * vout_Init: initialize video thread output method
- *****************************************************************************/
-static int vout_Init( vout_thread_t *p_vout )
-{
- if ( vout_OSX_create_sequence( p_vout ) )
- {
- intf_ErrMsg( "vout error: can't create quicktime view" );
- free( p_vout->p_sys );
- return( 1 );
- }
-
- return( 0 );
-}
-
-/*****************************************************************************
- * vout_End: terminate video thread output method
- *****************************************************************************/
-static void vout_End( vout_thread_t *p_vout )
-{
- CDSequenceEnd(p_vout->p_sys->i_seq) ;
-}
-
-/*****************************************************************************
- * vout_Destroy: destroy video thread output method
- *****************************************************************************/
-static void vout_Destroy( vout_thread_t *p_vout )
-{
- free( p_vout->p_sys );
-}
-
-/*****************************************************************************
- * vout_Manage: handle events
- *****************************************************************************
- * This function should be called regularly by video output thread. It manages
- * console events. It returns a non null value on error.
- *****************************************************************************/
-static int vout_Manage( vout_thread_t *p_vout )
-{
- return( 0 );
-}
-
-
-/*****************************************************************************
- * vout_OSX_Display: displays previously rendered output
- *****************************************************************************
- * This function send the currently rendered image to image, waits until
- * it is displayed and switch the two rendering buffers, preparing next frame.
- *****************************************************************************/
-void vout_OSX_Display( vout_thread_t *p_vout )
-{
- OSErr qterror ;
-// unsigned int x,y, height=p_vout->i_height, width=p_vout->i_width ;
- CodecFlags out_flags ;
- PlanarPixmapInfoYUV420 y420_info ;
-
- if (!p_main->p_intf->p_sys->b_active)
- return ;
-
-/* for(x=0; x < height; x++)
- {
- for(y=0; y < (width/2); y++)
- {
- p_vout->p_sys->p_img[(width/2)*x + y] =
- (p_vout->p_rendered_pic->p_y[width*x + 2*y]) << 24 |
- ((p_vout->p_rendered_pic->p_u[(width/2)*(x/2) + y] ^ 0x80) << 16) |
- (p_vout->p_rendered_pic->p_y[width*x + 2*y + 1] << 8) |
- (p_vout->p_rendered_pic->p_v[(width/2)*(x/2) + y] ^ 0x80) ;
- }
- }
-*/
-
- y420_info.componentInfoY.offset = p_vout->p_rendered_pic->p_y - p_vout->p_sys->p_img ;
- y420_info.componentInfoY.rowBytes = p_vout->i_width ;
- y420_info.componentInfoCb.offset = p_vout->p_rendered_pic->p_u - p_vout->p_sys->p_img ;
- y420_info.componentInfoCb.rowBytes = p_vout->i_width / 2;
- y420_info.componentInfoCr.offset = p_vout->p_rendered_pic->p_v - p_vout->p_sys->p_img ;
- y420_info.componentInfoCr.rowBytes = p_vout->i_width / 2;
-
- memcpy(p_vout->p_sys->p_img, &y420_info, sizeof(PlanarPixmapInfoYUV420)) ;
-
- qterror = DecompressSequenceFrameWhen(
- p_vout->p_sys->i_seq,
- (void *)p_vout->p_sys->p_img,
- p_vout->p_sys->i_img_size,
- codecFlagUseScreenBuffer,
- &out_flags,
- nil,
- nil) ;
-
-// intf_WarnMsg(1, "DecompressSequenceFrameWhen: %d", qterror) ;
- }
* decoders.
*****************************************************************************
* Copyright (C) 1998, 1999, 2000 VideoLAN
- * $Id: input.c,v 1.145 2001/10/23 03:06:50 jobi Exp $
+ * $Id: input.c,v 1.146 2001/10/30 10:48:14 massiot Exp $
*
* Authors: Christophe Massiot <massiot@via.ecp.fr>
*
psz_name += 4;
i_stat = stat( psz_name, &stat_info );
}
- else if( ( i_size > 4 )
- && !strncasecmp( psz_name, "vcd:", 4 ) )
+ else if( ( i_size > 4 )
+ && !strncasecmp( psz_name, "vcd:", 4 ) )
{
/* get rid of the 'vcd:' stuff and try again */
psz_name += 4;