###############################################################################
EXTRA_DIST += \
- extras/package/macosx/Resources/English.lproj/MainMenu.nib/classes.nib \
- extras/package/macosx/Resources/English.lproj/MainMenu.nib/info.nib \
+ extras/package/macosx/Resources/English.lproj/MainMenu.nib/designable.nib \
extras/package/macosx/Resources/English.lproj/MainMenu.nib/keyedobjects.nib \
extras/package/macosx/Resources/English.lproj/MediaInfo.nib/classes.nib \
extras/package/macosx/Resources/English.lproj/MediaInfo.nib/info.nib \
extras/package/macosx/Resources/English.lproj/ErrorPanel.nib/info.nib \
extras/package/macosx/Resources/English.lproj/ErrorPanel.nib/keyedobjects.nib \
extras/package/macosx/Resources/English.lproj/InfoPlist.strings.in \
- extras/package/macosx/Resources/a52.icns \
- extras/package/macosx/Resources/aac.icns \
- extras/package/macosx/Resources/asf.icns \
- extras/package/macosx/Resources/asx.icns \
+ extras/package/macosx/Resources/aiff.icns \
+ extras/package/macosx/Resources/audio.icns \
extras/package/macosx/Resources/avi.icns \
- extras/package/macosx/Resources/bin.icns \
- extras/package/macosx/Resources/cue.icns \
- extras/package/macosx/Resources/dat.icns \
- extras/package/macosx/Resources/divx.icns \
- extras/package/macosx/Resources/dv.icns \
+ extras/package/macosx/Resources/flv.icns \
extras/package/macosx/Resources/generic.icns \
- extras/package/macosx/Resources/m3u.icns \
+ extras/package/macosx/Resources/m4a.icns \
+ extras/package/macosx/Resources/m4v.icns \
+ extras/package/macosx/Resources/mkv.icns \
extras/package/macosx/Resources/mov.icns \
+ extras/package/macosx/Resources/movie.icns \
extras/package/macosx/Resources/mp3.icns \
- extras/package/macosx/Resources/mp4.icns \
extras/package/macosx/Resources/mpeg.icns \
- extras/package/macosx/Resources/mpeg1.icns \
- extras/package/macosx/Resources/mpeg2.icns \
- extras/package/macosx/Resources/mpeg4.icns \
- extras/package/macosx/Resources/mpg.icns \
extras/package/macosx/Resources/ogg.icns \
- extras/package/macosx/Resources/ogm.icns \
- extras/package/macosx/Resources/pls.icns \
- extras/package/macosx/Resources/srt.icns \
- extras/package/macosx/Resources/sub.icns \
- extras/package/macosx/Resources/vlc.icns \
+ extras/package/macosx/Resources/playlist.icns \
+ extras/package/macosx/Resources/rm.icns \
+ extras/package/macosx/Resources/subtitle.icns \
extras/package/macosx/Resources/vob.icns \
+ extras/package/macosx/Resources/wav.icns \
+ extras/package/macosx/Resources/vlc.icns \
extras/package/macosx/Resources/wma.icns \
extras/package/macosx/Resources/wmv.icns \
extras/package/macosx/Resources/pause.png \
extras/package/macosx/Resources/skip_previous_graphite.png \
extras/package/macosx/Resources/stop_graphite.png \
extras/package/macosx/Resources/volumeslider_graphite.png \
+ extras/package/macosx/Resources/backward_big_down.png \
+ extras/package/macosx/Resources/backward_big.png \
+ extras/package/macosx/Resources/eq_sm.pdf \
+ extras/package/macosx/Resources/forward_big_down.png \
+ extras/package/macosx/Resources/forward_big.png \
+ extras/package/macosx/Resources/fs_sm.pdf \
+ extras/package/macosx/Resources/list_sm.pdf \
+ extras/package/macosx/Resources/next_sm.pdf \
+ extras/package/macosx/Resources/pause_big_down.png \
+ extras/package/macosx/Resources/pause_big.png \
+ extras/package/macosx/Resources/play_big_down.png \
+ extras/package/macosx/Resources/play_big.png \
+ extras/package/macosx/Resources/prev_sm.pdf \
+ extras/package/macosx/Resources/sidebarAdd.png \
+ extras/package/macosx/Resources/sidebarRepeat.png \
+ extras/package/macosx/Resources/sidebarRepeatOn.png \
+ extras/package/macosx/Resources/sidebarRepeatOneOn.png \
+ extras/package/macosx/Resources/sidebarResizeWidget.png \
+ extras/package/macosx/Resources/sidebarShuffle.png \
+ extras/package/macosx/Resources/sidebarShuffleOn.png \
+ extras/package/macosx/Resources/sidebarStatusAreaBackground.png \
+ extras/package/macosx/Resources/stop_sm.pdf \
extras/package/macosx/Resources/noart.png \
extras/package/macosx/Resources/spref_cone_Audio_64.png \
extras/package/macosx/Resources/spref_cone_Hotkeys_64.png \
# Shortcut for developpers to rebuild the core (libvlc + vlc)
# Don't use it if you don't know what it is about.
# Don't complain if it doesn't work. -- Courmisch
-libvlc:
+libcompat:
+ cd compat && $(MAKE) $(AM_MAKEFLAGS)
+
+libvlc: libcompat
cd src && $(MAKE) $(AM_MAKEFLAGS) libvlc.la
core: libvlc
+Changes between 1.0.0-rc1 and 1.1.0-git:
+----------------------------------------
+
+Mac OS X Interface:
+ * Completely reworked user interface (based upon works from GSoC 2008)
+
+
Changes between 0.9.9a and 1.0.0-rc1:
------------------------------------
----------------
* Alsa and OSS audio capture has been removed from the v4l and v4l2 accesses.
See 'Access:' for more info.
+ * Support for Mac OS X 10.4.x was dropped due to its technical limitations
Playback:
* Instantaneous pausing
EXPERIMENTAL work for the winCE port has been done.
Mac OS X Port:
- * Support for Mac OS X 10.4.x was dropped due to its technical limitations
* Speed improvements by using llvm-gcc
+ * New Document icons by Dominic Spitaler
Audio output:
* Removed obsolete Esound and aRts plugins
Dermot McGahon <dermot at dspsrv dot com> - Bug fixes, RC interface loop and repeat
Diego Petteno <flameeyes at gentoo dot org> - remove usage of internal ffmpeg symbols, configure fixes
DirektX <direktx at freemail.hu> - Hungarian translation
+Dominic Spitaler <Dominic dot Spitaler at gmx dot at> - Mac OS X Document Icons (v1.0)
Dominique Leuenberger <dominique-vlc dot suse at leuenberger dot net> - SuSE packaging
Dugal Harris - DirectShow fixes and MJPEG patches
Dylan Aïssi <aissi dot dylan at free dot fr> - French translation
Dylan Yudaken <dyudaken -- gmail # com> - hotkeys patch
Emmanuel Blindauer <manu at agat.net> - aRts audio output
+Eric Dudiak <dudiak at gmail dot com> - Mac OS X Interface rework (GSoC 2008)
Enrico Gueli <e_gueli at yahoo.it> - Brightness threshold in adjust video filter
Enrique Osuna <enrique.osuna at gmail.com> - Various bug fixes in libvlc. Major Mac OS X Framework improvements.
Eren Türkay <turkay dot eren \a/ gmail point com> - Speex boundary checks and security fix
AC_COPYRIGHT([Copyright 2002-2009 the VideoLAN team])
-AC_INIT(vlc, 1.0.0-rc1)
+AC_INIT(vlc, 1.1.0-git)
VERSION_MAJOR="1"
-VERSION_MINOR="0"
+VERSION_MINOR="1"
VERSION_REVISION="0"
-VERSION_EXTRA="-rc1"
+VERSION_EXTRA="-git"
PKGDIR="vlc"
AC_SUBST(PKGDIR)
echo " Assuming --disable-skins2"
enable_x11="no"
echo " Assuming --disable-x11"
+ enable_xcb="no"
+ echo " Assuming --disable-xcb"
enable_glx="no"
echo " Assuming --disable-glx"
enable_xvideo="no"
[ --enable-dc1394 dc1394 access module (default disabled)])
if test "${enable_dc1394}" = "yes"
then
- AC_CHECK_HEADERS(libraw1394/raw1394.h, [
- AC_CHECK_LIB( raw1394, raw1394_get_nodecount, [
- AC_CHECK_HEADERS(libdc1394/dc1394_control.h , [
-dnl AC_CHECK_LIB( dc1394_control, dc1394_setup_capture, [
- VLC_ADD_PLUGIN([dc1394])
- VLC_ADD_LIBS([dc1394],[-ldc1394_control -lraw1394])
-dnl ],
-dnl [
-dnl AC_MSG_ERROR([libdc1394 is mandatory for the dc1394 input module. try --disable-dc1394 or install this library])
-dnl ])
- ],
- [
- AC_MSG_ERROR([libdc1394 is mandatory for the dc1394 input module. try --disable-dc1394 or install this library])
- ])
+ dnl
+ dnl Check for libraw1394
+ dnl
+ PKG_CHECK_MODULES(LIBRAW1394, libraw1394 >= 2.0.1,
+ [
+ VLC_ADD_LIBS([dc1394],[`${PKG_CONFIG} --libs libraw1394`])
+ VLC_ADD_CPPFLAGS([dc1394],[`${PKG_CONFIG} --cflags libraw1394`])
],
+ [AC_MSG_ERROR([Couldn't find libraw1394 >= 2.0.1, install libraw1394 development package])]
+ )
+
+ dnl
+ dnl Check for libdc1394
+ dnl
+ PKG_CHECK_MODULES(LIBDC1394, libdc1394-2 >= 2.0.2,
[
- AC_MSG_ERROR([libraw1394 is mandatory for the dc1394 input module. try --disable-dc1394 or install this library])
- ])
- ],
- [
- AC_MSG_ERROR([libraw1394 is mandatory for the dc1394 input module. try --disable-dc1394 or install this library])
- ])
+ VLC_ADD_PLUGIN([dc1394])
+ VLC_ADD_LIBS([dc1394],[`${PKG_CONFIG} --libs libdc1394-2`])
+ VLC_ADD_CPPFLAGS([access_dv],[`${PKG_CONFIG} --cflags libdc1394-2`])
+ ],
+ [AC_MSG_ERROR([Couldn't find libdc1394 >= 2.0.2, install libdc1394 development package])]
+ )
fi
dnl
[ --enable-dv dv input module (default disabled)])
if test "${enable_dv}" = "yes"
then
- AC_ARG_WITH(dv-raw1394,
- [ --with-dv-raw1394=PATH libraw1394 headers and libraries])
- AC_ARG_WITH(dv-raw1394-tree,
- [ --with-dv-raw1394=PATH libraw1394 tree for static linking])
-
- if test -z "${with_dv_raw1394}" -a "${with_dv_raw1394}" != ""
- then
- AC_MSG_CHECKING(for raw1394 headers in ${with_dv_raw1394})
- if test -f ${with_dv_raw1394}/include/libraw1394/raw1394.h
- then
- dnl Use ${with_dv_raw1394}/include/libraw1394/raw1394.h
- AC_MSG_RESULT(yes)
- VLC_ADD_PLUGIN([access_dv])
- VLC_ADD_LIBS([access_dv],[-L${with_dv_raw1394}/lib -lraw1394 -lpthread])
- VLC_ADD_CPPFLAGS([access_dv],[-I${with_dv_raw1394}/include])
- else
- dnl No libraw1394 could be found, sorry
- AC_MSG_RESULT(no)
- AC_MSG_ERROR([cannot find ${with_dv_raw1394}/include/libraw1394/raw1394.h])
- fi
- else
- AC_CHECK_HEADERS(libraw1394/raw1394.h,
- [ VLC_ADD_PLUGIN([access_dv])
- VLC_ADD_LIBS([access_dv],[-lraw1394 -lavc1394])
- ],[
- if test -n "${enable_dv}"
- then
- AC_MSG_ERROR([cannot find libraw1394 headers])
- fi
- ])
- fi
-
- dnl Check for static linking of libraw1394
- if test -z "${with_dv_raw1394_tree}" -a "${with_dv_raw1394_tree}" != ""
- then
- AC_MSG_CHECKING(for libraw1394.a in ${with_dv_raw1394_tree})
- real_dv_raw1394_tree="`cd ${with_dv_raw1394_tree} 2>/dev/null && pwd`"
- if test -z "${real_dv_raw1394_tree}"
- then
- dnl The given directory can't be found
- AC_MSG_RESULT(no)
- AC_MSG_ERROR([cannot cd to ${real_dv_raw1394_tree}])
- fi
- if test -f "${real_dv_raw1394_tree}/src/.libs/libraw1394.a"
- then
- dnl Use a custom libraw1394
- AC_MSG_RESULT(${real_dv_raw1394_tree}/src/.libs/libraw1394.a)
- VLC_ADD_PLUGIN([access_dv])
- VLC_ADD_LIBS([access_dv],[-L${real_dv_raw1394_tree}/src/.libs -lraw1394])
- VLC_ADD_CPPFLAGS([access_dv],[-I${real_dv_raw1394_tree}])
- else
- dnl The given libraw1394 wasn't built
- AC_MSG_RESULT(no)
- AC_MSG_ERROR([cannot find ${real_dv_raw1394_tree}/src/.libs/libraw1394.a, make sure you compiled libraw1394 in ${with_dv_raw1394_tree}])
- fi
- fi
+ dnl
+ dnl Check for libraw1394
+ dnl
+ PKG_CHECK_MODULES(LIBRAW1394, libraw1394 >= 2.0.1,
+ [
+ VLC_ADD_LIBS([access_dv],[`${PKG_CONFIG} --libs libraw1394`])
+ VLC_ADD_CPPFLAGS([access_dv],[`${PKG_CONFIG} --cflags libraw1394`])
+ ],
+ [AC_MSG_ERROR([Couldn't find libraw1394 >= 2.0.1, install libraw1394 development package])]
+ )
dnl
dnl Check for libavc1394
dnl
-
- AC_ARG_WITH(dv-avc1394,
- [ --with-dv-avc1394=PATH libavc1394 headers and libraries])
- AC_ARG_WITH(dv-avc1394-tree,
- [ --with-dv-avc1394=PATH libavc1394 tree for static linking])
-
- if test -z "${with_dv_avc1394}" -a "${with_dv_avc1394}" != ""
- then
- AC_MSG_CHECKING(for avc1394 headers in ${with_dv_avc1394})
- if test -f ${with_dv_avc1394}/include/libavc1394/avc1394.h
- then
- dnl Use ${with_dv_avc1394}/include/libavc1394/avc1394.h
- AC_MSG_RESULT(yes)
- VLC_ADD_LIBS([access_dv],[-L${with_dv_avc1394}/lib -lavc1394 -lrom1394 -lpthread])
- VLC_ADD_CPPFLAGS([access_dv],[-I${with_avc1394}/include])
- else
- dnl No libavc1394 could be found, sorry
- AC_MSG_RESULT(no)
- AC_MSG_ERROR([cannot find ${with_dv_avc1394}/include/libavc1394/avc1394.h])
- fi
- else
- AC_CHECK_HEADERS(libavc1394/avc1394.h,
- [ VLC_ADD_LIBS([access_dv],[-lavc1394 -lrom1394 -lpthread])
- ],[
- if test -n "${enable_dv}"
- then
- AC_MSG_ERROR([cannot find libavc1394 headers])
- fi
- ])
- fi
-
- dnl Check for static linking of libavc1394
- if test -z "${with_dv_avc1394_tree}" -a "${with_dv_avc1394_tree}" != ""
- then
- AC_MSG_CHECKING(for libavc1394.a in ${with_dv_avc1394_tree})
- real_dv_avc1394_tree="`cd ${with_dv_avc1394_tree} 2>/dev/null && pwd`"
- if test -z "${real_dv_avc1394_tree}"
- then
- dnl The given directory can't be found
- AC_MSG_RESULT(no)
- AC_MSG_ERROR([cannot cd to ${real_dv_avc1394_tree}])
- fi
- if test -f "${real_dv_avc1394_tree}/src/.libs/libavc1394.a"
- then
- dnl Use a custom libavc1394
- AC_MSG_RESULT(${real_dv_avc1394_tree}/src/.libs/libavc1394.a)
- VLC_ADD_LIBS([access_dv],[-L${real_dv_avc1394_tree}/src/.libs -lavc1394 -lrom1394 -lpthread])
- VLC_ADD_CPPFLAGS([access_dv],[-I${real_dv_avc1394_tree}])
- else
- dnl The given libavc1394 wasn't built
- AC_MSG_RESULT(no)
- AC_MSG_ERROR([cannot find ${real_dv_avc1394_tree}/src/.libs/libavc1394.a, make sure you compiled libavc1394 in ${with_dv_avc1394_tree}])
- fi
- fi
+ PKG_CHECK_MODULES(LIBAVC1394, libavc1394 >= 0.5.3,
+ [
+ VLC_ADD_PLUGIN([access_dv])
+ VLC_ADD_LIBS([access_dv],[`${PKG_CONFIG} --libs libavc1394`])
+ VLC_ADD_CPPFLAGS([access_dv],[`${PKG_CONFIG} --cflags libavc1394`])
+ ],
+ [AC_MSG_ERROR([Couldn't find libavc1394 >= 0.5.1, install libavc1394 development package])]
+ )
fi
dnl
AC_PATH_XTRA()
AC_ARG_ENABLE(x11,
- [ --enable-x11 X11 support (default enabled)],, [
+ [ --enable-x11 X11 support with Xlib (default enabled)],, [
AS_IF([test "${SYS}" != "mingw32" -a "${SYS}" != "mingwce"], [
enable_x11="yes"
], [
dnl (disabled by default except on win32)
dnl
AC_ARG_ENABLE(xvmc,
- [ --enable-xvmc XVMC support (default disabled)],, [
+ [ --enable-xvmc XvMC support (default disabled)],, [
enable_xvmc="no"
])
AS_IF([test "${enable_xvmc}" != "no"], [
dnl
dnl X C Bindings modules
-dnl (work in progress)
dnl
AC_ARG_ENABLE(xcb,
- [ --enable-xcb X C Bindings work-in-progress (default disabled)],
- ,[enable_xcb="no"])
+ [ --enable-xcb X11 support with XCB (default enabled)],, [
+ AS_IF([test "${SYS}" != "mingw32" -a "${SYS}" != "mingwce"], [
+ enable_xcb="yes"
+ ], [
+ enable_xcb="no"
+ ])
+])
+
AS_IF([test "${enable_xcb}" != "no"], [
PKG_CHECK_MODULES(XPROTO, [xproto])
dnl libxcb
PKG_CHECK_MODULES(XCB, [xcb])
PKG_CHECK_MODULES(XCB_SHM, [xcb-shm])
+ VLC_ADD_PLUGIN([xcb])
AS_IF([test "${enable_xvideo}" != "no"], [
PKG_CHECK_MODULES(XCB_XV, [xcb-xv >= 1.1.90.1], [
VLC_ADD_PLUGIN([xcb_xv])
+ ], [
+ PKG_CHECK_MODULES(XCB_XV, [xcb-xv], [
+ VLC_ADD_PLUGIN([xcb_xv])
+ VLC_ADD_CFLAGS([xcb_xv], [-DXCB_XV_OLD])
+ ])
])
])
dnl xcb-utils
PKG_CHECK_MODULES(XCB_KEYSYMS, [xcb-keysyms])
- VLC_ADD_PLUGIN([xcb])
VLC_ADD_PLUGIN([xcb_window])
+ VLC_ADD_PLUGIN([globalhotkeys])
+ VLC_ADD_CFLAGS([globalhotkeys],[${XCB_KEYSYMS_CFLAGS} ${XCB_CFLAGS}] )
+ VLC_ADD_LIBS([globalhotkeys],[${XCB_KEYSYMS_LIBS} ${XCB_LIBS}] )
])
+
dnl
dnl OpenGL module
dnl (enabled by default except on beos)
VLC_ADD_LIBS([maemo],[${HILDON_LIBS}])
VLC_ADD_PLUGIN([maemo])
VLC_ADD_PLUGIN([swscale_maemo])
- AC_DEFINE([BUILD_MAEMO], 1, [Define if you're using Maemo interfaces])
+ AC_DEFINE([BUILD_MAEMO], 1, [Define if you are using Maemo interfaces])
ALIASES="${ALIASES} mvlc"
], [
AS_IF([test "${enable_maemo}" = "yes"],[
AS_IF([test "${SYS}" = "darwin"], [enable_qt4=no])
])
AS_IF([test "${enable_qt4}" != "no"], [
- PKG_CHECK_MODULES(QT4, [QtCore QtGui >= 4.3.0], [
+ PKG_CHECK_MODULES(QT4, [QtCore QtGui >= 4.4.0], [
VLC_ADD_PLUGIN([qt4])
AC_DEFINE([HAVE_QT4], 1, [Define to 1 if you have QT4 library.])
ALIASES="${ALIASES} qvlc"
fi
fi
-dnl
-dnl Global hotkeys using XCB
-dnl
-PKG_CHECK_MODULES(XCB, [xcb], [
- PKG_CHECK_MODULES(XCB_KEYSYMS, [xcb-keysyms], [
- PKG_CHECK_MODULES(XPROTO, [xproto], [
- VLC_ADD_PLUGIN([globalhotkeys])
- VLC_ADD_CFLAGS([globalhotkeys],[${XCB_KEYSYMS_CFLAGS} ${XCB_CFLAGS}] )
- VLC_ADD_LIBS([globalhotkeys],[${XCB_KEYSYMS_LIBS} ${XCB_LIBS}] )
- ], [ AC_MSG_WARN( [Xproto not found] ) ])
- ], [ AC_MSG_WARN( [XCB keysyms was not found]) ])
-], [ AC_MSG_WARN( [XCB was not found]) ])
AC_ARG_WITH(,[Misc options:])
- "-DPACKAGE_VERSION_MAJOR="`echo '$(VERSION)' | sed -n -e "$$sed_extract_major"` \
- "-DPACKAGE_VERSION_MINOR="`echo '$(VERSION)' | sed -n -e "$$sed_extract_minor"` \
- "-DPACKAGE_VERSION_SUBMINOR="`echo '$(VERSION)' | sed -n -e "$$sed_extract_subminor"` \
-+ $(WINDRES) `$(top_srcdir)/../windows/windres-options --escape $(VERSION)`\
++ $(WINDRES) --use-temp-file `$(top_srcdir)/../windows/windres-options --escape $(VERSION)`\
-i $(srcdir)/libintl.rc -o libintl.res --output-format=coff
ref-add.sed: $(srcdir)/ref-add.sin
+--- gettext-0.17/gettext-runtime/intl/libintl.rc 2007-05-27 21:46:52.000000000 +0000
++++ gettext/gettext-runtime/intl/libintl.rc 2009-05-18 18:09:12.000000000 +0000
+@@ -22,13 +22,13 @@
+ VALUE "Comments", "This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License. You should have received a copy of the GNU Library General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA\0"
+ VALUE "CompanyName", "Free Software Foundation\0"
+ VALUE "FileDescription", "LGPLed libintl for Windows NT/2000/XP/Vista and Windows 95/98/ME\0"
+- VALUE "FileVersion", PACKAGE_VERSION_STRING "\0"
++ VALUE "FileVersion", "\0"
+ VALUE "InternalName", "intl.dll\0"
+ VALUE "LegalCopyright", "Copyright (C) 1995-2007\0"
+ VALUE "LegalTrademarks", "\0"
+ VALUE "OriginalFilename", "intl.dll\0"
+ VALUE "ProductName", "libintl: accessing NLS message catalogs\0"
+- VALUE "ProductVersion", PACKAGE_VERSION_STRING "\0"
++ VALUE "ProductVersion", "\0"
+ END
+ END
+ BLOCK "VarFileInfo"
<string>flv</string>
</array>
<key>CFBundleTypeIconFile</key>
- <string>generic.icns</string>
+ <string>flv.icns</string>
<key>CFBundleTypeName</key>
<string>Flash Video File</string>
<key>CFBundleTypeRole</key>
<string>gvp</string>
</array>
<key>CFBundleTypeIconFile</key>
- <string>generic.icns</string>
+ <string>playlist.icns</string>
<key>CFBundleTypeName</key>
<string>Google Video Playlist</string>
<key>CFBundleTypeRole</key>
<string>flac</string>
</array>
<key>CFBundleTypeIconFile</key>
- <string>generic.icns</string>
+ <string>audio.icns</string>
<key>CFBundleTypeMIMETypes</key>
<array>
<string>audio/flac</string>
<string>xspf</string>
</array>
<key>CFBundleTypeIconFile</key>
- <string>Generic.icns</string>
+ <string>playlist.icns</string>
<key>CFBundleTypeMIMETypes</key>
<array>
<string>application/xspf+xml</string>
<string>rm</string>
</array>
<key>CFBundleTypeIconFile</key>
- <string>generic.icns</string>
+ <string>rm.icns</string>
<key>CFBundleTypeName</key>
<string>RealPlayer Media Files</string>
<key>CFBundleTypeRole</key>
<array>
<string>mod</string>
</array>
+ <key>CFBundleTypeIconFile</key>
+ <string>audio.icns</string>
<key>CFBundleTypeName</key>
<string>MOD Audio File</string>
<key>CFBundleTypeOSTypes</key>
<string>it</string>
</array>
<key>CFBundleTypeIconFile</key>
- <string>generic.icns</string>
+ <string>audio.icns</string>
<key>CFBundleTypeName</key>
<string>Impulse Tracker Module File</string>
<key>CFBundleTypeRole</key>
<string>aif</string>
</array>
<key>CFBundleTypeIconFile</key>
- <string>generic.icns</string>
+ <string>aiff.icns</string>
<key>CFBundleTypeName</key>
<string>AIFF file</string>
<key>CFBundleTypeRole</key>
<string>vlc</string>
</array>
<key>CFBundleTypeIconFile</key>
- <string>generic.icns</string>
+ <string>playlist.icns</string>
<key>CFBundleTypeMIMETypes</key>
<array>
<string>application/x-videolan-vlc</string>
<array>
<string>wav</string>
</array>
+ <key>CFBundleTypeIconFile</key>
+ <string>wav.icns</string>
<key>CFBundleTypeName</key>
<string>WAVE Audio File</string>
<key>CFBundleTypeRole</key>
<string>asx</string>
</array>
<key>CFBundleTypeIconFile</key>
- <string>asx.icns</string>
+ <string>playlist.icns</string>
<key>CFBundleTypeName</key>
<string>ASX file</string>
<key>CFBundleTypeRole</key>
<string>srt</string>
</array>
<key>CFBundleTypeIconFile</key>
- <string>sub.icns</string>
+ <string>subtitle.icns</string>
<key>CFBundleTypeName</key>
<string>Subtitle file</string>
<key>CFBundleTypeRole</key>
<string>pls</string>
</array>
<key>CFBundleTypeIconFile</key>
- <string>pls.icns</string>
+ <string>playlist.icns</string>
<key>CFBundleTypeName</key>
<string>Shoutcast playlist</string>
<key>CFBundleTypeRole</key>
<string>m3u</string>
</array>
<key>CFBundleTypeIconFile</key>
- <string>m3u.icns</string>
+ <string>playlist.icns</string>
<key>CFBundleTypeName</key>
<string>Playlist file</string>
<key>CFBundleTypeRole</key>
<string>dat</string>
</array>
<key>CFBundleTypeIconFile</key>
- <string>dat.icns</string>
+ <string>generic.icns</string>
<key>CFBundleTypeName</key>
<string>DAT file</string>
<key>CFBundleTypeRole</key>
<string>cue</string>
</array>
<key>CFBundleTypeIconFile</key>
- <string>cue.icns</string>
+ <string>generic.icns</string>
<key>CFBundleTypeName</key>
<string>CUE file</string>
<key>CFBundleTypeRole</key>
<string>bin</string>
</array>
<key>CFBundleTypeIconFile</key>
- <string>bin.icns</string>
+ <string>generic.icns</string>
<key>CFBundleTypeName</key>
<string>ISO file</string>
<key>CFBundleTypeRole</key>
<string>ac3</string>
</array>
<key>CFBundleTypeIconFile</key>
- <string>a52.icns</string>
+ <string>audio.icns</string>
<key>CFBundleTypeName</key>
<string>Digital Audio</string>
<key>CFBundleTypeRole</key>
<string>aac</string>
</array>
<key>CFBundleTypeIconFile</key>
- <string>mpeg4.icns</string>
+ <string>audio.icns</string>
<key>CFBundleTypeName</key>
<string>AAC file</string>
<key>CFBundleTypeRole</key>
<string>ogm</string>
</array>
<key>CFBundleTypeIconFile</key>
- <string>ogm.icns</string>
+ <string>video.icns</string>
<key>CFBundleTypeName</key>
<string>Ogg MPEG-4 Video File</string>
<key>CFBundleTypeRole</key>
<string>ogv</string>
</array>
<key>CFBundleTypeIconFile</key>
- <string>ogg.icns</string>
+ <string>video.icns</string>
<key>CFBundleTypeMIMETypes</key>
<array>
<string>video/ogg</string>
<string>ogx</string>
</array>
<key>CFBundleTypeIconFile</key>
- <string>ogg.icns</string>
+ <string>generic.icns</string>
<key>CFBundleTypeMIMETypes</key>
<array>
<string>application/ogg</string>
<string>anx</string>
</array>
<key>CFBundleTypeIconFile</key>
- <string>ogg.icns</string>
+ <string>generic.icns</string>
<key>CFBundleTypeName</key>
<string>Annodex Application File</string>
<key>CFBundleTypeRole</key>
<string>axa</string>
</array>
<key>CFBundleTypeIconFile</key>
- <string>ogg.icns</string>
+ <string>audio.icns</string>
<key>CFBundleTypeName</key>
<string>Annodex Audio File</string>
<key>CFBundleTypeRole</key>
<string>axv</string>
</array>
<key>CFBundleTypeIconFile</key>
- <string>ogg.icns</string>
+ <string>video.icns</string>
<key>CFBundleTypeName</key>
<string>Annodex Video File</string>
<key>CFBundleTypeRole</key>
<string>qt</string>
</array>
<key>CFBundleTypeIconFile</key>
- <string>generic.icns</string>
+ <string>mov.icns</string>
<key>CFBundleTypeName</key>
<string>Apple QuickTime container</string>
<key>CFBundleTypeRole</key>
<string>divx</string>
</array>
<key>CFBundleTypeIconFile</key>
- <string>divx.icns</string>
+ <string>video.icns</string>
<key>CFBundleTypeName</key>
<string>DivX file</string>
<key>CFBundleTypeRole</key>
<string>dv</string>
</array>
<key>CFBundleTypeIconFile</key>
- <string>dv.icns</string>
+ <string>video.icns</string>
<key>CFBundleTypeName</key>
<string>DV file</string>
<key>CFBundleTypeRole</key>
<string>asf</string>
</array>
<key>CFBundleTypeIconFile</key>
- <string>asf.icns</string>
+ <string>video.icns</string>
<key>CFBundleTypeName</key>
<string>Advanced Streaming Format</string>
<key>CFBundleTypeRole</key>
<string>m1v</string>
</array>
<key>CFBundleTypeIconFile</key>
- <string>mpeg1.icns</string>
+ <string>mpeg.icns</string>
<key>CFBundleTypeName</key>
<string>MPEG-1 Video File</string>
<key>CFBundleTypeRole</key>
<string>mp2</string>
</array>
<key>CFBundleTypeIconFile</key>
- <string>mpeg2.icns</string>
+ <string>mpeg.icns</string>
<key>CFBundleTypeName</key>
<string>MPEG Audio Layer 2</string>
<key>CFBundleTypeRole</key>
<string>ps</string>
</array>
<key>CFBundleTypeIconFile</key>
- <string>mpeg2.icns</string>
+ <string>mpeg.icns</string>
<key>CFBundleTypeName</key>
<string>MPEG-2 Program Stream</string>
<key>CFBundleTypeRole</key>
<string>ts</string>
</array>
<key>CFBundleTypeIconFile</key>
- <string>mpeg2.icns</string>
+ <string>mpeg.icns</string>
<key>CFBundleTypeName</key>
<string>MPEG-2 Transport Stream</string>
<key>CFBundleTypeRole</key>
<string>mpv</string>
</array>
<key>CFBundleTypeIconFile</key>
- <string>mpeg2.icns</string>
+ <string>mpeg.icns</string>
<key>CFBundleTypeName</key>
<string>MPEG-2 Video File</string>
<key>CFBundleTypeRole</key>
<string>mpa</string>
</array>
<key>CFBundleTypeIconFile</key>
- <string>mpeg.icns</string>
+ <string>audio.icns</string>
<key>CFBundleTypeName</key>
<string>MPEG-2 Audio File</string>
<key>CFBundleTypeRole</key>
<string>m4v</string>
</array>
<key>CFBundleTypeIconFile</key>
- <string>mpeg4.icns</string>
+ <string>m4v.icns</string>
<key>CFBundleTypeName</key>
<string>MPEG-4 File</string>
<key>CFBundleTypeRole</key>
<string>mka</string>
</array>
<key>CFBundleTypeIconFile</key>
- <string>generic.icns</string>
+ <string>audio.icns</string>
<key>CFBundleTypeName</key>
<string>Matroska Audio File</string>
<key>CFBundleTypeRole</key>
<string>mkv</string>
</array>
<key>CFBundleTypeIconFile</key>
- <string>generic.icns</string>
+ <string>mkv.icns</string>
<key>CFBundleTypeName</key>
<string>Matroska Video File</string>
<key>CFBundleTypeRole</key>
<string>m4a</string>
</array>
<key>CFBundleTypeIconFile</key>
- <string>mpeg4.icns</string>
+ <string>m4a.icns</string>
<key>CFBundleTypeName</key>
<string>MPEG-4 Audio File</string>
<key>CFBundleTypeRole</key>
<string>mpc</string>
</array>
<key>CFBundleTypeIconFile</key>
- <string>generic.icns</string>
+ <string>audio.icns</string>
<key>CFBundleTypeName</key>
<string>Musepack Audio File</string>
<key>CFBundleTypeRole</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>@VERSION@</string>
- <key>CFBundleVersion</key>
- <string>#REVISION#</string>
<key>CFBundleSignature</key>
<string>VLC#</string>
<key>CFBundleURLTypes</key>
</array>
</dict>
</array>
+ <key>CFBundleVersion</key>
+ <string>#REVISION#</string>
<key>NSAppleScriptEnabled</key>
<string>YES</string>
<key>NSMainNibFile</key>
+++ /dev/null
-{
- IBClasses = (
- {
- CLASS = FirstResponder;
- LANGUAGE = ObjC;
- SUPERCLASS = NSObject;
- },
- {
- CLASS = ITSlider;
- LANGUAGE = ObjC;
- SUPERCLASS = NSSlider;
- },
- {
- CLASS = MPSlider;
- LANGUAGE = ObjC;
- SUPERCLASS = NSSlider;
- },
- {
- CLASS = NSApplication;
- LANGUAGE = ObjC;
- SUPERCLASS = NSResponder;
- },
- {
- CLASS = NSObject;
- LANGUAGE = ObjC;
- },
- {
- CLASS = VLBrushedMetalImageView;
- LANGUAGE = ObjC;
- SUPERCLASS = NSImageView;
- },
- {
- CLASS = VLCApplication;
- LANGUAGE = ObjC;
- SUPERCLASS = NSApplication;
- },
- {
- CLASS = VLCControllerView;
- LANGUAGE = ObjC;
- SUPERCLASS = NSView;
- },
- {
- CLASS = VLCControllerWindow;
- LANGUAGE = ObjC;
- SUPERCLASS = NSWindow;
- },
- {
- ACTIONS = {
- addSubtitleFile = id;
- backward = id;
- faster = id;
- forward = id;
- goToSpecificTime = id;
- loop = id;
- mute = id;
- next = id;
- pause = id;
- play = id;
- position = id;
- prev = id;
- random = id;
- repeat = id;
- repeatButtonAction = id;
- showPosition = id;
- slower = id;
- stop = id;
- telxNavLink = id;
- telxTransparent = id;
- toggleVar = id;
- toogleFullscreen = id;
- volumeDown = id;
- volumeSliderUpdated = id;
- volumeUp = id;
- windowAction = id;
- };
- CLASS = VLCControls;
- LANGUAGE = ObjC;
- OUTLETS = {
- "o_btn_addNode" = id;
- "o_btn_repeat" = id;
- "o_btn_shuffle" = id;
- "o_fs_panel" = id;
- "o_main" = id;
- "o_specificTime_cancel_btn" = id;
- "o_specificTime_enter_fld" = id;
- "o_specificTime_goTo_lbl" = id;
- "o_specificTime_mi" = id;
- "o_specificTime_ok_btn" = id;
- "o_specificTime_sec_lbl" = id;
- "o_specificTime_stepper" = id;
- "o_specificTime_win" = id;
- "o_volumeslider" = id;
- };
- SUPERCLASS = NSObject;
- },
- {
- CLASS = VLCEmbeddedVoutView;
- LANGUAGE = ObjC;
- OUTLETS = {
- "o_embeddedwindow" = id;
- };
- SUPERCLASS = VLCVoutView;
- },
- {
- CLASS = VLCEmbeddedWindow;
- LANGUAGE = ObjC;
- OUTLETS = {
- "o_btn_backward" = id;
- "o_btn_forward" = id;
- "o_btn_fullscreen" = id;
- "o_btn_play" = id;
- "o_slider" = id;
- "o_time" = id;
- "o_view" = id;
- };
- SUPERCLASS = NSWindow;
- },
- {
- ACTIONS = {
- bandSliderUpdated = id;
- changePreset = id;
- enable = id;
- preampSliderUpdated = id;
- toggleWindow = id;
- twopass = id;
- };
- CLASS = VLCEqualizer;
- LANGUAGE = ObjC;
- OUTLETS = {
- "o_btn_equalizer" = id;
- "o_ckb_2pass" = id;
- "o_ckb_enable" = id;
- "o_fld_preamp" = id;
- "o_popup_presets" = id;
- "o_slider_band1" = id;
- "o_slider_band10" = id;
- "o_slider_band2" = id;
- "o_slider_band3" = id;
- "o_slider_band4" = id;
- "o_slider_band5" = id;
- "o_slider_band6" = id;
- "o_slider_band7" = id;
- "o_slider_band8" = id;
- "o_slider_band9" = id;
- "o_slider_preamp" = id;
- "o_window" = id;
- };
- SUPERCLASS = NSObject;
- },
- {
- CLASS = VLCFSPanel;
- LANGUAGE = ObjC;
- SUPERCLASS = NSWindow;
- },
- {
- ACTIONS = {
- checkForUpdate = id;
- clearRecentItems = id;
- crashReporterAction = id;
- intfOpenCapture = id;
- intfOpenDisc = id;
- intfOpenFile = id;
- intfOpenFileGeneric = id;
- intfOpenNet = id;
- openCrashLog = id;
- openDocumentation = id;
- openDonate = id;
- openForum = id;
- openReadMe = id;
- openRecentItem = id;
- openWebsite = id;
- saveDebugLog = id;
- showBookmarks = id;
- showExtended = id;
- showInformationPanel = id;
- showLicense = id;
- showMessagesPanel = id;
- showVLM = id;
- showWizard = id;
- timeFieldWasClicked = id;
- timesliderUpdate = id;
- togglePlaylist = id;
- viewAbout = id;
- viewErrorsAndWarnings = id;
- viewHelp = id;
- viewPreferences = id;
- };
- CLASS = VLCMain;
- LANGUAGE = ObjC;
- OUTLETS = {
- "o_about" = id;
- "o_bookmarks" = id;
- "o_btn_equalizer" = NSButton;
- "o_btn_ff" = NSButton;
- "o_btn_fullscreen" = NSButton;
- "o_btn_next" = NSButton;
- "o_btn_play" = NSButton;
- "o_btn_playlist" = NSButton;
- "o_btn_prev" = NSButton;
- "o_btn_rewind" = NSButton;
- "o_btn_stop" = NSButton;
- "o_controls" = VLCControls;
- "o_coredialogs" = id;
- "o_crashrep_desc_txt" = NSTextField;
- "o_crashrep_dontSend_btn" = NSButton;
- "o_crashrep_fld" = NSTextView;
- "o_crashrep_includeEmail_ckb" = NSButton;
- "o_crashrep_includeEmail_txt" = NSTextField;
- "o_crashrep_send_btn" = NSButton;
- "o_crashrep_title_txt" = NSTextField;
- "o_crashrep_win" = NSWindow;
- "o_dmi_mute" = NSMenuItem;
- "o_dmi_next" = NSMenuItem;
- "o_dmi_play" = NSMenuItem;
- "o_dmi_previous" = NSMenuItem;
- "o_dmi_stop" = NSMenuItem;
- "o_embedded_list" = id;
- "o_embedded_window" = VLCEmbeddedWindow;
- "o_extended" = id;
- "o_eyetv" = id;
- "o_info" = id;
- "o_interaction_list" = id;
- "o_main_pgbar" = NSProgressIndicator;
- "o_messages" = NSTextView;
- "o_mi_about" = NSMenuItem;
- "o_mi_addSub" = NSMenuItem;
- "o_mi_add_intf" = NSMenuItem;
- "o_mi_aspect_ratio" = NSMenuItem;
- "o_mi_audiotrack" = NSMenuItem;
- "o_mi_bookmarks" = NSMenuItem;
- "o_mi_bring_atf" = NSMenuItem;
- "o_mi_bwd" = NSMenuItem;
- "o_mi_bwd1m" = NSMenuItem;
- "o_mi_bwd5m" = NSMenuItem;
- "o_mi_channels" = NSMenuItem;
- "o_mi_chapter" = NSMenuItem;
- "o_mi_checkForUpdate" = NSMenuItem;
- "o_mi_clear" = NSMenuItem;
- "o_mi_close_window" = NSMenuItem;
- "o_mi_controller" = NSMenuItem;
- "o_mi_copy" = NSMenuItem;
- "o_mi_crop" = NSMenuItem;
- "o_mi_cut" = NSMenuItem;
- "o_mi_deinterlace" = NSMenuItem;
- "o_mi_device" = NSMenuItem;
- "o_mi_documentation" = NSMenuItem;
- "o_mi_donation" = NSMenuItem;
- "o_mi_double_window" = NSMenuItem;
- "o_mi_equalizer" = NSMenuItem;
- "o_mi_errorsAndWarnings" = NSMenuItem;
- "o_mi_extended" = NSMenuItem;
- "o_mi_faster" = NSMenuItem;
- "o_mi_ffmpeg_pp" = NSMenuItem;
- "o_mi_fittoscreen" = NSMenuItem;
- "o_mi_floatontop" = NSMenuItem;
- "o_mi_forum" = NSMenuItem;
- "o_mi_fullscreen" = NSMenuItem;
- "o_mi_fwd" = NSMenuItem;
- "o_mi_fwd1m" = NSMenuItem;
- "o_mi_fwd5m" = NSMenuItem;
- "o_mi_half_window" = NSMenuItem;
- "o_mi_help" = NSMenuItem;
- "o_mi_hide" = NSMenuItem;
- "o_mi_hide_others" = NSMenuItem;
- "o_mi_info" = NSMenuItem;
- "o_mi_license" = NSMenuItem;
- "o_mi_loop" = NSMenuItem;
- "o_mi_messages" = NSMenuItem;
- "o_mi_minimize" = NSMenuItem;
- "o_mi_mute" = NSMenuItem;
- "o_mi_next" = NSMenuItem;
- "o_mi_normal_window" = NSMenuItem;
- "o_mi_open_capture" = NSMenuItem;
- "o_mi_open_disc" = NSMenuItem;
- "o_mi_open_file" = NSMenuItem;
- "o_mi_open_generic" = NSMenuItem;
- "o_mi_open_net" = NSMenuItem;
- "o_mi_open_recent" = NSMenuItem;
- "o_mi_open_recent_cm" = NSMenuItem;
- "o_mi_open_vlm" = NSMenuItem;
- "o_mi_open_wizard" = NSMenuItem;
- "o_mi_paste" = NSMenuItem;
- "o_mi_play" = NSMenuItem;
- "o_mi_playlist" = NSMenuItem;
- "o_mi_prefs" = NSMenuItem;
- "o_mi_previous" = NSMenuItem;
- "o_mi_program" = NSMenuItem;
- "o_mi_quit" = NSMenuItem;
- "o_mi_random" = NSMenuItem;
- "o_mi_readme" = NSMenuItem;
- "o_mi_repeat" = NSMenuItem;
- "o_mi_screen" = NSMenuItem;
- "o_mi_select_all" = NSMenuItem;
- "o_mi_services" = NSMenuItem;
- "o_mi_show_all" = NSMenuItem;
- "o_mi_slower" = NSMenuItem;
- "o_mi_snapshot" = NSMenuItem;
- "o_mi_sprefs" = NSMenuItem;
- "o_mi_stop" = NSMenuItem;
- "o_mi_subtitle" = NSMenuItem;
- "o_mi_teletext" = NSMenuItem;
- "o_mi_teletext_blue" = NSMenuItem;
- "o_mi_teletext_green" = NSMenuItem;
- "o_mi_teletext_index" = NSMenuItem;
- "o_mi_teletext_red" = NSMenuItem;
- "o_mi_teletext_transparent" = NSMenuItem;
- "o_mi_teletext_yellow" = NSMenuItem;
- "o_mi_title" = NSMenuItem;
- "o_mi_videotrack" = NSMenuItem;
- "o_mi_visual" = NSMenuItem;
- "o_mi_vol_down" = NSMenuItem;
- "o_mi_vol_up" = NSMenuItem;
- "o_mi_website" = NSMenuItem;
- "o_msgs_crashlog_btn" = NSButton;
- "o_msgs_panel" = NSWindow;
- "o_msgs_save_btn" = NSButton;
- "o_mu_add_intf" = NSMenu;
- "o_mu_aspect_ratio" = NSMenu;
- "o_mu_audio" = NSMenu;
- "o_mu_audiotrack" = NSMenu;
- "o_mu_channels" = NSMenu;
- "o_mu_chapter" = NSMenu;
- "o_mu_controls" = NSMenu;
- "o_mu_crop" = NSMenu;
- "o_mu_deinterlace" = NSMenu;
- "o_mu_device" = NSMenu;
- "o_mu_edit" = NSMenu;
- "o_mu_ffmpeg_pp" = NSMenu;
- "o_mu_file" = NSMenu;
- "o_mu_help" = NSMenu;
- "o_mu_program" = NSMenu;
- "o_mu_screen" = NSMenu;
- "o_mu_subtitle" = NSMenu;
- "o_mu_title" = NSMenu;
- "o_mu_video" = NSMenu;
- "o_mu_videotrack" = NSMenu;
- "o_mu_visual" = NSMenu;
- "o_mu_window" = NSMenu;
- "o_open" = id;
- "o_playlist" = VLCPlaylist;
- "o_playlist_view" = NSView;
- "o_prefs" = id;
- "o_scrollfield" = id;
- "o_sprefs" = id;
- "o_timefield" = NSTextField;
- "o_timeslider" = NSSlider;
- "o_update" = id;
- "o_vlm" = id;
- "o_vmi_fullscreen" = NSMenuItem;
- "o_vmi_mute" = NSMenuItem;
- "o_vmi_next" = NSMenuItem;
- "o_vmi_play" = NSMenuItem;
- "o_vmi_prev" = NSMenuItem;
- "o_vmi_snapshot" = NSMenuItem;
- "o_vmi_stop" = NSMenuItem;
- "o_vmi_voldown" = NSMenuItem;
- "o_vmi_volup" = NSMenuItem;
- "o_volumeslider" = NSSlider;
- "o_vout_menu" = NSMenu;
- "o_window" = VLCControllerWindow;
- "o_wizard" = id;
- toolbarMediaControl = NSView;
- };
- SUPERCLASS = NSObject;
- },
- {
- ACTIONS = {
- addNode = id;
- deleteItem = id;
- downloadCoverArt = id;
- playItem = id;
- preparseItem = id;
- recursiveExpandNode = id;
- revealItemInFinder = id;
- savePlaylist = id;
- searchItem = id;
- selectAll = id;
- servicesChange = id;
- sortNodeByAuthor = id;
- sortNodeByName = id;
- };
- CLASS = VLCPlaylist;
- LANGUAGE = ObjC;
- OUTLETS = {
- "o_btn_addNode" = id;
- "o_btn_playlist" = id;
- "o_controller" = id;
- "o_ctx_menu" = id;
- "o_mi_addNode" = id;
- "o_mi_delete" = id;
- "o_mi_dl_cover_art" = id;
- "o_mi_info" = id;
- "o_mi_play" = id;
- "o_mi_preparse" = id;
- "o_mi_recursive_expand" = id;
- "o_mi_revealInFinder" = id;
- "o_mi_save_playlist" = id;
- "o_mi_selectall" = id;
- "o_mi_services" = id;
- "o_mi_sort_author" = id;
- "o_mi_sort_name" = id;
- "o_mm_mi_revealInFinder" = id;
- "o_mm_mi_services" = id;
- "o_mm_mu_services" = id;
- "o_mu_services" = id;
- "o_outline_view" = id;
- "o_playlist_view" = id;
- "o_playlist_wizard" = id;
- "o_random_ckb" = id;
- "o_save_accessory_popup" = id;
- "o_save_accessory_text" = id;
- "o_save_accessory_view" = id;
- "o_search_field" = id;
- "o_status_field" = id;
- "o_tc_author" = id;
- "o_tc_duration" = id;
- "o_tc_name" = id;
- "o_tc_sortColumn" = id;
- };
- SUPERCLASS = VLCPlaylistCommon;
- },
- {
- CLASS = VLCPlaylistCommon;
- LANGUAGE = ObjC;
- OUTLETS = {
- "o_outline_view" = id;
- "o_tc_author" = id;
- "o_tc_duration" = id;
- "o_tc_name" = id;
- };
- SUPERCLASS = NSObject;
- },
- {
- CLASS = VLCPlaylistView;
- LANGUAGE = ObjC;
- SUPERCLASS = NSOutlineView;
- },
- {
- CLASS = VLCTimeField;
- LANGUAGE = ObjC;
- SUPERCLASS = NSTextField;
- },
- {
- CLASS = VLCVoutView;
- LANGUAGE = ObjC;
- OUTLETS = {
- "o_window" = id;
- };
- SUPERCLASS = NSView;
- }
- );
- IBVersion = 1;
-}
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="7.03">
+ <data>
+ <int key="IBDocument.SystemTarget">1050</int>
+ <string key="IBDocument.SystemVersion">9J61</string>
+ <string key="IBDocument.InterfaceBuilderVersion">677</string>
+ <string key="IBDocument.AppKitVersion">949.46</string>
+ <string key="IBDocument.HIToolboxVersion">353.00</string>
+ <object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <integer value="4375"/>
+ <integer value="2199"/>
+ <integer value="24"/>
+ <integer value="3568"/>
+ </object>
+ <object class="NSArray" key="IBDocument.PluginDependencies">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ </object>
+ <object class="NSMutableDictionary" key="IBDocument.Metadata">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSArray" key="dict.sortedKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ </object>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ </object>
+ </object>
+ <object class="NSMutableArray" key="IBDocument.RootObjects" id="127727372">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSCustomObject" id="987699396">
+ <string key="NSClassName">VLCApplication</string>
+ </object>
+ <object class="NSCustomObject" id="989329005">
+ <string key="NSClassName">FirstResponder</string>
+ </object>
+ <object class="NSCustomObject" id="658479039">
+ <string key="NSClassName">NSApplication</string>
+ </object>
+ <object class="NSWindowTemplate" id="694928042">
+ <int key="NSWindowStyleMask">4367</int>
+ <int key="NSWindowBacking">2</int>
+ <string key="NSWindowRect">{{53, 700}, {338, 29}}</string>
+ <int key="NSWTFlags">1881669632</int>
+ <string key="NSWindowTitle">VLC media player</string>
+ <string key="NSWindowClass">VLCControllerWindow</string>
+ <nil key="NSViewClass"/>
+ <string key="NSWindowContentMaxSize">{3.40282e+38, 3.40282e+38}</string>
+ <object class="NSView" key="NSWindowView" id="22160648">
+ <reference key="NSNextResponder"/>
+ <int key="NSvFlags">256</int>
+ <object class="NSMutableArray" key="NSSubviews">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSButton" id="108887610">
+ <reference key="NSNextResponder" ref="22160648"/>
+ <int key="NSvFlags">268</int>
+ <string key="NSFrame">{{49, 7}, {33, 20}}</string>
+ <reference key="NSSuperview" ref="22160648"/>
+ <reference key="NSWindow"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSButtonCell" key="NSCell" id="283044800">
+ <int key="NSCellFlags">604110336</int>
+ <int key="NSCellFlags2">134217728</int>
+ <string key="NSContents"/>
+ <object class="NSFont" key="NSSupport" id="644502772">
+ <string key="NSName">LucidaGrande</string>
+ <double key="NSSize">1.000000e+01</double>
+ <int key="NSfFlags">2843</int>
+ </object>
+ <reference key="NSControlView" ref="108887610"/>
+ <int key="NSButtonFlags">138674431</int>
+ <int key="NSButtonFlags2">2</int>
+ <object class="NSCustomResource" key="NSNormalImage">
+ <string key="NSClassName">NSImage</string>
+ <string key="NSResourceName">stop</string>
+ </object>
+ <object class="NSCustomResource" key="NSAlternateImage">
+ <string key="NSClassName">NSImage</string>
+ <string key="NSResourceName">stop_blue</string>
+ </object>
+ <string key="NSAlternateContents"/>
+ <object class="NSMutableString" key="NSKeyEquivalent">
+ <characters key="NS.bytes"/>
+ </object>
+ <int key="NSPeriodicDelay">200</int>
+ <int key="NSPeriodicInterval">25</int>
+ </object>
+ </object>
+ <object class="NSButton" id="73391533">
+ <reference key="NSNextResponder" ref="22160648"/>
+ <int key="NSvFlags">268</int>
+ <string key="NSFrame">{{84, 7}, {33, 20}}</string>
+ <reference key="NSSuperview" ref="22160648"/>
+ <reference key="NSWindow"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSButtonCell" key="NSCell" id="946014265">
+ <int key="NSCellFlags">604110336</int>
+ <int key="NSCellFlags2">134217728</int>
+ <string key="NSContents"/>
+ <reference key="NSSupport" ref="644502772"/>
+ <reference key="NSControlView" ref="73391533"/>
+ <int key="NSButtonFlags">138674431</int>
+ <int key="NSButtonFlags2">2</int>
+ <object class="NSCustomResource" key="NSNormalImage">
+ <string key="NSClassName">NSImage</string>
+ <string key="NSResourceName">next_active</string>
+ </object>
+ <object class="NSCustomResource" key="NSAlternateImage">
+ <string key="NSClassName">NSImage</string>
+ <string key="NSResourceName">next_blue</string>
+ </object>
+ <string key="NSAlternateContents"/>
+ <string key="NSKeyEquivalent"/>
+ <int key="NSPeriodicDelay">200</int>
+ <int key="NSPeriodicInterval">25</int>
+ </object>
+ </object>
+ <object class="NSSlider" id="247830175">
+ <reference key="NSNextResponder" ref="22160648"/>
+ <int key="NSvFlags">268</int>
+ <string key="NSFrame">{{138, 9}, {88, 15}}</string>
+ <reference key="NSSuperview" ref="22160648"/>
+ <reference key="NSWindow"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSSliderCell" key="NSCell" id="872288919">
+ <int key="NSCellFlags">604372736</int>
+ <int key="NSCellFlags2">131072</int>
+ <object class="NSMutableString" key="NSContents">
+ <characters key="NS.bytes"/>
+ </object>
+ <object class="NSFont" key="NSSupport" id="854546163">
+ <string key="NSName">Helvetica</string>
+ <double key="NSSize">1.200000e+01</double>
+ <int key="NSfFlags">16</int>
+ </object>
+ <reference key="NSControlView" ref="247830175"/>
+ <double key="NSMaxValue">3.200000e+01</double>
+ <double key="NSMinValue">0.000000e+00</double>
+ <double key="NSValue">8.000000e+00</double>
+ <double key="NSAltIncValue">0.000000e+00</double>
+ <int key="NSNumberOfTickMarks">0</int>
+ <int key="NSTickMarkPosition">1</int>
+ <bool key="NSAllowsTickMarkValuesOnly">NO</bool>
+ <bool key="NSVertical">NO</bool>
+ </object>
+ </object>
+ <object class="NSButton" id="941058480">
+ <reference key="NSNextResponder" ref="22160648"/>
+ <int key="NSvFlags">265</int>
+ <string key="NSFrame">{{287, 7}, {33, 20}}</string>
+ <reference key="NSSuperview" ref="22160648"/>
+ <reference key="NSWindow"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSButtonCell" key="NSCell" id="277248697">
+ <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags2">134217728</int>
+ <string key="NSContents"/>
+ <reference key="NSSupport" ref="644502772"/>
+ <reference key="NSControlView" ref="941058480"/>
+ <int key="NSButtonFlags">-931921665</int>
+ <int key="NSButtonFlags2">2</int>
+ <object class="NSCustomResource" key="NSNormalImage">
+ <string key="NSClassName">NSImage</string>
+ <string key="NSResourceName">playlistdrawer_active</string>
+ </object>
+ <object class="NSCustomResource" key="NSAlternateImage">
+ <string key="NSClassName">NSImage</string>
+ <string key="NSResourceName">playlistdrawer_blue</string>
+ </object>
+ <string key="NSAlternateContents"/>
+ <object class="NSMutableString" key="NSKeyEquivalent">
+ <characters key="NS.bytes"/>
+ </object>
+ <int key="NSPeriodicDelay">200</int>
+ <int key="NSPeriodicInterval">25</int>
+ </object>
+ </object>
+ <object class="NSButton" id="549836737">
+ <reference key="NSNextResponder" ref="22160648"/>
+ <int key="NSvFlags">268</int>
+ <string key="NSFrame">{{14, 7}, {33, 20}}</string>
+ <reference key="NSSuperview" ref="22160648"/>
+ <reference key="NSWindow"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSButtonCell" key="NSCell" id="984581159">
+ <int key="NSCellFlags">604110336</int>
+ <int key="NSCellFlags2">134217728</int>
+ <string key="NSContents"/>
+ <reference key="NSSupport" ref="644502772"/>
+ <reference key="NSControlView" ref="549836737"/>
+ <int key="NSButtonFlags">138674431</int>
+ <int key="NSButtonFlags2">2</int>
+ <object class="NSCustomResource" key="NSNormalImage">
+ <string key="NSClassName">NSImage</string>
+ <string key="NSResourceName">previous_active</string>
+ </object>
+ <object class="NSCustomResource" key="NSAlternateImage">
+ <string key="NSClassName">NSImage</string>
+ <string key="NSResourceName">previous_blue</string>
+ </object>
+ <string key="NSAlternateContents"/>
+ <object class="NSMutableString" key="NSKeyEquivalent">
+ <characters key="NS.bytes"/>
+ </object>
+ <int key="NSPeriodicDelay">200</int>
+ <int key="NSPeriodicInterval">25</int>
+ </object>
+ </object>
+ <object class="NSButton" id="8485265">
+ <reference key="NSNextResponder" ref="22160648"/>
+ <int key="NSvFlags">268</int>
+ <string key="NSFrame">{{226, 7}, {20, 20}}</string>
+ <reference key="NSSuperview" ref="22160648"/>
+ <reference key="NSWindow"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSButtonCell" key="NSCell" id="791503506">
+ <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags2">134217728</int>
+ <string key="NSContents"/>
+ <reference key="NSSupport" ref="644502772"/>
+ <reference key="NSControlView" ref="8485265"/>
+ <int key="NSButtonFlags">-931921665</int>
+ <int key="NSButtonFlags2">2</int>
+ <object class="NSCustomResource" key="NSNormalImage" id="820566923">
+ <string key="NSClassName">NSImage</string>
+ <string key="NSResourceName">volume_high</string>
+ </object>
+ <reference key="NSAlternateImage" ref="820566923"/>
+ <string key="NSAlternateContents"/>
+ <object class="NSMutableString" key="NSKeyEquivalent">
+ <characters key="NS.bytes"/>
+ </object>
+ <int key="NSPeriodicDelay">200</int>
+ <int key="NSPeriodicInterval">25</int>
+ </object>
+ </object>
+ <object class="NSButton" id="157320773">
+ <reference key="NSNextResponder" ref="22160648"/>
+ <int key="NSvFlags">268</int>
+ <string key="NSFrame">{{122, 7}, {20, 20}}</string>
+ <reference key="NSSuperview" ref="22160648"/>
+ <reference key="NSWindow"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSButtonCell" key="NSCell" id="1053737075">
+ <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags2">134217728</int>
+ <string key="NSContents"/>
+ <reference key="NSSupport" ref="644502772"/>
+ <reference key="NSControlView" ref="157320773"/>
+ <int key="NSButtonFlags">-931921665</int>
+ <int key="NSButtonFlags2">2</int>
+ <object class="NSCustomResource" key="NSNormalImage" id="150287333">
+ <string key="NSClassName">NSImage</string>
+ <string key="NSResourceName">volume_low</string>
+ </object>
+ <reference key="NSAlternateImage" ref="150287333"/>
+ <string key="NSAlternateContents"/>
+ <object class="NSMutableString" key="NSKeyEquivalent">
+ <characters key="NS.bytes"/>
+ </object>
+ <int key="NSPeriodicDelay">200</int>
+ <int key="NSPeriodicInterval">25</int>
+ </object>
+ </object>
+ <object class="NSButton" id="456440780">
+ <reference key="NSNextResponder" ref="22160648"/>
+ <int key="NSvFlags">265</int>
+ <string key="NSFrame">{{250, 7}, {33, 20}}</string>
+ <reference key="NSSuperview" ref="22160648"/>
+ <reference key="NSWindow"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSButtonCell" key="NSCell" id="475126643">
+ <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags2">134217728</int>
+ <string key="NSContents"/>
+ <reference key="NSSupport" ref="644502772"/>
+ <reference key="NSControlView" ref="456440780"/>
+ <int key="NSButtonFlags">-931921665</int>
+ <int key="NSButtonFlags2">2</int>
+ <object class="NSCustomResource" key="NSNormalImage">
+ <string key="NSClassName">NSImage</string>
+ <string key="NSResourceName">equalizerdrawer_active</string>
+ </object>
+ <object class="NSCustomResource" key="NSAlternateImage">
+ <string key="NSClassName">NSImage</string>
+ <string key="NSResourceName">equalizerdrawer_blue</string>
+ </object>
+ <string key="NSAlternateContents"/>
+ <object class="NSMutableString" key="NSKeyEquivalent">
+ <characters key="NS.bytes"/>
+ </object>
+ <int key="NSPeriodicDelay">200</int>
+ <int key="NSPeriodicInterval">25</int>
+ </object>
+ </object>
+ </object>
+ <string key="NSFrameSize">{338, 29}</string>
+ <reference key="NSSuperview"/>
+ <reference key="NSWindow"/>
+ </object>
+ <string key="NSScreenRect">{{0, 0}, {1280, 778}}</string>
+ <string key="NSMaxSize">{3.40282e+38, 3.40282e+38}</string>
+ <string key="NSFrameAutosaveName">vlc</string>
+ </object>
+ <object class="NSMenu" id="418576523">
+ <string key="NSTitle">MainMenu</string>
+ <object class="NSMutableArray" key="NSMenuItems">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMenuItem" id="407604357">
+ <reference key="NSMenu" ref="418576523"/>
+ <string key="NSTitle">VLC</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <object class="NSCustomResource" key="NSOnImage" id="464614658">
+ <string key="NSClassName">NSImage</string>
+ <string key="NSResourceName">NSMenuCheckmark</string>
+ </object>
+ <object class="NSCustomResource" key="NSMixedImage" id="724706907">
+ <string key="NSClassName">NSImage</string>
+ <string key="NSResourceName">NSMenuMixedState</string>
+ </object>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="915397398">
+ <string key="NSTitle">VLC</string>
+ <object class="NSMutableArray" key="NSMenuItems">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMenuItem" id="522037235">
+ <reference key="NSMenu" ref="915397398"/>
+ <string key="NSTitle">About VLC media player...</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ </object>
+ <object class="NSMenuItem" id="93213564">
+ <reference key="NSMenu" ref="915397398"/>
+ <string key="NSTitle">Check For Update...</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ </object>
+ <object class="NSMenuItem" id="427075251">
+ <reference key="NSMenu" ref="915397398"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ </object>
+ <object class="NSMenuItem" id="190028897">
+ <reference key="NSMenu" ref="915397398"/>
+ <string key="NSTitle">Preferences...</string>
+ <string key="NSKeyEquiv">,</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ </object>
+ <object class="NSMenuItem" id="592273526">
+ <reference key="NSMenu" ref="915397398"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ </object>
+ <object class="NSMenuItem" id="984754554">
+ <reference key="NSMenu" ref="915397398"/>
+ <string key="NSTitle">Add Interface</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="573447947">
+ <string key="NSTitle">Add Interface</string>
+ <object class="NSMutableArray" key="NSMenuItems">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ </object>
+ </object>
+ </object>
+ <object class="NSMenuItem" id="340353439">
+ <reference key="NSMenu" ref="915397398"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ </object>
+ <object class="NSMenuItem" id="1060718234">
+ <reference key="NSMenu" ref="915397398"/>
+ <string key="NSTitle">Services</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="598558452">
+ <object class="NSMutableString" key="NSTitle">
+ <characters key="NS.bytes">Services</characters>
+ </object>
+ <object class="NSMutableArray" key="NSMenuItems">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ </object>
+ <string key="NSName">_NSServicesMenu</string>
+ </object>
+ </object>
+ <object class="NSMenuItem" id="521889261">
+ <reference key="NSMenu" ref="915397398"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ </object>
+ <object class="NSMenuItem" id="897929241">
+ <reference key="NSMenu" ref="915397398"/>
+ <string key="NSTitle">Hide VLC</string>
+ <string key="NSKeyEquiv">h</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ </object>
+ <object class="NSMenuItem" id="292257463">
+ <reference key="NSMenu" ref="915397398"/>
+ <string key="NSTitle">Hide Others</string>
+ <string key="NSKeyEquiv">h</string>
+ <int key="NSKeyEquivModMask">1572864</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ </object>
+ <object class="NSMenuItem" id="830074013">
+ <reference key="NSMenu" ref="915397398"/>
+ <string key="NSTitle">Show All</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ </object>
+ <object class="NSMenuItem" id="796780824">
+ <reference key="NSMenu" ref="915397398"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ </object>
+ <object class="NSMenuItem" id="845106587">
+ <reference key="NSMenu" ref="915397398"/>
+ <string key="NSTitle">Quit VLC</string>
+ <string key="NSKeyEquiv">q</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ </object>
+ </object>
+ <string key="NSName">_NSAppleMenu</string>
+ </object>
+ </object>
+ <object class="NSMenuItem" id="694502505">
+ <reference key="NSMenu" ref="418576523"/>
+ <string key="NSTitle">File</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="320604397">
+ <string key="NSTitle">File</string>
+ <object class="NSMutableArray" key="NSMenuItems">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMenuItem" id="516972708">
+ <reference key="NSMenu" ref="320604397"/>
+ <string key="NSTitle">Open File...</string>
+ <string key="NSKeyEquiv">o</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ </object>
+ <object class="NSMenuItem" id="1056535767">
+ <reference key="NSMenu" ref="320604397"/>
+ <string key="NSTitle">Advanced Open File...</string>
+ <string key="NSKeyEquiv">O</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ </object>
+ <object class="NSMenuItem" id="657872493">
+ <reference key="NSMenu" ref="320604397"/>
+ <string key="NSTitle">Open Disc...</string>
+ <string key="NSKeyEquiv">d</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ </object>
+ <object class="NSMenuItem" id="92861542">
+ <reference key="NSMenu" ref="320604397"/>
+ <string key="NSTitle">Open Network...</string>
+ <string key="NSKeyEquiv">n</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ </object>
+ <object class="NSMenuItem" id="689844674">
+ <reference key="NSMenu" ref="320604397"/>
+ <string key="NSTitle">Open Capture Device...</string>
+ <string key="NSKeyEquiv">r</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ </object>
+ <object class="NSMenuItem" id="365190813">
+ <reference key="NSMenu" ref="320604397"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ </object>
+ <object class="NSMenuItem" id="601385528">
+ <reference key="NSMenu" ref="320604397"/>
+ <string key="NSTitle">Open Recent</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="250023384">
+ <string key="NSTitle">Open Recent</string>
+ <object class="NSMutableArray" key="NSMenuItems">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMenuItem" id="73126341">
+ <reference key="NSMenu" ref="250023384"/>
+ <string key="NSTitle">Clear Menu</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object class="NSMenuItem" id="1011763698">
+ <reference key="NSMenu" ref="320604397"/>
+ <string key="NSTitle">Services Discovery</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="507994510">
+ <string key="NSTitle">Services Discovery</string>
+ <object class="NSMutableArray" key="NSMenuItems">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ </object>
+ </object>
+ </object>
+ <object class="NSMenuItem" id="1023084208">
+ <reference key="NSMenu" ref="320604397"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ </object>
+ <object class="NSMenuItem" id="257462769">
+ <reference key="NSMenu" ref="320604397"/>
+ <string key="NSTitle">Reveal in Finder</string>
+ <string key="NSKeyEquiv">R</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ </object>
+ <object class="NSMenuItem" id="88223463">
+ <reference key="NSMenu" ref="320604397"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ </object>
+ <object class="NSMenuItem" id="196095551">
+ <reference key="NSMenu" ref="320604397"/>
+ <string key="NSTitle">VLM Configuration</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ </object>
+ <object class="NSMenuItem" id="356334467">
+ <reference key="NSMenu" ref="320604397"/>
+ <string key="NSTitle">Streaming/Exporting Wizard...</string>
+ <string key="NSKeyEquiv">W</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ </object>
+ <object class="NSMenuItem" id="766145358">
+ <reference key="NSMenu" ref="320604397"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ </object>
+ <object class="NSMenuItem" id="153624409">
+ <reference key="NSMenu" ref="320604397"/>
+ <string key="NSTitle">Save Playlist...</string>
+ <string key="NSKeyEquiv">s</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object class="NSMenuItem" id="473665637">
+ <reference key="NSMenu" ref="418576523"/>
+ <string key="NSTitle">Edit</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="385738405">
+ <object class="NSMutableString" key="NSTitle">
+ <characters key="NS.bytes">Edit</characters>
+ </object>
+ <object class="NSMutableArray" key="NSMenuItems">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMenuItem" id="370451407">
+ <reference key="NSMenu" ref="385738405"/>
+ <string key="NSTitle">Cut</string>
+ <string key="NSKeyEquiv">x</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ </object>
+ <object class="NSMenuItem" id="592053283">
+ <reference key="NSMenu" ref="385738405"/>
+ <string key="NSTitle">Copy</string>
+ <string key="NSKeyEquiv">c</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ </object>
+ <object class="NSMenuItem" id="637208904">
+ <reference key="NSMenu" ref="385738405"/>
+ <string key="NSTitle">Paste</string>
+ <string key="NSKeyEquiv">v</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ </object>
+ <object class="NSMenuItem" id="44588423">
+ <reference key="NSMenu" ref="385738405"/>
+ <string key="NSTitle">Clear</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ </object>
+ <object class="NSMenuItem" id="609657893">
+ <reference key="NSMenu" ref="385738405"/>
+ <string key="NSTitle">Select All</string>
+ <string key="NSKeyEquiv">a</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object class="NSMenuItem" id="443407942">
+ <reference key="NSMenu" ref="418576523"/>
+ <string key="NSTitle">Playback</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="816567345">
+ <string key="NSTitle">Playback</string>
+ <object class="NSMutableArray" key="NSMenuItems">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMenuItem" id="128133130">
+ <reference key="NSMenu" ref="816567345"/>
+ <string key="NSTitle">Play/Pause</string>
+ <string key="NSKeyEquiv">p</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ </object>
+ <object class="NSMenuItem" id="111465545">
+ <reference key="NSMenu" ref="816567345"/>
+ <string key="NSTitle">Stop</string>
+ <string key="NSKeyEquiv">.</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ </object>
+ <object class="NSMenuItem" id="664982675">
+ <reference key="NSMenu" ref="816567345"/>
+ <string key="NSTitle">Faster</string>
+ <string key="NSKeyEquiv">=</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ </object>
+ <object class="NSMenuItem" id="657633380">
+ <reference key="NSMenu" ref="816567345"/>
+ <string key="NSTitle">Slower</string>
+ <string key="NSKeyEquiv">-</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ </object>
+ <object class="NSMenuItem" id="895354651">
+ <reference key="NSMenu" ref="816567345"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ </object>
+ <object class="NSMenuItem" id="64145111">
+ <reference key="NSMenu" ref="816567345"/>
+ <string key="NSTitle">Step Forward</string>
+ <string type="base64-UTF8" key="NSKeyEquiv">75yDA</string>
+ <int key="NSKeyEquivModMask">1572864</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ </object>
+ <object class="NSMenuItem" id="109358754">
+ <reference key="NSMenu" ref="816567345"/>
+ <string key="NSTitle">Step Backward</string>
+ <string type="base64-UTF8" key="NSKeyEquiv">75yCA</string>
+ <int key="NSKeyEquivModMask">1572864</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ </object>
+ <object class="NSMenuItem" id="508315060">
+ <reference key="NSMenu" ref="816567345"/>
+ <string key="NSTitle">Jump To Time...</string>
+ <string key="NSKeyEquiv">j</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ </object>
+ <object class="NSMenuItem" id="893871730">
+ <reference key="NSMenu" ref="816567345"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ </object>
+ <object class="NSMenuItem" id="107614956">
+ <reference key="NSMenu" ref="816567345"/>
+ <string key="NSTitle">Previous</string>
+ <string type="base64-UTF8" key="NSKeyEquiv">75yCA</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ </object>
+ <object class="NSMenuItem" id="129098562">
+ <reference key="NSMenu" ref="816567345"/>
+ <string key="NSTitle">Next</string>
+ <string type="base64-UTF8" key="NSKeyEquiv">75yDA</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ </object>
+ <object class="NSMenuItem" id="229481215">
+ <reference key="NSMenu" ref="816567345"/>
+ <string key="NSTitle">Shuffle</string>
+ <string key="NSKeyEquiv">z</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ </object>
+ <object class="NSMenuItem" id="1056015920">
+ <reference key="NSMenu" ref="816567345"/>
+ <string key="NSTitle">Repeat Item</string>
+ <string key="NSKeyEquiv">r</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ </object>
+ <object class="NSMenuItem" id="421769496">
+ <reference key="NSMenu" ref="816567345"/>
+ <string key="NSTitle">Repeat Playlist</string>
+ <string key="NSKeyEquiv">l</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ </object>
+ <object class="NSMenuItem" id="521340648">
+ <reference key="NSMenu" ref="816567345"/>
+ <string key="NSTitle">Add Folder to Playlist...</string>
+ <string key="NSKeyEquiv">+</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ </object>
+ <object class="NSMenuItem" id="648234613">
+ <reference key="NSMenu" ref="816567345"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ </object>
+ <object class="NSMenuItem" id="1072478834">
+ <reference key="NSMenu" ref="816567345"/>
+ <string key="NSTitle">Program</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="258136582">
+ <string key="NSTitle">Program</string>
+ <object class="NSMutableArray" key="NSMenuItems">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ </object>
+ </object>
+ </object>
+ <object class="NSMenuItem" id="200588242">
+ <reference key="NSMenu" ref="816567345"/>
+ <string key="NSTitle">Title</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="953864112">
+ <string key="NSTitle">Title</string>
+ <object class="NSMutableArray" key="NSMenuItems">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ </object>
+ </object>
+ </object>
+ <object class="NSMenuItem" id="557710877">
+ <reference key="NSMenu" ref="816567345"/>
+ <string key="NSTitle">Chapter</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="802284870">
+ <string key="NSTitle">Chapter</string>
+ <object class="NSMutableArray" key="NSMenuItems">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object class="NSMenuItem" id="828538099">
+ <reference key="NSMenu" ref="418576523"/>
+ <string key="NSTitle">Audio</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="1039389479">
+ <string key="NSTitle">Audio</string>
+ <object class="NSMutableArray" key="NSMenuItems">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMenuItem" id="608392904">
+ <reference key="NSMenu" ref="1039389479"/>
+ <string key="NSTitle">Volume Up</string>
+ <string type="base64-UTF8" key="NSKeyEquiv">75yAA</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ </object>
+ <object class="NSMenuItem" id="895513286">
+ <reference key="NSMenu" ref="1039389479"/>
+ <string key="NSTitle">Volume Down</string>
+ <string type="base64-UTF8" key="NSKeyEquiv">75yBA</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ </object>
+ <object class="NSMenuItem" id="939809685">
+ <reference key="NSMenu" ref="1039389479"/>
+ <string key="NSTitle">Mute</string>
+ <string key="NSKeyEquiv">M</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ </object>
+ <object class="NSMenuItem" id="207576805">
+ <reference key="NSMenu" ref="1039389479"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ </object>
+ <object class="NSMenuItem" id="266825075">
+ <reference key="NSMenu" ref="1039389479"/>
+ <string key="NSTitle">Audio track</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="869219096">
+ <string key="NSTitle">Audio track</string>
+ <object class="NSMutableArray" key="NSMenuItems">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ </object>
+ </object>
+ </object>
+ <object class="NSMenuItem" id="1051272232">
+ <reference key="NSMenu" ref="1039389479"/>
+ <string key="NSTitle">Audio channels</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="311048570">
+ <string key="NSTitle">Audio channels</string>
+ <object class="NSMutableArray" key="NSMenuItems">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ </object>
+ </object>
+ </object>
+ <object class="NSMenuItem" id="526234244">
+ <reference key="NSMenu" ref="1039389479"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ </object>
+ <object class="NSMenuItem" id="837873120">
+ <reference key="NSMenu" ref="1039389479"/>
+ <string key="NSTitle">Visualizations</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="722819468">
+ <string key="NSTitle">Visualizations</string>
+ <object class="NSMutableArray" key="NSMenuItems">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ </object>
+ </object>
+ </object>
+ <object class="NSMenuItem" id="817779866">
+ <reference key="NSMenu" ref="1039389479"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ </object>
+ <object class="NSMenuItem" id="926928050">
+ <reference key="NSMenu" ref="1039389479"/>
+ <string key="NSTitle">Audio device</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="366232406">
+ <string key="NSTitle">Audio device</string>
+ <object class="NSMutableArray" key="NSMenuItems">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object class="NSMenuItem" id="37419106">
+ <reference key="NSMenu" ref="418576523"/>
+ <string key="NSTitle">Video</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="99410029">
+ <string key="NSTitle">Video</string>
+ <object class="NSMutableArray" key="NSMenuItems">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMenuItem" id="85143365">
+ <reference key="NSMenu" ref="99410029"/>
+ <string key="NSTitle">Half Size</string>
+ <string key="NSKeyEquiv">0</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ </object>
+ <object class="NSMenuItem" id="932586104">
+ <reference key="NSMenu" ref="99410029"/>
+ <string key="NSTitle">Normal Size</string>
+ <string key="NSKeyEquiv">1</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ </object>
+ <object class="NSMenuItem" id="615849701">
+ <reference key="NSMenu" ref="99410029"/>
+ <string key="NSTitle">Double Size</string>
+ <string key="NSKeyEquiv">2</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ </object>
+ <object class="NSMenuItem" id="275342640">
+ <reference key="NSMenu" ref="99410029"/>
+ <string key="NSTitle">Fit to Screen</string>
+ <string key="NSKeyEquiv">3</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ </object>
+ <object class="NSMenuItem" id="692416826">
+ <reference key="NSMenu" ref="99410029"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ </object>
+ <object class="NSMenuItem" id="187260470">
+ <reference key="NSMenu" ref="99410029"/>
+ <string key="NSTitle">Fullscreen</string>
+ <string key="NSKeyEquiv">f</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ </object>
+ <object class="NSMenuItem" id="909250698">
+ <reference key="NSMenu" ref="99410029"/>
+ <string key="NSTitle">Float on Top</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ </object>
+ <object class="NSMenuItem" id="782283483">
+ <reference key="NSMenu" ref="99410029"/>
+ <string key="NSTitle">Snapshot</string>
+ <string key="NSKeyEquiv">S</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ </object>
+ <object class="NSMenuItem" id="925482310">
+ <reference key="NSMenu" ref="99410029"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ </object>
+ <object class="NSMenuItem" id="113580051">
+ <reference key="NSMenu" ref="99410029"/>
+ <string key="NSTitle">Aspect-ratio</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="336164835">
+ <string key="NSTitle">Aspect-ratio</string>
+ <object class="NSMutableArray" key="NSMenuItems">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ </object>
+ </object>
+ </object>
+ <object class="NSMenuItem" id="1059185094">
+ <reference key="NSMenu" ref="99410029"/>
+ <string key="NSTitle">Crop</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="1012005243">
+ <string key="NSTitle">Crop</string>
+ <object class="NSMutableArray" key="NSMenuItems">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ </object>
+ </object>
+ </object>
+ <object class="NSMenuItem" id="435270930">
+ <reference key="NSMenu" ref="99410029"/>
+ <string key="NSTitle">Deinterlace</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="202219296">
+ <string key="NSTitle">Deinterlace</string>
+ <object class="NSMutableArray" key="NSMenuItems">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ </object>
+ </object>
+ </object>
+ <object class="NSMenuItem" id="222585783">
+ <reference key="NSMenu" ref="99410029"/>
+ <string key="NSTitle">Post processing</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="473098933">
+ <string key="NSTitle">Post processing</string>
+ <object class="NSMutableArray" key="NSMenuItems">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ </object>
+ </object>
+ </object>
+ <object class="NSMenuItem" id="806193985">
+ <reference key="NSMenu" ref="99410029"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ </object>
+ <object class="NSMenuItem" id="456852973">
+ <reference key="NSMenu" ref="99410029"/>
+ <string key="NSTitle">Video track</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="498308040">
+ <string key="NSTitle">Video track</string>
+ <object class="NSMutableArray" key="NSMenuItems">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ </object>
+ </object>
+ </object>
+ <object class="NSMenuItem" id="436892403">
+ <reference key="NSMenu" ref="99410029"/>
+ <string key="NSTitle">Subtitles track</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="354269903">
+ <string key="NSTitle">Subtitles track</string>
+ <object class="NSMutableArray" key="NSMenuItems">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMenuItem" id="743864913">
+ <reference key="NSMenu" ref="354269903"/>
+ <string key="NSTitle">Open File...</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object class="NSMenuItem" id="35804585">
+ <reference key="NSMenu" ref="99410029"/>
+ <string key="NSTitle">Teletext</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="778663515">
+ <string key="NSTitle">Teletext</string>
+ <object class="NSMutableArray" key="NSMenuItems">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMenuItem" id="416660424">
+ <reference key="NSMenu" ref="778663515"/>
+ <string key="NSTitle">Transparent</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ </object>
+ <object class="NSMenuItem" id="905475562">
+ <reference key="NSMenu" ref="778663515"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ </object>
+ <object class="NSMenuItem" id="354873462">
+ <reference key="NSMenu" ref="778663515"/>
+ <string key="NSTitle">Index page</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ </object>
+ <object class="NSMenuItem" id="1000095252">
+ <reference key="NSMenu" ref="778663515"/>
+ <string key="NSTitle">Red</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ </object>
+ <object class="NSMenuItem" id="809865944">
+ <reference key="NSMenu" ref="778663515"/>
+ <string key="NSTitle">Green</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ </object>
+ <object class="NSMenuItem" id="537073297">
+ <reference key="NSMenu" ref="778663515"/>
+ <string key="NSTitle">Yellow</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ </object>
+ <object class="NSMenuItem" id="848243339">
+ <reference key="NSMenu" ref="778663515"/>
+ <string key="NSTitle">Blue</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object class="NSMenuItem" id="410176509">
+ <reference key="NSMenu" ref="99410029"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ </object>
+ <object class="NSMenuItem" id="156000819">
+ <reference key="NSMenu" ref="99410029"/>
+ <string key="NSTitle">Video device</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="230746204">
+ <string key="NSTitle">Video device</string>
+ <object class="NSMutableArray" key="NSMenuItems">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object class="NSMenuItem" id="847284050">
+ <reference key="NSMenu" ref="418576523"/>
+ <string key="NSTitle">Window</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="1025665732">
+ <string key="NSTitle">Window</string>
+ <object class="NSMutableArray" key="NSMenuItems">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMenuItem" id="155406998">
+ <reference key="NSMenu" ref="1025665732"/>
+ <string key="NSTitle">Minimize Window</string>
+ <string key="NSKeyEquiv">m</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ </object>
+ <object class="NSMenuItem" id="345434895">
+ <reference key="NSMenu" ref="1025665732"/>
+ <string key="NSTitle">Close Window</string>
+ <string key="NSKeyEquiv">w</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ </object>
+ <object class="NSMenuItem" id="291867574">
+ <reference key="NSMenu" ref="1025665732"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ </object>
+ <object class="NSMenuItem" id="934861745">
+ <reference key="NSMenu" ref="1025665732"/>
+ <string key="NSTitle">Player</string>
+ <string key="NSKeyEquiv">V</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ </object>
+ <object class="NSMenuItem" id="611085512">
+ <reference key="NSMenu" ref="1025665732"/>
+ <string key="NSTitle">Controller</string>
+ <string key="NSKeyEquiv">C</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ </object>
+ <object class="NSMenuItem" id="637691359">
+ <reference key="NSMenu" ref="1025665732"/>
+ <string key="NSTitle">Playlist</string>
+ <string key="NSKeyEquiv">P</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ </object>
+ <object class="NSMenuItem" id="516714774">
+ <reference key="NSMenu" ref="1025665732"/>
+ <string key="NSTitle">Media Information...</string>
+ <string key="NSKeyEquiv">i</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ </object>
+ <object class="NSMenuItem" id="31004995">
+ <reference key="NSMenu" ref="1025665732"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ </object>
+ <object class="NSMenuItem" id="393208518">
+ <reference key="NSMenu" ref="1025665732"/>
+ <string key="NSTitle">Extended Controls...</string>
+ <string key="NSKeyEquiv">e</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ </object>
+ <object class="NSMenuItem" id="503691183">
+ <reference key="NSMenu" ref="1025665732"/>
+ <string key="NSTitle">Equalizer...</string>
+ <string key="NSKeyEquiv">E</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ </object>
+ <object class="NSMenuItem" id="182202833">
+ <reference key="NSMenu" ref="1025665732"/>
+ <string key="NSTitle">Bookmarks...</string>
+ <string key="NSKeyEquiv">b</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ </object>
+ <object class="NSMenuItem" id="922152436">
+ <reference key="NSMenu" ref="1025665732"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ </object>
+ <object class="NSMenuItem" id="38567893">
+ <reference key="NSMenu" ref="1025665732"/>
+ <string key="NSTitle">Errors and Warnings...</string>
+ <string key="NSKeyEquiv">m</string>
+ <int key="NSKeyEquivModMask">1310720</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ </object>
+ <object class="NSMenuItem" id="430928281">
+ <reference key="NSMenu" ref="1025665732"/>
+ <string key="NSTitle">Messages...</string>
+ <string key="NSKeyEquiv">M</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ </object>
+ <object class="NSMenuItem" id="144260886">
+ <reference key="NSMenu" ref="1025665732"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ </object>
+ <object class="NSMenuItem" id="628291570">
+ <reference key="NSMenu" ref="1025665732"/>
+ <string key="NSTitle">Bring All to Front</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ </object>
+ </object>
+ <string key="NSName">_NSWindowsMenu</string>
+ </object>
+ </object>
+ <object class="NSMenuItem" id="369761369">
+ <reference key="NSMenu" ref="418576523"/>
+ <string key="NSTitle">Help</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="460963352">
+ <string key="NSTitle">Help</string>
+ <object class="NSMutableArray" key="NSMenuItems">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMenuItem" id="776489378">
+ <reference key="NSMenu" ref="460963352"/>
+ <string key="NSTitle">VLC media player Help</string>
+ <string key="NSKeyEquiv">?</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ </object>
+ <object class="NSMenuItem" id="486754137">
+ <reference key="NSMenu" ref="460963352"/>
+ <string key="NSTitle">ReadMe / FAQ...</string>
+ <string key="NSKeyEquiv">?</string>
+ <int key="NSKeyEquivModMask">1572864</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ </object>
+ <object class="NSMenuItem" id="564289307">
+ <reference key="NSMenu" ref="460963352"/>
+ <string key="NSTitle">Licence</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ </object>
+ <object class="NSMenuItem" id="187445983">
+ <reference key="NSMenu" ref="460963352"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ </object>
+ <object class="NSMenuItem" id="522232226">
+ <reference key="NSMenu" ref="460963352"/>
+ <string key="NSTitle">Online Documentation...</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ </object>
+ <object class="NSMenuItem" id="419703734">
+ <reference key="NSMenu" ref="460963352"/>
+ <string key="NSTitle">Online Forum...</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ </object>
+ <object class="NSMenuItem" id="775892995">
+ <reference key="NSMenu" ref="460963352"/>
+ <string key="NSTitle">Make a Donation...</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ </object>
+ <object class="NSMenuItem" id="681241442">
+ <reference key="NSMenu" ref="460963352"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ </object>
+ <object class="NSMenuItem" id="510819606">
+ <reference key="NSMenu" ref="460963352"/>
+ <string key="NSTitle">VideoLAN Website</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ <string key="NSName">_NSMainMenu</string>
+ </object>
+ <object class="NSCustomObject" id="382099807">
+ <string key="NSClassName">VLCMain</string>
+ </object>
+ <object class="NSCustomObject" id="24216389">
+ <string key="NSClassName">VLCPlaylist</string>
+ </object>
+ <object class="NSCustomObject" id="318538144">
+ <string key="NSClassName">VLCControls</string>
+ </object>
+ <object class="NSWindowTemplate" id="823854124">
+ <int key="NSWindowStyleMask">27</int>
+ <int key="NSWindowBacking">2</int>
+ <string key="NSWindowRect">{{316, 323}, {599, 368}}</string>
+ <int key="NSWTFlags">-260571136</int>
+ <string key="NSWindowTitle">Messages</string>
+ <string key="NSWindowClass">NSPanel</string>
+ <object class="NSMutableString" key="NSViewClass">
+ <characters key="NS.bytes">View</characters>
+ </object>
+ <string key="NSWindowContentMaxSize">{3.40282e+38, 3.40282e+38}</string>
+ <string key="NSWindowContentMinSize">{599, 368}</string>
+ <object class="NSView" key="NSWindowView" id="980573178">
+ <nil key="NSNextResponder"/>
+ <int key="NSvFlags">256</int>
+ <object class="NSMutableArray" key="NSSubviews">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSButton" id="69119256">
+ <reference key="NSNextResponder" ref="980573178"/>
+ <int key="NSvFlags">292</int>
+ <string key="NSFrame">{{15, 12}, {185, 28}}</string>
+ <reference key="NSSuperview" ref="980573178"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSButtonCell" key="NSCell" id="563652351">
+ <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags2">138018816</int>
+ <string key="NSContents">Open CrashLog...</string>
+ <object class="NSFont" key="NSSupport" id="26">
+ <string key="NSName">LucidaGrande</string>
+ <double key="NSSize">1.100000e+01</double>
+ <int key="NSfFlags">3100</int>
+ </object>
+ <reference key="NSControlView" ref="69119256"/>
+ <int key="NSButtonFlags">-2038284033</int>
+ <int key="NSButtonFlags2">1</int>
+ <object class="NSFont" key="NSAlternateImage" id="947581050">
+ <string key="NSName">Helvetica</string>
+ <double key="NSSize">1.100000e+01</double>
+ <int key="NSfFlags">16</int>
+ </object>
+ <string key="NSAlternateContents"/>
+ <object class="NSMutableString" key="NSKeyEquivalent">
+ <characters key="NS.bytes"/>
+ </object>
+ <int key="NSPeriodicDelay">200</int>
+ <int key="NSPeriodicInterval">25</int>
+ </object>
+ </object>
+ <object class="NSScrollView" id="302195131">
+ <reference key="NSNextResponder" ref="980573178"/>
+ <int key="NSvFlags">274</int>
+ <object class="NSMutableArray" key="NSSubviews">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSClipView" id="341241234">
+ <reference key="NSNextResponder" ref="302195131"/>
+ <int key="NSvFlags">2304</int>
+ <object class="NSMutableArray" key="NSSubviews">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSTextView" id="324354779">
+ <reference key="NSNextResponder" ref="341241234"/>
+ <int key="NSvFlags">2322</int>
+ <string key="NSFrameSize">{557, 14}</string>
+ <reference key="NSSuperview" ref="341241234"/>
+ <object class="NSTextContainer" key="NSTextContainer" id="748594020">
+ <object class="NSLayoutManager" key="NSLayoutManager">
+ <object class="NSTextStorage" key="NSTextStorage">
+ <object class="NSMutableString" key="NSString">
+ <characters key="NS.bytes"/>
+ </object>
+ <nil key="NSDelegate"/>
+ </object>
+ <object class="NSMutableArray" key="NSTextContainers">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="748594020"/>
+ </object>
+ <int key="NSLMFlags">6</int>
+ <nil key="NSDelegate"/>
+ </object>
+ <reference key="NSTextView" ref="324354779"/>
+ <double key="NSWidth">5.570000e+02</double>
+ <int key="NSTCFlags">1</int>
+ </object>
+ <object class="NSTextViewSharedData" key="NSSharedData">
+ <int key="NSFlags">11111</int>
+ <object class="NSColor" key="NSBackgroundColor" id="319354967">
+ <int key="NSColorSpace">3</int>
+ <bytes key="NSWhite">MAA</bytes>
+ <object class="NSColorSpace" key="NSCustomColorSpace">
+ <int key="NSID">2</int>
+ </object>
+ </object>
+ <object class="NSColor" key="NSInsertionColor" id="450125846">
+ <int key="NSColorSpace">3</int>
+ <bytes key="NSWhite">MAA</bytes>
+ </object>
+ <object class="NSDictionary" key="NSSelectedAttributes">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMutableArray" key="dict.sortedKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>NSBackgroundColor</string>
+ <string>NSColor</string>
+ </object>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSColor" id="912805975">
+ <int key="NSColorSpace">6</int>
+ <string key="NSCatalogName">System</string>
+ <string key="NSColorName">selectedTextBackgroundColor</string>
+ <object class="NSColor" key="NSColor" id="30825724">
+ <int key="NSColorSpace">3</int>
+ <bytes key="NSWhite">MC42NjY2NjY2OQA</bytes>
+ </object>
+ </object>
+ <object class="NSColor" id="421363063">
+ <int key="NSColorSpace">6</int>
+ <string key="NSCatalogName">System</string>
+ <string key="NSColorName">selectedTextColor</string>
+ <reference key="NSColor" ref="450125846"/>
+ </object>
+ </object>
+ </object>
+ <nil key="NSMarkedAttributes"/>
+ <object class="NSDictionary" key="NSLinkAttributes">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMutableArray" key="dict.sortedKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>NSColor</string>
+ <string>NSUnderline</string>
+ </object>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSColor" id="624757525">
+ <int key="NSColorSpace">1</int>
+ <bytes key="NSRGB">MCAwIDEAA</bytes>
+ </object>
+ <integer value="1" id="9"/>
+ </object>
+ </object>
+ <nil key="NSDefaultParagraphStyle"/>
+ </object>
+ <int key="NSTVFlags">6</int>
+ <string key="NSMaxSize">{1116, 1e+07}</string>
+ <string key="NSMinize">{114, 0}</string>
+ <nil key="NSDelegate"/>
+ </object>
+ </object>
+ <string key="NSFrame">{{1, 1}, {557, 302}}</string>
+ <reference key="NSSuperview" ref="302195131"/>
+ <reference key="NSNextKeyView" ref="324354779"/>
+ <reference key="NSDocView" ref="324354779"/>
+ <reference key="NSBGColor" ref="319354967"/>
+ <object class="NSCursor" key="NSCursor" id="917748049">
+ <string key="NSHotSpot">{4, -5}</string>
+ <int key="NSCursorType">1</int>
+ </object>
+ <int key="NScvFlags">4</int>
+ </object>
+ <object class="NSScroller" id="397745312">
+ <reference key="NSNextResponder" ref="302195131"/>
+ <int key="NSvFlags">-2147483392</int>
+ <string key="NSFrame">{{547, 1}, {11, 302}}</string>
+ <reference key="NSSuperview" ref="302195131"/>
+ <int key="NSsFlags">256</int>
+ <reference key="NSTarget" ref="302195131"/>
+ <string key="NSAction">_doScroller:</string>
+ <double key="NSPercent">9.466667e-01</double>
+ </object>
+ <object class="NSScroller" id="697955022">
+ <reference key="NSNextResponder" ref="302195131"/>
+ <int key="NSvFlags">256</int>
+ <string key="NSFrame">{{-100, -100}, {87, 18}}</string>
+ <reference key="NSSuperview" ref="302195131"/>
+ <int key="NSsFlags">257</int>
+ <reference key="NSTarget" ref="302195131"/>
+ <string key="NSAction">_doScroller:</string>
+ <double key="NSCurValue">1.000000e+00</double>
+ <double key="NSPercent">9.456522e-01</double>
+ </object>
+ </object>
+ <string key="NSFrame">{{20, 44}, {559, 304}}</string>
+ <reference key="NSSuperview" ref="980573178"/>
+ <reference key="NSNextKeyView" ref="341241234"/>
+ <int key="NSsFlags">530</int>
+ <reference key="NSVScroller" ref="397745312"/>
+ <reference key="NSHScroller" ref="697955022"/>
+ <reference key="NSContentView" ref="341241234"/>
+ </object>
+ <object class="NSButton" id="186669625">
+ <reference key="NSNextResponder" ref="980573178"/>
+ <int key="NSvFlags">292</int>
+ <string key="NSFrame">{{198, 12}, {185, 28}}</string>
+ <reference key="NSSuperview" ref="980573178"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSButtonCell" key="NSCell" id="436035719">
+ <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags2">138018816</int>
+ <string key="NSContents">Save this Log...</string>
+ <reference key="NSSupport" ref="26"/>
+ <reference key="NSControlView" ref="186669625"/>
+ <int key="NSButtonFlags">-2038284033</int>
+ <int key="NSButtonFlags2">1</int>
+ <reference key="NSAlternateImage" ref="947581050"/>
+ <string key="NSAlternateContents"/>
+ <object class="NSMutableString" key="NSKeyEquivalent">
+ <characters key="NS.bytes"/>
+ </object>
+ <int key="NSPeriodicDelay">200</int>
+ <int key="NSPeriodicInterval">25</int>
+ </object>
+ </object>
+ </object>
+ <string key="NSFrameSize">{599, 368}</string>
+ </object>
+ <string key="NSScreenRect">{{0, 0}, {1280, 778}}</string>
+ <string key="NSMinSize">{599, 384}</string>
+ <string key="NSMaxSize">{3.40282e+38, 3.40282e+38}</string>
+ <string key="NSFrameAutosaveName">messages</string>
+ </object>
+ <object class="NSMenu" id="706439287">
+ <string key="NSTitle">Menu</string>
+ <object class="NSMutableArray" key="NSMenuItems">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMenuItem" id="756063005">
+ <reference key="NSMenu" ref="706439287"/>
+ <string key="NSTitle">Play</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ </object>
+ <object class="NSMenuItem" id="790110625">
+ <reference key="NSMenu" ref="706439287"/>
+ <string key="NSTitle">Delete</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ </object>
+ <object class="NSMenuItem" id="557204355">
+ <reference key="NSMenu" ref="706439287"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ </object>
+ <object class="NSMenuItem" id="955908279">
+ <reference key="NSMenu" ref="706439287"/>
+ <string key="NSTitle">Select All</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ </object>
+ <object class="NSMenuItem" id="727902293">
+ <reference key="NSMenu" ref="706439287"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ </object>
+ <object class="NSMenuItem" id="964291666">
+ <reference key="NSMenu" ref="706439287"/>
+ <string key="NSTitle">Expand Node</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ </object>
+ <object class="NSMenuItem" id="27415373">
+ <reference key="NSMenu" ref="706439287"/>
+ <string key="NSTitle">Sort Node by Name</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ </object>
+ <object class="NSMenuItem" id="248396863">
+ <reference key="NSMenu" ref="706439287"/>
+ <string key="NSTitle">Sort Node by Author</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ </object>
+ <object class="NSMenuItem" id="337194576">
+ <reference key="NSMenu" ref="706439287"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ </object>
+ <object class="NSMenuItem" id="551538279">
+ <reference key="NSMenu" ref="706439287"/>
+ <string key="NSTitle">Media Information...</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ </object>
+ <object class="NSMenuItem" id="921889912">
+ <reference key="NSMenu" ref="706439287"/>
+ <string key="NSTitle">Preparse</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ </object>
+ <object class="NSMenuItem" id="765776829">
+ <reference key="NSMenu" ref="706439287"/>
+ <string key="NSTitle">Download Cover Art</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ </object>
+ <object class="NSMenuItem" id="630285862">
+ <reference key="NSMenu" ref="706439287"/>
+ <string key="NSTitle">Reveal in Finder</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ </object>
+ <object class="NSMenuItem" id="701464241">
+ <reference key="NSMenu" ref="706439287"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ </object>
+ <object class="NSMenuItem" id="525722413">
+ <reference key="NSMenu" ref="706439287"/>
+ <string key="NSTitle">Services discovery</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ <string key="NSAction">submenuAction:</string>
+ <object class="NSMenu" key="NSSubmenu" id="770628089">
+ <string key="NSTitle">Services discovery</string>
+ <object class="NSMutableArray" key="NSMenuItems">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ </object>
+ </object>
+ </object>
+ </object>
+ <string key="NSName"/>
+ <bool key="NSNoAutoenable">YES</bool>
+ </object>
+ <object class="NSMenu" id="1007233550">
+ <string key="NSTitle">Menu</string>
+ <object class="NSMutableArray" key="NSMenuItems">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMenuItem" id="922081782">
+ <reference key="NSMenu" ref="1007233550"/>
+ <string key="NSTitle">Play/Pause</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ </object>
+ <object class="NSMenuItem" id="544588932">
+ <reference key="NSMenu" ref="1007233550"/>
+ <string key="NSTitle">Stop</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ </object>
+ <object class="NSMenuItem" id="368196573">
+ <reference key="NSMenu" ref="1007233550"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ </object>
+ <object class="NSMenuItem" id="691057347">
+ <reference key="NSMenu" ref="1007233550"/>
+ <string key="NSTitle">Previous</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ </object>
+ <object class="NSMenuItem" id="899612189">
+ <reference key="NSMenu" ref="1007233550"/>
+ <string key="NSTitle">Next</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ </object>
+ <object class="NSMenuItem" id="576310906">
+ <reference key="NSMenu" ref="1007233550"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ </object>
+ <object class="NSMenuItem" id="1031342069">
+ <reference key="NSMenu" ref="1007233550"/>
+ <string key="NSTitle">Mute</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ </object>
+ </object>
+ <string key="NSName"/>
+ </object>
+ <object class="NSWindowTemplate" id="637592058">
+ <int key="NSWindowStyleMask">263</int>
+ <int key="NSWindowBacking">2</int>
+ <string key="NSWindowRect">{{77, 362}, {410, 192}}</string>
+ <int key="NSWTFlags">1886912512</int>
+ <string key="NSWindowTitle">Equalizer</string>
+ <string key="NSWindowClass">NSWindow</string>
+ <object class="NSMutableString" key="NSViewClass">
+ <characters key="NS.bytes">View</characters>
+ </object>
+ <string key="NSWindowContentMaxSize">{3.40282e+38, 3.40282e+38}</string>
+ <object class="NSView" key="NSWindowView" id="31158000">
+ <nil key="NSNextResponder"/>
+ <int key="NSvFlags">256</int>
+ <object class="NSMutableArray" key="NSSubviews">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSButton" id="856725620">
+ <reference key="NSNextResponder" ref="31158000"/>
+ <int key="NSvFlags">256</int>
+ <string key="NSFrame">{{17, 161}, {80, 18}}</string>
+ <reference key="NSSuperview" ref="31158000"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSButtonCell" key="NSCell" id="1041816680">
+ <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags2">131072</int>
+ <string key="NSContents">Enable</string>
+ <reference key="NSSupport" ref="26"/>
+ <reference key="NSControlView" ref="856725620"/>
+ <int key="NSButtonFlags">1211912703</int>
+ <int key="NSButtonFlags2">2</int>
+ <object class="NSCustomResource" key="NSNormalImage" id="449731525">
+ <string key="NSClassName">NSImage</string>
+ <string key="NSResourceName">NSSwitch</string>
+ </object>
+ <object class="NSButtonImageSource" key="NSAlternateImage" id="698379195">
+ <string key="NSImageName">NSSwitch</string>
+ </object>
+ <string key="NSAlternateContents"/>
+ <string key="NSKeyEquivalent"/>
+ <int key="NSPeriodicDelay">200</int>
+ <int key="NSPeriodicInterval">25</int>
+ </object>
+ </object>
+ <object class="NSButton" id="389932505">
+ <reference key="NSNextResponder" ref="31158000"/>
+ <int key="NSvFlags">256</int>
+ <string key="NSFrame">{{109, 161}, {88, 18}}</string>
+ <reference key="NSSuperview" ref="31158000"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSButtonCell" key="NSCell" id="91233575">
+ <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags2">131072</int>
+ <string key="NSContents">2 Pass</string>
+ <reference key="NSSupport" ref="26"/>
+ <reference key="NSControlView" ref="389932505"/>
+ <int key="NSButtonFlags">1211912703</int>
+ <int key="NSButtonFlags2">2</int>
+ <reference key="NSNormalImage" ref="449731525"/>
+ <reference key="NSAlternateImage" ref="698379195"/>
+ <string key="NSAlternateContents"/>
+ <string key="NSKeyEquivalent"/>
+ <int key="NSPeriodicDelay">200</int>
+ <int key="NSPeriodicInterval">25</int>
+ </object>
+ </object>
+ <object class="NSSlider" id="100696607">
+ <reference key="NSNextResponder" ref="31158000"/>
+ <int key="NSvFlags">256</int>
+ <string key="NSFrame">{{19, 41}, {19, 101}}</string>
+ <reference key="NSSuperview" ref="31158000"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSSliderCell" key="NSCell" id="94840609">
+ <int key="NSCellFlags">67501824</int>
+ <int key="NSCellFlags2">131072</int>
+ <object class="NSMutableString" key="NSContents">
+ <characters key="NS.bytes"/>
+ </object>
+ <reference key="NSSupport" ref="854546163"/>
+ <reference key="NSControlView" ref="100696607"/>
+ <double key="NSMaxValue">2.000000e+01</double>
+ <double key="NSMinValue">-2.000000e+01</double>
+ <double key="NSValue">0.000000e+00</double>
+ <double key="NSAltIncValue">0.000000e+00</double>
+ <int key="NSNumberOfTickMarks">9</int>
+ <int key="NSTickMarkPosition">0</int>
+ <bool key="NSAllowsTickMarkValuesOnly">NO</bool>
+ <bool key="NSVertical">YES</bool>
+ </object>
+ </object>
+ <object class="NSTextField" id="1018982592">
+ <reference key="NSNextResponder" ref="31158000"/>
+ <int key="NSvFlags">256</int>
+ <string key="NSFrame">{{34, 129}, {48, 14}}</string>
+ <reference key="NSSuperview" ref="31158000"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSTextFieldCell" key="NSCell" id="489962118">
+ <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags2">71303168</int>
+ <string key="NSContents">+20 dB</string>
+ <reference key="NSSupport" ref="26"/>
+ <reference key="NSControlView" ref="1018982592"/>
+ <object class="NSColor" key="NSBackgroundColor" id="761806114">
+ <int key="NSColorSpace">6</int>
+ <string key="NSCatalogName">System</string>
+ <string key="NSColorName">controlColor</string>
+ <reference key="NSColor" ref="30825724"/>
+ </object>
+ <object class="NSColor" key="NSTextColor" id="1070214203">
+ <int key="NSColorSpace">6</int>
+ <string key="NSCatalogName">System</string>
+ <string key="NSColorName">controlTextColor</string>
+ <reference key="NSColor" ref="450125846"/>
+ </object>
+ </object>
+ </object>
+ <object class="NSTextField" id="486432015">
+ <reference key="NSNextResponder" ref="31158000"/>
+ <int key="NSvFlags">256</int>
+ <string key="NSFrame">{{34, 85}, {48, 14}}</string>
+ <reference key="NSSuperview" ref="31158000"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSTextFieldCell" key="NSCell" id="518307826">
+ <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags2">71303168</int>
+ <string key="NSContents">0 dB</string>
+ <reference key="NSSupport" ref="26"/>
+ <reference key="NSControlView" ref="486432015"/>
+ <reference key="NSBackgroundColor" ref="761806114"/>
+ <reference key="NSTextColor" ref="1070214203"/>
+ </object>
+ </object>
+ <object class="NSTextField" id="585841044">
+ <reference key="NSNextResponder" ref="31158000"/>
+ <int key="NSvFlags">256</int>
+ <string key="NSFrame">{{34, 42}, {48, 14}}</string>
+ <reference key="NSSuperview" ref="31158000"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSTextFieldCell" key="NSCell" id="693398061">
+ <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags2">71303168</int>
+ <string key="NSContents">-20 dB</string>
+ <reference key="NSSupport" ref="26"/>
+ <reference key="NSControlView" ref="585841044"/>
+ <reference key="NSBackgroundColor" ref="761806114"/>
+ <reference key="NSTextColor" ref="1070214203"/>
+ </object>
+ </object>
+ <object class="NSTextField" id="42332195">
+ <reference key="NSNextResponder" ref="31158000"/>
+ <int key="NSvFlags">256</int>
+ <string key="NSFrame">{{17, 20}, {81, 14}}</string>
+ <reference key="NSSuperview" ref="31158000"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSTextFieldCell" key="NSCell" id="578184582">
+ <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags2">138412032</int>
+ <string key="NSContents">Preamp</string>
+ <reference key="NSSupport" ref="26"/>
+ <reference key="NSControlView" ref="42332195"/>
+ <reference key="NSBackgroundColor" ref="761806114"/>
+ <reference key="NSTextColor" ref="1070214203"/>
+ </object>
+ </object>
+ <object class="NSSlider" id="775133895">
+ <reference key="NSNextResponder" ref="31158000"/>
+ <int key="NSvFlags">256</int>
+ <string key="NSFrame">{{111, 41}, {19, 101}}</string>
+ <reference key="NSSuperview" ref="31158000"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSSliderCell" key="NSCell" id="210711359">
+ <int key="NSCellFlags">67501824</int>
+ <int key="NSCellFlags2">131072</int>
+ <object class="NSMutableString" key="NSContents">
+ <characters key="NS.bytes"/>
+ </object>
+ <reference key="NSSupport" ref="854546163"/>
+ <reference key="NSControlView" ref="775133895"/>
+ <double key="NSMaxValue">2.000000e+01</double>
+ <double key="NSMinValue">-2.000000e+01</double>
+ <double key="NSValue">0.000000e+00</double>
+ <double key="NSAltIncValue">0.000000e+00</double>
+ <int key="NSNumberOfTickMarks">9</int>
+ <int key="NSTickMarkPosition">0</int>
+ <bool key="NSAllowsTickMarkValuesOnly">NO</bool>
+ <bool key="NSVertical">YES</bool>
+ </object>
+ </object>
+ <object class="NSTextField" id="537762953">
+ <reference key="NSNextResponder" ref="31158000"/>
+ <int key="NSvFlags">256</int>
+ <string key="NSFrame">{{106, 20}, {22, 14}}</string>
+ <reference key="NSSuperview" ref="31158000"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSTextFieldCell" key="NSCell" id="1058587874">
+ <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags2">138412032</int>
+ <string key="NSContents">60</string>
+ <reference key="NSSupport" ref="26"/>
+ <reference key="NSControlView" ref="537762953"/>
+ <reference key="NSBackgroundColor" ref="761806114"/>
+ <reference key="NSTextColor" ref="1070214203"/>
+ </object>
+ </object>
+ <object class="NSTextField" id="503294547">
+ <reference key="NSNextResponder" ref="31158000"/>
+ <int key="NSvFlags">256</int>
+ <string key="NSFrame">{{130, 20}, {29, 14}}</string>
+ <reference key="NSSuperview" ref="31158000"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSTextFieldCell" key="NSCell" id="527524967">
+ <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags2">138412032</int>
+ <string key="NSContents">170</string>
+ <reference key="NSSupport" ref="26"/>
+ <reference key="NSControlView" ref="503294547"/>
+ <reference key="NSBackgroundColor" ref="761806114"/>
+ <reference key="NSTextColor" ref="1070214203"/>
+ </object>
+ </object>
+ <object class="NSSlider" id="681963250">
+ <reference key="NSNextResponder" ref="31158000"/>
+ <int key="NSvFlags">256</int>
+ <string key="NSFrame">{{140, 41}, {19, 101}}</string>
+ <reference key="NSSuperview" ref="31158000"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSSliderCell" key="NSCell" id="30839266">
+ <int key="NSCellFlags">67501824</int>
+ <int key="NSCellFlags2">131072</int>
+ <object class="NSMutableString" key="NSContents">
+ <characters key="NS.bytes"/>
+ </object>
+ <reference key="NSSupport" ref="854546163"/>
+ <reference key="NSControlView" ref="681963250"/>
+ <double key="NSMaxValue">2.000000e+01</double>
+ <double key="NSMinValue">-2.000000e+01</double>
+ <double key="NSValue">0.000000e+00</double>
+ <double key="NSAltIncValue">0.000000e+00</double>
+ <int key="NSNumberOfTickMarks">9</int>
+ <int key="NSTickMarkPosition">0</int>
+ <bool key="NSAllowsTickMarkValuesOnly">NO</bool>
+ <bool key="NSVertical">YES</bool>
+ </object>
+ </object>
+ <object class="NSSlider" id="606881209">
+ <reference key="NSNextResponder" ref="31158000"/>
+ <int key="NSvFlags">256</int>
+ <string key="NSFrame">{{169, 41}, {19, 101}}</string>
+ <reference key="NSSuperview" ref="31158000"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSSliderCell" key="NSCell" id="633078664">
+ <int key="NSCellFlags">67501824</int>
+ <int key="NSCellFlags2">131072</int>
+ <object class="NSMutableString" key="NSContents">
+ <characters key="NS.bytes"/>
+ </object>
+ <reference key="NSSupport" ref="854546163"/>
+ <reference key="NSControlView" ref="606881209"/>
+ <double key="NSMaxValue">2.000000e+01</double>
+ <double key="NSMinValue">-2.000000e+01</double>
+ <double key="NSValue">0.000000e+00</double>
+ <double key="NSAltIncValue">0.000000e+00</double>
+ <int key="NSNumberOfTickMarks">9</int>
+ <int key="NSTickMarkPosition">0</int>
+ <bool key="NSAllowsTickMarkValuesOnly">NO</bool>
+ <bool key="NSVertical">YES</bool>
+ </object>
+ </object>
+ <object class="NSSlider" id="805488678">
+ <reference key="NSNextResponder" ref="31158000"/>
+ <int key="NSvFlags">256</int>
+ <string key="NSFrame">{{198, 41}, {19, 101}}</string>
+ <reference key="NSSuperview" ref="31158000"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSSliderCell" key="NSCell" id="349135795">
+ <int key="NSCellFlags">67501824</int>
+ <int key="NSCellFlags2">131072</int>
+ <object class="NSMutableString" key="NSContents">
+ <characters key="NS.bytes"/>
+ </object>
+ <reference key="NSSupport" ref="854546163"/>
+ <reference key="NSControlView" ref="805488678"/>
+ <double key="NSMaxValue">2.000000e+01</double>
+ <double key="NSMinValue">-2.000000e+01</double>
+ <double key="NSValue">0.000000e+00</double>
+ <double key="NSAltIncValue">0.000000e+00</double>
+ <int key="NSNumberOfTickMarks">9</int>
+ <int key="NSTickMarkPosition">0</int>
+ <bool key="NSAllowsTickMarkValuesOnly">NO</bool>
+ <bool key="NSVertical">YES</bool>
+ </object>
+ </object>
+ <object class="NSTextField" id="1023203485">
+ <reference key="NSNextResponder" ref="31158000"/>
+ <int key="NSvFlags">256</int>
+ <string key="NSFrame">{{188, 20}, {29, 14}}</string>
+ <reference key="NSSuperview" ref="31158000"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSTextFieldCell" key="NSCell" id="723253094">
+ <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags2">138412032</int>
+ <string key="NSContents">600</string>
+ <reference key="NSSupport" ref="26"/>
+ <reference key="NSControlView" ref="1023203485"/>
+ <reference key="NSBackgroundColor" ref="761806114"/>
+ <reference key="NSTextColor" ref="1070214203"/>
+ </object>
+ </object>
+ <object class="NSTextField" id="281733404">
+ <reference key="NSNextResponder" ref="31158000"/>
+ <int key="NSvFlags">256</int>
+ <string key="NSFrame">{{159, 20}, {29, 14}}</string>
+ <reference key="NSSuperview" ref="31158000"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSTextFieldCell" key="NSCell" id="484817151">
+ <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags2">138412032</int>
+ <string key="NSContents">310</string>
+ <reference key="NSSupport" ref="26"/>
+ <reference key="NSControlView" ref="281733404"/>
+ <reference key="NSBackgroundColor" ref="761806114"/>
+ <reference key="NSTextColor" ref="1070214203"/>
+ </object>
+ </object>
+ <object class="NSTextField" id="56101633">
+ <reference key="NSNextResponder" ref="31158000"/>
+ <int key="NSvFlags">256</int>
+ <string key="NSFrame">{{222, 20}, {23, 14}}</string>
+ <reference key="NSSuperview" ref="31158000"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSTextFieldCell" key="NSCell" id="81585957">
+ <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags2">138412032</int>
+ <string key="NSContents">1K</string>
+ <reference key="NSSupport" ref="26"/>
+ <reference key="NSControlView" ref="56101633"/>
+ <reference key="NSBackgroundColor" ref="761806114"/>
+ <reference key="NSTextColor" ref="1070214203"/>
+ </object>
+ </object>
+ <object class="NSSlider" id="399585508">
+ <reference key="NSNextResponder" ref="31158000"/>
+ <int key="NSvFlags">256</int>
+ <string key="NSFrame">{{310, 41}, {23, 101}}</string>
+ <reference key="NSSuperview" ref="31158000"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSSliderCell" key="NSCell" id="59687778">
+ <int key="NSCellFlags">67501824</int>
+ <int key="NSCellFlags2">131072</int>
+ <object class="NSMutableString" key="NSContents">
+ <characters key="NS.bytes"/>
+ </object>
+ <reference key="NSSupport" ref="854546163"/>
+ <reference key="NSControlView" ref="399585508"/>
+ <double key="NSMaxValue">2.000000e+01</double>
+ <double key="NSMinValue">-2.000000e+01</double>
+ <double key="NSValue">0.000000e+00</double>
+ <double key="NSAltIncValue">0.000000e+00</double>
+ <int key="NSNumberOfTickMarks">9</int>
+ <int key="NSTickMarkPosition">0</int>
+ <bool key="NSAllowsTickMarkValuesOnly">NO</bool>
+ <bool key="NSVertical">YES</bool>
+ </object>
+ </object>
+ <object class="NSTextField" id="601085374">
+ <reference key="NSNextResponder" ref="31158000"/>
+ <int key="NSvFlags">256</int>
+ <string key="NSFrame">{{303, 20}, {30, 14}}</string>
+ <reference key="NSSuperview" ref="31158000"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSTextFieldCell" key="NSCell" id="316548890">
+ <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags2">138412032</int>
+ <string key="NSContents">12K</string>
+ <reference key="NSSupport" ref="26"/>
+ <reference key="NSControlView" ref="601085374"/>
+ <reference key="NSBackgroundColor" ref="761806114"/>
+ <reference key="NSTextColor" ref="1070214203"/>
+ </object>
+ </object>
+ <object class="NSSlider" id="453843947">
+ <reference key="NSNextResponder" ref="31158000"/>
+ <int key="NSvFlags">256</int>
+ <string key="NSFrame">{{227, 41}, {19, 101}}</string>
+ <reference key="NSSuperview" ref="31158000"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSSliderCell" key="NSCell" id="289161762">
+ <int key="NSCellFlags">67501824</int>
+ <int key="NSCellFlags2">131072</int>
+ <object class="NSMutableString" key="NSContents">
+ <characters key="NS.bytes"/>
+ </object>
+ <reference key="NSSupport" ref="854546163"/>
+ <reference key="NSControlView" ref="453843947"/>
+ <double key="NSMaxValue">2.000000e+01</double>
+ <double key="NSMinValue">-2.000000e+01</double>
+ <double key="NSValue">0.000000e+00</double>
+ <double key="NSAltIncValue">0.000000e+00</double>
+ <int key="NSNumberOfTickMarks">9</int>
+ <int key="NSTickMarkPosition">0</int>
+ <bool key="NSAllowsTickMarkValuesOnly">NO</bool>
+ <bool key="NSVertical">YES</bool>
+ </object>
+ </object>
+ <object class="NSSlider" id="23798705">
+ <reference key="NSNextResponder" ref="31158000"/>
+ <int key="NSvFlags">256</int>
+ <string key="NSFrame">{{256, 41}, {19, 101}}</string>
+ <reference key="NSSuperview" ref="31158000"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSSliderCell" key="NSCell" id="877466644">
+ <int key="NSCellFlags">67501824</int>
+ <int key="NSCellFlags2">131072</int>
+ <object class="NSMutableString" key="NSContents">
+ <characters key="NS.bytes"/>
+ </object>
+ <reference key="NSSupport" ref="854546163"/>
+ <reference key="NSControlView" ref="23798705"/>
+ <double key="NSMaxValue">2.000000e+01</double>
+ <double key="NSMinValue">-2.000000e+01</double>
+ <double key="NSValue">0.000000e+00</double>
+ <double key="NSAltIncValue">0.000000e+00</double>
+ <int key="NSNumberOfTickMarks">9</int>
+ <int key="NSTickMarkPosition">0</int>
+ <bool key="NSAllowsTickMarkValuesOnly">NO</bool>
+ <bool key="NSVertical">YES</bool>
+ </object>
+ </object>
+ <object class="NSTextField" id="787753999">
+ <reference key="NSNextResponder" ref="31158000"/>
+ <int key="NSvFlags">256</int>
+ <string key="NSFrame">{{249, 20}, {23, 14}}</string>
+ <reference key="NSSuperview" ref="31158000"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSTextFieldCell" key="NSCell" id="842782135">
+ <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags2">138412032</int>
+ <string key="NSContents">3K</string>
+ <reference key="NSSupport" ref="26"/>
+ <reference key="NSControlView" ref="787753999"/>
+ <reference key="NSBackgroundColor" ref="761806114"/>
+ <reference key="NSTextColor" ref="1070214203"/>
+ </object>
+ </object>
+ <object class="NSSlider" id="327681174">
+ <reference key="NSNextResponder" ref="31158000"/>
+ <int key="NSvFlags">256</int>
+ <string key="NSFrame">{{285, 41}, {19, 101}}</string>
+ <reference key="NSSuperview" ref="31158000"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSSliderCell" key="NSCell" id="970402205">
+ <int key="NSCellFlags">67501824</int>
+ <int key="NSCellFlags2">131072</int>
+ <object class="NSMutableString" key="NSContents">
+ <characters key="NS.bytes"/>
+ </object>
+ <reference key="NSSupport" ref="854546163"/>
+ <reference key="NSControlView" ref="327681174"/>
+ <double key="NSMaxValue">2.000000e+01</double>
+ <double key="NSMinValue">-2.000000e+01</double>
+ <double key="NSValue">0.000000e+00</double>
+ <double key="NSAltIncValue">0.000000e+00</double>
+ <int key="NSNumberOfTickMarks">9</int>
+ <int key="NSTickMarkPosition">0</int>
+ <bool key="NSAllowsTickMarkValuesOnly">NO</bool>
+ <bool key="NSVertical">YES</bool>
+ </object>
+ </object>
+ <object class="NSTextField" id="730234994">
+ <reference key="NSNextResponder" ref="31158000"/>
+ <int key="NSvFlags">256</int>
+ <string key="NSFrame">{{279, 20}, {23, 14}}</string>
+ <reference key="NSSuperview" ref="31158000"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSTextFieldCell" key="NSCell" id="1064909630">
+ <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags2">138412032</int>
+ <string key="NSContents">6K</string>
+ <reference key="NSSupport" ref="26"/>
+ <reference key="NSControlView" ref="730234994"/>
+ <reference key="NSBackgroundColor" ref="761806114"/>
+ <reference key="NSTextColor" ref="1070214203"/>
+ </object>
+ </object>
+ <object class="NSTextField" id="721243726">
+ <reference key="NSNextResponder" ref="31158000"/>
+ <int key="NSvFlags">256</int>
+ <string key="NSFrame">{{334, 20}, {30, 14}}</string>
+ <reference key="NSSuperview" ref="31158000"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSTextFieldCell" key="NSCell" id="332690663">
+ <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags2">138412032</int>
+ <string key="NSContents">14K</string>
+ <reference key="NSSupport" ref="26"/>
+ <reference key="NSControlView" ref="721243726"/>
+ <reference key="NSBackgroundColor" ref="761806114"/>
+ <reference key="NSTextColor" ref="1070214203"/>
+ </object>
+ </object>
+ <object class="NSTextField" id="358838174">
+ <reference key="NSNextResponder" ref="31158000"/>
+ <int key="NSvFlags">256</int>
+ <string key="NSFrame">{{363, 20}, {30, 14}}</string>
+ <reference key="NSSuperview" ref="31158000"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSTextFieldCell" key="NSCell" id="332696099">
+ <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags2">138412032</int>
+ <string key="NSContents">16K</string>
+ <reference key="NSSupport" ref="26"/>
+ <reference key="NSControlView" ref="358838174"/>
+ <reference key="NSBackgroundColor" ref="761806114"/>
+ <reference key="NSTextColor" ref="1070214203"/>
+ </object>
+ </object>
+ <object class="NSSlider" id="513216791">
+ <reference key="NSNextResponder" ref="31158000"/>
+ <int key="NSvFlags">256</int>
+ <string key="NSFrame">{{343, 41}, {19, 101}}</string>
+ <reference key="NSSuperview" ref="31158000"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSSliderCell" key="NSCell" id="548372160">
+ <int key="NSCellFlags">67501824</int>
+ <int key="NSCellFlags2">131072</int>
+ <object class="NSMutableString" key="NSContents">
+ <characters key="NS.bytes"/>
+ </object>
+ <reference key="NSSupport" ref="854546163"/>
+ <reference key="NSControlView" ref="513216791"/>
+ <double key="NSMaxValue">2.000000e+01</double>
+ <double key="NSMinValue">-2.000000e+01</double>
+ <double key="NSValue">0.000000e+00</double>
+ <double key="NSAltIncValue">0.000000e+00</double>
+ <int key="NSNumberOfTickMarks">9</int>
+ <int key="NSTickMarkPosition">0</int>
+ <bool key="NSAllowsTickMarkValuesOnly">NO</bool>
+ <bool key="NSVertical">YES</bool>
+ </object>
+ </object>
+ <object class="NSSlider" id="37432409">
+ <reference key="NSNextResponder" ref="31158000"/>
+ <int key="NSvFlags">256</int>
+ <string key="NSFrame">{{372, 41}, {19, 101}}</string>
+ <reference key="NSSuperview" ref="31158000"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSSliderCell" key="NSCell" id="669884239">
+ <int key="NSCellFlags">67501824</int>
+ <int key="NSCellFlags2">131072</int>
+ <object class="NSMutableString" key="NSContents">
+ <characters key="NS.bytes"/>
+ </object>
+ <reference key="NSSupport" ref="854546163"/>
+ <reference key="NSControlView" ref="37432409"/>
+ <double key="NSMaxValue">2.000000e+01</double>
+ <double key="NSMinValue">-2.000000e+01</double>
+ <double key="NSValue">0.000000e+00</double>
+ <double key="NSAltIncValue">0.000000e+00</double>
+ <int key="NSNumberOfTickMarks">9</int>
+ <int key="NSTickMarkPosition">0</int>
+ <bool key="NSAllowsTickMarkValuesOnly">NO</bool>
+ <bool key="NSVertical">YES</bool>
+ </object>
+ </object>
+ <object class="NSPopUpButton" id="808568699">
+ <reference key="NSNextResponder" ref="31158000"/>
+ <int key="NSvFlags">256</int>
+ <string key="NSFrame">{{196, 158}, {155, 22}}</string>
+ <reference key="NSSuperview" ref="31158000"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSPopUpButtonCell" key="NSCell" id="891977572">
+ <int key="NSCellFlags">-2076049856</int>
+ <int key="NSCellFlags2">132096</int>
+ <reference key="NSSupport" ref="26"/>
+ <reference key="NSControlView" ref="808568699"/>
+ <int key="NSButtonFlags">109199615</int>
+ <int key="NSButtonFlags2">1</int>
+ <reference key="NSAlternateImage" ref="26"/>
+ <string key="NSAlternateContents"/>
+ <object class="NSMutableString" key="NSKeyEquivalent">
+ <characters key="NS.bytes"/>
+ </object>
+ <int key="NSPeriodicDelay">400</int>
+ <int key="NSPeriodicInterval">75</int>
+ <object class="NSMenuItem" key="NSMenuItem" id="909262309">
+ <reference key="NSMenu" ref="137852163"/>
+ <string key="NSTitle">flat</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <int key="NSState">1</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ <string key="NSAction">_popUpItemAction:</string>
+ <reference key="NSTarget" ref="891977572"/>
+ </object>
+ <bool key="NSMenuItemRespectAlignment">YES</bool>
+ <object class="NSMenu" key="NSMenu" id="137852163">
+ <object class="NSMutableString" key="NSTitle">
+ <characters key="NS.bytes">OtherViews</characters>
+ </object>
+ <object class="NSMutableArray" key="NSMenuItems">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="909262309"/>
+ <object class="NSMenuItem" id="330064520">
+ <reference key="NSMenu" ref="137852163"/>
+ <string key="NSTitle">classical</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ <string key="NSAction">_popUpItemAction:</string>
+ <reference key="NSTarget" ref="891977572"/>
+ </object>
+ <object class="NSMenuItem" id="124484592">
+ <reference key="NSMenu" ref="137852163"/>
+ <string key="NSTitle">club</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ <string key="NSAction">_popUpItemAction:</string>
+ <reference key="NSTarget" ref="891977572"/>
+ </object>
+ <object class="NSMenuItem" id="777318787">
+ <reference key="NSMenu" ref="137852163"/>
+ <string key="NSTitle">dance</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ <string key="NSAction">_popUpItemAction:</string>
+ <reference key="NSTarget" ref="891977572"/>
+ </object>
+ <object class="NSMenuItem" id="603384320">
+ <reference key="NSMenu" ref="137852163"/>
+ <string key="NSTitle">fullbass</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ <string key="NSAction">_popUpItemAction:</string>
+ <reference key="NSTarget" ref="891977572"/>
+ </object>
+ <object class="NSMenuItem" id="297892412">
+ <reference key="NSMenu" ref="137852163"/>
+ <string key="NSTitle">fullbasstreble</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ <string key="NSAction">_popUpItemAction:</string>
+ <reference key="NSTarget" ref="891977572"/>
+ </object>
+ <object class="NSMenuItem" id="204134611">
+ <reference key="NSMenu" ref="137852163"/>
+ <string key="NSTitle">fulltreble</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ <string key="NSAction">_popUpItemAction:</string>
+ <reference key="NSTarget" ref="891977572"/>
+ </object>
+ <object class="NSMenuItem" id="571505332">
+ <reference key="NSMenu" ref="137852163"/>
+ <string key="NSTitle">headphones</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ <string key="NSAction">_popUpItemAction:</string>
+ <reference key="NSTarget" ref="891977572"/>
+ </object>
+ <object class="NSMenuItem" id="652187908">
+ <reference key="NSMenu" ref="137852163"/>
+ <string key="NSTitle">largehall</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ <string key="NSAction">_popUpItemAction:</string>
+ <reference key="NSTarget" ref="891977572"/>
+ </object>
+ <object class="NSMenuItem" id="567495170">
+ <reference key="NSMenu" ref="137852163"/>
+ <string key="NSTitle">live</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ <string key="NSAction">_popUpItemAction:</string>
+ <reference key="NSTarget" ref="891977572"/>
+ </object>
+ <object class="NSMenuItem" id="461107689">
+ <reference key="NSMenu" ref="137852163"/>
+ <string key="NSTitle">party</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ <string key="NSAction">_popUpItemAction:</string>
+ <reference key="NSTarget" ref="891977572"/>
+ </object>
+ <object class="NSMenuItem" id="484554319">
+ <reference key="NSMenu" ref="137852163"/>
+ <string key="NSTitle">pop</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ <string key="NSAction">_popUpItemAction:</string>
+ <reference key="NSTarget" ref="891977572"/>
+ </object>
+ <object class="NSMenuItem" id="581334430">
+ <reference key="NSMenu" ref="137852163"/>
+ <string key="NSTitle">reggae</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ <string key="NSAction">_popUpItemAction:</string>
+ <reference key="NSTarget" ref="891977572"/>
+ </object>
+ <object class="NSMenuItem" id="811082135">
+ <reference key="NSMenu" ref="137852163"/>
+ <string key="NSTitle">rock</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ <string key="NSAction">_popUpItemAction:</string>
+ <reference key="NSTarget" ref="891977572"/>
+ </object>
+ <object class="NSMenuItem" id="809780541">
+ <reference key="NSMenu" ref="137852163"/>
+ <string key="NSTitle">ska</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ <string key="NSAction">_popUpItemAction:</string>
+ <reference key="NSTarget" ref="891977572"/>
+ </object>
+ <object class="NSMenuItem" id="979216496">
+ <reference key="NSMenu" ref="137852163"/>
+ <string key="NSTitle">soft</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ <string key="NSAction">_popUpItemAction:</string>
+ <reference key="NSTarget" ref="891977572"/>
+ </object>
+ <object class="NSMenuItem" id="470110929">
+ <reference key="NSMenu" ref="137852163"/>
+ <string key="NSTitle">softrock</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ <string key="NSAction">_popUpItemAction:</string>
+ <reference key="NSTarget" ref="891977572"/>
+ </object>
+ <object class="NSMenuItem" id="838258387">
+ <reference key="NSMenu" ref="137852163"/>
+ <string key="NSTitle">techno</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ <string key="NSAction">_popUpItemAction:</string>
+ <reference key="NSTarget" ref="891977572"/>
+ </object>
+ </object>
+ </object>
+ <int key="NSPreferredEdge">3</int>
+ <bool key="NSUsesItemFromMenu">YES</bool>
+ <bool key="NSAltersState">YES</bool>
+ <int key="NSArrowPosition">1</int>
+ </object>
+ </object>
+ </object>
+ <string key="NSFrame">{{1, 9}, {410, 192}}</string>
+ </object>
+ <string key="NSScreenRect">{{0, 0}, {1280, 778}}</string>
+ <string key="NSMaxSize">{3.40282e+38, 3.40282e+38}</string>
+ <string key="NSFrameAutosaveName">equalizer</string>
+ </object>
+ <object class="NSCustomObject" id="20369485">
+ <string key="NSClassName">VLCEqualizer</string>
+ </object>
+ <object class="NSCustomView" id="83090933">
+ <reference key="NSNextResponder"/>
+ <int key="NSvFlags">274</int>
+ <object class="NSMutableArray" key="NSSubviews">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSTextField" id="922800299">
+ <reference key="NSNextResponder" ref="83090933"/>
+ <int key="NSvFlags">290</int>
+ <string key="NSFrame">{{120, 9}, {331, 14}}</string>
+ <reference key="NSSuperview" ref="83090933"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSTextFieldCell" key="NSCell" id="55569565">
+ <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags2">138412032</int>
+ <string key="NSContents">Statusbar</string>
+ <reference key="NSSupport" ref="26"/>
+ <reference key="NSControlView" ref="922800299"/>
+ <reference key="NSBackgroundColor" ref="761806114"/>
+ <reference key="NSTextColor" ref="450125846"/>
+ </object>
+ </object>
+ <object class="NSButton" id="321952499">
+ <reference key="NSNextResponder" ref="83090933"/>
+ <int key="NSvFlags">292</int>
+ <string key="NSFrame">{{14, 5}, {33, 20}}</string>
+ <reference key="NSSuperview" ref="83090933"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSButtonCell" key="NSCell" id="634126553">
+ <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags2">134217728</int>
+ <string key="NSContents"/>
+ <object class="NSFont" key="NSSupport">
+ <string key="NSName">LucidaGrande-Bold</string>
+ <double key="NSSize">1.500000e+01</double>
+ <int key="NSfFlags">16</int>
+ </object>
+ <reference key="NSControlView" ref="321952499"/>
+ <int key="NSButtonFlags">138690815</int>
+ <int key="NSButtonFlags2">2</int>
+ <object class="NSCustomResource" key="NSNormalImage">
+ <string key="NSClassName">NSImage</string>
+ <string key="NSResourceName">add_embedded</string>
+ </object>
+ <object class="NSCustomResource" key="NSAlternateImage">
+ <string key="NSClassName">NSImage</string>
+ <string key="NSResourceName">add_embedded_blue</string>
+ </object>
+ <string key="NSAlternateContents"/>
+ <string key="NSKeyEquivalent"/>
+ <int key="NSPeriodicDelay">400</int>
+ <int key="NSPeriodicInterval">75</int>
+ </object>
+ </object>
+ <object class="NSSearchField" id="844896047">
+ <reference key="NSNextResponder" ref="83090933"/>
+ <int key="NSvFlags">289</int>
+ <string key="NSFrame">{{452, 5}, {110, 22}}</string>
+ <reference key="NSSuperview" ref="83090933"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSSearchFieldCell" key="NSCell" id="919270679">
+ <int key="NSCellFlags">343014976</int>
+ <int key="NSCellFlags2">268436480</int>
+ <string key="NSContents"/>
+ <object class="NSFont" key="NSSupport" id="907792543">
+ <string key="NSName">LucidaGrande</string>
+ <double key="NSSize">1.300000e+01</double>
+ <int key="NSfFlags">1044</int>
+ </object>
+ <reference key="NSControlView" ref="844896047"/>
+ <bool key="NSDrawsBackground">YES</bool>
+ <int key="NSTextBezelStyle">1</int>
+ <object class="NSColor" key="NSBackgroundColor" id="171240928">
+ <int key="NSColorSpace">6</int>
+ <string key="NSCatalogName">System</string>
+ <string key="NSColorName">textBackgroundColor</string>
+ <object class="NSColor" key="NSColor" id="48524820">
+ <int key="NSColorSpace">3</int>
+ <bytes key="NSWhite">MQA</bytes>
+ </object>
+ </object>
+ <reference key="NSTextColor" ref="1070214203"/>
+ <object class="NSButtonCell" key="NSSearchButtonCell">
+ <int key="NSCellFlags">130560</int>
+ <int key="NSCellFlags2">0</int>
+ <string key="NSContents">search</string>
+ <string key="NSAction">_searchFieldSearch:</string>
+ <reference key="NSTarget" ref="919270679"/>
+ <reference key="NSControlView" ref="844896047"/>
+ <int key="NSButtonFlags">138690815</int>
+ <int key="NSButtonFlags2">0</int>
+ <string key="NSKeyEquivalent"/>
+ <int key="NSPeriodicDelay">400</int>
+ <int key="NSPeriodicInterval">75</int>
+ </object>
+ <object class="NSButtonCell" key="NSCancelButtonCell">
+ <int key="NSCellFlags">130560</int>
+ <int key="NSCellFlags2">0</int>
+ <string key="NSContents">clear</string>
+ <object class="NSMutableArray" key="NSAccessibilityOverriddenAttributes">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMutableDictionary">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMutableArray" key="dict.sortedKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>AXDescription</string>
+ <string>NSAccessibilityEncodedAttributesValueType</string>
+ </object>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>cancel</string>
+ <reference ref="9"/>
+ </object>
+ </object>
+ </object>
+ <string key="NSAction">_searchFieldCancel:</string>
+ <reference key="NSTarget" ref="919270679"/>
+ <reference key="NSControlView" ref="844896047"/>
+ <int key="NSButtonFlags">138690815</int>
+ <int key="NSButtonFlags2">0</int>
+ <string key="NSKeyEquivalent"/>
+ <int key="NSPeriodicDelay">400</int>
+ <int key="NSPeriodicInterval">75</int>
+ </object>
+ <string key="NSRecentsAutosaveName">VLC media player search</string>
+ <int key="NSMaximumRecents">10</int>
+ </object>
+ </object>
+ <object class="NSButton" id="887227242">
+ <reference key="NSNextResponder" ref="83090933"/>
+ <int key="NSvFlags">292</int>
+ <string key="NSFrame">{{84, 5}, {33, 20}}</string>
+ <reference key="NSSuperview" ref="83090933"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSButtonCell" key="NSCell" id="573876391">
+ <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags2">134217728</int>
+ <string key="NSContents"/>
+ <reference key="NSSupport" ref="907792543"/>
+ <reference key="NSControlView" ref="887227242"/>
+ <int key="NSButtonFlags">138690815</int>
+ <int key="NSButtonFlags2">2</int>
+ <object class="NSCustomResource" key="NSNormalImage">
+ <string key="NSClassName">NSImage</string>
+ <string key="NSResourceName">repeat_embedded</string>
+ </object>
+ <object class="NSCustomResource" key="NSAlternateImage">
+ <string key="NSClassName">NSImage</string>
+ <string key="NSResourceName">repeat_single_embedded_blue</string>
+ </object>
+ <string key="NSAlternateContents"/>
+ <string key="NSKeyEquivalent"/>
+ <int key="NSPeriodicDelay">200</int>
+ <int key="NSPeriodicInterval">25</int>
+ </object>
+ </object>
+ <object class="NSButton" id="620662750">
+ <reference key="NSNextResponder" ref="83090933"/>
+ <int key="NSvFlags">292</int>
+ <string key="NSFrame">{{49, 5}, {33, 20}}</string>
+ <reference key="NSSuperview" ref="83090933"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSButtonCell" key="NSCell" id="658004084">
+ <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags2">134217728</int>
+ <string key="NSContents"/>
+ <reference key="NSSupport" ref="907792543"/>
+ <reference key="NSControlView" ref="620662750"/>
+ <int key="NSButtonFlags">-935051009</int>
+ <int key="NSButtonFlags2">2</int>
+ <object class="NSCustomResource" key="NSNormalImage">
+ <string key="NSClassName">NSImage</string>
+ <string key="NSResourceName">shuffle_embedded</string>
+ </object>
+ <object class="NSCustomResource" key="NSAlternateImage">
+ <string key="NSClassName">NSImage</string>
+ <string key="NSResourceName">shuffle_embedded_blue</string>
+ </object>
+ <string key="NSAlternateContents"/>
+ <string key="NSKeyEquivalent"/>
+ <int key="NSPeriodicDelay">200</int>
+ <int key="NSPeriodicInterval">25</int>
+ </object>
+ </object>
+ <object class="NSScrollView" id="371811673">
+ <reference key="NSNextResponder" ref="83090933"/>
+ <int key="NSvFlags">274</int>
+ <object class="NSMutableArray" key="NSSubviews">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSClipView" id="316777966">
+ <reference key="NSNextResponder" ref="371811673"/>
+ <int key="NSvFlags">2304</int>
+ <object class="NSMutableArray" key="NSSubviews">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSOutlineView" id="978691882">
+ <reference key="NSNextResponder" ref="316777966"/>
+ <int key="NSvFlags">274</int>
+ <string key="NSFrameSize">{574, 33}</string>
+ <reference key="NSSuperview" ref="316777966"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSTableHeaderView" key="NSHeaderView" id="787765838">
+ <reference key="NSNextResponder" ref="228882177"/>
+ <int key="NSvFlags">256</int>
+ <string key="NSFrameSize">{574, 17}</string>
+ <reference key="NSSuperview" ref="228882177"/>
+ <reference key="NSTableView" ref="978691882"/>
+ </object>
+ <object class="_NSCornerView" key="NSCornerView" id="558466402">
+ <reference key="NSNextResponder" ref="371811673"/>
+ <int key="NSvFlags">-2147483392</int>
+ <string key="NSFrame">{{-26, 0}, {16, 17}}</string>
+ <reference key="NSSuperview" ref="371811673"/>
+ </object>
+ <object class="NSMutableArray" key="NSTableColumns">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSTableColumn" id="1060597392">
+ <string key="NSIdentifier">status</string>
+ <double key="NSWidth">1.600000e+01</double>
+ <double key="NSMinWidth">1.600000e+01</double>
+ <double key="NSMaxWidth">3.402823e+38</double>
+ <object class="NSTableHeaderCell" key="NSHeaderCell">
+ <int key="NSCellFlags">75628032</int>
+ <int key="NSCellFlags2">0</int>
+ <string key="NSContents"/>
+ <reference key="NSSupport" ref="26"/>
+ <object class="NSColor" key="NSBackgroundColor" id="104623455">
+ <int key="NSColorSpace">6</int>
+ <string key="NSCatalogName">System</string>
+ <string key="NSColorName">headerColor</string>
+ <reference key="NSColor" ref="48524820"/>
+ </object>
+ <object class="NSColor" key="NSTextColor" id="178341839">
+ <int key="NSColorSpace">6</int>
+ <string key="NSCatalogName">System</string>
+ <string key="NSColorName">headerTextColor</string>
+ <reference key="NSColor" ref="450125846"/>
+ </object>
+ </object>
+ <object class="NSImageCell" key="NSDataCell" id="144165435">
+ <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags2">33685504</int>
+ <reference key="NSSupport" ref="26"/>
+ <int key="NSAlign">0</int>
+ <int key="NSScale">0</int>
+ <int key="NSStyle">0</int>
+ <bool key="NSAnimates">NO</bool>
+ </object>
+ <int key="NSResizingMask">3</int>
+ <bool key="NSIsResizeable">YES</bool>
+ <bool key="NSIsEditable">YES</bool>
+ <reference key="NSTableView" ref="978691882"/>
+ </object>
+ <object class="NSTableColumn" id="770515259">
+ <string key="NSIdentifier">name</string>
+ <double key="NSWidth">3.160000e+02</double>
+ <double key="NSMinWidth">1.600000e+01</double>
+ <double key="NSMaxWidth">1.000000e+03</double>
+ <object class="NSTableHeaderCell" key="NSHeaderCell">
+ <int key="NSCellFlags">75628032</int>
+ <int key="NSCellFlags2">0</int>
+ <string key="NSContents">Name</string>
+ <reference key="NSSupport" ref="26"/>
+ <object class="NSColor" key="NSBackgroundColor" id="186681464">
+ <int key="NSColorSpace">3</int>
+ <bytes key="NSWhite">MC4zMzMzMzI5OQA</bytes>
+ </object>
+ <reference key="NSTextColor" ref="178341839"/>
+ </object>
+ <object class="NSTextFieldCell" key="NSDataCell" id="176092578">
+ <int key="NSCellFlags">67239488</int>
+ <int key="NSCellFlags2">272761856</int>
+ <reference key="NSSupport" ref="26"/>
+ <reference key="NSControlView" ref="978691882"/>
+ <reference key="NSBackgroundColor" ref="761806114"/>
+ <reference key="NSTextColor" ref="1070214203"/>
+ </object>
+ <int key="NSResizingMask">3</int>
+ <bool key="NSIsResizeable">YES</bool>
+ <reference key="NSTableView" ref="978691882"/>
+ </object>
+ <object class="NSTableColumn" id="497927423">
+ <string key="NSIdentifier">artist</string>
+ <double key="NSWidth">1.700000e+02</double>
+ <double key="NSMinWidth">2.000000e+01</double>
+ <double key="NSMaxWidth">1.000000e+03</double>
+ <object class="NSTableHeaderCell" key="NSHeaderCell">
+ <int key="NSCellFlags">75628032</int>
+ <int key="NSCellFlags2">0</int>
+ <string key="NSContents">Artist</string>
+ <reference key="NSSupport" ref="26"/>
+ <reference key="NSBackgroundColor" ref="186681464"/>
+ <reference key="NSTextColor" ref="178341839"/>
+ </object>
+ <object class="NSTextFieldCell" key="NSDataCell" id="1038079813">
+ <int key="NSCellFlags">67239488</int>
+ <int key="NSCellFlags2">272761856</int>
+ <reference key="NSSupport" ref="26"/>
+ <reference key="NSControlView" ref="978691882"/>
+ <reference key="NSBackgroundColor" ref="761806114"/>
+ <reference key="NSTextColor" ref="1070214203"/>
+ </object>
+ <int key="NSResizingMask">2</int>
+ <bool key="NSIsResizeable">YES</bool>
+ <reference key="NSTableView" ref="978691882"/>
+ </object>
+ <object class="NSTableColumn" id="909990336">
+ <string key="NSIdentifier">duration</string>
+ <double key="NSWidth">6.000000e+01</double>
+ <double key="NSMinWidth">6.000000e+01</double>
+ <double key="NSMaxWidth">6.000000e+01</double>
+ <object class="NSTableHeaderCell" key="NSHeaderCell">
+ <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags2">134217728</int>
+ <string key="NSContents">Duration</string>
+ <reference key="NSSupport" ref="26"/>
+ <reference key="NSBackgroundColor" ref="104623455"/>
+ <reference key="NSTextColor" ref="178341839"/>
+ </object>
+ <object class="NSTextFieldCell" key="NSDataCell" id="563164475">
+ <int key="NSCellFlags">67239488</int>
+ <int key="NSCellFlags2">272761856</int>
+ <reference key="NSSupport" ref="26"/>
+ <reference key="NSControlView" ref="978691882"/>
+ <reference key="NSBackgroundColor" ref="761806114"/>
+ <reference key="NSTextColor" ref="1070214203"/>
+ </object>
+ <int key="NSResizingMask">2</int>
+ <bool key="NSIsResizeable">YES</bool>
+ <reference key="NSTableView" ref="978691882"/>
+ </object>
+ </object>
+ <double key="NSIntercellSpacingWidth">3.000000e+00</double>
+ <double key="NSIntercellSpacingHeight">2.000000e+00</double>
+ <object class="NSColor" key="NSBackgroundColor" id="577926348">
+ <int key="NSColorSpace">6</int>
+ <string key="NSCatalogName">System</string>
+ <string key="NSColorName">controlBackgroundColor</string>
+ <reference key="NSColor" ref="30825724"/>
+ </object>
+ <object class="NSColor" key="NSGridColor" id="498782704">
+ <int key="NSColorSpace">6</int>
+ <string key="NSCatalogName">System</string>
+ <string key="NSColorName">gridColor</string>
+ <object class="NSColor" key="NSColor">
+ <int key="NSColorSpace">3</int>
+ <bytes key="NSWhite">MC41AA</bytes>
+ </object>
+ </object>
+ <double key="NSRowHeight">1.500000e+01</double>
+ <int key="NSTvFlags">-608174080</int>
+ <string key="NSAutosaveName">mainPlaylistView</string>
+ <int key="NSGridStyleMask">1</int>
+ <int key="NSColumnAutoresizingStyle">4</int>
+ <int key="NSDraggingSourceMaskForLocal">15</int>
+ <int key="NSDraggingSourceMaskForNonLocal">0</int>
+ <bool key="NSAllowsTypeSelect">YES</bool>
+ </object>
+ </object>
+ <string key="NSFrame">{{1, 17}, {574, 33}}</string>
+ <reference key="NSSuperview" ref="371811673"/>
+ <reference key="NSNextKeyView" ref="978691882"/>
+ <reference key="NSDocView" ref="978691882"/>
+ <reference key="NSBGColor" ref="577926348"/>
+ <int key="NScvFlags">4</int>
+ </object>
+ <object class="NSScroller" id="601724053">
+ <reference key="NSNextResponder" ref="371811673"/>
+ <int key="NSvFlags">-2147483392</int>
+ <string key="NSFrame">{{560, 17}, {15, 33}}</string>
+ <reference key="NSSuperview" ref="371811673"/>
+ <reference key="NSTarget" ref="371811673"/>
+ <string key="NSAction">_doScroller:</string>
+ <double key="NSPercent">1.386555e-01</double>
+ </object>
+ <object class="NSScroller" id="501776014">
+ <reference key="NSNextResponder" ref="371811673"/>
+ <int key="NSvFlags">-2147483392</int>
+ <string key="NSFrame">{{1, 35}, {559, 15}}</string>
+ <reference key="NSSuperview" ref="371811673"/>
+ <int key="NSsFlags">1</int>
+ <reference key="NSTarget" ref="371811673"/>
+ <string key="NSAction">_doScroller:</string>
+ <double key="NSPercent">9.474576e-01</double>
+ </object>
+ <object class="NSClipView" id="228882177">
+ <reference key="NSNextResponder" ref="371811673"/>
+ <int key="NSvFlags">2304</int>
+ <object class="NSMutableArray" key="NSSubviews">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="787765838"/>
+ </object>
+ <string key="NSFrame">{{1, 0}, {574, 17}}</string>
+ <reference key="NSSuperview" ref="371811673"/>
+ <reference key="NSNextKeyView" ref="787765838"/>
+ <reference key="NSDocView" ref="787765838"/>
+ <reference key="NSBGColor" ref="577926348"/>
+ <int key="NScvFlags">4</int>
+ </object>
+ <reference ref="558466402"/>
+ </object>
+ <string key="NSFrame">{{0, 30}, {576, 51}}</string>
+ <reference key="NSSuperview" ref="83090933"/>
+ <reference key="NSNextKeyView" ref="316777966"/>
+ <int key="NSsFlags">562</int>
+ <reference key="NSVScroller" ref="601724053"/>
+ <reference key="NSHScroller" ref="501776014"/>
+ <reference key="NSContentView" ref="316777966"/>
+ <reference key="NSHeaderClipView" ref="228882177"/>
+ <reference key="NSCornerView" ref="558466402"/>
+ <bytes key="NSScrollAmts">QSAAAEEgAABBiAAAQYgAAA</bytes>
+ </object>
+ </object>
+ <string key="NSFrameSize">{576, 81}</string>
+ <reference key="NSSuperview"/>
+ <string key="NSClassName">VLBrushedMetalImageView</string>
+ <string key="NSExtension">NSImageView</string>
+ </object>
+ <object class="NSWindowTemplate" id="421596034">
+ <int key="NSWindowStyleMask">15</int>
+ <int key="NSWindowBacking">2</int>
+ <string key="NSWindowRect">{{429, 553}, {249, 103}}</string>
+ <int key="NSWTFlags">1886912512</int>
+ <string key="NSWindowTitle">GoTo Specific Time</string>
+ <object class="NSMutableString" key="NSWindowClass">
+ <characters key="NS.bytes">NSWindow</characters>
+ </object>
+ <object class="NSMutableString" key="NSViewClass">
+ <characters key="NS.bytes">View</characters>
+ </object>
+ <string key="NSWindowContentMaxSize">{3.40282e+38, 3.40282e+38}</string>
+ <object class="NSView" key="NSWindowView" id="886146577">
+ <nil key="NSNextResponder"/>
+ <int key="NSvFlags">256</int>
+ <object class="NSMutableArray" key="NSSubviews">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSTextField" id="258215225">
+ <reference key="NSNextResponder" ref="886146577"/>
+ <int key="NSvFlags">256</int>
+ <string key="NSFrame">{{-3, 79}, {240, 17}}</string>
+ <reference key="NSSuperview" ref="886146577"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSTextFieldCell" key="NSCell" id="277658323">
+ <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags2">138412032</int>
+ <string key="NSContents">Go to specific position</string>
+ <object class="NSFont" key="NSSupport" id="833315752">
+ <string key="NSName">LucidaGrande-Bold</string>
+ <double key="NSSize">1.300000e+01</double>
+ <int key="NSfFlags">2072</int>
+ </object>
+ <reference key="NSControlView" ref="258215225"/>
+ <reference key="NSBackgroundColor" ref="761806114"/>
+ <reference key="NSTextColor" ref="1070214203"/>
+ </object>
+ </object>
+ <object class="NSTextField" id="149277915">
+ <reference key="NSNextResponder" ref="886146577"/>
+ <int key="NSvFlags">256</int>
+ <string key="NSFrame">{{20, 52}, {159, 19}}</string>
+ <reference key="NSSuperview" ref="886146577"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSTextFieldCell" key="NSCell" id="138567312">
+ <int key="NSCellFlags">-1804468671</int>
+ <int key="NSCellFlags2">71435264</int>
+ <string key="NSContents">0</string>
+ <reference key="NSSupport" ref="26"/>
+ <reference key="NSControlView" ref="149277915"/>
+ <bool key="NSDrawsBackground">YES</bool>
+ <reference key="NSBackgroundColor" ref="171240928"/>
+ <object class="NSColor" key="NSTextColor">
+ <int key="NSColorSpace">6</int>
+ <string key="NSCatalogName">System</string>
+ <string key="NSColorName">textColor</string>
+ <reference key="NSColor" ref="450125846"/>
+ </object>
+ </object>
+ </object>
+ <object class="NSButton" id="771431016">
+ <reference key="NSNextResponder" ref="886146577"/>
+ <int key="NSvFlags">256</int>
+ <string key="NSFrame">{{150, 13}, {84, 28}}</string>
+ <reference key="NSSuperview" ref="886146577"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSButtonCell" key="NSCell" id="784586751">
+ <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags2">134348800</int>
+ <string key="NSContents">OK</string>
+ <reference key="NSSupport" ref="26"/>
+ <reference key="NSControlView" ref="771431016"/>
+ <int key="NSButtonFlags">-2038284033</int>
+ <int key="NSButtonFlags2">1</int>
+ <reference key="NSAlternateImage" ref="26"/>
+ <string key="NSAlternateContents"/>
+ <string type="base64-UTF8" key="NSKeyEquivalent">DQ</string>
+ <int key="NSPeriodicDelay">200</int>
+ <int key="NSPeriodicInterval">25</int>
+ </object>
+ </object>
+ <object class="NSStepper" id="186709324">
+ <reference key="NSNextResponder" ref="886146577"/>
+ <int key="NSvFlags">256</int>
+ <string key="NSFrame">{{185, 50}, {15, 22}}</string>
+ <reference key="NSSuperview" ref="886146577"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSStepperCell" key="NSCell" id="262502374">
+ <int key="NSCellFlags">917024</int>
+ <int key="NSCellFlags2">131072</int>
+ <reference key="NSControlView" ref="186709324"/>
+ <double key="NSMaxValue">3.000000e+04</double>
+ <double key="NSIncrement">1.000000e+01</double>
+ <bool key="NSValueWraps">YES</bool>
+ <bool key="NSAutorepeat">YES</bool>
+ </object>
+ </object>
+ <object class="NSButton" id="979808628">
+ <reference key="NSNextResponder" ref="886146577"/>
+ <int key="NSvFlags">256</int>
+ <string key="NSFrame">{{68, 13}, {84, 28}}</string>
+ <reference key="NSSuperview" ref="886146577"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSButtonCell" key="NSCell" id="666089282">
+ <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags2">134348800</int>
+ <string key="NSContents">Cancel</string>
+ <reference key="NSSupport" ref="26"/>
+ <reference key="NSControlView" ref="979808628"/>
+ <int key="NSButtonFlags">-2038284033</int>
+ <int key="NSButtonFlags2">1</int>
+ <reference key="NSAlternateImage" ref="26"/>
+ <string key="NSAlternateContents"/>
+ <string type="base64-UTF8" key="NSKeyEquivalent">Gw</string>
+ <int key="NSPeriodicDelay">200</int>
+ <int key="NSPeriodicInterval">25</int>
+ </object>
+ </object>
+ <object class="NSTextField" id="909282180">
+ <reference key="NSNextResponder" ref="886146577"/>
+ <int key="NSvFlags">256</int>
+ <string key="NSFrame">{{203, 54}, {34, 14}}</string>
+ <reference key="NSSuperview" ref="886146577"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSTextFieldCell" key="NSCell" id="815423019">
+ <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags2">272629760</int>
+ <string key="NSContents">sec.</string>
+ <reference key="NSSupport" ref="26"/>
+ <reference key="NSControlView" ref="909282180"/>
+ <reference key="NSBackgroundColor" ref="761806114"/>
+ <reference key="NSTextColor" ref="1070214203"/>
+ </object>
+ </object>
+ </object>
+ <string key="NSFrame">{{1, 9}, {249, 103}}</string>
+ </object>
+ <string key="NSScreenRect">{{0, 0}, {1280, 778}}</string>
+ <string key="NSMaxSize">{3.40282e+38, 3.40282e+38}</string>
+ </object>
+ <object class="NSCustomView" id="4943074">
+ <nil key="NSNextResponder"/>
+ <int key="NSvFlags">256</int>
+ <object class="NSMutableArray" key="NSSubviews">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSPopUpButton" id="815327114">
+ <reference key="NSNextResponder" ref="4943074"/>
+ <int key="NSvFlags">258</int>
+ <string key="NSFrame">{{233, 7}, {244, 26}}</string>
+ <reference key="NSSuperview" ref="4943074"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSPopUpButtonCell" key="NSCell" id="927742373">
+ <int key="NSCellFlags">-2076049856</int>
+ <int key="NSCellFlags2">2048</int>
+ <reference key="NSSupport" ref="907792543"/>
+ <reference key="NSControlView" ref="815327114"/>
+ <int key="NSButtonFlags">109199615</int>
+ <int key="NSButtonFlags2">1</int>
+ <reference key="NSAlternateImage" ref="907792543"/>
+ <string key="NSAlternateContents"/>
+ <object class="NSMutableString" key="NSKeyEquivalent">
+ <characters key="NS.bytes"/>
+ </object>
+ <int key="NSPeriodicDelay">400</int>
+ <int key="NSPeriodicInterval">75</int>
+ <object class="NSMenuItem" key="NSMenuItem" id="63535790">
+ <reference key="NSMenu" ref="992372113"/>
+ <string key="NSTitle">Extended M3U</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <int key="NSState">1</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ <string key="NSAction">_popUpItemAction:</string>
+ <reference key="NSTarget" ref="927742373"/>
+ </object>
+ <bool key="NSMenuItemRespectAlignment">YES</bool>
+ <object class="NSMenu" key="NSMenu" id="992372113">
+ <object class="NSMutableString" key="NSTitle">
+ <characters key="NS.bytes">OtherViews</characters>
+ </object>
+ <object class="NSMutableArray" key="NSMenuItems">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="63535790"/>
+ <object class="NSMenuItem" id="613243776">
+ <reference key="NSMenu" ref="992372113"/>
+ <string key="NSTitle">XML Shareable Playlist Format (XSPF)</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ <string key="NSAction">_popUpItemAction:</string>
+ <reference key="NSTarget" ref="927742373"/>
+ </object>
+ <object class="NSMenuItem" id="568458431">
+ <reference key="NSMenu" ref="992372113"/>
+ <string key="NSTitle">HTML Playlist</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ <string key="NSAction">_popUpItemAction:</string>
+ <reference key="NSTarget" ref="927742373"/>
+ </object>
+ </object>
+ </object>
+ <int key="NSPreferredEdge">3</int>
+ <bool key="NSUsesItemFromMenu">YES</bool>
+ <bool key="NSAltersState">YES</bool>
+ <int key="NSArrowPosition">1</int>
+ </object>
+ </object>
+ <object class="NSTextField" id="763524337">
+ <reference key="NSNextResponder" ref="4943074"/>
+ <int key="NSvFlags">258</int>
+ <string key="NSFrame">{{13, 13}, {213, 17}}</string>
+ <reference key="NSSuperview" ref="4943074"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSTextFieldCell" key="NSCell" id="895580039">
+ <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags2">272629760</int>
+ <string key="NSContents">File Format:</string>
+ <reference key="NSSupport" ref="907792543"/>
+ <reference key="NSControlView" ref="763524337"/>
+ <reference key="NSBackgroundColor" ref="761806114"/>
+ <reference key="NSTextColor" ref="1070214203"/>
+ </object>
+ </object>
+ </object>
+ <string key="NSFrameSize">{488, 40}</string>
+ <object class="NSMutableString" key="NSClassName">
+ <characters key="NS.bytes">NSView</characters>
+ </object>
+ <string key="NSExtension">NSResponder</string>
+ </object>
+ <object class="NSMenu" id="773269229">
+ <string key="NSTitle">Menu</string>
+ <object class="NSMutableArray" key="NSMenuItems">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMenuItem" id="708776679">
+ <reference key="NSMenu" ref="773269229"/>
+ <string key="NSTitle">Play/Pause</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ </object>
+ <object class="NSMenuItem" id="834091258">
+ <reference key="NSMenu" ref="773269229"/>
+ <string key="NSTitle">Stop</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ </object>
+ <object class="NSMenuItem" id="1015224077">
+ <reference key="NSMenu" ref="773269229"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ </object>
+ <object class="NSMenuItem" id="294786718">
+ <reference key="NSMenu" ref="773269229"/>
+ <string key="NSTitle">Previous</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ </object>
+ <object class="NSMenuItem" id="862398090">
+ <reference key="NSMenu" ref="773269229"/>
+ <string key="NSTitle">Next</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ </object>
+ <object class="NSMenuItem" id="306653367">
+ <reference key="NSMenu" ref="773269229"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ </object>
+ <object class="NSMenuItem" id="516410441">
+ <reference key="NSMenu" ref="773269229"/>
+ <string key="NSTitle">Volume Up</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ </object>
+ <object class="NSMenuItem" id="11153520">
+ <reference key="NSMenu" ref="773269229"/>
+ <string key="NSTitle">Volume Down</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ </object>
+ <object class="NSMenuItem" id="744562547">
+ <reference key="NSMenu" ref="773269229"/>
+ <string key="NSTitle">Mute</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ </object>
+ <object class="NSMenuItem" id="464934289">
+ <reference key="NSMenu" ref="773269229"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ </object>
+ <object class="NSMenuItem" id="458540204">
+ <reference key="NSMenu" ref="773269229"/>
+ <string key="NSTitle">Fullscreen</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ </object>
+ <object class="NSMenuItem" id="23068210">
+ <reference key="NSMenu" ref="773269229"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ </object>
+ <object class="NSMenuItem" id="1067947720">
+ <reference key="NSMenu" ref="773269229"/>
+ <string key="NSTitle">Snapshot</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="464614658"/>
+ <reference key="NSMixedImage" ref="724706907"/>
+ </object>
+ </object>
+ <string key="NSName"/>
+ </object>
+ <object class="NSWindowTemplate" id="992958410">
+ <int key="NSWindowStyleMask">1</int>
+ <int key="NSWindowBacking">2</int>
+ <string key="NSWindowRect">{{110, 267}, {549, 87}}</string>
+ <int key="NSWTFlags">1886912512</int>
+ <string key="NSWindowTitle">Window</string>
+ <string key="NSWindowClass">VLCFSPanel</string>
+ <object class="NSMutableString" key="NSViewClass">
+ <characters key="NS.bytes">View</characters>
+ </object>
+ <string key="NSWindowContentMaxSize">{3.40282e+38, 3.40282e+38}</string>
+ <object class="NSView" key="NSWindowView" id="971327333">
+ <nil key="NSNextResponder"/>
+ <int key="NSvFlags">256</int>
+ <object class="NSMutableArray" key="NSSubviews">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSImageView" id="321067651">
+ <reference key="NSNextResponder" ref="971327333"/>
+ <int key="NSvFlags">256</int>
+ <object class="NSMutableSet" key="NSDragTypes">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMutableArray" key="set.sortedObjects">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>Apple PDF pasteboard type</string>
+ <string>Apple PICT pasteboard type</string>
+ <string>Apple PNG pasteboard type</string>
+ <string>NSFilenamesPboardType</string>
+ <string>NeXT Encapsulated PostScript v1.2 pasteboard type</string>
+ <string>NeXT TIFF v4.0 pasteboard type</string>
+ </object>
+ </object>
+ <string key="NSFrameSize">{549, 87}</string>
+ <reference key="NSSuperview" ref="971327333"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSImageCell" key="NSCell" id="142277631">
+ <int key="NSCellFlags">130560</int>
+ <int key="NSCellFlags2">33554432</int>
+ <object class="NSCustomResource" key="NSContents">
+ <string key="NSClassName">NSImage</string>
+ <string key="NSResourceName">fs_background</string>
+ </object>
+ <int key="NSAlign">2</int>
+ <int key="NSScale">2</int>
+ <int key="NSStyle">0</int>
+ <bool key="NSAnimates">NO</bool>
+ </object>
+ <bool key="NSEditable">YES</bool>
+ </object>
+ <object class="NSImageView" id="524619069">
+ <reference key="NSNextResponder" ref="971327333"/>
+ <int key="NSvFlags">256</int>
+ <object class="NSMutableSet" key="NSDragTypes">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMutableArray" key="set.sortedObjects">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>Apple PDF pasteboard type</string>
+ <string>Apple PICT pasteboard type</string>
+ <string>Apple PNG pasteboard type</string>
+ <string>NSFilenamesPboardType</string>
+ <string>NeXT Encapsulated PostScript v1.2 pasteboard type</string>
+ <string>NeXT TIFF v4.0 pasteboard type</string>
+ </object>
+ </object>
+ <string key="NSFrame">{{267, 10}, {34, 27}}</string>
+ <reference key="NSSuperview" ref="971327333"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSImageCell" key="NSCell" id="528436022">
+ <int key="NSCellFlags">130560</int>
+ <int key="NSCellFlags2">33554432</int>
+ <object class="NSCustomResource" key="NSContents">
+ <string key="NSClassName">NSImage</string>
+ <string key="NSResourceName">fs_play</string>
+ </object>
+ <int key="NSAlign">2</int>
+ <int key="NSScale">2</int>
+ <int key="NSStyle">0</int>
+ <bool key="NSAnimates">NO</bool>
+ </object>
+ <bool key="NSEditable">YES</bool>
+ </object>
+ <object class="NSImageView" id="623199260">
+ <reference key="NSNextResponder" ref="971327333"/>
+ <int key="NSvFlags">256</int>
+ <object class="NSMutableSet" key="NSDragTypes">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMutableArray" key="set.sortedObjects">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>Apple PDF pasteboard type</string>
+ <string>Apple PICT pasteboard type</string>
+ <string>Apple PNG pasteboard type</string>
+ <string>NSFilenamesPboardType</string>
+ <string>NeXT Encapsulated PostScript v1.2 pasteboard type</string>
+ <string>NeXT TIFF v4.0 pasteboard type</string>
+ </object>
+ </object>
+ <string key="NSFrame">{{313, 14}, {43, 19}}</string>
+ <reference key="NSSuperview" ref="971327333"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSImageCell" key="NSCell" id="1043970436">
+ <int key="NSCellFlags">130560</int>
+ <int key="NSCellFlags2">33554432</int>
+ <object class="NSCustomResource" key="NSContents">
+ <string key="NSClassName">NSImage</string>
+ <string key="NSResourceName">fs_forward</string>
+ </object>
+ <int key="NSAlign">2</int>
+ <int key="NSScale">2</int>
+ <int key="NSStyle">0</int>
+ <bool key="NSAnimates">NO</bool>
+ </object>
+ <bool key="NSEditable">YES</bool>
+ </object>
+ <object class="NSImageView" id="312228972">
+ <reference key="NSNextResponder" ref="971327333"/>
+ <int key="NSvFlags">256</int>
+ <object class="NSMutableSet" key="NSDragTypes">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMutableArray" key="set.sortedObjects">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>Apple PDF pasteboard type</string>
+ <string>Apple PICT pasteboard type</string>
+ <string>Apple PNG pasteboard type</string>
+ <string>NSFilenamesPboardType</string>
+ <string>NeXT Encapsulated PostScript v1.2 pasteboard type</string>
+ <string>NeXT TIFF v4.0 pasteboard type</string>
+ </object>
+ </object>
+ <string key="NSFrame">{{365, 15}, {30, 18}}</string>
+ <reference key="NSSuperview" ref="971327333"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSImageCell" key="NSCell" id="285403641">
+ <int key="NSCellFlags">130560</int>
+ <int key="NSCellFlags2">33554432</int>
+ <object class="NSCustomResource" key="NSContents">
+ <string key="NSClassName">NSImage</string>
+ <string key="NSResourceName">fs_skip_next</string>
+ </object>
+ <int key="NSAlign">2</int>
+ <int key="NSScale">2</int>
+ <int key="NSStyle">0</int>
+ <bool key="NSAnimates">NO</bool>
+ </object>
+ <bool key="NSEditable">YES</bool>
+ </object>
+ <object class="NSImageView" id="328341891">
+ <reference key="NSNextResponder" ref="971327333"/>
+ <int key="NSvFlags">256</int>
+ <object class="NSMutableSet" key="NSDragTypes">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMutableArray" key="set.sortedObjects">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>Apple PDF pasteboard type</string>
+ <string>Apple PICT pasteboard type</string>
+ <string>Apple PNG pasteboard type</string>
+ <string>NSFilenamesPboardType</string>
+ <string>NeXT Encapsulated PostScript v1.2 pasteboard type</string>
+ <string>NeXT TIFF v4.0 pasteboard type</string>
+ </object>
+ </object>
+ <string key="NSFrame">{{211, 14}, {43, 19}}</string>
+ <reference key="NSSuperview" ref="971327333"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSImageCell" key="NSCell" id="17856674">
+ <int key="NSCellFlags">130560</int>
+ <int key="NSCellFlags2">33554432</int>
+ <object class="NSCustomResource" key="NSContents">
+ <string key="NSClassName">NSImage</string>
+ <string key="NSResourceName">fs_rewind</string>
+ </object>
+ <int key="NSAlign">2</int>
+ <int key="NSScale">2</int>
+ <int key="NSStyle">0</int>
+ <bool key="NSAnimates">NO</bool>
+ </object>
+ <bool key="NSEditable">YES</bool>
+ </object>
+ <object class="NSImageView" id="392237572">
+ <reference key="NSNextResponder" ref="971327333"/>
+ <int key="NSvFlags">256</int>
+ <object class="NSMutableSet" key="NSDragTypes">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMutableArray" key="set.sortedObjects">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>Apple PDF pasteboard type</string>
+ <string>Apple PICT pasteboard type</string>
+ <string>Apple PNG pasteboard type</string>
+ <string>NSFilenamesPboardType</string>
+ <string>NeXT Encapsulated PostScript v1.2 pasteboard type</string>
+ <string>NeXT TIFF v4.0 pasteboard type</string>
+ </object>
+ </object>
+ <string key="NSFrame">{{174, 15}, {30, 18}}</string>
+ <reference key="NSSuperview" ref="971327333"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSImageCell" key="NSCell" id="114392048">
+ <int key="NSCellFlags">130560</int>
+ <int key="NSCellFlags2">33554432</int>
+ <object class="NSCustomResource" key="NSContents">
+ <string key="NSClassName">NSImage</string>
+ <string key="NSResourceName">fs_skip_previous</string>
+ </object>
+ <int key="NSAlign">2</int>
+ <int key="NSScale">2</int>
+ <int key="NSStyle">0</int>
+ <bool key="NSAnimates">NO</bool>
+ </object>
+ <bool key="NSEditable">YES</bool>
+ </object>
+ <object class="NSImageView" id="208887354">
+ <reference key="NSNextResponder" ref="971327333"/>
+ <int key="NSvFlags">256</int>
+ <object class="NSMutableSet" key="NSDragTypes">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMutableArray" key="set.sortedObjects">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>Apple PDF pasteboard type</string>
+ <string>Apple PICT pasteboard type</string>
+ <string>Apple PNG pasteboard type</string>
+ <string>NSFilenamesPboardType</string>
+ <string>NeXT Encapsulated PostScript v1.2 pasteboard type</string>
+ <string>NeXT TIFF v4.0 pasteboard type</string>
+ </object>
+ </object>
+ <string key="NSFrame">{{507, 13}, {26, 20}}</string>
+ <reference key="NSSuperview" ref="971327333"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSImageCell" key="NSCell" id="340972206">
+ <int key="NSCellFlags">130560</int>
+ <int key="NSCellFlags2">33554432</int>
+ <object class="NSCustomResource" key="NSContents">
+ <string key="NSClassName">NSImage</string>
+ <string key="NSResourceName">fs_exit_fullscreen</string>
+ </object>
+ <int key="NSAlign">2</int>
+ <int key="NSScale">2</int>
+ <int key="NSStyle">0</int>
+ <bool key="NSAnimates">NO</bool>
+ </object>
+ <bool key="NSEditable">YES</bool>
+ </object>
+ <object class="NSImageView" id="319509696">
+ <reference key="NSNextResponder" ref="971327333"/>
+ <int key="NSvFlags">256</int>
+ <object class="NSMutableSet" key="NSDragTypes">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMutableArray" key="set.sortedObjects">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>Apple PDF pasteboard type</string>
+ <string>Apple PICT pasteboard type</string>
+ <string>Apple PNG pasteboard type</string>
+ <string>NSFilenamesPboardType</string>
+ <string>NeXT Encapsulated PostScript v1.2 pasteboard type</string>
+ <string>NeXT TIFF v4.0 pasteboard type</string>
+ </object>
+ </object>
+ <string key="NSFrame">{{15, 53}, {518, 9}}</string>
+ <reference key="NSSuperview" ref="971327333"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSImageCell" key="NSCell" id="675859759">
+ <int key="NSCellFlags">130560</int>
+ <int key="NSCellFlags2">33554432</int>
+ <object class="NSCustomResource" key="NSContents">
+ <string key="NSClassName">NSImage</string>
+ <string key="NSResourceName">fs_time_slider</string>
+ </object>
+ <int key="NSAlign">2</int>
+ <int key="NSScale">2</int>
+ <int key="NSStyle">0</int>
+ <bool key="NSAnimates">NO</bool>
+ </object>
+ <bool key="NSEditable">YES</bool>
+ </object>
+ <object class="NSTextField" id="577007757">
+ <reference key="NSNextResponder" ref="971327333"/>
+ <int key="NSvFlags">256</int>
+ <string key="NSFrame">{{98, 64}, {352, 14}}</string>
+ <reference key="NSSuperview" ref="971327333"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSTextFieldCell" key="NSCell" id="748515603">
+ <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags2">138412032</int>
+ <string key="NSContents">VLC Full Screen.avi</string>
+ <reference key="NSSupport" ref="26"/>
+ <reference key="NSControlView" ref="577007757"/>
+ <reference key="NSBackgroundColor" ref="761806114"/>
+ <reference key="NSTextColor" ref="104623455"/>
+ </object>
+ </object>
+ <object class="NSTextField" id="320188156">
+ <reference key="NSNextResponder" ref="971327333"/>
+ <int key="NSvFlags">256</int>
+ <string key="NSFrame">{{486, 64}, {50, 14}}</string>
+ <reference key="NSSuperview" ref="971327333"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSTextFieldCell" key="NSCell" id="914847598">
+ <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags2">71303168</int>
+ <string key="NSContents">1:23:45</string>
+ <reference key="NSSupport" ref="26"/>
+ <reference key="NSControlView" ref="320188156"/>
+ <reference key="NSBackgroundColor" ref="761806114"/>
+ <reference key="NSTextColor" ref="104623455"/>
+ </object>
+ </object>
+ <object class="NSImageView" id="724927235">
+ <reference key="NSNextResponder" ref="971327333"/>
+ <int key="NSvFlags">256</int>
+ <object class="NSMutableSet" key="NSDragTypes">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMutableArray" key="set.sortedObjects">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>Apple PDF pasteboard type</string>
+ <string>Apple PICT pasteboard type</string>
+ <string>Apple PNG pasteboard type</string>
+ <string>NSFilenamesPboardType</string>
+ <string>NeXT Encapsulated PostScript v1.2 pasteboard type</string>
+ <string>NeXT TIFF v4.0 pasteboard type</string>
+ </object>
+ </object>
+ <string key="NSFrame">{{124, 17}, {15, 13}}</string>
+ <reference key="NSSuperview" ref="971327333"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSImageCell" key="NSCell" id="953517082">
+ <int key="NSCellFlags">130560</int>
+ <int key="NSCellFlags2">33554432</int>
+ <object class="NSCustomResource" key="NSContents">
+ <string key="NSClassName">NSImage</string>
+ <string key="NSResourceName">fs_volume_max</string>
+ </object>
+ <int key="NSAlign">2</int>
+ <int key="NSScale">2</int>
+ <int key="NSStyle">0</int>
+ <bool key="NSAnimates">NO</bool>
+ </object>
+ <bool key="NSEditable">YES</bool>
+ </object>
+ <object class="NSImageView" id="541582453">
+ <reference key="NSNextResponder" ref="971327333"/>
+ <int key="NSvFlags">256</int>
+ <object class="NSMutableSet" key="NSDragTypes">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMutableArray" key="set.sortedObjects">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>Apple PDF pasteboard type</string>
+ <string>Apple PICT pasteboard type</string>
+ <string>Apple PNG pasteboard type</string>
+ <string>NSFilenamesPboardType</string>
+ <string>NeXT Encapsulated PostScript v1.2 pasteboard type</string>
+ <string>NeXT TIFF v4.0 pasteboard type</string>
+ </object>
+ </object>
+ <string key="NSFrame">{{16, 18}, {7, 11}}</string>
+ <reference key="NSSuperview" ref="971327333"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSImageCell" key="NSCell" id="887081916">
+ <int key="NSCellFlags">130560</int>
+ <int key="NSCellFlags2">33554432</int>
+ <object class="NSCustomResource" key="NSContents">
+ <string key="NSClassName">NSImage</string>
+ <string key="NSResourceName">fs_volume_mute</string>
+ </object>
+ <int key="NSAlign">2</int>
+ <int key="NSScale">2</int>
+ <int key="NSStyle">0</int>
+ <bool key="NSAnimates">NO</bool>
+ </object>
+ <bool key="NSEditable">YES</bool>
+ </object>
+ <object class="NSImageView" id="867878858">
+ <reference key="NSNextResponder" ref="971327333"/>
+ <int key="NSvFlags">256</int>
+ <object class="NSMutableSet" key="NSDragTypes">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMutableArray" key="set.sortedObjects">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>Apple PDF pasteboard type</string>
+ <string>Apple PICT pasteboard type</string>
+ <string>Apple PNG pasteboard type</string>
+ <string>NSFilenamesPboardType</string>
+ <string>NeXT Encapsulated PostScript v1.2 pasteboard type</string>
+ <string>NeXT TIFF v4.0 pasteboard type</string>
+ </object>
+ </object>
+ <string key="NSFrame">{{26, 22}, {95, 2}}</string>
+ <reference key="NSSuperview" ref="971327333"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSImageCell" key="NSCell" id="625690526">
+ <int key="NSCellFlags">130560</int>
+ <int key="NSCellFlags2">33554432</int>
+ <object class="NSCustomResource" key="NSContents">
+ <string key="NSClassName">NSImage</string>
+ <string key="NSResourceName">fs_volume_slider_bar</string>
+ </object>
+ <int key="NSAlign">2</int>
+ <int key="NSScale">2</int>
+ <int key="NSStyle">0</int>
+ <bool key="NSAnimates">NO</bool>
+ </object>
+ <bool key="NSEditable">YES</bool>
+ </object>
+ </object>
+ <string key="NSFrameSize">{549, 87}</string>
+ </object>
+ <string key="NSScreenRect">{{0, 0}, {1280, 778}}</string>
+ <string key="NSMaxSize">{3.40282e+38, 3.40282e+38}</string>
+ </object>
+ <object class="NSCustomView" id="893784723">
+ <reference key="NSNextResponder"/>
+ <int key="NSvFlags">268</int>
+ <object class="NSMutableArray" key="NSSubviews">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSImageView" id="1037854672">
+ <reference key="NSNextResponder" ref="893784723"/>
+ <int key="NSvFlags">266</int>
+ <object class="NSMutableSet" key="NSDragTypes">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMutableArray" key="set.sortedObjects">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>Apple PDF pasteboard type</string>
+ <string>Apple PICT pasteboard type</string>
+ <string>Apple PNG pasteboard type</string>
+ <string>NSFilenamesPboardType</string>
+ <string>NeXT Encapsulated PostScript v1.2 pasteboard type</string>
+ <string>NeXT TIFF v4.0 pasteboard type</string>
+ </object>
+ </object>
+ <string key="NSFrame">{{128, 2}, {167, 36}}</string>
+ <reference key="NSSuperview" ref="893784723"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSImageCell" key="NSCell" id="212458224">
+ <int key="NSCellFlags">130560</int>
+ <int key="NSCellFlags2">33554432</int>
+ <object class="NSCustomResource" key="NSContents">
+ <string key="NSClassName">NSImage</string>
+ <string key="NSResourceName">display_middle</string>
+ </object>
+ <int key="NSAlign">0</int>
+ <int key="NSScale">1</int>
+ <int key="NSStyle">0</int>
+ <bool key="NSAnimates">NO</bool>
+ </object>
+ <bool key="NSEditable">YES</bool>
+ </object>
+ <object class="NSButton" id="549069334">
+ <reference key="NSNextResponder" ref="893784723"/>
+ <int key="NSvFlags">268</int>
+ <string key="NSFrame">{{5, 4}, {31, 31}}</string>
+ <reference key="NSSuperview" ref="893784723"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSButtonCell" key="NSCell" id="420909627">
+ <int key="NSCellFlags">604634624</int>
+ <int key="NSCellFlags2">134217728</int>
+ <string key="NSContents"/>
+ <reference key="NSSupport" ref="644502772"/>
+ <reference key="NSControlView" ref="549069334"/>
+ <int key="NSButtonFlags">139723007</int>
+ <int key="NSButtonFlags2">2</int>
+ <object class="NSCustomResource" key="NSNormalImage">
+ <string key="NSClassName">NSImage</string>
+ <string key="NSResourceName">skip_previous_active</string>
+ </object>
+ <object class="NSCustomResource" key="NSAlternateImage">
+ <string key="NSClassName">NSImage</string>
+ <string key="NSResourceName">skip_previous_blue</string>
+ </object>
+ <string key="NSAlternateContents"/>
+ <object class="NSMutableString" key="NSKeyEquivalent">
+ <characters key="NS.bytes"/>
+ </object>
+ <int key="NSPeriodicDelay">200</int>
+ <int key="NSPeriodicInterval">25</int>
+ </object>
+ </object>
+ <object class="NSButton" id="174345240">
+ <reference key="NSNextResponder" ref="893784723"/>
+ <int key="NSvFlags">268</int>
+ <string key="NSFrame">{{38, 0}, {39, 39}}</string>
+ <reference key="NSSuperview" ref="893784723"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSButtonCell" key="NSCell" id="832303011">
+ <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags2">134217728</int>
+ <string key="NSContents"/>
+ <object class="NSFont" key="NSSupport" id="392941671">
+ <string key="NSName">LucidaGrande</string>
+ <double key="NSSize">1.200000e+01</double>
+ <int key="NSfFlags">16</int>
+ </object>
+ <reference key="NSControlView" ref="174345240"/>
+ <int key="NSButtonFlags">139723007</int>
+ <int key="NSButtonFlags2">2</int>
+ <object class="NSCustomResource" key="NSNormalImage">
+ <string key="NSClassName">NSImage</string>
+ <string key="NSResourceName">play</string>
+ </object>
+ <object class="NSCustomResource" key="NSAlternateImage">
+ <string key="NSClassName">NSImage</string>
+ <string key="NSResourceName">play_blue</string>
+ </object>
+ <string key="NSAlternateContents"/>
+ <string key="NSKeyEquivalent"/>
+ <int key="NSPeriodicDelay">200</int>
+ <int key="NSPeriodicInterval">25</int>
+ </object>
+ </object>
+ <object class="NSButton" id="942308543">
+ <reference key="NSNextResponder" ref="893784723"/>
+ <int key="NSvFlags">268</int>
+ <string key="NSFrame">{{79, 4}, {31, 31}}</string>
+ <reference key="NSSuperview" ref="893784723"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSButtonCell" key="NSCell" id="270764217">
+ <int key="NSCellFlags">604634624</int>
+ <int key="NSCellFlags2">134217728</int>
+ <string key="NSContents"/>
+ <reference key="NSSupport" ref="644502772"/>
+ <reference key="NSControlView" ref="942308543"/>
+ <int key="NSButtonFlags">138674431</int>
+ <int key="NSButtonFlags2">2</int>
+ <object class="NSCustomResource" key="NSNormalImage">
+ <string key="NSClassName">NSImage</string>
+ <string key="NSResourceName">skip_forward_active</string>
+ </object>
+ <object class="NSCustomResource" key="NSAlternateImage">
+ <string key="NSClassName">NSImage</string>
+ <string key="NSResourceName">skip_forward_blue</string>
+ </object>
+ <string key="NSAlternateContents"/>
+ <object class="NSMutableString" key="NSKeyEquivalent">
+ <characters key="NS.bytes"/>
+ </object>
+ <int key="NSPeriodicDelay">200</int>
+ <int key="NSPeriodicInterval">25</int>
+ </object>
+ </object>
+ <object class="NSSlider" id="727410173">
+ <reference key="NSNextResponder" ref="893784723"/>
+ <int key="NSvFlags">266</int>
+ <string key="NSFrame">{{128, 4}, {167, 15}}</string>
+ <reference key="NSSuperview" ref="893784723"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSSliderCell" key="NSCell" id="283180256">
+ <int key="NSCellFlags">604372736</int>
+ <int key="NSCellFlags2">131072</int>
+ <object class="NSMutableString" key="NSContents">
+ <characters key="NS.bytes"/>
+ </object>
+ <reference key="NSSupport" ref="854546163"/>
+ <reference key="NSControlView" ref="727410173"/>
+ <double key="NSMaxValue">1.000000e+04</double>
+ <double key="NSMinValue">0.000000e+00</double>
+ <double key="NSValue">0.000000e+00</double>
+ <double key="NSAltIncValue">0.000000e+00</double>
+ <int key="NSNumberOfTickMarks">0</int>
+ <int key="NSTickMarkPosition">1</int>
+ <bool key="NSAllowsTickMarkValuesOnly">NO</bool>
+ <bool key="NSVertical">NO</bool>
+ </object>
+ </object>
+ <object class="NSProgressIndicator" id="714509253">
+ <reference key="NSNextResponder" ref="893784723"/>
+ <int key="NSvFlags">-2147482358</int>
+ <object class="NSPSMatrix" key="NSDrawMatrix"/>
+ <string key="NSFrame">{{127, 5}, {169, 12}}</string>
+ <reference key="NSSuperview" ref="893784723"/>
+ <int key="NSpiFlags">16650</int>
+ <double key="NSMaxValue">1.000000e+02</double>
+ </object>
+ <object class="NSImageView" id="479427375">
+ <reference key="NSNextResponder" ref="893784723"/>
+ <int key="NSvFlags">268</int>
+ <object class="NSMutableSet" key="NSDragTypes">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMutableArray" key="set.sortedObjects">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>Apple PDF pasteboard type</string>
+ <string>Apple PICT pasteboard type</string>
+ <string>Apple PNG pasteboard type</string>
+ <string>NSFilenamesPboardType</string>
+ <string>NeXT Encapsulated PostScript v1.2 pasteboard type</string>
+ <string>NeXT TIFF v4.0 pasteboard type</string>
+ </object>
+ </object>
+ <string key="NSFrame">{{120, 2}, {8, 36}}</string>
+ <reference key="NSSuperview" ref="893784723"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSImageCell" key="NSCell" id="756202812">
+ <int key="NSCellFlags">130560</int>
+ <int key="NSCellFlags2">33554432</int>
+ <object class="NSCustomResource" key="NSContents">
+ <string key="NSClassName">NSImage</string>
+ <string key="NSResourceName">display_left</string>
+ </object>
+ <int key="NSAlign">0</int>
+ <int key="NSScale">1</int>
+ <int key="NSStyle">0</int>
+ <bool key="NSAnimates">NO</bool>
+ </object>
+ <bool key="NSEditable">YES</bool>
+ </object>
+ <object class="NSImageView" id="367371720">
+ <reference key="NSNextResponder" ref="893784723"/>
+ <int key="NSvFlags">265</int>
+ <object class="NSMutableSet" key="NSDragTypes">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMutableArray" key="set.sortedObjects">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>Apple PDF pasteboard type</string>
+ <string>Apple PICT pasteboard type</string>
+ <string>Apple PNG pasteboard type</string>
+ <string>NSFilenamesPboardType</string>
+ <string>NeXT Encapsulated PostScript v1.2 pasteboard type</string>
+ <string>NeXT TIFF v4.0 pasteboard type</string>
+ </object>
+ </object>
+ <string key="NSFrame">{{294, 2}, {8, 36}}</string>
+ <reference key="NSSuperview" ref="893784723"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSImageCell" key="NSCell" id="611521147">
+ <int key="NSCellFlags">130560</int>
+ <int key="NSCellFlags2">33554432</int>
+ <object class="NSCustomResource" key="NSContents">
+ <string key="NSClassName">NSImage</string>
+ <string key="NSResourceName">display_right</string>
+ </object>
+ <int key="NSAlign">0</int>
+ <int key="NSScale">1</int>
+ <int key="NSStyle">0</int>
+ <bool key="NSAnimates">NO</bool>
+ </object>
+ <bool key="NSEditable">YES</bool>
+ </object>
+ <object class="NSTextField" id="361025704">
+ <reference key="NSNextResponder" ref="893784723"/>
+ <int key="NSvFlags">265</int>
+ <string key="NSFrame">{{252, 20}, {46, 13}}</string>
+ <reference key="NSSuperview" ref="893784723"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSTextFieldCell" key="NSCell" id="443974839">
+ <int key="NSCellFlags">-2079195584</int>
+ <int key="NSCellFlags2">71304192</int>
+ <string key="NSContents">00:00</string>
+ <reference key="NSSupport" ref="644502772"/>
+ <reference key="NSControlView" ref="361025704"/>
+ <reference key="NSBackgroundColor" ref="171240928"/>
+ <object class="NSColor" key="NSTextColor" id="231594696">
+ <int key="NSColorSpace">1</int>
+ <bytes key="NSRGB">MCAwIDAAA</bytes>
+ </object>
+ </object>
+ </object>
+ <object class="NSTextField" id="1046930998">
+ <reference key="NSNextResponder" ref="893784723"/>
+ <int key="NSvFlags">266</int>
+ <string key="NSFrame">{{125, 20}, {125, 13}}</string>
+ <reference key="NSSuperview" ref="893784723"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSTextFieldCell" key="NSCell" id="893962477">
+ <int key="NSCellFlags">-2079195584</int>
+ <int key="NSCellFlags2">4195328</int>
+ <string key="NSContents">text</string>
+ <reference key="NSSupport" ref="644502772"/>
+ <reference key="NSControlView" ref="1046930998"/>
+ <reference key="NSBackgroundColor" ref="171240928"/>
+ <reference key="NSTextColor" ref="231594696"/>
+ </object>
+ </object>
+ </object>
+ <string key="NSFrameSize">{308, 43}</string>
+ <reference key="NSSuperview"/>
+ <string key="NSClassName">NSView</string>
+ </object>
+ <object class="NSWindowTemplate" id="1072282817">
+ <int key="NSWindowStyleMask">9</int>
+ <int key="NSWindowBacking">2</int>
+ <string key="NSWindowRect">{{265, 355}, {612, 324}}</string>
+ <int key="NSWTFlags">1886912512</int>
+ <string key="NSWindowTitle">VLC crashed previously</string>
+ <string key="NSWindowClass">NSWindow</string>
+ <object class="NSMutableString" key="NSViewClass">
+ <characters key="NS.bytes">View</characters>
+ </object>
+ <string key="NSWindowContentMaxSize">{3.40282e+38, 3.40282e+38}</string>
+ <object class="NSView" key="NSWindowView" id="531653578">
+ <nil key="NSNextResponder"/>
+ <int key="NSvFlags">256</int>
+ <object class="NSMutableArray" key="NSSubviews">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSTextField" id="576822733">
+ <reference key="NSNextResponder" ref="531653578"/>
+ <int key="NSvFlags">266</int>
+ <string key="NSFrame">{{89, 287}, {506, 17}}</string>
+ <reference key="NSSuperview" ref="531653578"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSTextFieldCell" key="NSCell" id="931027845">
+ <int key="NSCellFlags">69336577</int>
+ <int key="NSCellFlags2">272629760</int>
+ <string key="NSContents">VLC crashed previously</string>
+ <reference key="NSSupport" ref="833315752"/>
+ <reference key="NSControlView" ref="576822733"/>
+ <reference key="NSBackgroundColor" ref="761806114"/>
+ <reference key="NSTextColor" ref="1070214203"/>
+ </object>
+ </object>
+ <object class="NSTextField" id="344058330">
+ <reference key="NSNextResponder" ref="531653578"/>
+ <int key="NSvFlags">266</int>
+ <string key="NSFrame">{{89, 208}, {506, 71}}</string>
+ <reference key="NSSuperview" ref="531653578"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSTextFieldCell" key="NSCell" id="937384459">
+ <int key="NSCellFlags">69336577</int>
+ <int key="NSCellFlags2">272629760</int>
+ <string type="base64-UTF8" key="NSContents">RG8geW91IHdhbnQgdG8gc2VuZCBkZXRhaWxzIG9uIHRoZSBjcmFzaCB0byBWTEMncyBkZXZlbG9wbWVu
+dCB0ZWFtPwoKSWYgeW91IHdhbnQsIHlvdSBjYW4gZW50ZXIgYSBmZXcgbGluZXMgb24gd2hhdCB5b3Ug
+ZGlkIGJlZm9yZSBWTEMgY3Jhc2hlZCBhbG9uZyB3aXRoIG90aGVyIGhlbHBmdWwgaW5mb3JtYXRpb246
+IGEgbGluayB0byBkb3dubG9hZCBhIHNhbXBsZSBmaWxlLCBhIFVSTCBvZiBhIG5ldHdvcmsgc3RyZWFt
+LCAuLi4</string>
+ <reference key="NSSupport" ref="26"/>
+ <reference key="NSControlView" ref="344058330"/>
+ <reference key="NSBackgroundColor" ref="761806114"/>
+ <reference key="NSTextColor" ref="1070214203"/>
+ </object>
+ </object>
+ <object class="NSImageView" id="965089166">
+ <reference key="NSNextResponder" ref="531653578"/>
+ <int key="NSvFlags">268</int>
+ <object class="NSMutableSet" key="NSDragTypes">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMutableArray" key="set.sortedObjects">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>Apple PDF pasteboard type</string>
+ <string>Apple PICT pasteboard type</string>
+ <string>Apple PNG pasteboard type</string>
+ <string>NSFilenamesPboardType</string>
+ <string>NeXT Encapsulated PostScript v1.2 pasteboard type</string>
+ <string>NeXT TIFF v4.0 pasteboard type</string>
+ </object>
+ </object>
+ <string key="NSFrame">{{20, 240}, {64, 64}}</string>
+ <reference key="NSSuperview" ref="531653578"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSImageCell" key="NSCell" id="432927797">
+ <int key="NSCellFlags">130560</int>
+ <int key="NSCellFlags2">33554432</int>
+ <object class="NSCustomResource" key="NSContents">
+ <string key="NSClassName">NSImage</string>
+ <string key="NSResourceName">NSApplicationIcon</string>
+ </object>
+ <int key="NSAlign">0</int>
+ <int key="NSScale">0</int>
+ <int key="NSStyle">0</int>
+ <bool key="NSAnimates">NO</bool>
+ </object>
+ <bool key="NSEditable">YES</bool>
+ </object>
+ <object class="NSScrollView" id="17789152">
+ <reference key="NSNextResponder" ref="531653578"/>
+ <int key="NSvFlags">274</int>
+ <object class="NSMutableArray" key="NSSubviews">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSClipView" id="726099649">
+ <reference key="NSNextResponder" ref="17789152"/>
+ <int key="NSvFlags">2304</int>
+ <object class="NSMutableArray" key="NSSubviews">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSTextView" id="789219168">
+ <reference key="NSNextResponder" ref="726099649"/>
+ <int key="NSvFlags">2322</int>
+ <string key="NSFrameSize">{498, 14}</string>
+ <reference key="NSSuperview" ref="726099649"/>
+ <object class="NSTextContainer" key="NSTextContainer" id="515298258">
+ <object class="NSLayoutManager" key="NSLayoutManager">
+ <object class="NSTextStorage" key="NSTextStorage">
+ <object class="NSMutableString" key="NSString">
+ <characters key="NS.bytes"/>
+ </object>
+ <nil key="NSDelegate"/>
+ </object>
+ <object class="NSMutableArray" key="NSTextContainers">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="515298258"/>
+ </object>
+ <int key="NSLMFlags">6</int>
+ <nil key="NSDelegate"/>
+ </object>
+ <reference key="NSTextView" ref="789219168"/>
+ <double key="NSWidth">4.980000e+02</double>
+ <int key="NSTCFlags">1</int>
+ </object>
+ <object class="NSTextViewSharedData" key="NSSharedData">
+ <int key="NSFlags">12259</int>
+ <reference key="NSBackgroundColor" ref="48524820"/>
+ <reference key="NSInsertionColor" ref="450125846"/>
+ <object class="NSDictionary" key="NSSelectedAttributes">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMutableArray" key="dict.sortedKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>NSBackgroundColor</string>
+ <string>NSColor</string>
+ </object>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="912805975"/>
+ <reference ref="421363063"/>
+ </object>
+ </object>
+ <nil key="NSMarkedAttributes"/>
+ <object class="NSDictionary" key="NSLinkAttributes">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMutableArray" key="dict.sortedKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>NSColor</string>
+ <string>NSUnderline</string>
+ </object>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="624757525"/>
+ <reference ref="9"/>
+ </object>
+ </object>
+ <nil key="NSDefaultParagraphStyle"/>
+ </object>
+ <int key="NSTVFlags">6</int>
+ <string key="NSMaxSize">{998, 1e+07}</string>
+ <string key="NSMinize">{497, 0}</string>
+ <nil key="NSDelegate"/>
+ </object>
+ </object>
+ <string key="NSFrame">{{1, 1}, {498, 102}}</string>
+ <reference key="NSSuperview" ref="17789152"/>
+ <reference key="NSNextKeyView" ref="789219168"/>
+ <reference key="NSDocView" ref="789219168"/>
+ <reference key="NSBGColor" ref="48524820"/>
+ <reference key="NSCursor" ref="917748049"/>
+ <int key="NScvFlags">4</int>
+ </object>
+ <object class="NSScroller" id="162946354">
+ <reference key="NSNextResponder" ref="17789152"/>
+ <int key="NSvFlags">-2147483392</int>
+ <string key="NSFrame">{{484, 1}, {15, 102}}</string>
+ <reference key="NSSuperview" ref="17789152"/>
+ <reference key="NSTarget" ref="17789152"/>
+ <string key="NSAction">_doScroller:</string>
+ <double key="NSPercent">9.714286e-01</double>
+ </object>
+ <object class="NSScroller" id="543387813">
+ <reference key="NSNextResponder" ref="17789152"/>
+ <int key="NSvFlags">256</int>
+ <string key="NSFrame">{{-100, -100}, {87, 18}}</string>
+ <reference key="NSSuperview" ref="17789152"/>
+ <int key="NSsFlags">1</int>
+ <reference key="NSTarget" ref="17789152"/>
+ <string key="NSAction">_doScroller:</string>
+ <double key="NSCurValue">1.000000e+00</double>
+ <double key="NSPercent">9.456522e-01</double>
+ </object>
+ </object>
+ <string key="NSFrame">{{92, 96}, {500, 104}}</string>
+ <reference key="NSSuperview" ref="531653578"/>
+ <reference key="NSNextKeyView" ref="726099649"/>
+ <int key="NSsFlags">530</int>
+ <reference key="NSVScroller" ref="162946354"/>
+ <reference key="NSHScroller" ref="543387813"/>
+ <reference key="NSContentView" ref="726099649"/>
+ </object>
+ <object class="NSButton" id="771746599">
+ <reference key="NSNextResponder" ref="531653578"/>
+ <int key="NSvFlags">257</int>
+ <string key="NSFrame">{{475, 12}, {123, 32}}</string>
+ <reference key="NSSuperview" ref="531653578"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSButtonCell" key="NSCell" id="184708287">
+ <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags2">134217728</int>
+ <string key="NSContents">Send</string>
+ <reference key="NSSupport" ref="907792543"/>
+ <reference key="NSControlView" ref="771746599"/>
+ <int key="NSButtonFlags">-2038284033</int>
+ <int key="NSButtonFlags2">1</int>
+ <reference key="NSAlternateImage" ref="907792543"/>
+ <string key="NSAlternateContents"/>
+ <string type="base64-UTF8" key="NSKeyEquivalent">DQ</string>
+ <int key="NSPeriodicDelay">200</int>
+ <int key="NSPeriodicInterval">25</int>
+ </object>
+ </object>
+ <object class="NSButton" id="226481144">
+ <reference key="NSNextResponder" ref="531653578"/>
+ <int key="NSvFlags">257</int>
+ <string key="NSFrame">{{352, 12}, {123, 32}}</string>
+ <reference key="NSSuperview" ref="531653578"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSButtonCell" key="NSCell" id="725164878">
+ <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags2">134217728</int>
+ <string type="base64-UTF8" key="NSContents">RG9uJ3QgU2VuZA</string>
+ <reference key="NSSupport" ref="907792543"/>
+ <reference key="NSControlView" ref="226481144"/>
+ <int key="NSButtonFlags">-2038284033</int>
+ <int key="NSButtonFlags2">1</int>
+ <reference key="NSAlternateImage" ref="907792543"/>
+ <string key="NSAlternateContents"/>
+ <string type="base64-UTF8" key="NSKeyEquivalent">Gw</string>
+ <int key="NSPeriodicDelay">200</int>
+ <int key="NSPeriodicInterval">25</int>
+ </object>
+ </object>
+ <object class="NSButton" id="233168328">
+ <reference key="NSNextResponder" ref="531653578"/>
+ <int key="NSvFlags">290</int>
+ <string key="NSFrame">{{89, 74}, {505, 16}}</string>
+ <reference key="NSSuperview" ref="531653578"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSButtonCell" key="NSCell" id="961360821">
+ <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags2">131072</int>
+ <string key="NSContents">I agree to be possibly contacted about this bugreport.</string>
+ <reference key="NSSupport" ref="26"/>
+ <reference key="NSControlView" ref="233168328"/>
+ <int key="NSButtonFlags">1211912703</int>
+ <int key="NSButtonFlags2">2</int>
+ <reference key="NSAlternateImage" ref="698379195"/>
+ <string key="NSAlternateContents"/>
+ <string key="NSKeyEquivalent"/>
+ <int key="NSPeriodicDelay">200</int>
+ <int key="NSPeriodicInterval">25</int>
+ </object>
+ </object>
+ <object class="NSTextField" id="471272006">
+ <reference key="NSNextResponder" ref="531653578"/>
+ <int key="NSvFlags">290</int>
+ <string key="NSFrame">{{107, 46}, {488, 28}}</string>
+ <reference key="NSSuperview" ref="531653578"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSTextFieldCell" key="NSCell" id="695391491">
+ <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags2">272629760</int>
+ <string key="NSContents">Only your default E-Mail address will be submitted, including no further information.</string>
+ <reference key="NSSupport" ref="26"/>
+ <reference key="NSControlView" ref="471272006"/>
+ <reference key="NSBackgroundColor" ref="761806114"/>
+ <reference key="NSTextColor" ref="1070214203"/>
+ </object>
+ </object>
+ </object>
+ <string key="NSFrameSize">{612, 324}</string>
+ </object>
+ <string key="NSScreenRect">{{0, 0}, {1280, 778}}</string>
+ <string key="NSMaxSize">{3.40282e+38, 3.40282e+38}</string>
+ </object>
+ <object class="NSCustomObject" id="840376184">
+ <string key="NSClassName">VLCSidebar</string>
+ </object>
+ <object class="NSWindowTemplate" id="181536822">
+ <int key="NSWindowStyleMask">271</int>
+ <int key="NSWindowBacking">2</int>
+ <string key="NSWindowRect">{{89, 173}, {886, 548}}</string>
+ <int key="NSWTFlags">1946157056</int>
+ <string key="NSWindowTitle">VLC media player</string>
+ <string key="NSWindowClass">VLCEmbeddedWindow</string>
+ <nil key="NSViewClass"/>
+ <string key="NSWindowContentMaxSize">{3.40282e+38, 3.40282e+38}</string>
+ <string key="NSWindowContentMinSize">{766, 114}</string>
+ <object class="NSView" key="NSWindowView" id="810175085">
+ <reference key="NSNextResponder"/>
+ <int key="NSvFlags">256</int>
+ <object class="NSMutableArray" key="NSSubviews">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSSplitView" id="791459162">
+ <reference key="NSNextResponder" ref="810175085"/>
+ <int key="NSvFlags">274</int>
+ <object class="NSMutableArray" key="NSSubviews">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSCustomView" id="393458837">
+ <reference key="NSNextResponder" ref="791459162"/>
+ <int key="NSvFlags">256</int>
+ <object class="NSMutableArray" key="NSSubviews">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSScrollView" id="630217983">
+ <reference key="NSNextResponder" ref="393458837"/>
+ <int key="NSvFlags">274</int>
+ <object class="NSMutableArray" key="NSSubviews">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSClipView" id="266786671">
+ <reference key="NSNextResponder" ref="630217983"/>
+ <int key="NSvFlags">2304</int>
+ <object class="NSMutableArray" key="NSSubviews">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSOutlineView" id="567803078">
+ <reference key="NSNextResponder" ref="266786671"/>
+ <int key="NSvFlags">4370</int>
+ <string key="NSFrameSize">{215, 496}</string>
+ <reference key="NSSuperview" ref="266786671"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="_NSCornerView" key="NSCornerView">
+ <nil key="NSNextResponder"/>
+ <int key="NSvFlags">-2147483392</int>
+ <string key="NSFrame">{{200, 0}, {16, 17}}</string>
+ </object>
+ <object class="NSMutableArray" key="NSTableColumns">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSTableColumn" id="870934265">
+ <string key="NSIdentifier">name</string>
+ <double key="NSWidth">2.120000e+02</double>
+ <double key="NSMinWidth">1.600000e+01</double>
+ <double key="NSMaxWidth">1.000000e+03</double>
+ <object class="NSTableHeaderCell" key="NSHeaderCell">
+ <int key="NSCellFlags">75628032</int>
+ <int key="NSCellFlags2">0</int>
+ <string key="NSContents"/>
+ <reference key="NSSupport" ref="26"/>
+ <object class="NSColor" key="NSBackgroundColor">
+ <int key="NSColorSpace">3</int>
+ <bytes key="NSWhite">MC4zMzMzMzI5OQA</bytes>
+ </object>
+ <reference key="NSTextColor" ref="178341839"/>
+ </object>
+ <object class="NSTextFieldCell" key="NSDataCell" id="142262764">
+ <int key="NSCellFlags">337772096</int>
+ <int key="NSCellFlags2">2048</int>
+ <reference key="NSSupport" ref="26"/>
+ <reference key="NSControlView" ref="567803078"/>
+ <reference key="NSBackgroundColor" ref="577926348"/>
+ <reference key="NSTextColor" ref="1070214203"/>
+ </object>
+ <int key="NSResizingMask">3</int>
+ <bool key="NSIsResizeable">YES</bool>
+ <reference key="NSTableView" ref="567803078"/>
+ </object>
+ </object>
+ <double key="NSIntercellSpacingWidth">3.000000e+00</double>
+ <object class="NSColor" key="NSBackgroundColor">
+ <int key="NSColorSpace">6</int>
+ <string key="NSCatalogName">System</string>
+ <string key="NSColorName">_sourceListBackgroundColor</string>
+ <object class="NSColor" key="NSColor">
+ <int key="NSColorSpace">1</int>
+ <bytes key="NSRGB">MC44MzkyMTU3IDAuODY2NjY2NjcgMC44OTgwMzkyMgA</bytes>
+ </object>
+ </object>
+ <reference key="NSGridColor" ref="498782704"/>
+ <double key="NSRowHeight">2.000000e+01</double>
+ <int key="NSTvFlags">37748736</int>
+ <int key="NSColumnAutoresizingStyle">5</int>
+ <int key="NSDraggingSourceMaskForLocal">15</int>
+ <int key="NSDraggingSourceMaskForNonLocal">0</int>
+ <bool key="NSAllowsTypeSelect">NO</bool>
+ <int key="NSTableViewSelectionHighlightStyle">1</int>
+ <bool key="NSOutlineViewAutoresizesOutlineColumnKey">NO</bool>
+ <float key="NSOutlineViewIndentationPerLevelKey">1.400000e+01</float>
+ </object>
+ </object>
+ <string key="NSFrameSize">{215, 496}</string>
+ <reference key="NSSuperview" ref="630217983"/>
+ <reference key="NSNextKeyView" ref="567803078"/>
+ <reference key="NSDocView" ref="567803078"/>
+ <reference key="NSBGColor" ref="577926348"/>
+ <int key="NScvFlags">4</int>
+ </object>
+ <object class="NSScroller" id="994195845">
+ <reference key="NSNextResponder" ref="630217983"/>
+ <int key="NSvFlags">-2147483392</int>
+ <string key="NSFrame">{{200, 0}, {15, 496}}</string>
+ <reference key="NSSuperview" ref="630217983"/>
+ <reference key="NSTarget" ref="630217983"/>
+ <string key="NSAction">_doScroller:</string>
+ <double key="NSPercent">9.979879e-01</double>
+ </object>
+ <object class="NSScroller" id="928825784">
+ <reference key="NSNextResponder" ref="630217983"/>
+ <int key="NSvFlags">-2147483392</int>
+ <string key="NSFrame">{{-100, -100}, {128, 15}}</string>
+ <reference key="NSSuperview" ref="630217983"/>
+ <int key="NSsFlags">1</int>
+ <reference key="NSTarget" ref="630217983"/>
+ <string key="NSAction">_doScroller:</string>
+ <double key="NSCurValue">4.651163e-03</double>
+ <double key="NSPercent">8.888889e-01</double>
+ </object>
+ </object>
+ <string key="NSFrame">{{0, 51}, {215, 496}}</string>
+ <reference key="NSSuperview" ref="393458837"/>
+ <reference key="NSNextKeyView" ref="266786671"/>
+ <int key="NSsFlags">528</int>
+ <reference key="NSVScroller" ref="994195845"/>
+ <reference key="NSHScroller" ref="928825784"/>
+ <reference key="NSContentView" ref="266786671"/>
+ <bytes key="NSScrollAmts">AAAAAAAAAABBoAAAQaAAAA</bytes>
+ </object>
+ <object class="NSCustomView" id="471969879">
+ <reference key="NSNextResponder" ref="393458837"/>
+ <int key="NSvFlags">290</int>
+ <object class="NSMutableArray" key="NSSubviews">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSButton" id="152046718">
+ <reference key="NSNextResponder" ref="471969879"/>
+ <int key="NSvFlags">260</int>
+ <string key="NSFrame">{{-1, 0}, {32, 23}}</string>
+ <reference key="NSSuperview" ref="471969879"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSButtonCell" key="NSCell" id="8305122">
+ <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags2">134217728</int>
+ <string key="NSContents"/>
+ <reference key="NSSupport" ref="907792543"/>
+ <reference key="NSControlView" ref="152046718"/>
+ <int key="NSButtonFlags">-2042347265</int>
+ <int key="NSButtonFlags2">6</int>
+ <object class="NSCustomResource" key="NSNormalImage">
+ <string key="NSClassName">NSImage</string>
+ <string key="NSResourceName">sidebarAdd</string>
+ </object>
+ <string key="NSAlternateContents"/>
+ <object class="NSMutableString" key="NSKeyEquivalent">
+ <characters key="NS.bytes"/>
+ </object>
+ <int key="NSPeriodicDelay">200</int>
+ <int key="NSPeriodicInterval">25</int>
+ </object>
+ </object>
+ <object class="NSButton" id="1003872504">
+ <reference key="NSNextResponder" ref="471969879"/>
+ <int key="NSvFlags">260</int>
+ <string key="NSFrame">{{30, 0}, {32, 23}}</string>
+ <reference key="NSSuperview" ref="471969879"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSButtonCell" key="NSCell" id="734574901">
+ <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags2">134217728</int>
+ <string key="NSContents"/>
+ <reference key="NSSupport" ref="907792543"/>
+ <reference key="NSControlView" ref="1003872504"/>
+ <int key="NSButtonFlags">138690815</int>
+ <int key="NSButtonFlags2">6</int>
+ <object class="NSCustomResource" key="NSNormalImage">
+ <string key="NSClassName">NSImage</string>
+ <string key="NSResourceName">sidebarShuffle</string>
+ </object>
+ <string key="NSAlternateContents"/>
+ <object class="NSMutableString" key="NSKeyEquivalent">
+ <characters key="NS.bytes"/>
+ </object>
+ <int key="NSPeriodicDelay">200</int>
+ <int key="NSPeriodicInterval">25</int>
+ </object>
+ </object>
+ <object class="NSButton" id="1003622457">
+ <reference key="NSNextResponder" ref="471969879"/>
+ <int key="NSvFlags">260</int>
+ <string key="NSFrame">{{61, 0}, {32, 23}}</string>
+ <reference key="NSSuperview" ref="471969879"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSButtonCell" key="NSCell" id="575187563">
+ <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags2">134217728</int>
+ <string key="NSContents"/>
+ <reference key="NSSupport" ref="907792543"/>
+ <reference key="NSControlView" ref="1003622457"/>
+ <int key="NSButtonFlags">138690815</int>
+ <int key="NSButtonFlags2">6</int>
+ <object class="NSCustomResource" key="NSNormalImage">
+ <string key="NSClassName">NSImage</string>
+ <string key="NSResourceName">sidebarRepeat</string>
+ </object>
+ <string key="NSAlternateContents"/>
+ <object class="NSMutableString" key="NSKeyEquivalent">
+ <characters key="NS.bytes"/>
+ </object>
+ <int key="NSPeriodicDelay">200</int>
+ <int key="NSPeriodicInterval">25</int>
+ </object>
+ </object>
+ </object>
+ <string key="NSFrameSize">{215, 23}</string>
+ <reference key="NSSuperview" ref="393458837"/>
+ <string key="NSClassName">sidestatusview</string>
+ <string key="NSExtension">NSView</string>
+ </object>
+ <object class="NSBox" id="151021100">
+ <reference key="NSNextResponder" ref="393458837"/>
+ <int key="NSvFlags">266</int>
+ <string key="NSFrame">{{0, 545}, {215, 5}}</string>
+ <reference key="NSSuperview" ref="393458837"/>
+ <string key="NSOffsets">{0, 0}</string>
+ <object class="NSTextFieldCell" key="NSTitleCell">
+ <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags2">0</int>
+ <string key="NSContents">Box</string>
+ <reference key="NSSupport" ref="907792543"/>
+ <reference key="NSBackgroundColor" ref="171240928"/>
+ <object class="NSColor" key="NSTextColor">
+ <int key="NSColorSpace">3</int>
+ <bytes key="NSWhite">MCAwLjgwMDAwMDAxAA</bytes>
+ </object>
+ </object>
+ <int key="NSBorderType">3</int>
+ <int key="NSBoxType">2</int>
+ <int key="NSTitlePosition">0</int>
+ <bool key="NSTransparent">NO</bool>
+ </object>
+ <object class="NSCustomView" id="985361470">
+ <reference key="NSNextResponder" ref="393458837"/>
+ <int key="NSvFlags">290</int>
+ <object class="NSMutableArray" key="NSSubviews">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSTextField" id="506953412">
+ <reference key="NSNextResponder" ref="985361470"/>
+ <int key="NSvFlags">290</int>
+ <string key="NSFrame">{{-3, 7}, {221, 14}}</string>
+ <reference key="NSSuperview" ref="985361470"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSTextFieldCell" key="NSCell" id="733469000">
+ <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags2">138412032</int>
+ <string key="NSContents">Statusbar</string>
+ <reference key="NSSupport" ref="26"/>
+ <reference key="NSControlView" ref="506953412"/>
+ <reference key="NSBackgroundColor" ref="761806114"/>
+ <reference key="NSTextColor" ref="450125846"/>
+ </object>
+ </object>
+ </object>
+ <string key="NSFrame">{{0, 23}, {215, 27}}</string>
+ <reference key="NSSuperview" ref="393458837"/>
+ <string key="NSClassName">statusbar</string>
+ </object>
+ <object class="NSBox" id="250917420">
+ <reference key="NSNextResponder" ref="393458837"/>
+ <int key="NSvFlags">34</int>
+ <string key="NSFrame">{{0, 49}, {215, 5}}</string>
+ <reference key="NSSuperview" ref="393458837"/>
+ <string key="NSOffsets">{0, 0}</string>
+ <object class="NSTextFieldCell" key="NSTitleCell">
+ <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags2">0</int>
+ <string key="NSContents">Box</string>
+ <reference key="NSSupport" ref="907792543"/>
+ <reference key="NSBackgroundColor" ref="171240928"/>
+ <object class="NSColor" key="NSTextColor">
+ <int key="NSColorSpace">3</int>
+ <bytes key="NSWhite">MCAwLjgwMDAwMDAxAA</bytes>
+ </object>
+ </object>
+ <int key="NSBorderType">3</int>
+ <int key="NSBoxType">2</int>
+ <int key="NSTitlePosition">0</int>
+ <bool key="NSTransparent">NO</bool>
+ </object>
+ </object>
+ <string key="NSFrameSize">{215, 548}</string>
+ <reference key="NSSuperview" ref="791459162"/>
+ <string key="NSClassName">NSView</string>
+ </object>
+ <object class="NSCustomView" id="273936964">
+ <reference key="NSNextResponder" ref="791459162"/>
+ <int key="NSvFlags">274</int>
+ <object class="NSMutableArray" key="NSSubviews">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSCustomView" id="704038250">
+ <reference key="NSNextResponder" ref="273936964"/>
+ <int key="NSvFlags">290</int>
+ <string key="NSFrameSize">{662, 83}</string>
+ <reference key="NSSuperview" ref="273936964"/>
+ <string key="NSClassName">embeddedbackground</string>
+ </object>
+ <object class="NSSplitView" id="1003147624">
+ <reference key="NSNextResponder" ref="273936964"/>
+ <int key="NSvFlags">274</int>
+ <object class="NSMutableArray" key="NSSubviews">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSCustomView" id="159309238">
+ <reference key="NSNextResponder" ref="1003147624"/>
+ <int key="NSvFlags">256</int>
+ <object class="NSMutableArray" key="NSSubviews">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSCustomView" id="640076027">
+ <reference key="NSNextResponder" ref="159309238"/>
+ <int key="NSvFlags">274</int>
+ <string key="NSFrameSize">{662, 455}</string>
+ <reference key="NSSuperview" ref="159309238"/>
+ <string key="NSClassName">VLCEmbeddedVoutView</string>
+ <string key="NSExtension">NSView</string>
+ </object>
+ </object>
+ <string key="NSFrameSize">{662, 455}</string>
+ <reference key="NSSuperview" ref="1003147624"/>
+ <string key="NSClassName">NSView</string>
+ </object>
+ <object class="NSCustomView" id="789232225">
+ <reference key="NSNextResponder" ref="1003147624"/>
+ <int key="NSvFlags">274</int>
+ <object class="NSMutableArray" key="NSSubviews">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSScrollView" id="718622970">
+ <reference key="NSNextResponder" ref="789232225"/>
+ <int key="NSvFlags">-2147483374</int>
+ <object class="NSMutableArray" key="NSSubviews">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSClipView" id="1072114214">
+ <reference key="NSNextResponder" ref="718622970"/>
+ <int key="NSvFlags">2304</int>
+ <object class="NSMutableArray" key="NSSubviews">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSOutlineView" id="269638670">
+ <reference key="NSNextResponder" ref="1072114214"/>
+ <int key="NSvFlags">274</int>
+ <string key="NSFrameSize">{645, 17}</string>
+ <reference key="NSSuperview" ref="1072114214"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSTableHeaderView" key="NSHeaderView" id="813023486">
+ <reference key="NSNextResponder" ref="136851465"/>
+ <int key="NSvFlags">256</int>
+ <string key="NSFrameSize">{645, 17}</string>
+ <reference key="NSSuperview" ref="136851465"/>
+ <reference key="NSTableView" ref="269638670"/>
+ </object>
+ <object class="_NSCornerView" key="NSCornerView" id="614121217">
+ <reference key="NSNextResponder" ref="718622970"/>
+ <int key="NSvFlags">256</int>
+ <string key="NSFrame">{{646, 0}, {16, 0}}</string>
+ <reference key="NSSuperview" ref="718622970"/>
+ </object>
+ <object class="NSMutableArray" key="NSTableColumns">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSTableColumn" id="434111196">
+ <string key="NSIdentifier">status</string>
+ <double key="NSWidth">1.600000e+01</double>
+ <double key="NSMinWidth">1.600000e+01</double>
+ <double key="NSMaxWidth">3.402823e+38</double>
+ <object class="NSTableHeaderCell" key="NSHeaderCell">
+ <int key="NSCellFlags">75628032</int>
+ <int key="NSCellFlags2">0</int>
+ <string key="NSContents"/>
+ <reference key="NSSupport" ref="26"/>
+ <reference key="NSBackgroundColor" ref="104623455"/>
+ <reference key="NSTextColor" ref="178341839"/>
+ </object>
+ <object class="NSImageCell" key="NSDataCell" id="196369285">
+ <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags2">33685504</int>
+ <reference key="NSSupport" ref="26"/>
+ <int key="NSAlign">0</int>
+ <int key="NSScale">0</int>
+ <int key="NSStyle">0</int>
+ <bool key="NSAnimates">NO</bool>
+ </object>
+ <reference key="NSTableView" ref="269638670"/>
+ </object>
+ <object class="NSTableColumn" id="299796820">
+ <string key="NSIdentifier">name</string>
+ <double key="NSWidth">3.040000e+02</double>
+ <double key="NSMinWidth">1.600000e+01</double>
+ <double key="NSMaxWidth">1.000000e+03</double>
+ <object class="NSTableHeaderCell" key="NSHeaderCell">
+ <int key="NSCellFlags">75628032</int>
+ <int key="NSCellFlags2">0</int>
+ <string key="NSContents">Name</string>
+ <reference key="NSSupport" ref="26"/>
+ <object class="NSColor" key="NSBackgroundColor" id="916118440">
+ <int key="NSColorSpace">3</int>
+ <bytes key="NSWhite">MC4zMzMzMzI5OQA</bytes>
+ </object>
+ <reference key="NSTextColor" ref="178341839"/>
+ </object>
+ <object class="NSTextFieldCell" key="NSDataCell" id="701654677">
+ <int key="NSCellFlags">67239488</int>
+ <int key="NSCellFlags2">272761856</int>
+ <reference key="NSSupport" ref="26"/>
+ <reference key="NSControlView" ref="269638670"/>
+ <reference key="NSBackgroundColor" ref="761806114"/>
+ <reference key="NSTextColor" ref="1070214203"/>
+ </object>
+ <int key="NSResizingMask">3</int>
+ <bool key="NSIsResizeable">YES</bool>
+ <reference key="NSTableView" ref="269638670"/>
+ </object>
+ <object class="NSTableColumn" id="577171085">
+ <string key="NSIdentifier">artist</string>
+ <double key="NSWidth">1.700000e+02</double>
+ <double key="NSMinWidth">2.000000e+01</double>
+ <double key="NSMaxWidth">1.000000e+03</double>
+ <object class="NSTableHeaderCell" key="NSHeaderCell">
+ <int key="NSCellFlags">75628032</int>
+ <int key="NSCellFlags2">0</int>
+ <string key="NSContents">Artist</string>
+ <reference key="NSSupport" ref="26"/>
+ <reference key="NSBackgroundColor" ref="916118440"/>
+ <reference key="NSTextColor" ref="178341839"/>
+ </object>
+ <object class="NSTextFieldCell" key="NSDataCell" id="737135154">
+ <int key="NSCellFlags">67239488</int>
+ <int key="NSCellFlags2">272761856</int>
+ <reference key="NSSupport" ref="26"/>
+ <reference key="NSControlView" ref="269638670"/>
+ <reference key="NSBackgroundColor" ref="761806114"/>
+ <reference key="NSTextColor" ref="1070214203"/>
+ </object>
+ <int key="NSResizingMask">2</int>
+ <bool key="NSIsResizeable">YES</bool>
+ <reference key="NSTableView" ref="269638670"/>
+ </object>
+ <object class="NSTableColumn" id="407071634">
+ <string key="NSIdentifier">duration</string>
+ <double key="NSWidth">6.000000e+01</double>
+ <double key="NSMinWidth">6.000000e+01</double>
+ <double key="NSMaxWidth">6.000000e+01</double>
+ <object class="NSTableHeaderCell" key="NSHeaderCell">
+ <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags2">134217728</int>
+ <string key="NSContents">Duration</string>
+ <reference key="NSSupport" ref="26"/>
+ <reference key="NSBackgroundColor" ref="104623455"/>
+ <reference key="NSTextColor" ref="178341839"/>
+ </object>
+ <object class="NSTextFieldCell" key="NSDataCell" id="198627758">
+ <int key="NSCellFlags">67239488</int>
+ <int key="NSCellFlags2">272761856</int>
+ <reference key="NSSupport" ref="26"/>
+ <reference key="NSControlView" ref="269638670"/>
+ <reference key="NSBackgroundColor" ref="761806114"/>
+ <reference key="NSTextColor" ref="1070214203"/>
+ </object>
+ <int key="NSResizingMask">2</int>
+ <bool key="NSIsResizeable">YES</bool>
+ <reference key="NSTableView" ref="269638670"/>
+ </object>
+ </object>
+ <double key="NSIntercellSpacingWidth">3.000000e+00</double>
+ <double key="NSIntercellSpacingHeight">2.000000e+00</double>
+ <reference key="NSBackgroundColor" ref="577926348"/>
+ <reference key="NSGridColor" ref="498782704"/>
+ <double key="NSRowHeight">1.500000e+01</double>
+ <int key="NSTvFlags">-610271232</int>
+ <string key="NSAutosaveName">mainPlaylistView</string>
+ <int key="NSGridStyleMask">1</int>
+ <int key="NSColumnAutoresizingStyle">4</int>
+ <int key="NSDraggingSourceMaskForLocal">15</int>
+ <int key="NSDraggingSourceMaskForNonLocal">0</int>
+ <bool key="NSAllowsTypeSelect">YES</bool>
+ <reference key="NSOutlineViewOutlineTableColumnKey" ref="299796820"/>
+ </object>
+ </object>
+ <string key="NSFrame">{{1, 0}, {645, 0}}</string>
+ <reference key="NSSuperview" ref="718622970"/>
+ <reference key="NSNextKeyView" ref="269638670"/>
+ <reference key="NSDocView" ref="269638670"/>
+ <reference key="NSBGColor" ref="577926348"/>
+ <int key="NScvFlags">4</int>
+ </object>
+ <object class="NSScroller" id="526276964">
+ <reference key="NSNextResponder" ref="718622970"/>
+ <int key="NSvFlags">256</int>
+ <string key="NSFrame">{{646, 0}, {15, 0}}</string>
+ <reference key="NSSuperview" ref="718622970"/>
+ <bool key="NSEnabled">YES</bool>
+ <reference key="NSTarget" ref="718622970"/>
+ <string key="NSAction">_doScroller:</string>
+ </object>
+ <object class="NSScroller" id="1046190814">
+ <reference key="NSNextResponder" ref="718622970"/>
+ <int key="NSvFlags">-2147483392</int>
+ <string key="NSFrame">{{1, 16}, {645, 15}}</string>
+ <reference key="NSSuperview" ref="718622970"/>
+ <int key="NSsFlags">1</int>
+ <reference key="NSTarget" ref="718622970"/>
+ <string key="NSAction">_doScroller:</string>
+ <double key="NSPercent">9.772727e-01</double>
+ </object>
+ <object class="NSClipView" id="136851465">
+ <reference key="NSNextResponder" ref="718622970"/>
+ <int key="NSvFlags">2304</int>
+ <object class="NSMutableArray" key="NSSubviews">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="813023486"/>
+ </object>
+ <string key="NSFrame">{{1, 0}, {645, 0}}</string>
+ <reference key="NSSuperview" ref="718622970"/>
+ <reference key="NSNextKeyView" ref="813023486"/>
+ <reference key="NSDocView" ref="813023486"/>
+ <reference key="NSBGColor" ref="577926348"/>
+ <int key="NScvFlags">4</int>
+ </object>
+ <reference ref="614121217"/>
+ </object>
+ <string key="NSFrameSize">{662, 0}</string>
+ <reference key="NSSuperview" ref="789232225"/>
+ <reference key="NSNextKeyView" ref="1072114214"/>
+ <int key="NSsFlags">626</int>
+ <reference key="NSVScroller" ref="526276964"/>
+ <reference key="NSHScroller" ref="1046190814"/>
+ <reference key="NSContentView" ref="1072114214"/>
+ <reference key="NSHeaderClipView" ref="136851465"/>
+ <reference key="NSCornerView" ref="614121217"/>
+ <bytes key="NSScrollAmts">QSAAAEEgAABBiAAAQYgAAA</bytes>
+ </object>
+ </object>
+ <string key="NSFrame">{{0, 464}, {662, 0}}</string>
+ <reference key="NSSuperview" ref="1003147624"/>
+ <string key="NSClassName">NSView</string>
+ </object>
+ </object>
+ <string key="NSFrame">{{0, 84}, {662, 464}}</string>
+ <reference key="NSSuperview" ref="273936964"/>
+ </object>
+ <object class="NSButton" id="11649400">
+ <reference key="NSNextResponder" ref="273936964"/>
+ <int key="NSvFlags">289</int>
+ <string key="NSFrame">{{535, 8}, {33, 25}}</string>
+ <reference key="NSSuperview" ref="273936964"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSButtonCell" key="NSCell" id="336976528">
+ <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags2">134217728</int>
+ <string key="NSContents"/>
+ <reference key="NSSupport" ref="907792543"/>
+ <reference key="NSControlView" ref="11649400"/>
+ <int key="NSButtonFlags">919355647</int>
+ <int key="NSButtonFlags2">35</int>
+ <object class="NSCustomResource" key="NSNormalImage">
+ <string key="NSClassName">NSImage</string>
+ <string key="NSResourceName">list_sm</string>
+ </object>
+ <string key="NSAlternateContents"/>
+ <string key="NSKeyEquivalent"/>
+ <int key="NSPeriodicDelay">400</int>
+ <int key="NSPeriodicInterval">75</int>
+ </object>
+ </object>
+ <object class="NSButton" id="650340619">
+ <reference key="NSNextResponder" ref="273936964"/>
+ <int key="NSvFlags">289</int>
+ <string key="NSFrame">{{576, 8}, {33, 25}}</string>
+ <reference key="NSSuperview" ref="273936964"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSButtonCell" key="NSCell" id="705176513">
+ <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags2">134217728</int>
+ <string key="NSContents"/>
+ <reference key="NSSupport" ref="907792543"/>
+ <reference key="NSControlView" ref="650340619"/>
+ <int key="NSButtonFlags">919355647</int>
+ <int key="NSButtonFlags2">35</int>
+ <object class="NSCustomResource" key="NSNormalImage">
+ <string key="NSClassName">NSImage</string>
+ <string key="NSResourceName">eq_sm</string>
+ </object>
+ <string key="NSAlternateContents"/>
+ <string key="NSKeyEquivalent"/>
+ <int key="NSPeriodicDelay">400</int>
+ <int key="NSPeriodicInterval">75</int>
+ </object>
+ </object>
+ <object class="NSButton" id="782624074">
+ <reference key="NSNextResponder" ref="273936964"/>
+ <int key="NSvFlags">289</int>
+ <string key="NSFrame">{{617, 8}, {33, 25}}</string>
+ <reference key="NSSuperview" ref="273936964"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSButtonCell" key="NSCell" id="575706706">
+ <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags2">134217728</int>
+ <string key="NSContents"/>
+ <reference key="NSSupport" ref="907792543"/>
+ <reference key="NSControlView" ref="782624074"/>
+ <int key="NSButtonFlags">-2033434369</int>
+ <int key="NSButtonFlags2">35</int>
+ <object class="NSCustomResource" key="NSNormalImage">
+ <string key="NSClassName">NSImage</string>
+ <string key="NSResourceName">fs_sm</string>
+ </object>
+ <string key="NSAlternateContents"/>
+ <string key="NSKeyEquivalent"/>
+ <int key="NSPeriodicDelay">400</int>
+ <int key="NSPeriodicInterval">75</int>
+ </object>
+ </object>
+ <object class="NSButton" id="803107562">
+ <reference key="NSNextResponder" ref="273936964"/>
+ <int key="NSvFlags">292</int>
+ <string key="NSFrame">{{11, 9}, {33, 25}}</string>
+ <reference key="NSSuperview" ref="273936964"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSButtonCell" key="NSCell" id="339071106">
+ <int key="NSCellFlags">604110336</int>
+ <int key="NSCellFlags2">134217728</int>
+ <string key="NSContents"/>
+ <reference key="NSSupport" ref="907792543"/>
+ <reference key="NSControlView" ref="803107562"/>
+ <int key="NSButtonFlags">-2033434369</int>
+ <int key="NSButtonFlags2">99</int>
+ <object class="NSCustomResource" key="NSNormalImage">
+ <string key="NSClassName">NSImage</string>
+ <string key="NSResourceName">prev_sm</string>
+ </object>
+ <string key="NSAlternateContents"/>
+ <string key="NSKeyEquivalent"/>
+ <int key="NSPeriodicDelay">400</int>
+ <int key="NSPeriodicInterval">75</int>
+ </object>
+ </object>
+ <object class="NSButton" id="1043798456">
+ <reference key="NSNextResponder" ref="273936964"/>
+ <int key="NSvFlags">292</int>
+ <string key="NSFrame">{{46, 9}, {33, 25}}</string>
+ <reference key="NSSuperview" ref="273936964"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSButtonCell" key="NSCell" id="949612662">
+ <int key="NSCellFlags">604110336</int>
+ <int key="NSCellFlags2">134217728</int>
+ <string key="NSContents"/>
+ <reference key="NSSupport" ref="907792543"/>
+ <reference key="NSControlView" ref="1043798456"/>
+ <int key="NSButtonFlags">-2033434369</int>
+ <int key="NSButtonFlags2">99</int>
+ <object class="NSCustomResource" key="NSNormalImage">
+ <string key="NSClassName">NSImage</string>
+ <string key="NSResourceName">stop_sm</string>
+ </object>
+ <string key="NSAlternateContents"/>
+ <string key="NSKeyEquivalent"/>
+ <int key="NSPeriodicDelay">400</int>
+ <int key="NSPeriodicInterval">75</int>
+ </object>
+ </object>
+ <object class="NSButton" id="339098234">
+ <reference key="NSNextResponder" ref="273936964"/>
+ <int key="NSvFlags">292</int>
+ <string key="NSFrame">{{81, 9}, {33, 25}}</string>
+ <reference key="NSSuperview" ref="273936964"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSButtonCell" key="NSCell" id="52989605">
+ <int key="NSCellFlags">604110336</int>
+ <int key="NSCellFlags2">134217728</int>
+ <string key="NSContents"/>
+ <reference key="NSSupport" ref="907792543"/>
+ <reference key="NSControlView" ref="339098234"/>
+ <int key="NSButtonFlags">-2033434369</int>
+ <int key="NSButtonFlags2">99</int>
+ <object class="NSCustomResource" key="NSNormalImage">
+ <string key="NSClassName">NSImage</string>
+ <string key="NSResourceName">next_sm</string>
+ </object>
+ <string key="NSAlternateContents"/>
+ <string key="NSKeyEquivalent"/>
+ <int key="NSPeriodicDelay">400</int>
+ <int key="NSPeriodicInterval">75</int>
+ </object>
+ </object>
+ <object class="NSSlider" id="1069893234">
+ <reference key="NSNextResponder" ref="273936964"/>
+ <int key="NSvFlags">292</int>
+ <string key="NSFrame">{{136, 12}, {88, 15}}</string>
+ <reference key="NSSuperview" ref="273936964"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSSliderCell" key="NSCell" id="91153386">
+ <int key="NSCellFlags">604372736</int>
+ <int key="NSCellFlags2">131072</int>
+ <object class="NSMutableString" key="NSContents">
+ <characters key="NS.bytes"/>
+ </object>
+ <reference key="NSSupport" ref="854546163"/>
+ <reference key="NSControlView" ref="1069893234"/>
+ <double key="NSMaxValue">3.200000e+01</double>
+ <double key="NSMinValue">0.000000e+00</double>
+ <double key="NSValue">8.000000e+00</double>
+ <double key="NSAltIncValue">0.000000e+00</double>
+ <int key="NSNumberOfTickMarks">0</int>
+ <int key="NSTickMarkPosition">1</int>
+ <bool key="NSAllowsTickMarkValuesOnly">NO</bool>
+ <bool key="NSVertical">NO</bool>
+ </object>
+ </object>
+ <object class="NSButton" id="537857711">
+ <reference key="NSNextResponder" ref="273936964"/>
+ <int key="NSvFlags">292</int>
+ <string key="NSFrame">{{224, 10}, {20, 20}}</string>
+ <reference key="NSSuperview" ref="273936964"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSButtonCell" key="NSCell" id="368279232">
+ <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags2">134217728</int>
+ <string key="NSContents"/>
+ <reference key="NSSupport" ref="644502772"/>
+ <reference key="NSControlView" ref="537857711"/>
+ <int key="NSButtonFlags">-931921665</int>
+ <int key="NSButtonFlags2">2</int>
+ <reference key="NSNormalImage" ref="820566923"/>
+ <reference key="NSAlternateImage" ref="820566923"/>
+ <string key="NSAlternateContents"/>
+ <object class="NSMutableString" key="NSKeyEquivalent">
+ <characters key="NS.bytes"/>
+ </object>
+ <int key="NSPeriodicDelay">200</int>
+ <int key="NSPeriodicInterval">25</int>
+ </object>
+ </object>
+ <object class="NSButton" id="837877940">
+ <reference key="NSNextResponder" ref="273936964"/>
+ <int key="NSvFlags">292</int>
+ <string key="NSFrame">{{120, 10}, {20, 20}}</string>
+ <reference key="NSSuperview" ref="273936964"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSButtonCell" key="NSCell" id="315651292">
+ <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags2">134217728</int>
+ <string key="NSContents"/>
+ <reference key="NSSupport" ref="644502772"/>
+ <reference key="NSControlView" ref="837877940"/>
+ <int key="NSButtonFlags">-931397377</int>
+ <int key="NSButtonFlags2">2</int>
+ <reference key="NSNormalImage" ref="150287333"/>
+ <reference key="NSAlternateImage" ref="150287333"/>
+ <string key="NSAlternateContents"/>
+ <object class="NSMutableString" key="NSKeyEquivalent">
+ <characters key="NS.bytes"/>
+ </object>
+ <int key="NSPeriodicDelay">200</int>
+ <int key="NSPeriodicInterval">25</int>
+ </object>
+ </object>
+ <object class="NSButton" id="990345256">
+ <reference key="NSNextResponder" ref="273936964"/>
+ <int key="NSvFlags">292</int>
+ <string key="NSFrame">{{10, 41}, {31, 32}}</string>
+ <reference key="NSSuperview" ref="273936964"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSButtonCell" key="NSCell" id="355116668">
+ <int key="NSCellFlags">604634624</int>
+ <int key="NSCellFlags2">134217728</int>
+ <string key="NSContents"/>
+ <reference key="NSSupport" ref="644502772"/>
+ <reference key="NSControlView" ref="990345256"/>
+ <int key="NSButtonFlags">139723007</int>
+ <int key="NSButtonFlags2">2</int>
+ <object class="NSCustomResource" key="NSNormalImage">
+ <string key="NSClassName">NSImage</string>
+ <string key="NSResourceName">backward_big</string>
+ </object>
+ <object class="NSCustomResource" key="NSAlternateImage">
+ <string key="NSClassName">NSImage</string>
+ <string key="NSResourceName">backward_big_down</string>
+ </object>
+ <string key="NSAlternateContents"/>
+ <object class="NSMutableString" key="NSKeyEquivalent">
+ <characters key="NS.bytes"/>
+ </object>
+ <int key="NSPeriodicDelay">200</int>
+ <int key="NSPeriodicInterval">25</int>
+ </object>
+ </object>
+ <object class="NSButton" id="236103997">
+ <reference key="NSNextResponder" ref="273936964"/>
+ <int key="NSvFlags">292</int>
+ <string key="NSFrame">{{43, 37}, {39, 40}}</string>
+ <reference key="NSSuperview" ref="273936964"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSButtonCell" key="NSCell" id="462806559">
+ <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags2">134217728</int>
+ <string key="NSContents"/>
+ <reference key="NSSupport" ref="392941671"/>
+ <reference key="NSControlView" ref="236103997"/>
+ <int key="NSButtonFlags">139723007</int>
+ <int key="NSButtonFlags2">2</int>
+ <object class="NSCustomResource" key="NSNormalImage">
+ <string key="NSClassName">NSImage</string>
+ <string key="NSResourceName">play_big</string>
+ </object>
+ <object class="NSCustomResource" key="NSAlternateImage">
+ <string key="NSClassName">NSImage</string>
+ <string key="NSResourceName">play_big_down</string>
+ </object>
+ <string key="NSAlternateContents"/>
+ <string key="NSKeyEquivalent"/>
+ <int key="NSPeriodicDelay">200</int>
+ <int key="NSPeriodicInterval">25</int>
+ </object>
+ </object>
+ <object class="NSButton" id="68648151">
+ <reference key="NSNextResponder" ref="273936964"/>
+ <int key="NSvFlags">292</int>
+ <string key="NSFrame">{{84, 41}, {31, 32}}</string>
+ <reference key="NSSuperview" ref="273936964"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSButtonCell" key="NSCell" id="919282188">
+ <int key="NSCellFlags">604634624</int>
+ <int key="NSCellFlags2">134217728</int>
+ <string key="NSContents"/>
+ <reference key="NSSupport" ref="644502772"/>
+ <reference key="NSControlView" ref="68648151"/>
+ <int key="NSButtonFlags">138674431</int>
+ <int key="NSButtonFlags2">2</int>
+ <object class="NSCustomResource" key="NSNormalImage">
+ <string key="NSClassName">NSImage</string>
+ <string key="NSResourceName">forward_big</string>
+ </object>
+ <object class="NSCustomResource" key="NSAlternateImage">
+ <string key="NSClassName">NSImage</string>
+ <string key="NSResourceName">forward_big_down</string>
+ </object>
+ <string key="NSAlternateContents"/>
+ <object class="NSMutableString" key="NSKeyEquivalent">
+ <characters key="NS.bytes"/>
+ </object>
+ <int key="NSPeriodicDelay">200</int>
+ <int key="NSPeriodicInterval">25</int>
+ </object>
+ </object>
+ <object class="NSSearchField" id="323070352">
+ <reference key="NSNextResponder" ref="273936964"/>
+ <int key="NSvFlags">-2147483357</int>
+ <string key="NSFrame">{{368, 10}, {158, 22}}</string>
+ <reference key="NSSuperview" ref="273936964"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSSearchFieldCell" key="NSCell" id="165982631">
+ <int key="NSCellFlags">343014976</int>
+ <int key="NSCellFlags2">268436480</int>
+ <string key="NSContents"/>
+ <reference key="NSSupport" ref="907792543"/>
+ <reference key="NSControlView" ref="323070352"/>
+ <bool key="NSDrawsBackground">YES</bool>
+ <int key="NSTextBezelStyle">1</int>
+ <reference key="NSBackgroundColor" ref="171240928"/>
+ <reference key="NSTextColor" ref="1070214203"/>
+ <object class="NSButtonCell" key="NSSearchButtonCell">
+ <int key="NSCellFlags">130560</int>
+ <int key="NSCellFlags2">0</int>
+ <string key="NSContents">search</string>
+ <string key="NSAction">_searchFieldSearch:</string>
+ <reference key="NSTarget" ref="165982631"/>
+ <reference key="NSControlView" ref="323070352"/>
+ <int key="NSButtonFlags">138690815</int>
+ <int key="NSButtonFlags2">0</int>
+ <string key="NSKeyEquivalent"/>
+ <int key="NSPeriodicDelay">400</int>
+ <int key="NSPeriodicInterval">75</int>
+ </object>
+ <object class="NSButtonCell" key="NSCancelButtonCell">
+ <int key="NSCellFlags">130560</int>
+ <int key="NSCellFlags2">0</int>
+ <string key="NSContents">clear</string>
+ <object class="NSMutableArray" key="NSAccessibilityOverriddenAttributes">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMutableDictionary">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMutableArray" key="dict.sortedKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>AXDescription</string>
+ <string>NSAccessibilityEncodedAttributesValueType</string>
+ </object>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>cancel</string>
+ <reference ref="9"/>
+ </object>
+ </object>
+ </object>
+ <string key="NSAction">_searchFieldCancel:</string>
+ <reference key="NSTarget" ref="165982631"/>
+ <reference key="NSControlView" ref="323070352"/>
+ <int key="NSButtonFlags">138690815</int>
+ <int key="NSButtonFlags2">0</int>
+ <string key="NSKeyEquivalent"/>
+ <int key="NSPeriodicDelay">400</int>
+ <int key="NSPeriodicInterval">75</int>
+ </object>
+ <string key="NSRecentsAutosaveName">VLC media player search</string>
+ <int key="NSMaximumRecents">10</int>
+ </object>
+ </object>
+ <object class="NSTextField" id="1054006624">
+ <reference key="NSNextResponder" ref="273936964"/>
+ <int key="NSvFlags">258</int>
+ <string key="NSFrame">{{129, 58}, {469, 13}}</string>
+ <reference key="NSSuperview" ref="273936964"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSTextFieldCell" key="NSCell" id="873596120">
+ <int key="NSCellFlags">-2079195584</int>
+ <int key="NSCellFlags2">4195328</int>
+ <string key="NSContents">text</string>
+ <reference key="NSSupport" ref="644502772"/>
+ <reference key="NSControlView" ref="1054006624"/>
+ <reference key="NSBackgroundColor" ref="171240928"/>
+ <reference key="NSTextColor" ref="231594696"/>
+ </object>
+ </object>
+ <object class="NSTextField" id="830022764">
+ <reference key="NSNextResponder" ref="273936964"/>
+ <int key="NSvFlags">289</int>
+ <string key="NSFrame">{{600, 58}, {46, 13}}</string>
+ <reference key="NSSuperview" ref="273936964"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSTextFieldCell" key="NSCell" id="909310125">
+ <int key="NSCellFlags">-2079195584</int>
+ <int key="NSCellFlags2">138413056</int>
+ <string key="NSContents">0:00:00</string>
+ <reference key="NSSupport" ref="644502772"/>
+ <reference key="NSControlView" ref="830022764"/>
+ <reference key="NSBackgroundColor" ref="171240928"/>
+ <reference key="NSTextColor" ref="231594696"/>
+ </object>
+ </object>
+ <object class="NSSlider" id="439918596">
+ <reference key="NSNextResponder" ref="273936964"/>
+ <int key="NSvFlags">290</int>
+ <string key="NSFrame">{{130, 43}, {511, 15}}</string>
+ <reference key="NSSuperview" ref="273936964"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSSliderCell" key="NSCell" id="940359849">
+ <int key="NSCellFlags">604372736</int>
+ <int key="NSCellFlags2">131072</int>
+ <object class="NSMutableString" key="NSContents">
+ <characters key="NS.bytes"/>
+ </object>
+ <reference key="NSSupport" ref="854546163"/>
+ <reference key="NSControlView" ref="439918596"/>
+ <double key="NSMaxValue">1.000000e+04</double>
+ <double key="NSMinValue">0.000000e+00</double>
+ <double key="NSValue">0.000000e+00</double>
+ <double key="NSAltIncValue">0.000000e+00</double>
+ <int key="NSNumberOfTickMarks">0</int>
+ <int key="NSTickMarkPosition">1</int>
+ <bool key="NSAllowsTickMarkValuesOnly">NO</bool>
+ <bool key="NSVertical">NO</bool>
+ </object>
+ </object>
+ <object class="NSProgressIndicator" id="6285925">
+ <reference key="NSNextResponder" ref="273936964"/>
+ <int key="NSvFlags">-2147482334</int>
+ <object class="NSPSMatrix" key="NSDrawMatrix"/>
+ <string key="NSFrame">{{129, 36}, {513, 12}}</string>
+ <reference key="NSSuperview" ref="273936964"/>
+ <int key="NSpiFlags">16650</int>
+ <double key="NSMaxValue">1.000000e+02</double>
+ </object>
+ </object>
+ <string key="NSFrame">{{224, 0}, {662, 548}}</string>
+ <reference key="NSSuperview" ref="791459162"/>
+ <string key="NSClassName">NSView</string>
+ </object>
+ </object>
+ <string key="NSFrameSize">{886, 548}</string>
+ <reference key="NSSuperview" ref="810175085"/>
+ <bool key="NSIsVertical">YES</bool>
+ </object>
+ </object>
+ <string key="NSFrameSize">{886, 548}</string>
+ <reference key="NSSuperview"/>
+ </object>
+ <string key="NSScreenRect">{{0, 0}, {1280, 778}}</string>
+ <string key="NSMinSize">{766, 136}</string>
+ <string key="NSMaxSize">{3.40282e+38, 3.40282e+38}</string>
+ <string key="NSFrameAutosaveName">embeddedvoutwindow</string>
+ </object>
+ </object>
+ <object class="IBObjectContainer" key="IBDocument.Objects">
+ <object class="NSMutableArray" key="connectionRecords">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">performMiniaturize:</string>
+ <reference key="source" ref="989329005"/>
+ <reference key="destination" ref="155406998"/>
+ </object>
+ <int key="connectionID">37</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">arrangeInFront:</string>
+ <reference key="source" ref="989329005"/>
+ <reference key="destination" ref="628291570"/>
+ </object>
+ <int key="connectionID">39</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">hideOtherApplications:</string>
+ <reference key="source" ref="987699396"/>
+ <reference key="destination" ref="292257463"/>
+ </object>
+ <int key="connectionID">146</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">hide:</string>
+ <reference key="source" ref="987699396"/>
+ <reference key="destination" ref="897929241"/>
+ </object>
+ <int key="connectionID">152</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">unhideAllApplications:</string>
+ <reference key="source" ref="987699396"/>
+ <reference key="destination" ref="830074013"/>
+ </object>
+ <int key="connectionID">153</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">copy:</string>
+ <reference key="source" ref="989329005"/>
+ <reference key="destination" ref="592053283"/>
+ </object>
+ <int key="connectionID">224</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">paste:</string>
+ <reference key="source" ref="989329005"/>
+ <reference key="destination" ref="637208904"/>
+ </object>
+ <int key="connectionID">226</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">cut:</string>
+ <reference key="source" ref="989329005"/>
+ <reference key="destination" ref="370451407"/>
+ </object>
+ <int key="connectionID">228</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">clear:</string>
+ <reference key="source" ref="989329005"/>
+ <reference key="destination" ref="44588423"/>
+ </object>
+ <int key="connectionID">229</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">selectAll:</string>
+ <reference key="source" ref="989329005"/>
+ <reference key="destination" ref="609657893"/>
+ </object>
+ <int key="connectionID">232</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">delegate</string>
+ <reference key="source" ref="987699396"/>
+ <reference key="destination" ref="382099807"/>
+ </object>
+ <int key="connectionID">267</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_window</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="694928042"/>
+ </object>
+ <int key="connectionID">268</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">stop:</string>
+ <reference key="source" ref="318538144"/>
+ <reference key="destination" ref="111465545"/>
+ </object>
+ <int key="connectionID">273</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">faster:</string>
+ <reference key="source" ref="318538144"/>
+ <reference key="destination" ref="664982675"/>
+ </object>
+ <int key="connectionID">274</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">slower:</string>
+ <reference key="source" ref="318538144"/>
+ <reference key="destination" ref="657633380"/>
+ </object>
+ <int key="connectionID">275</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">prev:</string>
+ <reference key="source" ref="318538144"/>
+ <reference key="destination" ref="107614956"/>
+ </object>
+ <int key="connectionID">276</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">next:</string>
+ <reference key="source" ref="318538144"/>
+ <reference key="destination" ref="129098562"/>
+ </object>
+ <int key="connectionID">277</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">loop:</string>
+ <reference key="source" ref="318538144"/>
+ <reference key="destination" ref="421769496"/>
+ </object>
+ <int key="connectionID">278</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_controls</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="318538144"/>
+ </object>
+ <int key="connectionID">296</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_playlist</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="24216389"/>
+ </object>
+ <int key="connectionID">444</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_mi_about</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="522037235"/>
+ </object>
+ <int key="connectionID">517</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_mi_hide</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="897929241"/>
+ </object>
+ <int key="connectionID">518</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_mi_hide_others</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="292257463"/>
+ </object>
+ <int key="connectionID">519</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_mi_bring_atf</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="628291570"/>
+ </object>
+ <int key="connectionID">520</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_mi_clear</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="44588423"/>
+ </object>
+ <int key="connectionID">521</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_mi_copy</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="592053283"/>
+ </object>
+ <int key="connectionID">522</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_mi_cut</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="370451407"/>
+ </object>
+ <int key="connectionID">523</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_mi_faster</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="664982675"/>
+ </object>
+ <int key="connectionID">524</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_mi_loop</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="421769496"/>
+ </object>
+ <int key="connectionID">525</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_mi_minimize</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="155406998"/>
+ </object>
+ <int key="connectionID">527</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_mi_next</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="129098562"/>
+ </object>
+ <int key="connectionID">529</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_mi_open_disc</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="657872493"/>
+ </object>
+ <int key="connectionID">530</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_mi_open_net</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="92861542"/>
+ </object>
+ <int key="connectionID">532</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_mi_paste</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="637208904"/>
+ </object>
+ <int key="connectionID">536</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_mi_previous</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="107614956"/>
+ </object>
+ <int key="connectionID">540</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_mi_quit</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="845106587"/>
+ </object>
+ <int key="connectionID">541</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_mi_select_all</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="609657893"/>
+ </object>
+ <int key="connectionID">543</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_mi_show_all</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="830074013"/>
+ </object>
+ <int key="connectionID">544</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_mi_slower</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="657633380"/>
+ </object>
+ <int key="connectionID">545</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_mi_stop</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="111465545"/>
+ </object>
+ <int key="connectionID">546</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_mu_file</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="320604397"/>
+ </object>
+ <int key="connectionID">550</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_msgs_panel</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="823854124"/>
+ </object>
+ <int key="connectionID">555</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_mu_controls</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="816567345"/>
+ </object>
+ <int key="connectionID">557</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_mu_edit</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="385738405"/>
+ </object>
+ <int key="connectionID">558</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_mu_video</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="99410029"/>
+ </object>
+ <int key="connectionID">559</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_mu_window</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="1025665732"/>
+ </object>
+ <int key="connectionID">560</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">clearRecentItems:</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="73126341"/>
+ </object>
+ <int key="connectionID">571</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_mi_open_recent_cm</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="73126341"/>
+ </object>
+ <int key="connectionID">572</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_mi_open_recent</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="601385528"/>
+ </object>
+ <int key="connectionID">574</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_mi_prefs</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="190028897"/>
+ </object>
+ <int key="connectionID">802</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">viewPreferences:</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="190028897"/>
+ </object>
+ <int key="connectionID">803</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_mi_open_generic</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="1056535767"/>
+ </object>
+ <int key="connectionID">820</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_mi_open_file</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="516972708"/>
+ </object>
+ <int key="connectionID">821</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_mi_close_window</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="345434895"/>
+ </object>
+ <int key="connectionID">997</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">makeKeyAndOrderFront:</string>
+ <reference key="source" ref="694928042"/>
+ <reference key="destination" ref="611085512"/>
+ </object>
+ <int key="connectionID">1000</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_mi_controller</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="611085512"/>
+ </object>
+ <int key="connectionID">1001</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_mi_messages</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="430928281"/>
+ </object>
+ <int key="connectionID">1006</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_mi_playlist</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="637691359"/>
+ </object>
+ <int key="connectionID">1007</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_mi_deinterlace</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="435270930"/>
+ </object>
+ <int key="connectionID">1038</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_mi_fullscreen</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="187260470"/>
+ </object>
+ <int key="connectionID">1040</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_mi_screen</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="156000819"/>
+ </object>
+ <int key="connectionID">1043</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_mi_program</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="1072478834"/>
+ </object>
+ <int key="connectionID">1061</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_mi_chapter</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="557710877"/>
+ </object>
+ <int key="connectionID">1062</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_mi_title</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="200588242"/>
+ </object>
+ <int key="connectionID">1063</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_mi_vol_up</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="608392904"/>
+ </object>
+ <int key="connectionID">1067</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_mi_mute</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="939809685"/>
+ </object>
+ <int key="connectionID">1068</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_mi_vol_down</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="895513286"/>
+ </object>
+ <int key="connectionID">1069</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_mi_device</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="926928050"/>
+ </object>
+ <int key="connectionID">1076</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">volumeUp:</string>
+ <reference key="source" ref="318538144"/>
+ <reference key="destination" ref="608392904"/>
+ </object>
+ <int key="connectionID">1085</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">volumeDown:</string>
+ <reference key="source" ref="318538144"/>
+ <reference key="destination" ref="895513286"/>
+ </object>
+ <int key="connectionID">1086</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">mute:</string>
+ <reference key="source" ref="318538144"/>
+ <reference key="destination" ref="939809685"/>
+ </object>
+ <int key="connectionID">1087</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">performClose:</string>
+ <reference key="source" ref="989329005"/>
+ <reference key="destination" ref="345434895"/>
+ </object>
+ <int key="connectionID">1089</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_mi_channels</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="1051272232"/>
+ </object>
+ <int key="connectionID">1091</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_mu_audio</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="1039389479"/>
+ </object>
+ <int key="connectionID">1092</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_main</string>
+ <reference key="source" ref="318538144"/>
+ <reference key="destination" ref="382099807"/>
+ </object>
+ <int key="connectionID">1122</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_mu_help</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="460963352"/>
+ </object>
+ <int key="connectionID">1145</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_mi_readme</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="486754137"/>
+ </object>
+ <int key="connectionID">1147</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_mi_website</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="510819606"/>
+ </object>
+ <int key="connectionID">1149</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">openReadMe:</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="486754137"/>
+ </object>
+ <int key="connectionID">1150</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">openWebsite:</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="510819606"/>
+ </object>
+ <int key="connectionID">1152</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_mi_half_window</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="85143365"/>
+ </object>
+ <int key="connectionID">1172</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_mi_double_window</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="615849701"/>
+ </object>
+ <int key="connectionID">1173</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_mi_normal_window</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="932586104"/>
+ </object>
+ <int key="connectionID">1174</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_mi_bwd</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="109358754"/>
+ </object>
+ <int key="connectionID">1182</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_mi_fwd</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="64145111"/>
+ </object>
+ <int key="connectionID">1183</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_msgs_crashlog_btn</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="69119256"/>
+ </object>
+ <int key="connectionID">1184</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">forward:</string>
+ <reference key="source" ref="318538144"/>
+ <reference key="destination" ref="64145111"/>
+ </object>
+ <int key="connectionID">1185</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">backward:</string>
+ <reference key="source" ref="318538144"/>
+ <reference key="destination" ref="109358754"/>
+ </object>
+ <int key="connectionID">1186</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">openCrashLog:</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="69119256"/>
+ </object>
+ <int key="connectionID">1187</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_mi_info</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="516714774"/>
+ </object>
+ <int key="connectionID">1197</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_mu_deinterlace</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="202219296"/>
+ </object>
+ <int key="connectionID">1341</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_mi_floatontop</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="909250698"/>
+ </object>
+ <int key="connectionID">1501</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">windowAction:</string>
+ <reference key="source" ref="318538144"/>
+ <reference key="destination" ref="85143365"/>
+ </object>
+ <int key="connectionID">1502</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">windowAction:</string>
+ <reference key="source" ref="318538144"/>
+ <reference key="destination" ref="932586104"/>
+ </object>
+ <int key="connectionID">1503</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">windowAction:</string>
+ <reference key="source" ref="318538144"/>
+ <reference key="destination" ref="615849701"/>
+ </object>
+ <int key="connectionID">1504</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">windowAction:</string>
+ <reference key="source" ref="318538144"/>
+ <reference key="destination" ref="187260470"/>
+ </object>
+ <int key="connectionID">1505</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">windowAction:</string>
+ <reference key="source" ref="318538144"/>
+ <reference key="destination" ref="909250698"/>
+ </object>
+ <int key="connectionID">1506</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_mi_audiotrack</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="266825075"/>
+ </object>
+ <int key="connectionID">1515</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_mi_fittoscreen</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="275342640"/>
+ </object>
+ <int key="connectionID">1516</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_mi_subtitle</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="436892403"/>
+ </object>
+ <int key="connectionID">1518</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_mi_videotrack</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="456852973"/>
+ </object>
+ <int key="connectionID">1519</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">windowAction:</string>
+ <reference key="source" ref="318538144"/>
+ <reference key="destination" ref="275342640"/>
+ </object>
+ <int key="connectionID">1520</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_mu_program</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="258136582"/>
+ </object>
+ <int key="connectionID">1521</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_mu_title</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="953864112"/>
+ </object>
+ <int key="connectionID">1522</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_mu_chapter</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="802284870"/>
+ </object>
+ <int key="connectionID">1523</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_mu_audiotrack</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="869219096"/>
+ </object>
+ <int key="connectionID">1524</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_mu_channels</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="311048570"/>
+ </object>
+ <int key="connectionID">1525</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_mu_device</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="366232406"/>
+ </object>
+ <int key="connectionID">1526</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_mu_screen</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="230746204"/>
+ </object>
+ <int key="connectionID">1527</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_mu_subtitle</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="354269903"/>
+ </object>
+ <int key="connectionID">1528</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_mu_videotrack</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="498308040"/>
+ </object>
+ <int key="connectionID">1529</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">openDocumentation:</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="522232226"/>
+ </object>
+ <int key="connectionID">1563</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_mi_documentation</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="522232226"/>
+ </object>
+ <int key="connectionID">1564</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_mi_random</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="229481215"/>
+ </object>
+ <int key="connectionID">1591</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_mi_repeat</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="1056015920"/>
+ </object>
+ <int key="connectionID">1592</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">random:</string>
+ <reference key="source" ref="318538144"/>
+ <reference key="destination" ref="229481215"/>
+ </object>
+ <int key="connectionID">1593</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">repeat:</string>
+ <reference key="source" ref="318538144"/>
+ <reference key="destination" ref="1056015920"/>
+ </object>
+ <int key="connectionID">1594</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_mu_visual</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="722819468"/>
+ </object>
+ <int key="connectionID">1611</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_mi_visual</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="837873120"/>
+ </object>
+ <int key="connectionID">1613</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">play:</string>
+ <reference key="source" ref="318538144"/>
+ <reference key="destination" ref="922081782"/>
+ </object>
+ <int key="connectionID">1625</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">stop:</string>
+ <reference key="source" ref="318538144"/>
+ <reference key="destination" ref="544588932"/>
+ </object>
+ <int key="connectionID">1626</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">prev:</string>
+ <reference key="source" ref="318538144"/>
+ <reference key="destination" ref="691057347"/>
+ </object>
+ <int key="connectionID">1627</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">next:</string>
+ <reference key="source" ref="318538144"/>
+ <reference key="destination" ref="899612189"/>
+ </object>
+ <int key="connectionID">1628</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">mute:</string>
+ <reference key="source" ref="318538144"/>
+ <reference key="destination" ref="1031342069"/>
+ </object>
+ <int key="connectionID">1629</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_dmi_play</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="922081782"/>
+ </object>
+ <int key="connectionID">1630</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_dmi_stop</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="544588932"/>
+ </object>
+ <int key="connectionID">1631</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_dmi_previous</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="691057347"/>
+ </object>
+ <int key="connectionID">1632</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_dmi_next</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="899612189"/>
+ </object>
+ <int key="connectionID">1633</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_dmi_mute</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="1031342069"/>
+ </object>
+ <int key="connectionID">1634</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">play:</string>
+ <reference key="source" ref="318538144"/>
+ <reference key="destination" ref="128133130"/>
+ </object>
+ <int key="connectionID">1637</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_mi_play</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="128133130"/>
+ </object>
+ <int key="connectionID">1638</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">dockMenu</string>
+ <reference key="source" ref="987699396"/>
+ <reference key="destination" ref="1007233550"/>
+ </object>
+ <int key="connectionID">1733</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_mi_add_intf</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="984754554"/>
+ </object>
+ <int key="connectionID">1880</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_mu_add_intf</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="573447947"/>
+ </object>
+ <int key="connectionID">1881</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_mi_services</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="1060718234"/>
+ </object>
+ <int key="connectionID">1998</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_window</string>
+ <reference key="source" ref="20369485"/>
+ <reference key="destination" ref="637592058"/>
+ </object>
+ <int key="connectionID">2034</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">bandSliderUpdated:</string>
+ <reference key="source" ref="20369485"/>
+ <reference key="destination" ref="775133895"/>
+ </object>
+ <int key="connectionID">2063</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">bandSliderUpdated:</string>
+ <reference key="source" ref="20369485"/>
+ <reference key="destination" ref="681963250"/>
+ </object>
+ <int key="connectionID">2064</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">bandSliderUpdated:</string>
+ <reference key="source" ref="20369485"/>
+ <reference key="destination" ref="606881209"/>
+ </object>
+ <int key="connectionID">2065</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">bandSliderUpdated:</string>
+ <reference key="source" ref="20369485"/>
+ <reference key="destination" ref="805488678"/>
+ </object>
+ <int key="connectionID">2066</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">bandSliderUpdated:</string>
+ <reference key="source" ref="20369485"/>
+ <reference key="destination" ref="453843947"/>
+ </object>
+ <int key="connectionID">2067</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">bandSliderUpdated:</string>
+ <reference key="source" ref="20369485"/>
+ <reference key="destination" ref="23798705"/>
+ </object>
+ <int key="connectionID">2068</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">bandSliderUpdated:</string>
+ <reference key="source" ref="20369485"/>
+ <reference key="destination" ref="327681174"/>
+ </object>
+ <int key="connectionID">2069</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">bandSliderUpdated:</string>
+ <reference key="source" ref="20369485"/>
+ <reference key="destination" ref="399585508"/>
+ </object>
+ <int key="connectionID">2070</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">bandSliderUpdated:</string>
+ <reference key="source" ref="20369485"/>
+ <reference key="destination" ref="513216791"/>
+ </object>
+ <int key="connectionID">2071</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">bandSliderUpdated:</string>
+ <reference key="source" ref="20369485"/>
+ <reference key="destination" ref="37432409"/>
+ </object>
+ <int key="connectionID">2072</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">enable:</string>
+ <reference key="source" ref="20369485"/>
+ <reference key="destination" ref="856725620"/>
+ </object>
+ <int key="connectionID">2074</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">twopass:</string>
+ <reference key="source" ref="20369485"/>
+ <reference key="destination" ref="389932505"/>
+ </object>
+ <int key="connectionID">2075</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_ckb_enable</string>
+ <reference key="source" ref="20369485"/>
+ <reference key="destination" ref="856725620"/>
+ </object>
+ <int key="connectionID">2076</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_ckb_2pass</string>
+ <reference key="source" ref="20369485"/>
+ <reference key="destination" ref="389932505"/>
+ </object>
+ <int key="connectionID">2077</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_slider_band1</string>
+ <reference key="source" ref="20369485"/>
+ <reference key="destination" ref="775133895"/>
+ </object>
+ <int key="connectionID">2078</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_slider_band10</string>
+ <reference key="source" ref="20369485"/>
+ <reference key="destination" ref="37432409"/>
+ </object>
+ <int key="connectionID">2079</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_slider_band2</string>
+ <reference key="source" ref="20369485"/>
+ <reference key="destination" ref="681963250"/>
+ </object>
+ <int key="connectionID">2080</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_slider_band3</string>
+ <reference key="source" ref="20369485"/>
+ <reference key="destination" ref="606881209"/>
+ </object>
+ <int key="connectionID">2081</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_slider_band4</string>
+ <reference key="source" ref="20369485"/>
+ <reference key="destination" ref="805488678"/>
+ </object>
+ <int key="connectionID">2082</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_slider_band5</string>
+ <reference key="source" ref="20369485"/>
+ <reference key="destination" ref="453843947"/>
+ </object>
+ <int key="connectionID">2083</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_slider_band6</string>
+ <reference key="source" ref="20369485"/>
+ <reference key="destination" ref="23798705"/>
+ </object>
+ <int key="connectionID">2084</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_slider_band7</string>
+ <reference key="source" ref="20369485"/>
+ <reference key="destination" ref="327681174"/>
+ </object>
+ <int key="connectionID">2085</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_slider_band8</string>
+ <reference key="source" ref="20369485"/>
+ <reference key="destination" ref="399585508"/>
+ </object>
+ <int key="connectionID">2086</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_slider_band9</string>
+ <reference key="source" ref="20369485"/>
+ <reference key="destination" ref="513216791"/>
+ </object>
+ <int key="connectionID">2087</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_slider_preamp</string>
+ <reference key="source" ref="20369485"/>
+ <reference key="destination" ref="100696607"/>
+ </object>
+ <int key="connectionID">2088</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">preampSliderUpdated:</string>
+ <reference key="source" ref="20369485"/>
+ <reference key="destination" ref="100696607"/>
+ </object>
+ <int key="connectionID">2093</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_popup_presets</string>
+ <reference key="source" ref="20369485"/>
+ <reference key="destination" ref="808568699"/>
+ </object>
+ <int key="connectionID">2100</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">changePreset:</string>
+ <reference key="source" ref="20369485"/>
+ <reference key="destination" ref="808568699"/>
+ </object>
+ <int key="connectionID">2120</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_fld_preamp</string>
+ <reference key="source" ref="20369485"/>
+ <reference key="destination" ref="42332195"/>
+ </object>
+ <int key="connectionID">2122</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">delegate</string>
+ <reference key="source" ref="637592058"/>
+ <reference key="destination" ref="20369485"/>
+ </object>
+ <int key="connectionID">2123</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_mi_equalizer</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="503691183"/>
+ </object>
+ <int key="connectionID">2125</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">toggleWindow:</string>
+ <reference key="source" ref="20369485"/>
+ <reference key="destination" ref="503691183"/>
+ </object>
+ <int key="connectionID">2126</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_mi_ffmpeg_pp</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="222585783"/>
+ </object>
+ <int key="connectionID">2134</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_mu_ffmpeg_pp</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="473098933"/>
+ </object>
+ <int key="connectionID">2135</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_status_field</string>
+ <reference key="source" ref="24216389"/>
+ <reference key="destination" ref="922800299"/>
+ </object>
+ <int key="connectionID">2217</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_tc_name</string>
+ <reference key="source" ref="24216389"/>
+ <reference key="destination" ref="770515259"/>
+ </object>
+ <int key="connectionID">2219</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_tc_author</string>
+ <reference key="source" ref="24216389"/>
+ <reference key="destination" ref="497927423"/>
+ </object>
+ <int key="connectionID">2220</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_tc_duration</string>
+ <reference key="source" ref="24216389"/>
+ <reference key="destination" ref="909990336"/>
+ </object>
+ <int key="connectionID">2221</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_random_ckb</string>
+ <reference key="source" ref="24216389"/>
+ <reference key="destination" ref="620662750"/>
+ </object>
+ <int key="connectionID">2223</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_mi_save_playlist</string>
+ <reference key="source" ref="24216389"/>
+ <reference key="destination" ref="153624409"/>
+ </object>
+ <int key="connectionID">2225</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_ctx_menu</string>
+ <reference key="source" ref="24216389"/>
+ <reference key="destination" ref="706439287"/>
+ </object>
+ <int key="connectionID">2231</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_mi_play</string>
+ <reference key="source" ref="24216389"/>
+ <reference key="destination" ref="756063005"/>
+ </object>
+ <int key="connectionID">2232</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_mi_delete</string>
+ <reference key="source" ref="24216389"/>
+ <reference key="destination" ref="790110625"/>
+ </object>
+ <int key="connectionID">2233</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_mi_selectall</string>
+ <reference key="source" ref="24216389"/>
+ <reference key="destination" ref="955908279"/>
+ </object>
+ <int key="connectionID">2234</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_mi_info</string>
+ <reference key="source" ref="24216389"/>
+ <reference key="destination" ref="551538279"/>
+ </object>
+ <int key="connectionID">2235</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">playItem:</string>
+ <reference key="source" ref="24216389"/>
+ <reference key="destination" ref="756063005"/>
+ </object>
+ <int key="connectionID">2236</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">selectAll:</string>
+ <reference key="source" ref="24216389"/>
+ <reference key="destination" ref="955908279"/>
+ </object>
+ <int key="connectionID">2237</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">deleteItem:</string>
+ <reference key="source" ref="24216389"/>
+ <reference key="destination" ref="790110625"/>
+ </object>
+ <int key="connectionID">2238</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_mi_sort_name</string>
+ <reference key="source" ref="24216389"/>
+ <reference key="destination" ref="27415373"/>
+ </object>
+ <int key="connectionID">2242</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_mi_sort_author</string>
+ <reference key="source" ref="24216389"/>
+ <reference key="destination" ref="248396863"/>
+ </object>
+ <int key="connectionID">2243</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">sortNodeByName:</string>
+ <reference key="source" ref="24216389"/>
+ <reference key="destination" ref="27415373"/>
+ </object>
+ <int key="connectionID">2244</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">sortNodeByAuthor:</string>
+ <reference key="source" ref="24216389"/>
+ <reference key="destination" ref="248396863"/>
+ </object>
+ <int key="connectionID">2245</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_controller</string>
+ <reference key="source" ref="24216389"/>
+ <reference key="destination" ref="694928042"/>
+ </object>
+ <int key="connectionID">2246</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">viewAbout:</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="522037235"/>
+ </object>
+ <int key="connectionID">2248</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_mi_snapshot</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="782283483"/>
+ </object>
+ <int key="connectionID">2250</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">windowAction:</string>
+ <reference key="source" ref="318538144"/>
+ <reference key="destination" ref="782283483"/>
+ </object>
+ <int key="connectionID">2252</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">random:</string>
+ <reference key="source" ref="318538144"/>
+ <reference key="destination" ref="620662750"/>
+ </object>
+ <int key="connectionID">2253</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">intfOpenFileGeneric:</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="1056535767"/>
+ </object>
+ <int key="connectionID">2256</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">intfOpenFile:</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="516972708"/>
+ </object>
+ <int key="connectionID">2257</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">intfOpenDisc:</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="657872493"/>
+ </object>
+ <int key="connectionID">2258</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">intfOpenNet:</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="92861542"/>
+ </object>
+ <int key="connectionID">2259</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_mi_services</string>
+ <reference key="source" ref="24216389"/>
+ <reference key="destination" ref="525722413"/>
+ </object>
+ <int key="connectionID">2281</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_mu_services</string>
+ <reference key="source" ref="24216389"/>
+ <reference key="destination" ref="770628089"/>
+ </object>
+ <int key="connectionID">2283</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_playlist_view</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="83090933"/>
+ </object>
+ <int key="connectionID">2289</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_mm_mi_services</string>
+ <reference key="source" ref="24216389"/>
+ <reference key="destination" ref="1011763698"/>
+ </object>
+ <int key="connectionID">2295</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_mm_mu_services</string>
+ <reference key="source" ref="24216389"/>
+ <reference key="destination" ref="507994510"/>
+ </object>
+ <int key="connectionID">2296</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">togglePlaylist:</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="637691359"/>
+ </object>
+ <int key="connectionID">2297</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">openForum:</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="419703734"/>
+ </object>
+ <int key="connectionID">2301</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">openDonate:</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="775892995"/>
+ </object>
+ <int key="connectionID">2302</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">savePlaylist:</string>
+ <reference key="source" ref="24216389"/>
+ <reference key="destination" ref="153624409"/>
+ </object>
+ <int key="connectionID">2303</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">showWizard:</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="356334467"/>
+ </object>
+ <int key="connectionID">2308</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_mi_recursive_expand</string>
+ <reference key="source" ref="24216389"/>
+ <reference key="destination" ref="964291666"/>
+ </object>
+ <int key="connectionID">2314</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">recursiveExpandNode:</string>
+ <reference key="source" ref="24216389"/>
+ <reference key="destination" ref="964291666"/>
+ </object>
+ <int key="connectionID">2315</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_mi_extended</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="393208518"/>
+ </object>
+ <int key="connectionID">2391</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_mi_bookmarks</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="182202833"/>
+ </object>
+ <int key="connectionID">2396</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">showBookmarks:</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="182202833"/>
+ </object>
+ <int key="connectionID">2397</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_mi_preparse</string>
+ <reference key="source" ref="24216389"/>
+ <reference key="destination" ref="921889912"/>
+ </object>
+ <int key="connectionID">2399</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">preparseItem:</string>
+ <reference key="source" ref="24216389"/>
+ <reference key="destination" ref="921889912"/>
+ </object>
+ <int key="connectionID">2400</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_mi_donation</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="775892995"/>
+ </object>
+ <int key="connectionID">2405</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_mi_forum</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="419703734"/>
+ </object>
+ <int key="connectionID">2406</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">showExtended:</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="393208518"/>
+ </object>
+ <int key="connectionID">2413</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_btn_addNode</string>
+ <reference key="source" ref="24216389"/>
+ <reference key="destination" ref="321952499"/>
+ </object>
+ <int key="connectionID">2453</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_mi_addNode</string>
+ <reference key="source" ref="24216389"/>
+ <reference key="destination" ref="521340648"/>
+ </object>
+ <int key="connectionID">2454</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">addNode:</string>
+ <reference key="source" ref="24216389"/>
+ <reference key="destination" ref="321952499"/>
+ </object>
+ <int key="connectionID">2455</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">addNode:</string>
+ <reference key="source" ref="24216389"/>
+ <reference key="destination" ref="521340648"/>
+ </object>
+ <int key="connectionID">2456</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_mi_checkForUpdate</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="93213564"/>
+ </object>
+ <int key="connectionID">2458</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">checkForUpdate:</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="93213564"/>
+ </object>
+ <int key="connectionID">2459</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">takeIntValueFrom:</string>
+ <reference key="source" ref="149277915"/>
+ <reference key="destination" ref="186709324"/>
+ </object>
+ <int key="connectionID">2467</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">takeIntValueFrom:</string>
+ <reference key="source" ref="186709324"/>
+ <reference key="destination" ref="149277915"/>
+ </object>
+ <int key="connectionID">2468</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">goToSpecificTime:</string>
+ <reference key="source" ref="318538144"/>
+ <reference key="destination" ref="771431016"/>
+ </object>
+ <int key="connectionID">2472</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">goToSpecificTime:</string>
+ <reference key="source" ref="318538144"/>
+ <reference key="destination" ref="979808628"/>
+ </object>
+ <int key="connectionID">2473</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_specificTime_goTo_lbl</string>
+ <reference key="source" ref="318538144"/>
+ <reference key="destination" ref="258215225"/>
+ </object>
+ <int key="connectionID">2474</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_specificTime_enter_fld</string>
+ <reference key="source" ref="318538144"/>
+ <reference key="destination" ref="149277915"/>
+ </object>
+ <int key="connectionID">2475</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_specificTime_cancel_btn</string>
+ <reference key="source" ref="318538144"/>
+ <reference key="destination" ref="979808628"/>
+ </object>
+ <int key="connectionID">2476</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_specificTime_ok_btn</string>
+ <reference key="source" ref="318538144"/>
+ <reference key="destination" ref="771431016"/>
+ </object>
+ <int key="connectionID">2477</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_specificTime_win</string>
+ <reference key="source" ref="318538144"/>
+ <reference key="destination" ref="421596034"/>
+ </object>
+ <int key="connectionID">2478</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_specificTime_sec_lbl</string>
+ <reference key="source" ref="318538144"/>
+ <reference key="destination" ref="909282180"/>
+ </object>
+ <int key="connectionID">2480</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_specificTime_stepper</string>
+ <reference key="source" ref="318538144"/>
+ <reference key="destination" ref="186709324"/>
+ </object>
+ <int key="connectionID">2481</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">goToSpecificTime:</string>
+ <reference key="source" ref="318538144"/>
+ <reference key="destination" ref="508315060"/>
+ </object>
+ <int key="connectionID">2483</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_specificTime_mi</string>
+ <reference key="source" ref="318538144"/>
+ <reference key="destination" ref="508315060"/>
+ </object>
+ <int key="connectionID">2484</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_search_field</string>
+ <reference key="source" ref="24216389"/>
+ <reference key="destination" ref="844896047"/>
+ </object>
+ <int key="connectionID">2486</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">searchItem:</string>
+ <reference key="source" ref="24216389"/>
+ <reference key="destination" ref="844896047"/>
+ </object>
+ <int key="connectionID">2487</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_mi_aspect_ratio</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="113580051"/>
+ </object>
+ <int key="connectionID">2701</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_mi_crop</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="1059185094"/>
+ </object>
+ <int key="connectionID">2706</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_mu_crop</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="1012005243"/>
+ </object>
+ <int key="connectionID">2707</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_mu_aspect_ratio</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="336164835"/>
+ </object>
+ <int key="connectionID">2708</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_save_accessory_view</string>
+ <reference key="source" ref="24216389"/>
+ <reference key="destination" ref="4943074"/>
+ </object>
+ <int key="connectionID">2720</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_save_accessory_text</string>
+ <reference key="source" ref="24216389"/>
+ <reference key="destination" ref="763524337"/>
+ </object>
+ <int key="connectionID">2726</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_save_accessory_popup</string>
+ <reference key="source" ref="24216389"/>
+ <reference key="destination" ref="815327114"/>
+ </object>
+ <int key="connectionID">2727</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">windowAction:</string>
+ <reference key="source" ref="318538144"/>
+ <reference key="destination" ref="458540204"/>
+ </object>
+ <int key="connectionID">2735</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">play:</string>
+ <reference key="source" ref="318538144"/>
+ <reference key="destination" ref="708776679"/>
+ </object>
+ <int key="connectionID">2736</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">stop:</string>
+ <reference key="source" ref="318538144"/>
+ <reference key="destination" ref="834091258"/>
+ </object>
+ <int key="connectionID">2748</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">prev:</string>
+ <reference key="source" ref="318538144"/>
+ <reference key="destination" ref="294786718"/>
+ </object>
+ <int key="connectionID">2749</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">next:</string>
+ <reference key="source" ref="318538144"/>
+ <reference key="destination" ref="862398090"/>
+ </object>
+ <int key="connectionID">2750</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">volumeUp:</string>
+ <reference key="source" ref="318538144"/>
+ <reference key="destination" ref="516410441"/>
+ </object>
+ <int key="connectionID">2751</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">volumeDown:</string>
+ <reference key="source" ref="318538144"/>
+ <reference key="destination" ref="11153520"/>
+ </object>
+ <int key="connectionID">2752</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">mute:</string>
+ <reference key="source" ref="318538144"/>
+ <reference key="destination" ref="744562547"/>
+ </object>
+ <int key="connectionID">2753</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">windowAction:</string>
+ <reference key="source" ref="318538144"/>
+ <reference key="destination" ref="1067947720"/>
+ </object>
+ <int key="connectionID">2754</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_vout_menu</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="773269229"/>
+ </object>
+ <int key="connectionID">2755</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_mi_errorsAndWarnings</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="38567893"/>
+ </object>
+ <int key="connectionID">2757</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">viewErrorsAndWarnings:</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="38567893"/>
+ </object>
+ <int key="connectionID">2758</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">showMessagesPanel:</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="430928281"/>
+ </object>
+ <int key="connectionID">2759</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_vmi_play</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="708776679"/>
+ </object>
+ <int key="connectionID">2760</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_vmi_stop</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="834091258"/>
+ </object>
+ <int key="connectionID">2761</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_vmi_fullscreen</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="458540204"/>
+ </object>
+ <int key="connectionID">2762</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_vmi_mute</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="744562547"/>
+ </object>
+ <int key="connectionID">2763</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_vmi_next</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="862398090"/>
+ </object>
+ <int key="connectionID">2764</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_vmi_prev</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="294786718"/>
+ </object>
+ <int key="connectionID">2765</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_vmi_snapshot</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="1067947720"/>
+ </object>
+ <int key="connectionID">2766</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_vmi_voldown</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="11153520"/>
+ </object>
+ <int key="connectionID">2767</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_vmi_volup</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="516410441"/>
+ </object>
+ <int key="connectionID">2768</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_fs_panel</string>
+ <reference key="source" ref="318538144"/>
+ <reference key="destination" ref="992958410"/>
+ </object>
+ <int key="connectionID">2786</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_btn_addNode</string>
+ <reference key="source" ref="318538144"/>
+ <reference key="destination" ref="321952499"/>
+ </object>
+ <int key="connectionID">2787</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_btn_shuffle</string>
+ <reference key="source" ref="318538144"/>
+ <reference key="destination" ref="620662750"/>
+ </object>
+ <int key="connectionID">2788</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_btn_repeat</string>
+ <reference key="source" ref="318538144"/>
+ <reference key="destination" ref="887227242"/>
+ </object>
+ <int key="connectionID">2791</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">repeatButtonAction:</string>
+ <reference key="source" ref="318538144"/>
+ <reference key="destination" ref="887227242"/>
+ </object>
+ <int key="connectionID">2792</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">terminate:</string>
+ <reference key="source" ref="987699396"/>
+ <reference key="destination" ref="845106587"/>
+ </object>
+ <int key="connectionID">2817</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">viewHelp:</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="776489378"/>
+ </object>
+ <int key="connectionID">2826</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_mi_help</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="776489378"/>
+ </object>
+ <int key="connectionID">2827</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_mi_license</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="564289307"/>
+ </object>
+ <int key="connectionID">2835</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">showLicense:</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="564289307"/>
+ </object>
+ <int key="connectionID">2836</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">showInformationPanel:</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="516714774"/>
+ </object>
+ <int key="connectionID">3194</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">showInformationPanel:</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="551538279"/>
+ </object>
+ <int key="connectionID">3195</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_mi_open_capture</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="689844674"/>
+ </object>
+ <int key="connectionID">3293</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">intfOpenCapture:</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="689844674"/>
+ </object>
+ <int key="connectionID">3294</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_mi_open_wizard</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="356334467"/>
+ </object>
+ <int key="connectionID">3389</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">toolbarMediaControl</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="893784723"/>
+ </object>
+ <int key="connectionID">3664</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">togglePlaylist:</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="941058480"/>
+ </object>
+ <int key="connectionID">3666</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">toggleWindow:</string>
+ <reference key="source" ref="20369485"/>
+ <reference key="destination" ref="456440780"/>
+ </object>
+ <int key="connectionID">3667</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">volumeUp:</string>
+ <reference key="source" ref="318538144"/>
+ <reference key="destination" ref="8485265"/>
+ </object>
+ <int key="connectionID">3668</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">volumeDown:</string>
+ <reference key="source" ref="318538144"/>
+ <reference key="destination" ref="157320773"/>
+ </object>
+ <int key="connectionID">3669</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">next:</string>
+ <reference key="source" ref="318538144"/>
+ <reference key="destination" ref="73391533"/>
+ </object>
+ <int key="connectionID">3671</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">prev:</string>
+ <reference key="source" ref="318538144"/>
+ <reference key="destination" ref="549836737"/>
+ </object>
+ <int key="connectionID">3672</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">stop:</string>
+ <reference key="source" ref="318538144"/>
+ <reference key="destination" ref="108887610"/>
+ </object>
+ <int key="connectionID">3673</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">volumeSliderUpdated:</string>
+ <reference key="source" ref="318538144"/>
+ <reference key="destination" ref="247830175"/>
+ </object>
+ <int key="connectionID">3675</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_btn_ff</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="942308543"/>
+ </object>
+ <int key="connectionID">3676</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_btn_rewind</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="549069334"/>
+ </object>
+ <int key="connectionID">3677</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_btn_play</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="174345240"/>
+ </object>
+ <int key="connectionID">3678</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">play:</string>
+ <reference key="source" ref="318538144"/>
+ <reference key="destination" ref="174345240"/>
+ </object>
+ <int key="connectionID">3680</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">backward:</string>
+ <reference key="source" ref="318538144"/>
+ <reference key="destination" ref="549069334"/>
+ </object>
+ <int key="connectionID">3682</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_volumeslider</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="247830175"/>
+ </object>
+ <int key="connectionID">3687</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_volumeslider</string>
+ <reference key="source" ref="318538144"/>
+ <reference key="destination" ref="247830175"/>
+ </object>
+ <int key="connectionID">3688</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_timeslider</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="727410173"/>
+ </object>
+ <int key="connectionID">3689</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_btn_stop</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="108887610"/>
+ </object>
+ <int key="connectionID">3690</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_btn_prev</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="549836737"/>
+ </object>
+ <int key="connectionID">3691</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_btn_next</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="73391533"/>
+ </object>
+ <int key="connectionID">3692</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_timefield</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="361025704"/>
+ </object>
+ <int key="connectionID">3694</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_scrollfield</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="1046930998"/>
+ </object>
+ <int key="connectionID">3695</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_btn_playlist</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="941058480"/>
+ </object>
+ <int key="connectionID">3696</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_btn_equalizer</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="456440780"/>
+ </object>
+ <int key="connectionID">3697</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">timesliderUpdate:</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="727410173"/>
+ </object>
+ <int key="connectionID">3703</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_main_pgbar</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="714509253"/>
+ </object>
+ <int key="connectionID">3704</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">crashReporterAction:</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="226481144"/>
+ </object>
+ <int key="connectionID">3715</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">crashReporterAction:</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="771746599"/>
+ </object>
+ <int key="connectionID">3716</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_crashrep_win</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="1072282817"/>
+ </object>
+ <int key="connectionID">3717</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_crashrep_title_txt</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="576822733"/>
+ </object>
+ <int key="connectionID">3718</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_crashrep_desc_txt</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="344058330"/>
+ </object>
+ <int key="connectionID">3719</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_crashrep_fld</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="789219168"/>
+ </object>
+ <int key="connectionID">3720</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_crashrep_dontSend_btn</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="226481144"/>
+ </object>
+ <int key="connectionID">3721</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_crashrep_send_btn</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="771746599"/>
+ </object>
+ <int key="connectionID">3722</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_mi_teletext</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="35804585"/>
+ </object>
+ <int key="connectionID">3924</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_mi_teletext_transparent</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="416660424"/>
+ </object>
+ <int key="connectionID">3925</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_mi_teletext_index</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="354873462"/>
+ </object>
+ <int key="connectionID">3926</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_mi_teletext_red</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="1000095252"/>
+ </object>
+ <int key="connectionID">3927</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_mi_teletext_green</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="809865944"/>
+ </object>
+ <int key="connectionID">3928</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_mi_teletext_yellow</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="537073297"/>
+ </object>
+ <int key="connectionID">3929</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_mi_teletext_blue</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="848243339"/>
+ </object>
+ <int key="connectionID">3930</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">telxTransparent:</string>
+ <reference key="source" ref="318538144"/>
+ <reference key="destination" ref="416660424"/>
+ </object>
+ <int key="connectionID">3931</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">telxNavLink:</string>
+ <reference key="source" ref="318538144"/>
+ <reference key="destination" ref="354873462"/>
+ </object>
+ <int key="connectionID">3932</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">telxNavLink:</string>
+ <reference key="source" ref="318538144"/>
+ <reference key="destination" ref="1000095252"/>
+ </object>
+ <int key="connectionID">3933</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">telxNavLink:</string>
+ <reference key="source" ref="318538144"/>
+ <reference key="destination" ref="809865944"/>
+ </object>
+ <int key="connectionID">3934</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">telxNavLink:</string>
+ <reference key="source" ref="318538144"/>
+ <reference key="destination" ref="537073297"/>
+ </object>
+ <int key="connectionID">3935</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">telxNavLink:</string>
+ <reference key="source" ref="318538144"/>
+ <reference key="destination" ref="848243339"/>
+ </object>
+ <int key="connectionID">3936</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">delegate</string>
+ <reference key="source" ref="778663515"/>
+ <reference key="destination" ref="318538144"/>
+ </object>
+ <int key="connectionID">3937</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">telxNavLink:</string>
+ <reference key="source" ref="318538144"/>
+ <reference key="destination" ref="35804585"/>
+ </object>
+ <int key="connectionID">3938</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_crashrep_includeEmail_ckb</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="233168328"/>
+ </object>
+ <int key="connectionID">3942</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_crashrep_includeEmail_txt</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="471272006"/>
+ </object>
+ <int key="connectionID">3943</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">revealItemInFinder:</string>
+ <reference key="source" ref="24216389"/>
+ <reference key="destination" ref="257462769"/>
+ </object>
+ <int key="connectionID">3947</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">revealItemInFinder:</string>
+ <reference key="source" ref="24216389"/>
+ <reference key="destination" ref="630285862"/>
+ </object>
+ <int key="connectionID">3948</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_mm_mi_revealInFinder</string>
+ <reference key="source" ref="24216389"/>
+ <reference key="destination" ref="257462769"/>
+ </object>
+ <int key="connectionID">3949</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_mi_revealInFinder</string>
+ <reference key="source" ref="24216389"/>
+ <reference key="destination" ref="630285862"/>
+ </object>
+ <int key="connectionID">3950</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">forward:</string>
+ <reference key="source" ref="318538144"/>
+ <reference key="destination" ref="942308543"/>
+ </object>
+ <int key="connectionID">4047</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">showVLM:</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="196095551"/>
+ </object>
+ <int key="connectionID">4049</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_mi_open_vlm</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="196095551"/>
+ </object>
+ <int key="connectionID">4050</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">downloadCoverArt:</string>
+ <reference key="source" ref="24216389"/>
+ <reference key="destination" ref="765776829"/>
+ </object>
+ <int key="connectionID">4148</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_mi_dl_cover_art</string>
+ <reference key="source" ref="24216389"/>
+ <reference key="destination" ref="765776829"/>
+ </object>
+ <int key="connectionID">4149</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_messages</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="324354779"/>
+ </object>
+ <int key="connectionID">4253</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_msgs_save_btn</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="186669625"/>
+ </object>
+ <int key="connectionID">4255</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">saveDebugLog:</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="186669625"/>
+ </object>
+ <int key="connectionID">4256</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">addSubtitleFile:</string>
+ <reference key="source" ref="318538144"/>
+ <reference key="destination" ref="743864913"/>
+ </object>
+ <int key="connectionID">4268</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_mi_addSub</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="743864913"/>
+ </object>
+ <int key="connectionID">4269</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">timeFieldWasClicked:</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="361025704"/>
+ </object>
+ <int key="connectionID">4270</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_timeslider</string>
+ <reference key="source" ref="181536822"/>
+ <reference key="destination" ref="439918596"/>
+ </object>
+ <int key="connectionID">4446</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">togglePlaylist:</string>
+ <reference key="source" ref="181536822"/>
+ <reference key="destination" ref="11649400"/>
+ </object>
+ <int key="connectionID">4447</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">delegate</string>
+ <reference key="source" ref="791459162"/>
+ <reference key="destination" ref="181536822"/>
+ </object>
+ <int key="connectionID">4448</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_vertical_split</string>
+ <reference key="source" ref="181536822"/>
+ <reference key="destination" ref="1003147624"/>
+ </object>
+ <int key="connectionID">4449</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_btn_play</string>
+ <reference key="source" ref="181536822"/>
+ <reference key="destination" ref="236103997"/>
+ </object>
+ <int key="connectionID">4450</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_scrollfield</string>
+ <reference key="source" ref="181536822"/>
+ <reference key="destination" ref="1054006624"/>
+ </object>
+ <int key="connectionID">4451</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_btn_next</string>
+ <reference key="source" ref="181536822"/>
+ <reference key="destination" ref="339098234"/>
+ </object>
+ <int key="connectionID">4452</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">initialFirstResponder</string>
+ <reference key="source" ref="181536822"/>
+ <reference key="destination" ref="236103997"/>
+ </object>
+ <int key="connectionID">4453</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_searchfield</string>
+ <reference key="source" ref="181536822"/>
+ <reference key="destination" ref="323070352"/>
+ </object>
+ <int key="connectionID">4454</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_btn_prev</string>
+ <reference key="source" ref="181536822"/>
+ <reference key="destination" ref="803107562"/>
+ </object>
+ <int key="connectionID">4455</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_btn_forward</string>
+ <reference key="source" ref="704038250"/>
+ <reference key="destination" ref="68648151"/>
+ </object>
+ <int key="connectionID">4456</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_videosubview</string>
+ <reference key="source" ref="181536822"/>
+ <reference key="destination" ref="159309238"/>
+ </object>
+ <int key="connectionID">4457</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_main_pgbar</string>
+ <reference key="source" ref="704038250"/>
+ <reference key="destination" ref="6285925"/>
+ </object>
+ <int key="connectionID">4458</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_btn_volume_up</string>
+ <reference key="source" ref="181536822"/>
+ <reference key="destination" ref="837877940"/>
+ </object>
+ <int key="connectionID">4459</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_btn_volume_up</string>
+ <reference key="source" ref="704038250"/>
+ <reference key="destination" ref="537857711"/>
+ </object>
+ <int key="connectionID">4460</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_btn_prev</string>
+ <reference key="source" ref="704038250"/>
+ <reference key="destination" ref="803107562"/>
+ </object>
+ <int key="connectionID">4461</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_btn_fullscreen</string>
+ <reference key="source" ref="181536822"/>
+ <reference key="destination" ref="782624074"/>
+ </object>
+ <int key="connectionID">4462</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_playlist_table</string>
+ <reference key="source" ref="181536822"/>
+ <reference key="destination" ref="269638670"/>
+ </object>
+ <int key="connectionID">4463</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_text</string>
+ <reference key="source" ref="985361470"/>
+ <reference key="destination" ref="506953412"/>
+ </object>
+ <int key="connectionID">4464</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_btn_playlist</string>
+ <reference key="source" ref="181536822"/>
+ <reference key="destination" ref="11649400"/>
+ </object>
+ <int key="connectionID">4465</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_time</string>
+ <reference key="source" ref="704038250"/>
+ <reference key="destination" ref="830022764"/>
+ </object>
+ <int key="connectionID">4466</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_background_view</string>
+ <reference key="source" ref="181536822"/>
+ <reference key="destination" ref="704038250"/>
+ </object>
+ <int key="connectionID">4467</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_timeslider</string>
+ <reference key="source" ref="704038250"/>
+ <reference key="destination" ref="439918596"/>
+ </object>
+ <int key="connectionID">4468</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_horizontal_split</string>
+ <reference key="source" ref="181536822"/>
+ <reference key="destination" ref="791459162"/>
+ </object>
+ <int key="connectionID">4469</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_volumeslider</string>
+ <reference key="source" ref="181536822"/>
+ <reference key="destination" ref="1069893234"/>
+ </object>
+ <int key="connectionID">4470</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_btn_equalizer</string>
+ <reference key="source" ref="704038250"/>
+ <reference key="destination" ref="650340619"/>
+ </object>
+ <int key="connectionID">4471</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">delegate</string>
+ <reference key="source" ref="1003147624"/>
+ <reference key="destination" ref="181536822"/>
+ </object>
+ <int key="connectionID">4472</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_btn_equalizer</string>
+ <reference key="source" ref="181536822"/>
+ <reference key="destination" ref="650340619"/>
+ </object>
+ <int key="connectionID">4473</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_time</string>
+ <reference key="source" ref="181536822"/>
+ <reference key="destination" ref="830022764"/>
+ </object>
+ <int key="connectionID">4474</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_sidebar_list</string>
+ <reference key="source" ref="181536822"/>
+ <reference key="destination" ref="567803078"/>
+ </object>
+ <int key="connectionID">4475</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_btn_playlist</string>
+ <reference key="source" ref="704038250"/>
+ <reference key="destination" ref="11649400"/>
+ </object>
+ <int key="connectionID">4476</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_btn_backward</string>
+ <reference key="source" ref="181536822"/>
+ <reference key="destination" ref="990345256"/>
+ </object>
+ <int key="connectionID">4477</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_btn_backward</string>
+ <reference key="source" ref="704038250"/>
+ <reference key="destination" ref="990345256"/>
+ </object>
+ <int key="connectionID">4478</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_btn_next</string>
+ <reference key="source" ref="704038250"/>
+ <reference key="destination" ref="339098234"/>
+ </object>
+ <int key="connectionID">4479</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_view</string>
+ <reference key="source" ref="181536822"/>
+ <reference key="destination" ref="640076027"/>
+ </object>
+ <int key="connectionID">4480</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_main_pgbar</string>
+ <reference key="source" ref="181536822"/>
+ <reference key="destination" ref="6285925"/>
+ </object>
+ <int key="connectionID">4481</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_btn_forward</string>
+ <reference key="source" ref="181536822"/>
+ <reference key="destination" ref="68648151"/>
+ </object>
+ <int key="connectionID">4482</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">splitView</string>
+ <reference key="source" ref="471969879"/>
+ <reference key="destination" ref="791459162"/>
+ </object>
+ <int key="connectionID">4483</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_btn_volume_down</string>
+ <reference key="source" ref="181536822"/>
+ <reference key="destination" ref="537857711"/>
+ </object>
+ <int key="connectionID">4484</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_volumeslider</string>
+ <reference key="source" ref="704038250"/>
+ <reference key="destination" ref="1069893234"/>
+ </object>
+ <int key="connectionID">4485</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_status</string>
+ <reference key="source" ref="181536822"/>
+ <reference key="destination" ref="985361470"/>
+ </object>
+ <int key="connectionID">4486</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_btn_play</string>
+ <reference key="source" ref="704038250"/>
+ <reference key="destination" ref="236103997"/>
+ </object>
+ <int key="connectionID">4487</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_window</string>
+ <reference key="source" ref="640076027"/>
+ <reference key="destination" ref="181536822"/>
+ </object>
+ <int key="connectionID">4488</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_btn_stop</string>
+ <reference key="source" ref="181536822"/>
+ <reference key="destination" ref="1043798456"/>
+ </object>
+ <int key="connectionID">4489</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_scrollfield</string>
+ <reference key="source" ref="704038250"/>
+ <reference key="destination" ref="1054006624"/>
+ </object>
+ <int key="connectionID">4490</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_window</string>
+ <reference key="source" ref="704038250"/>
+ <reference key="destination" ref="181536822"/>
+ </object>
+ <int key="connectionID">4491</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_searchfield</string>
+ <reference key="source" ref="704038250"/>
+ <reference key="destination" ref="323070352"/>
+ </object>
+ <int key="connectionID">4492</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_btn_volume_down</string>
+ <reference key="source" ref="704038250"/>
+ <reference key="destination" ref="837877940"/>
+ </object>
+ <int key="connectionID">4493</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_btn_stop</string>
+ <reference key="source" ref="704038250"/>
+ <reference key="destination" ref="1043798456"/>
+ </object>
+ <int key="connectionID">4494</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_btn_fullscreen</string>
+ <reference key="source" ref="704038250"/>
+ <reference key="destination" ref="782624074"/>
+ </object>
+ <int key="connectionID">4495</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_playlist_view</string>
+ <reference key="source" ref="181536822"/>
+ <reference key="destination" ref="718622970"/>
+ </object>
+ <int key="connectionID">4496</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">random:</string>
+ <reference key="source" ref="318538144"/>
+ <reference key="destination" ref="1003872504"/>
+ </object>
+ <int key="connectionID">4497</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">repeatButtonAction:</string>
+ <reference key="source" ref="318538144"/>
+ <reference key="destination" ref="1003622457"/>
+ </object>
+ <int key="connectionID">4498</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">prev:</string>
+ <reference key="source" ref="318538144"/>
+ <reference key="destination" ref="339071106"/>
+ </object>
+ <int key="connectionID">4499</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">next:</string>
+ <reference key="source" ref="318538144"/>
+ <reference key="destination" ref="339098234"/>
+ </object>
+ <int key="connectionID">4500</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">stop:</string>
+ <reference key="source" ref="318538144"/>
+ <reference key="destination" ref="1043798456"/>
+ </object>
+ <int key="connectionID">4501</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">play:</string>
+ <reference key="source" ref="318538144"/>
+ <reference key="destination" ref="236103997"/>
+ </object>
+ <int key="connectionID">4502</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">backward:</string>
+ <reference key="source" ref="318538144"/>
+ <reference key="destination" ref="990345256"/>
+ </object>
+ <int key="connectionID">4503</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">forward:</string>
+ <reference key="source" ref="318538144"/>
+ <reference key="destination" ref="68648151"/>
+ </object>
+ <int key="connectionID">4504</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">timesliderUpdate:</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="439918596"/>
+ </object>
+ <int key="connectionID">4505</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">toggleWindow:</string>
+ <reference key="source" ref="20369485"/>
+ <reference key="destination" ref="650340619"/>
+ </object>
+ <int key="connectionID">4506</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">addNode:</string>
+ <reference key="source" ref="24216389"/>
+ <reference key="destination" ref="152046718"/>
+ </object>
+ <int key="connectionID">4507</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">searchItem:</string>
+ <reference key="source" ref="24216389"/>
+ <reference key="destination" ref="323070352"/>
+ </object>
+ <int key="connectionID">4508</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_search_field_other</string>
+ <reference key="source" ref="24216389"/>
+ <reference key="destination" ref="323070352"/>
+ </object>
+ <int key="connectionID">4509</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_sidebar</string>
+ <reference key="source" ref="24216389"/>
+ <reference key="destination" ref="840376184"/>
+ </object>
+ <int key="connectionID">4510</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_status_field_embed</string>
+ <reference key="source" ref="24216389"/>
+ <reference key="destination" ref="506953412"/>
+ </object>
+ <int key="connectionID">4511</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">volumeDown:</string>
+ <reference key="source" ref="318538144"/>
+ <reference key="destination" ref="837877940"/>
+ </object>
+ <int key="connectionID">4512</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">volumeUp:</string>
+ <reference key="source" ref="318538144"/>
+ <reference key="destination" ref="537857711"/>
+ </object>
+ <int key="connectionID">4513</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">volumeSliderUpdated:</string>
+ <reference key="source" ref="318538144"/>
+ <reference key="destination" ref="1069893234"/>
+ </object>
+ <int key="connectionID">4514</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_btn_shuffle_embed</string>
+ <reference key="source" ref="318538144"/>
+ <reference key="destination" ref="1003872504"/>
+ </object>
+ <int key="connectionID">4515</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_btn_repeat_embed</string>
+ <reference key="source" ref="318538144"/>
+ <reference key="destination" ref="1003622457"/>
+ </object>
+ <int key="connectionID">4516</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_mi_player</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="934861745"/>
+ </object>
+ <int key="connectionID">4517</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">makeKeyAndOrderFront:</string>
+ <reference key="source" ref="181536822"/>
+ <reference key="destination" ref="934861745"/>
+ </object>
+ <int key="connectionID">4518</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_outline_view</string>
+ <reference key="source" ref="840376184"/>
+ <reference key="destination" ref="567803078"/>
+ </object>
+ <int key="connectionID">4519</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_playlist</string>
+ <reference key="source" ref="840376184"/>
+ <reference key="destination" ref="24216389"/>
+ </object>
+ <int key="connectionID">4520</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_tc_name_other</string>
+ <reference key="source" ref="24216389"/>
+ <reference key="destination" ref="299796820"/>
+ </object>
+ <int key="connectionID">4523</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_tc_author_other</string>
+ <reference key="source" ref="24216389"/>
+ <reference key="destination" ref="577171085"/>
+ </object>
+ <int key="connectionID">4524</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_tc_duration_other</string>
+ <reference key="source" ref="24216389"/>
+ <reference key="destination" ref="407071634"/>
+ </object>
+ <int key="connectionID">4525</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_btn_playlist</string>
+ <reference key="source" ref="24216389"/>
+ <reference key="destination" ref="941058480"/>
+ </object>
+ <int key="connectionID">4527</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_embedded_window</string>
+ <reference key="source" ref="382099807"/>
+ <reference key="destination" ref="181536822"/>
+ </object>
+ <int key="connectionID">4528</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_outline_view</string>
+ <reference key="source" ref="24216389"/>
+ <reference key="destination" ref="978691882"/>
+ </object>
+ <int key="connectionID">4529</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_outline_view_other</string>
+ <reference key="source" ref="24216389"/>
+ <reference key="destination" ref="269638670"/>
+ </object>
+ <int key="connectionID">4530</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_vlc_main</string>
+ <reference key="source" ref="181536822"/>
+ <reference key="destination" ref="382099807"/>
+ </object>
+ <int key="connectionID">4531</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">o_playlist</string>
+ <reference key="source" ref="181536822"/>
+ <reference key="destination" ref="24216389"/>
+ </object>
+ <int key="connectionID">4532</int>
+ </object>
+ </object>
+ <object class="IBMutableOrderedSet" key="objectRecords">
+ <object class="NSArray" key="orderedObjects">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="IBObjectRecord">
+ <int key="objectID">0</int>
+ <object class="NSArray" key="object" id="0">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ </object>
+ <reference key="children" ref="127727372"/>
+ <nil key="parent"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">-2</int>
+ <reference key="object" ref="987699396"/>
+ <reference key="parent" ref="0"/>
+ <string type="base64-UTF8" key="objectName">RmlsZSdzIE93bmVyA</string>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">-1</int>
+ <reference key="object" ref="989329005"/>
+ <reference key="parent" ref="0"/>
+ <string key="objectName">First Responder</string>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">21</int>
+ <reference key="object" ref="694928042"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="22160648"/>
+ </object>
+ <reference key="parent" ref="0"/>
+ <string key="objectName">vlc</string>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2</int>
+ <reference key="object" ref="22160648"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="108887610"/>
+ <reference ref="73391533"/>
+ <reference ref="247830175"/>
+ <reference ref="941058480"/>
+ <reference ref="549836737"/>
+ <reference ref="8485265"/>
+ <reference ref="157320773"/>
+ <reference ref="456440780"/>
+ </object>
+ <reference key="parent" ref="694928042"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">3647</int>
+ <reference key="object" ref="108887610"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="283044800"/>
+ </object>
+ <reference key="parent" ref="22160648"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">3648</int>
+ <reference key="object" ref="73391533"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="946014265"/>
+ </object>
+ <reference key="parent" ref="22160648"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">3649</int>
+ <reference key="object" ref="247830175"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="872288919"/>
+ </object>
+ <reference key="parent" ref="22160648"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">3650</int>
+ <reference key="object" ref="941058480"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="277248697"/>
+ </object>
+ <reference key="parent" ref="22160648"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">3651</int>
+ <reference key="object" ref="549836737"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="984581159"/>
+ </object>
+ <reference key="parent" ref="22160648"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">3652</int>
+ <reference key="object" ref="8485265"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="791503506"/>
+ </object>
+ <reference key="parent" ref="22160648"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">3653</int>
+ <reference key="object" ref="157320773"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="1053737075"/>
+ </object>
+ <reference key="parent" ref="22160648"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">3654</int>
+ <reference key="object" ref="456440780"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="475126643"/>
+ </object>
+ <reference key="parent" ref="22160648"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">29</int>
+ <reference key="object" ref="418576523"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="407604357"/>
+ <reference ref="694502505"/>
+ <reference ref="473665637"/>
+ <reference ref="443407942"/>
+ <reference ref="37419106"/>
+ <reference ref="828538099"/>
+ <reference ref="369761369"/>
+ <reference ref="847284050"/>
+ </object>
+ <reference key="parent" ref="0"/>
+ <string key="objectName">MainMenu</string>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">19</int>
+ <reference key="object" ref="847284050"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="1025665732"/>
+ </object>
+ <reference key="parent" ref="418576523"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">24</int>
+ <reference key="object" ref="1025665732"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="628291570"/>
+ <reference ref="155406998"/>
+ <reference ref="291867574"/>
+ <reference ref="345434895"/>
+ <reference ref="144260886"/>
+ <reference ref="611085512"/>
+ <reference ref="637691359"/>
+ <reference ref="430928281"/>
+ <reference ref="516714774"/>
+ <reference ref="503691183"/>
+ <reference ref="393208518"/>
+ <reference ref="31004995"/>
+ <reference ref="922152436"/>
+ <reference ref="182202833"/>
+ <reference ref="38567893"/>
+ <reference ref="934861745"/>
+ </object>
+ <reference key="parent" ref="847284050"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">5</int>
+ <reference key="object" ref="628291570"/>
+ <reference key="parent" ref="1025665732"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">23</int>
+ <reference key="object" ref="155406998"/>
+ <reference key="parent" ref="1025665732"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">92</int>
+ <reference key="object" ref="291867574"/>
+ <reference key="parent" ref="1025665732"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">898</int>
+ <reference key="object" ref="345434895"/>
+ <reference key="parent" ref="1025665732"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">998</int>
+ <reference key="object" ref="144260886"/>
+ <reference key="parent" ref="1025665732"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">999</int>
+ <reference key="object" ref="611085512"/>
+ <reference key="parent" ref="1025665732"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">1002</int>
+ <reference key="object" ref="637691359"/>
+ <reference key="parent" ref="1025665732"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">1003</int>
+ <reference key="object" ref="430928281"/>
+ <reference key="parent" ref="1025665732"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">1192</int>
+ <reference key="object" ref="516714774"/>
+ <reference key="parent" ref="1025665732"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2124</int>
+ <reference key="object" ref="503691183"/>
+ <reference key="parent" ref="1025665732"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2390</int>
+ <reference key="object" ref="393208518"/>
+ <reference key="parent" ref="1025665732"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2393</int>
+ <reference key="object" ref="31004995"/>
+ <reference key="parent" ref="1025665732"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2394</int>
+ <reference key="object" ref="922152436"/>
+ <reference key="parent" ref="1025665732"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2395</int>
+ <reference key="object" ref="182202833"/>
+ <reference key="parent" ref="1025665732"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2756</int>
+ <reference key="object" ref="38567893"/>
+ <reference key="parent" ref="1025665732"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">56</int>
+ <reference key="object" ref="407604357"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="915397398"/>
+ </object>
+ <reference key="parent" ref="418576523"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">57</int>
+ <reference key="object" ref="915397398"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="522037235"/>
+ <reference ref="897929241"/>
+ <reference ref="845106587"/>
+ <reference ref="340353439"/>
+ <reference ref="292257463"/>
+ <reference ref="796780824"/>
+ <reference ref="830074013"/>
+ <reference ref="190028897"/>
+ <reference ref="592273526"/>
+ <reference ref="984754554"/>
+ <reference ref="521889261"/>
+ <reference ref="1060718234"/>
+ <reference ref="427075251"/>
+ <reference ref="93213564"/>
+ </object>
+ <reference key="parent" ref="407604357"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">58</int>
+ <reference key="object" ref="522037235"/>
+ <reference key="parent" ref="915397398"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">134</int>
+ <reference key="object" ref="897929241"/>
+ <reference key="parent" ref="915397398"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">136</int>
+ <reference key="object" ref="845106587"/>
+ <reference key="parent" ref="915397398"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">144</int>
+ <reference key="object" ref="340353439"/>
+ <reference key="parent" ref="915397398"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">145</int>
+ <reference key="object" ref="292257463"/>
+ <reference key="parent" ref="915397398"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">149</int>
+ <reference key="object" ref="796780824"/>
+ <reference key="parent" ref="915397398"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">150</int>
+ <reference key="object" ref="830074013"/>
+ <reference key="parent" ref="915397398"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">801</int>
+ <reference key="object" ref="190028897"/>
+ <reference key="parent" ref="915397398"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">1876</int>
+ <reference key="object" ref="592273526"/>
+ <reference key="parent" ref="915397398"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">1877</int>
+ <reference key="object" ref="984754554"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="573447947"/>
+ </object>
+ <reference key="parent" ref="915397398"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">1879</int>
+ <reference key="object" ref="573447947"/>
+ <reference key="parent" ref="984754554"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">1948</int>
+ <reference key="object" ref="521889261"/>
+ <reference key="parent" ref="915397398"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">1996</int>
+ <reference key="object" ref="1060718234"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="598558452"/>
+ </object>
+ <reference key="parent" ref="915397398"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">1997</int>
+ <reference key="object" ref="598558452"/>
+ <reference key="parent" ref="1060718234"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2402</int>
+ <reference key="object" ref="427075251"/>
+ <reference key="parent" ref="915397398"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2457</int>
+ <reference key="object" ref="93213564"/>
+ <reference key="parent" ref="915397398"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">83</int>
+ <reference key="object" ref="694502505"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="320604397"/>
+ </object>
+ <reference key="parent" ref="418576523"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">81</int>
+ <reference key="object" ref="320604397"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="1056535767"/>
+ <reference ref="88223463"/>
+ <reference ref="657872493"/>
+ <reference ref="92861542"/>
+ <reference ref="601385528"/>
+ <reference ref="516972708"/>
+ <reference ref="153624409"/>
+ <reference ref="766145358"/>
+ <reference ref="1011763698"/>
+ <reference ref="356334467"/>
+ <reference ref="365190813"/>
+ <reference ref="689844674"/>
+ <reference ref="257462769"/>
+ <reference ref="1023084208"/>
+ <reference ref="196095551"/>
+ </object>
+ <reference key="parent" ref="694502505"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">72</int>
+ <reference key="object" ref="1056535767"/>
+ <reference key="parent" ref="320604397"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">79</int>
+ <reference key="object" ref="88223463"/>
+ <reference key="parent" ref="320604397"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">413</int>
+ <reference key="object" ref="657872493"/>
+ <reference key="parent" ref="320604397"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">446</int>
+ <reference key="object" ref="92861542"/>
+ <reference key="parent" ref="320604397"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">568</int>
+ <reference key="object" ref="601385528"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="250023384"/>
+ </object>
+ <reference key="parent" ref="320604397"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">569</int>
+ <reference key="object" ref="250023384"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="73126341"/>
+ </object>
+ <reference key="parent" ref="601385528"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">570</int>
+ <reference key="object" ref="73126341"/>
+ <reference key="parent" ref="250023384"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">816</int>
+ <reference key="object" ref="516972708"/>
+ <reference key="parent" ref="320604397"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">1599</int>
+ <reference key="object" ref="153624409"/>
+ <reference key="parent" ref="320604397"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">1600</int>
+ <reference key="object" ref="766145358"/>
+ <reference key="parent" ref="320604397"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2294</int>
+ <reference key="object" ref="1011763698"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="507994510"/>
+ </object>
+ <reference key="parent" ref="320604397"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2293</int>
+ <reference key="object" ref="507994510"/>
+ <reference key="parent" ref="1011763698"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2306</int>
+ <reference key="object" ref="356334467"/>
+ <reference key="parent" ref="320604397"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2307</int>
+ <reference key="object" ref="365190813"/>
+ <reference key="parent" ref="320604397"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">3292</int>
+ <reference key="object" ref="689844674"/>
+ <reference key="parent" ref="320604397"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">3945</int>
+ <reference key="object" ref="257462769"/>
+ <reference key="parent" ref="320604397"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">3946</int>
+ <reference key="object" ref="1023084208"/>
+ <reference key="parent" ref="320604397"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4048</int>
+ <reference key="object" ref="196095551"/>
+ <reference key="parent" ref="320604397"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">217</int>
+ <reference key="object" ref="473665637"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="385738405"/>
+ </object>
+ <reference key="parent" ref="418576523"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">205</int>
+ <reference key="object" ref="385738405"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="592053283"/>
+ <reference ref="609657893"/>
+ <reference ref="370451407"/>
+ <reference ref="44588423"/>
+ <reference ref="637208904"/>
+ </object>
+ <reference key="parent" ref="473665637"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">197</int>
+ <reference key="object" ref="592053283"/>
+ <reference key="parent" ref="385738405"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">198</int>
+ <reference key="object" ref="609657893"/>
+ <reference key="parent" ref="385738405"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">199</int>
+ <reference key="object" ref="370451407"/>
+ <reference key="parent" ref="385738405"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">202</int>
+ <reference key="object" ref="44588423"/>
+ <reference key="parent" ref="385738405"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">203</int>
+ <reference key="object" ref="637208904"/>
+ <reference key="parent" ref="385738405"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">234</int>
+ <reference key="object" ref="443407942"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="816567345"/>
+ </object>
+ <reference key="parent" ref="418576523"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">235</int>
+ <reference key="object" ref="816567345"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="111465545"/>
+ <reference ref="893871730"/>
+ <reference ref="648234613"/>
+ <reference ref="664982675"/>
+ <reference ref="657633380"/>
+ <reference ref="107614956"/>
+ <reference ref="129098562"/>
+ <reference ref="421769496"/>
+ <reference ref="1072478834"/>
+ <reference ref="557710877"/>
+ <reference ref="200588242"/>
+ <reference ref="895354651"/>
+ <reference ref="64145111"/>
+ <reference ref="109358754"/>
+ <reference ref="229481215"/>
+ <reference ref="1056015920"/>
+ <reference ref="128133130"/>
+ <reference ref="521340648"/>
+ <reference ref="508315060"/>
+ </object>
+ <reference key="parent" ref="443407942"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">238</int>
+ <reference key="object" ref="111465545"/>
+ <reference key="parent" ref="816567345"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">239</int>
+ <reference key="object" ref="893871730"/>
+ <reference key="parent" ref="816567345"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">240</int>
+ <reference key="object" ref="648234613"/>
+ <reference key="parent" ref="816567345"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">241</int>
+ <reference key="object" ref="664982675"/>
+ <reference key="parent" ref="816567345"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">242</int>
+ <reference key="object" ref="657633380"/>
+ <reference key="parent" ref="816567345"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">243</int>
+ <reference key="object" ref="107614956"/>
+ <reference key="parent" ref="816567345"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">244</int>
+ <reference key="object" ref="129098562"/>
+ <reference key="parent" ref="816567345"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">245</int>
+ <reference key="object" ref="421769496"/>
+ <reference key="parent" ref="816567345"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">1053</int>
+ <reference key="object" ref="1072478834"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="258136582"/>
+ </object>
+ <reference key="parent" ref="816567345"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">1057</int>
+ <reference key="object" ref="258136582"/>
+ <reference key="parent" ref="1072478834"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">1056</int>
+ <reference key="object" ref="557710877"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="802284870"/>
+ </object>
+ <reference key="parent" ref="816567345"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">1054</int>
+ <reference key="object" ref="802284870"/>
+ <reference key="parent" ref="557710877"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">1058</int>
+ <reference key="object" ref="200588242"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="953864112"/>
+ </object>
+ <reference key="parent" ref="816567345"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">1055</int>
+ <reference key="object" ref="953864112"/>
+ <reference key="parent" ref="200588242"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">1178</int>
+ <reference key="object" ref="895354651"/>
+ <reference key="parent" ref="816567345"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">1179</int>
+ <reference key="object" ref="64145111"/>
+ <reference key="parent" ref="816567345"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">1180</int>
+ <reference key="object" ref="109358754"/>
+ <reference key="parent" ref="816567345"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">1589</int>
+ <reference key="object" ref="229481215"/>
+ <reference key="parent" ref="816567345"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">1590</int>
+ <reference key="object" ref="1056015920"/>
+ <reference key="parent" ref="816567345"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">1636</int>
+ <reference key="object" ref="128133130"/>
+ <reference key="parent" ref="816567345"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2452</int>
+ <reference key="object" ref="521340648"/>
+ <reference key="parent" ref="816567345"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2482</int>
+ <reference key="object" ref="508315060"/>
+ <reference key="parent" ref="816567345"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">333</int>
+ <reference key="object" ref="37419106"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="99410029"/>
+ </object>
+ <reference key="parent" ref="418576523"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">334</int>
+ <reference key="object" ref="99410029"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="187260470"/>
+ <reference ref="156000819"/>
+ <reference ref="435270930"/>
+ <reference ref="692416826"/>
+ <reference ref="85143365"/>
+ <reference ref="932586104"/>
+ <reference ref="615849701"/>
+ <reference ref="909250698"/>
+ <reference ref="436892403"/>
+ <reference ref="456852973"/>
+ <reference ref="925482310"/>
+ <reference ref="275342640"/>
+ <reference ref="222585783"/>
+ <reference ref="782283483"/>
+ <reference ref="113580051"/>
+ <reference ref="1059185094"/>
+ <reference ref="806193985"/>
+ <reference ref="35804585"/>
+ <reference ref="410176509"/>
+ </object>
+ <reference key="parent" ref="37419106"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">1014</int>
+ <reference key="object" ref="187260470"/>
+ <reference key="parent" ref="99410029"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">1016</int>
+ <reference key="object" ref="156000819"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="230746204"/>
+ </object>
+ <reference key="parent" ref="99410029"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">1015</int>
+ <reference key="object" ref="230746204"/>
+ <reference key="parent" ref="156000819"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">1028</int>
+ <reference key="object" ref="435270930"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="202219296"/>
+ </object>
+ <reference key="parent" ref="99410029"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">1029</int>
+ <reference key="object" ref="202219296"/>
+ <reference key="parent" ref="435270930"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">1084</int>
+ <reference key="object" ref="692416826"/>
+ <reference key="parent" ref="99410029"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">1169</int>
+ <reference key="object" ref="85143365"/>
+ <reference key="parent" ref="99410029"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">1170</int>
+ <reference key="object" ref="932586104"/>
+ <reference key="parent" ref="99410029"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">1171</int>
+ <reference key="object" ref="615849701"/>
+ <reference key="parent" ref="99410029"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">1499</int>
+ <reference key="object" ref="909250698"/>
+ <reference key="parent" ref="99410029"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">1509</int>
+ <reference key="object" ref="436892403"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="354269903"/>
+ </object>
+ <reference key="parent" ref="99410029"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">1510</int>
+ <reference key="object" ref="354269903"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="743864913"/>
+ </object>
+ <reference key="parent" ref="436892403"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4267</int>
+ <reference key="object" ref="743864913"/>
+ <reference key="parent" ref="354269903"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">1511</int>
+ <reference key="object" ref="456852973"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="498308040"/>
+ </object>
+ <reference key="parent" ref="99410029"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">1512</int>
+ <reference key="object" ref="498308040"/>
+ <reference key="parent" ref="456852973"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">1513</int>
+ <reference key="object" ref="925482310"/>
+ <reference key="parent" ref="99410029"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">1514</int>
+ <reference key="object" ref="275342640"/>
+ <reference key="parent" ref="99410029"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2133</int>
+ <reference key="object" ref="222585783"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="473098933"/>
+ </object>
+ <reference key="parent" ref="99410029"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2132</int>
+ <reference key="object" ref="473098933"/>
+ <reference key="parent" ref="222585783"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2249</int>
+ <reference key="object" ref="782283483"/>
+ <reference key="parent" ref="99410029"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2699</int>
+ <reference key="object" ref="113580051"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="336164835"/>
+ </object>
+ <reference key="parent" ref="99410029"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2700</int>
+ <reference key="object" ref="336164835"/>
+ <reference key="parent" ref="113580051"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2702</int>
+ <reference key="object" ref="1059185094"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="1012005243"/>
+ </object>
+ <reference key="parent" ref="99410029"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2703</int>
+ <reference key="object" ref="1012005243"/>
+ <reference key="parent" ref="1059185094"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">3914</int>
+ <reference key="object" ref="806193985"/>
+ <reference key="parent" ref="99410029"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">3915</int>
+ <reference key="object" ref="35804585"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="778663515"/>
+ </object>
+ <reference key="parent" ref="99410029"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">3916</int>
+ <reference key="object" ref="778663515"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="416660424"/>
+ <reference ref="905475562"/>
+ <reference ref="354873462"/>
+ <reference ref="1000095252"/>
+ <reference ref="809865944"/>
+ <reference ref="537073297"/>
+ <reference ref="848243339"/>
+ </object>
+ <reference key="parent" ref="35804585"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">3917</int>
+ <reference key="object" ref="416660424"/>
+ <reference key="parent" ref="778663515"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">3918</int>
+ <reference key="object" ref="905475562"/>
+ <reference key="parent" ref="778663515"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">3919</int>
+ <reference key="object" ref="354873462"/>
+ <reference key="parent" ref="778663515"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">3920</int>
+ <reference key="object" ref="1000095252"/>
+ <reference key="parent" ref="778663515"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">3921</int>
+ <reference key="object" ref="809865944"/>
+ <reference key="parent" ref="778663515"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">3922</int>
+ <reference key="object" ref="537073297"/>
+ <reference key="parent" ref="778663515"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">3923</int>
+ <reference key="object" ref="848243339"/>
+ <reference key="parent" ref="778663515"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4258</int>
+ <reference key="object" ref="410176509"/>
+ <reference key="parent" ref="99410029"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">1050</int>
+ <reference key="object" ref="828538099"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="1039389479"/>
+ </object>
+ <reference key="parent" ref="418576523"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">1051</int>
+ <reference key="object" ref="1039389479"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="608392904"/>
+ <reference ref="895513286"/>
+ <reference ref="939809685"/>
+ <reference ref="1051272232"/>
+ <reference ref="926928050"/>
+ <reference ref="207576805"/>
+ <reference ref="266825075"/>
+ <reference ref="837873120"/>
+ <reference ref="817779866"/>
+ <reference ref="526234244"/>
+ </object>
+ <reference key="parent" ref="828538099"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">1064</int>
+ <reference key="object" ref="608392904"/>
+ <reference key="parent" ref="1039389479"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">1065</int>
+ <reference key="object" ref="895513286"/>
+ <reference key="parent" ref="1039389479"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">1066</int>
+ <reference key="object" ref="939809685"/>
+ <reference key="parent" ref="1039389479"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">1071</int>
+ <reference key="object" ref="1051272232"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="311048570"/>
+ </object>
+ <reference key="parent" ref="1039389479"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">1070</int>
+ <reference key="object" ref="311048570"/>
+ <reference key="parent" ref="1051272232"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">1073</int>
+ <reference key="object" ref="926928050"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="366232406"/>
+ </object>
+ <reference key="parent" ref="1039389479"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">1072</int>
+ <reference key="object" ref="366232406"/>
+ <reference key="parent" ref="926928050"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">1074</int>
+ <reference key="object" ref="207576805"/>
+ <reference key="parent" ref="1039389479"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">1507</int>
+ <reference key="object" ref="266825075"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="869219096"/>
+ </object>
+ <reference key="parent" ref="1039389479"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">1508</int>
+ <reference key="object" ref="869219096"/>
+ <reference key="parent" ref="266825075"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">1605</int>
+ <reference key="object" ref="837873120"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="722819468"/>
+ </object>
+ <reference key="parent" ref="1039389479"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">1604</int>
+ <reference key="object" ref="722819468"/>
+ <reference key="parent" ref="837873120"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4257</int>
+ <reference key="object" ref="817779866"/>
+ <reference key="parent" ref="1039389479"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4259</int>
+ <reference key="object" ref="526234244"/>
+ <reference key="parent" ref="1039389479"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">1134</int>
+ <reference key="object" ref="369761369"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="460963352"/>
+ </object>
+ <reference key="parent" ref="418576523"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">1135</int>
+ <reference key="object" ref="460963352"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="486754137"/>
+ <reference ref="510819606"/>
+ <reference ref="681241442"/>
+ <reference ref="522232226"/>
+ <reference ref="775892995"/>
+ <reference ref="419703734"/>
+ <reference ref="776489378"/>
+ <reference ref="187445983"/>
+ <reference ref="564289307"/>
+ </object>
+ <reference key="parent" ref="369761369"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">1136</int>
+ <reference key="object" ref="486754137"/>
+ <reference key="parent" ref="460963352"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">1137</int>
+ <reference key="object" ref="510819606"/>
+ <reference key="parent" ref="460963352"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">1140</int>
+ <reference key="object" ref="681241442"/>
+ <reference key="parent" ref="460963352"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">1559</int>
+ <reference key="object" ref="522232226"/>
+ <reference key="parent" ref="460963352"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2298</int>
+ <reference key="object" ref="775892995"/>
+ <reference key="parent" ref="460963352"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2300</int>
+ <reference key="object" ref="419703734"/>
+ <reference key="parent" ref="460963352"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2825</int>
+ <reference key="object" ref="776489378"/>
+ <reference key="parent" ref="460963352"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2832</int>
+ <reference key="object" ref="187445983"/>
+ <reference key="parent" ref="460963352"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2834</int>
+ <reference key="object" ref="564289307"/>
+ <reference key="parent" ref="460963352"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">266</int>
+ <reference key="object" ref="382099807"/>
+ <reference key="parent" ref="0"/>
+ <string key="objectName">VLCMain</string>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">269</int>
+ <reference key="object" ref="24216389"/>
+ <reference key="parent" ref="0"/>
+ <string key="objectName">VLCPlaylist</string>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">270</int>
+ <reference key="object" ref="318538144"/>
+ <reference key="parent" ref="0"/>
+ <string key="objectName">VLCControls</string>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">282</int>
+ <reference key="object" ref="823854124"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="980573178"/>
+ </object>
+ <reference key="parent" ref="0"/>
+ <string key="objectName">Messages</string>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">283</int>
+ <reference key="object" ref="980573178"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="69119256"/>
+ <reference ref="302195131"/>
+ <reference ref="186669625"/>
+ </object>
+ <reference key="parent" ref="823854124"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">1164</int>
+ <reference key="object" ref="69119256"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="563652351"/>
+ </object>
+ <reference key="parent" ref="980573178"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4250</int>
+ <reference key="object" ref="302195131"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="324354779"/>
+ <reference ref="397745312"/>
+ <reference ref="697955022"/>
+ </object>
+ <reference key="parent" ref="980573178"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4251</int>
+ <reference key="object" ref="324354779"/>
+ <reference key="parent" ref="302195131"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4254</int>
+ <reference key="object" ref="186669625"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="436035719"/>
+ </object>
+ <reference key="parent" ref="980573178"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">915</int>
+ <reference key="object" ref="706439287"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="955908279"/>
+ <reference ref="790110625"/>
+ <reference ref="756063005"/>
+ <reference ref="557204355"/>
+ <reference ref="337194576"/>
+ <reference ref="551538279"/>
+ <reference ref="727902293"/>
+ <reference ref="27415373"/>
+ <reference ref="248396863"/>
+ <reference ref="701464241"/>
+ <reference ref="525722413"/>
+ <reference ref="964291666"/>
+ <reference ref="921889912"/>
+ <reference ref="630285862"/>
+ <reference ref="765776829"/>
+ </object>
+ <reference key="parent" ref="0"/>
+ <string key="objectName">PlaylistMenu</string>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">916</int>
+ <reference key="object" ref="955908279"/>
+ <reference key="parent" ref="706439287"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">917</int>
+ <reference key="object" ref="790110625"/>
+ <reference key="parent" ref="706439287"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">918</int>
+ <reference key="object" ref="756063005"/>
+ <reference key="parent" ref="706439287"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">919</int>
+ <reference key="object" ref="557204355"/>
+ <reference key="parent" ref="706439287"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">1760</int>
+ <reference key="object" ref="337194576"/>
+ <reference key="parent" ref="706439287"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">1779</int>
+ <reference key="object" ref="551538279"/>
+ <reference key="parent" ref="706439287"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2239</int>
+ <reference key="object" ref="727902293"/>
+ <reference key="parent" ref="706439287"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2240</int>
+ <reference key="object" ref="27415373"/>
+ <reference key="parent" ref="706439287"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2241</int>
+ <reference key="object" ref="248396863"/>
+ <reference key="parent" ref="706439287"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2261</int>
+ <reference key="object" ref="701464241"/>
+ <reference key="parent" ref="706439287"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2263</int>
+ <reference key="object" ref="525722413"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="770628089"/>
+ </object>
+ <reference key="parent" ref="706439287"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2271</int>
+ <reference key="object" ref="770628089"/>
+ <reference key="parent" ref="525722413"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2312</int>
+ <reference key="object" ref="964291666"/>
+ <reference key="parent" ref="706439287"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2398</int>
+ <reference key="object" ref="921889912"/>
+ <reference key="parent" ref="706439287"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">3944</int>
+ <reference key="object" ref="630285862"/>
+ <reference key="parent" ref="706439287"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4147</int>
+ <reference key="object" ref="765776829"/>
+ <reference key="parent" ref="706439287"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">1617</int>
+ <reference key="object" ref="1007233550"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="922081782"/>
+ <reference ref="544588932"/>
+ <reference ref="368196573"/>
+ <reference ref="899612189"/>
+ <reference ref="691057347"/>
+ <reference ref="1031342069"/>
+ <reference ref="576310906"/>
+ </object>
+ <reference key="parent" ref="0"/>
+ <string key="objectName">DockMenu</string>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">1618</int>
+ <reference key="object" ref="922081782"/>
+ <reference key="parent" ref="1007233550"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">1619</int>
+ <reference key="object" ref="544588932"/>
+ <reference key="parent" ref="1007233550"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">1620</int>
+ <reference key="object" ref="368196573"/>
+ <reference key="parent" ref="1007233550"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">1621</int>
+ <reference key="object" ref="899612189"/>
+ <reference key="parent" ref="1007233550"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">1622</int>
+ <reference key="object" ref="691057347"/>
+ <reference key="parent" ref="1007233550"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">1623</int>
+ <reference key="object" ref="1031342069"/>
+ <reference key="parent" ref="1007233550"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">1624</int>
+ <reference key="object" ref="576310906"/>
+ <reference key="parent" ref="1007233550"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2029</int>
+ <reference key="object" ref="637592058"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="31158000"/>
+ </object>
+ <reference key="parent" ref="0"/>
+ <string key="objectName">Equalizer</string>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2030</int>
+ <reference key="object" ref="31158000"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="856725620"/>
+ <reference ref="389932505"/>
+ <reference ref="100696607"/>
+ <reference ref="1018982592"/>
+ <reference ref="486432015"/>
+ <reference ref="585841044"/>
+ <reference ref="42332195"/>
+ <reference ref="775133895"/>
+ <reference ref="537762953"/>
+ <reference ref="503294547"/>
+ <reference ref="681963250"/>
+ <reference ref="606881209"/>
+ <reference ref="805488678"/>
+ <reference ref="1023203485"/>
+ <reference ref="281733404"/>
+ <reference ref="56101633"/>
+ <reference ref="399585508"/>
+ <reference ref="601085374"/>
+ <reference ref="453843947"/>
+ <reference ref="23798705"/>
+ <reference ref="787753999"/>
+ <reference ref="327681174"/>
+ <reference ref="730234994"/>
+ <reference ref="721243726"/>
+ <reference ref="358838174"/>
+ <reference ref="513216791"/>
+ <reference ref="37432409"/>
+ <reference ref="808568699"/>
+ </object>
+ <reference key="parent" ref="637592058"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2035</int>
+ <reference key="object" ref="856725620"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="1041816680"/>
+ </object>
+ <reference key="parent" ref="31158000"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2036</int>
+ <reference key="object" ref="389932505"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="91233575"/>
+ </object>
+ <reference key="parent" ref="31158000"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2037</int>
+ <reference key="object" ref="100696607"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="94840609"/>
+ </object>
+ <reference key="parent" ref="31158000"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2038</int>
+ <reference key="object" ref="1018982592"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="489962118"/>
+ </object>
+ <reference key="parent" ref="31158000"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2039</int>
+ <reference key="object" ref="486432015"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="518307826"/>
+ </object>
+ <reference key="parent" ref="31158000"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2040</int>
+ <reference key="object" ref="585841044"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="693398061"/>
+ </object>
+ <reference key="parent" ref="31158000"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2041</int>
+ <reference key="object" ref="42332195"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="578184582"/>
+ </object>
+ <reference key="parent" ref="31158000"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2042</int>
+ <reference key="object" ref="775133895"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="210711359"/>
+ </object>
+ <reference key="parent" ref="31158000"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2043</int>
+ <reference key="object" ref="537762953"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="1058587874"/>
+ </object>
+ <reference key="parent" ref="31158000"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2044</int>
+ <reference key="object" ref="503294547"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="527524967"/>
+ </object>
+ <reference key="parent" ref="31158000"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2045</int>
+ <reference key="object" ref="681963250"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="30839266"/>
+ </object>
+ <reference key="parent" ref="31158000"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2046</int>
+ <reference key="object" ref="606881209"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="633078664"/>
+ </object>
+ <reference key="parent" ref="31158000"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2047</int>
+ <reference key="object" ref="805488678"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="349135795"/>
+ </object>
+ <reference key="parent" ref="31158000"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2048</int>
+ <reference key="object" ref="1023203485"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="723253094"/>
+ </object>
+ <reference key="parent" ref="31158000"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2049</int>
+ <reference key="object" ref="281733404"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="484817151"/>
+ </object>
+ <reference key="parent" ref="31158000"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2050</int>
+ <reference key="object" ref="56101633"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="81585957"/>
+ </object>
+ <reference key="parent" ref="31158000"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2051</int>
+ <reference key="object" ref="399585508"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="59687778"/>
+ </object>
+ <reference key="parent" ref="31158000"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2052</int>
+ <reference key="object" ref="601085374"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="316548890"/>
+ </object>
+ <reference key="parent" ref="31158000"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2053</int>
+ <reference key="object" ref="453843947"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="289161762"/>
+ </object>
+ <reference key="parent" ref="31158000"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2054</int>
+ <reference key="object" ref="23798705"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="877466644"/>
+ </object>
+ <reference key="parent" ref="31158000"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2055</int>
+ <reference key="object" ref="787753999"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="842782135"/>
+ </object>
+ <reference key="parent" ref="31158000"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2056</int>
+ <reference key="object" ref="327681174"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="970402205"/>
+ </object>
+ <reference key="parent" ref="31158000"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2057</int>
+ <reference key="object" ref="730234994"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="1064909630"/>
+ </object>
+ <reference key="parent" ref="31158000"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2058</int>
+ <reference key="object" ref="721243726"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="332690663"/>
+ </object>
+ <reference key="parent" ref="31158000"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2059</int>
+ <reference key="object" ref="358838174"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="332696099"/>
+ </object>
+ <reference key="parent" ref="31158000"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2060</int>
+ <reference key="object" ref="513216791"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="548372160"/>
+ </object>
+ <reference key="parent" ref="31158000"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2061</int>
+ <reference key="object" ref="37432409"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="669884239"/>
+ </object>
+ <reference key="parent" ref="31158000"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2094</int>
+ <reference key="object" ref="808568699"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="891977572"/>
+ </object>
+ <reference key="parent" ref="31158000"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2031</int>
+ <reference key="object" ref="20369485"/>
+ <reference key="parent" ref="0"/>
+ <string key="objectName">VLCEqualizer</string>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2197</int>
+ <reference key="object" ref="83090933"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="371811673"/>
+ <reference ref="922800299"/>
+ <reference ref="620662750"/>
+ <reference ref="321952499"/>
+ <reference ref="844896047"/>
+ <reference ref="887227242"/>
+ </object>
+ <reference key="parent" ref="0"/>
+ <string key="objectName">Playlist</string>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2199</int>
+ <reference key="object" ref="371811673"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="978691882"/>
+ <reference ref="601724053"/>
+ <reference ref="501776014"/>
+ <reference ref="787765838"/>
+ </object>
+ <reference key="parent" ref="83090933"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2201</int>
+ <reference key="object" ref="978691882"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="770515259"/>
+ <reference ref="497927423"/>
+ <reference ref="909990336"/>
+ <reference ref="1060597392"/>
+ </object>
+ <reference key="parent" ref="371811673"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2198</int>
+ <reference key="object" ref="770515259"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="176092578"/>
+ </object>
+ <reference key="parent" ref="978691882"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">3387</int>
+ <reference key="object" ref="176092578"/>
+ <reference key="parent" ref="770515259"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2200</int>
+ <reference key="object" ref="497927423"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="1038079813"/>
+ </object>
+ <reference key="parent" ref="978691882"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">3385</int>
+ <reference key="object" ref="1038079813"/>
+ <reference key="parent" ref="497927423"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2211</int>
+ <reference key="object" ref="909990336"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="563164475"/>
+ </object>
+ <reference key="parent" ref="978691882"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">3386</int>
+ <reference key="object" ref="563164475"/>
+ <reference key="parent" ref="909990336"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">3817</int>
+ <reference key="object" ref="1060597392"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="144165435"/>
+ </object>
+ <reference key="parent" ref="978691882"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">3819</int>
+ <reference key="object" ref="144165435"/>
+ <reference key="parent" ref="1060597392"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2202</int>
+ <reference key="object" ref="922800299"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="55569565"/>
+ </object>
+ <reference key="parent" ref="83090933"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2208</int>
+ <reference key="object" ref="620662750"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="658004084"/>
+ </object>
+ <reference key="parent" ref="83090933"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2451</int>
+ <reference key="object" ref="321952499"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="634126553"/>
+ </object>
+ <reference key="parent" ref="83090933"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2485</int>
+ <reference key="object" ref="844896047"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="919270679"/>
+ </object>
+ <reference key="parent" ref="83090933"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2789</int>
+ <reference key="object" ref="887227242"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="573876391"/>
+ </object>
+ <reference key="parent" ref="83090933"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2460</int>
+ <reference key="object" ref="421596034"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="886146577"/>
+ </object>
+ <reference key="parent" ref="0"/>
+ <string key="objectName">GoToTime</string>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2461</int>
+ <reference key="object" ref="886146577"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="258215225"/>
+ <reference ref="149277915"/>
+ <reference ref="771431016"/>
+ <reference ref="186709324"/>
+ <reference ref="979808628"/>
+ <reference ref="909282180"/>
+ </object>
+ <reference key="parent" ref="421596034"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2462</int>
+ <reference key="object" ref="258215225"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="277658323"/>
+ </object>
+ <reference key="parent" ref="886146577"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2463</int>
+ <reference key="object" ref="149277915"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="138567312"/>
+ </object>
+ <reference key="parent" ref="886146577"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2464</int>
+ <reference key="object" ref="771431016"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="784586751"/>
+ </object>
+ <reference key="parent" ref="886146577"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2465</int>
+ <reference key="object" ref="186709324"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="262502374"/>
+ </object>
+ <reference key="parent" ref="886146577"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2466</int>
+ <reference key="object" ref="979808628"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="666089282"/>
+ </object>
+ <reference key="parent" ref="886146577"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2479</int>
+ <reference key="object" ref="909282180"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="815423019"/>
+ </object>
+ <reference key="parent" ref="886146577"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2709</int>
+ <reference key="object" ref="4943074"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="815327114"/>
+ <reference ref="763524337"/>
+ </object>
+ <reference key="parent" ref="0"/>
+ <string key="objectName">SaveAccessoryView</string>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2721</int>
+ <reference key="object" ref="815327114"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="927742373"/>
+ </object>
+ <reference key="parent" ref="4943074"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2725</int>
+ <reference key="object" ref="763524337"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="895580039"/>
+ </object>
+ <reference key="parent" ref="4943074"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2730</int>
+ <reference key="object" ref="773269229"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="708776679"/>
+ <reference ref="458540204"/>
+ <reference ref="1015224077"/>
+ <reference ref="464934289"/>
+ <reference ref="862398090"/>
+ <reference ref="294786718"/>
+ <reference ref="306653367"/>
+ <reference ref="516410441"/>
+ <reference ref="744562547"/>
+ <reference ref="11153520"/>
+ <reference ref="23068210"/>
+ <reference ref="1067947720"/>
+ <reference ref="834091258"/>
+ </object>
+ <reference key="parent" ref="0"/>
+ <string key="objectName">VoutMenu</string>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2731</int>
+ <reference key="object" ref="708776679"/>
+ <reference key="parent" ref="773269229"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2732</int>
+ <reference key="object" ref="458540204"/>
+ <reference key="parent" ref="773269229"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2737</int>
+ <reference key="object" ref="1015224077"/>
+ <reference key="parent" ref="773269229"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2738</int>
+ <reference key="object" ref="464934289"/>
+ <reference key="parent" ref="773269229"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2739</int>
+ <reference key="object" ref="862398090"/>
+ <reference key="parent" ref="773269229"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2740</int>
+ <reference key="object" ref="294786718"/>
+ <reference key="parent" ref="773269229"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2741</int>
+ <reference key="object" ref="306653367"/>
+ <reference key="parent" ref="773269229"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2742</int>
+ <reference key="object" ref="516410441"/>
+ <reference key="parent" ref="773269229"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2743</int>
+ <reference key="object" ref="744562547"/>
+ <reference key="parent" ref="773269229"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2744</int>
+ <reference key="object" ref="11153520"/>
+ <reference key="parent" ref="773269229"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2745</int>
+ <reference key="object" ref="23068210"/>
+ <reference key="parent" ref="773269229"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2746</int>
+ <reference key="object" ref="1067947720"/>
+ <reference key="parent" ref="773269229"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2747</int>
+ <reference key="object" ref="834091258"/>
+ <reference key="parent" ref="773269229"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2769</int>
+ <reference key="object" ref="992958410"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="971327333"/>
+ </object>
+ <reference key="parent" ref="0"/>
+ <string key="objectName">FSPanel</string>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2770</int>
+ <reference key="object" ref="971327333"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="524619069"/>
+ <reference ref="623199260"/>
+ <reference ref="312228972"/>
+ <reference ref="328341891"/>
+ <reference ref="392237572"/>
+ <reference ref="208887354"/>
+ <reference ref="319509696"/>
+ <reference ref="577007757"/>
+ <reference ref="320188156"/>
+ <reference ref="724927235"/>
+ <reference ref="541582453"/>
+ <reference ref="867878858"/>
+ <reference ref="321067651"/>
+ </object>
+ <reference key="parent" ref="992958410"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2796</int>
+ <reference key="object" ref="524619069"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="528436022"/>
+ </object>
+ <reference key="parent" ref="971327333"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2797</int>
+ <reference key="object" ref="623199260"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="1043970436"/>
+ </object>
+ <reference key="parent" ref="971327333"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2798</int>
+ <reference key="object" ref="312228972"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="285403641"/>
+ </object>
+ <reference key="parent" ref="971327333"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2799</int>
+ <reference key="object" ref="328341891"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="17856674"/>
+ </object>
+ <reference key="parent" ref="971327333"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2800</int>
+ <reference key="object" ref="392237572"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="114392048"/>
+ </object>
+ <reference key="parent" ref="971327333"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2801</int>
+ <reference key="object" ref="208887354"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="340972206"/>
+ </object>
+ <reference key="parent" ref="971327333"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2802</int>
+ <reference key="object" ref="319509696"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="675859759"/>
+ </object>
+ <reference key="parent" ref="971327333"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2803</int>
+ <reference key="object" ref="577007757"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="748515603"/>
+ </object>
+ <reference key="parent" ref="971327333"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2804</int>
+ <reference key="object" ref="320188156"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="914847598"/>
+ </object>
+ <reference key="parent" ref="971327333"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2805</int>
+ <reference key="object" ref="724927235"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="953517082"/>
+ </object>
+ <reference key="parent" ref="971327333"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2806</int>
+ <reference key="object" ref="541582453"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="887081916"/>
+ </object>
+ <reference key="parent" ref="971327333"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2807</int>
+ <reference key="object" ref="867878858"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="625690526"/>
+ </object>
+ <reference key="parent" ref="971327333"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2808</int>
+ <reference key="object" ref="321067651"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="142277631"/>
+ </object>
+ <reference key="parent" ref="971327333"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">3568</int>
+ <reference key="object" ref="893784723"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="549069334"/>
+ <reference ref="174345240"/>
+ <reference ref="942308543"/>
+ <reference ref="361025704"/>
+ <reference ref="727410173"/>
+ <reference ref="1046930998"/>
+ <reference ref="714509253"/>
+ <reference ref="479427375"/>
+ <reference ref="367371720"/>
+ <reference ref="1037854672"/>
+ </object>
+ <reference key="parent" ref="0"/>
+ <string key="objectName">Control Toolbar</string>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">3570</int>
+ <reference key="object" ref="549069334"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="420909627"/>
+ </object>
+ <reference key="parent" ref="893784723"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">3571</int>
+ <reference key="object" ref="174345240"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="832303011"/>
+ </object>
+ <reference key="parent" ref="893784723"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">3574</int>
+ <reference key="object" ref="942308543"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="270764217"/>
+ </object>
+ <reference key="parent" ref="893784723"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">3575</int>
+ <reference key="object" ref="361025704"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="443974839"/>
+ </object>
+ <reference key="parent" ref="893784723"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">3576</int>
+ <reference key="object" ref="727410173"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="283180256"/>
+ </object>
+ <reference key="parent" ref="893784723"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">3580</int>
+ <reference key="object" ref="1046930998"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="893962477"/>
+ </object>
+ <reference key="parent" ref="893784723"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">3584</int>
+ <reference key="object" ref="714509253"/>
+ <reference key="parent" ref="893784723"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">3585</int>
+ <reference key="object" ref="479427375"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="756202812"/>
+ </object>
+ <reference key="parent" ref="893784723"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">3586</int>
+ <reference key="object" ref="367371720"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="611521147"/>
+ </object>
+ <reference key="parent" ref="893784723"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">3698</int>
+ <reference key="object" ref="1037854672"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="212458224"/>
+ </object>
+ <reference key="parent" ref="893784723"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">3706</int>
+ <reference key="object" ref="1072282817"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="531653578"/>
+ </object>
+ <reference key="parent" ref="0"/>
+ <string key="objectName">Crash Reporter</string>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">3707</int>
+ <reference key="object" ref="531653578"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="576822733"/>
+ <reference ref="344058330"/>
+ <reference ref="17789152"/>
+ <reference ref="965089166"/>
+ <reference ref="226481144"/>
+ <reference ref="771746599"/>
+ <reference ref="233168328"/>
+ <reference ref="471272006"/>
+ </object>
+ <reference key="parent" ref="1072282817"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">3708</int>
+ <reference key="object" ref="576822733"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="931027845"/>
+ </object>
+ <reference key="parent" ref="531653578"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">3709</int>
+ <reference key="object" ref="344058330"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="937384459"/>
+ </object>
+ <reference key="parent" ref="531653578"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">3710</int>
+ <reference key="object" ref="17789152"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="789219168"/>
+ <reference ref="162946354"/>
+ <reference ref="543387813"/>
+ </object>
+ <reference key="parent" ref="531653578"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">3711</int>
+ <reference key="object" ref="789219168"/>
+ <reference key="parent" ref="17789152"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">3712</int>
+ <reference key="object" ref="965089166"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="432927797"/>
+ </object>
+ <reference key="parent" ref="531653578"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">3713</int>
+ <reference key="object" ref="226481144"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="725164878"/>
+ </object>
+ <reference key="parent" ref="531653578"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">3714</int>
+ <reference key="object" ref="771746599"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="184708287"/>
+ </object>
+ <reference key="parent" ref="531653578"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">3940</int>
+ <reference key="object" ref="233168328"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="961360821"/>
+ </object>
+ <reference key="parent" ref="531653578"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">3941</int>
+ <reference key="object" ref="471272006"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="695391491"/>
+ </object>
+ <reference key="parent" ref="531653578"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4274</int>
+ <reference key="object" ref="283044800"/>
+ <reference key="parent" ref="108887610"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4275</int>
+ <reference key="object" ref="946014265"/>
+ <reference key="parent" ref="73391533"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4276</int>
+ <reference key="object" ref="872288919"/>
+ <reference key="parent" ref="247830175"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4277</int>
+ <reference key="object" ref="277248697"/>
+ <reference key="parent" ref="941058480"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4278</int>
+ <reference key="object" ref="984581159"/>
+ <reference key="parent" ref="549836737"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4279</int>
+ <reference key="object" ref="791503506"/>
+ <reference key="parent" ref="8485265"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4280</int>
+ <reference key="object" ref="1053737075"/>
+ <reference key="parent" ref="157320773"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4281</int>
+ <reference key="object" ref="475126643"/>
+ <reference key="parent" ref="456440780"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4282</int>
+ <reference key="object" ref="563652351"/>
+ <reference key="parent" ref="69119256"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4283</int>
+ <reference key="object" ref="436035719"/>
+ <reference key="parent" ref="186669625"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4284</int>
+ <reference key="object" ref="1041816680"/>
+ <reference key="parent" ref="856725620"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4285</int>
+ <reference key="object" ref="91233575"/>
+ <reference key="parent" ref="389932505"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4286</int>
+ <reference key="object" ref="94840609"/>
+ <reference key="parent" ref="100696607"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4287</int>
+ <reference key="object" ref="489962118"/>
+ <reference key="parent" ref="1018982592"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4288</int>
+ <reference key="object" ref="518307826"/>
+ <reference key="parent" ref="486432015"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4289</int>
+ <reference key="object" ref="693398061"/>
+ <reference key="parent" ref="585841044"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4290</int>
+ <reference key="object" ref="578184582"/>
+ <reference key="parent" ref="42332195"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4291</int>
+ <reference key="object" ref="210711359"/>
+ <reference key="parent" ref="775133895"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4292</int>
+ <reference key="object" ref="1058587874"/>
+ <reference key="parent" ref="537762953"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4293</int>
+ <reference key="object" ref="527524967"/>
+ <reference key="parent" ref="503294547"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4294</int>
+ <reference key="object" ref="30839266"/>
+ <reference key="parent" ref="681963250"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4295</int>
+ <reference key="object" ref="633078664"/>
+ <reference key="parent" ref="606881209"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4296</int>
+ <reference key="object" ref="349135795"/>
+ <reference key="parent" ref="805488678"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4297</int>
+ <reference key="object" ref="723253094"/>
+ <reference key="parent" ref="1023203485"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4298</int>
+ <reference key="object" ref="484817151"/>
+ <reference key="parent" ref="281733404"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4299</int>
+ <reference key="object" ref="81585957"/>
+ <reference key="parent" ref="56101633"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4300</int>
+ <reference key="object" ref="59687778"/>
+ <reference key="parent" ref="399585508"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4301</int>
+ <reference key="object" ref="316548890"/>
+ <reference key="parent" ref="601085374"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4302</int>
+ <reference key="object" ref="289161762"/>
+ <reference key="parent" ref="453843947"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4303</int>
+ <reference key="object" ref="877466644"/>
+ <reference key="parent" ref="23798705"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4304</int>
+ <reference key="object" ref="842782135"/>
+ <reference key="parent" ref="787753999"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4305</int>
+ <reference key="object" ref="970402205"/>
+ <reference key="parent" ref="327681174"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4306</int>
+ <reference key="object" ref="1064909630"/>
+ <reference key="parent" ref="730234994"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4307</int>
+ <reference key="object" ref="332690663"/>
+ <reference key="parent" ref="721243726"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4308</int>
+ <reference key="object" ref="332696099"/>
+ <reference key="parent" ref="358838174"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4309</int>
+ <reference key="object" ref="548372160"/>
+ <reference key="parent" ref="513216791"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4310</int>
+ <reference key="object" ref="669884239"/>
+ <reference key="parent" ref="37432409"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4311</int>
+ <reference key="object" ref="891977572"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="137852163"/>
+ </object>
+ <reference key="parent" ref="808568699"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4312</int>
+ <reference key="object" ref="55569565"/>
+ <reference key="parent" ref="922800299"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4313</int>
+ <reference key="object" ref="658004084"/>
+ <reference key="parent" ref="620662750"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4314</int>
+ <reference key="object" ref="634126553"/>
+ <reference key="parent" ref="321952499"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4315</int>
+ <reference key="object" ref="919270679"/>
+ <reference key="parent" ref="844896047"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4316</int>
+ <reference key="object" ref="573876391"/>
+ <reference key="parent" ref="887227242"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4326</int>
+ <reference key="object" ref="277658323"/>
+ <reference key="parent" ref="258215225"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4327</int>
+ <reference key="object" ref="138567312"/>
+ <reference key="parent" ref="149277915"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4328</int>
+ <reference key="object" ref="784586751"/>
+ <reference key="parent" ref="771431016"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4329</int>
+ <reference key="object" ref="262502374"/>
+ <reference key="parent" ref="186709324"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4330</int>
+ <reference key="object" ref="666089282"/>
+ <reference key="parent" ref="979808628"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4331</int>
+ <reference key="object" ref="815423019"/>
+ <reference key="parent" ref="909282180"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4332</int>
+ <reference key="object" ref="927742373"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="992372113"/>
+ </object>
+ <reference key="parent" ref="815327114"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4333</int>
+ <reference key="object" ref="895580039"/>
+ <reference key="parent" ref="763524337"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4334</int>
+ <reference key="object" ref="528436022"/>
+ <reference key="parent" ref="524619069"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4335</int>
+ <reference key="object" ref="1043970436"/>
+ <reference key="parent" ref="623199260"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4336</int>
+ <reference key="object" ref="285403641"/>
+ <reference key="parent" ref="312228972"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4337</int>
+ <reference key="object" ref="17856674"/>
+ <reference key="parent" ref="328341891"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4338</int>
+ <reference key="object" ref="114392048"/>
+ <reference key="parent" ref="392237572"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4339</int>
+ <reference key="object" ref="340972206"/>
+ <reference key="parent" ref="208887354"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4340</int>
+ <reference key="object" ref="675859759"/>
+ <reference key="parent" ref="319509696"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4341</int>
+ <reference key="object" ref="748515603"/>
+ <reference key="parent" ref="577007757"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4342</int>
+ <reference key="object" ref="914847598"/>
+ <reference key="parent" ref="320188156"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4343</int>
+ <reference key="object" ref="953517082"/>
+ <reference key="parent" ref="724927235"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4344</int>
+ <reference key="object" ref="887081916"/>
+ <reference key="parent" ref="541582453"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4345</int>
+ <reference key="object" ref="625690526"/>
+ <reference key="parent" ref="867878858"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4346</int>
+ <reference key="object" ref="142277631"/>
+ <reference key="parent" ref="321067651"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4347</int>
+ <reference key="object" ref="420909627"/>
+ <reference key="parent" ref="549069334"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4348</int>
+ <reference key="object" ref="832303011"/>
+ <reference key="parent" ref="174345240"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4349</int>
+ <reference key="object" ref="270764217"/>
+ <reference key="parent" ref="942308543"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4350</int>
+ <reference key="object" ref="443974839"/>
+ <reference key="parent" ref="361025704"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4351</int>
+ <reference key="object" ref="283180256"/>
+ <reference key="parent" ref="727410173"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4352</int>
+ <reference key="object" ref="893962477"/>
+ <reference key="parent" ref="1046930998"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4353</int>
+ <reference key="object" ref="756202812"/>
+ <reference key="parent" ref="479427375"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4354</int>
+ <reference key="object" ref="611521147"/>
+ <reference key="parent" ref="367371720"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4355</int>
+ <reference key="object" ref="212458224"/>
+ <reference key="parent" ref="1037854672"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4356</int>
+ <reference key="object" ref="931027845"/>
+ <reference key="parent" ref="576822733"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4357</int>
+ <reference key="object" ref="937384459"/>
+ <reference key="parent" ref="344058330"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4358</int>
+ <reference key="object" ref="432927797"/>
+ <reference key="parent" ref="965089166"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4359</int>
+ <reference key="object" ref="725164878"/>
+ <reference key="parent" ref="226481144"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4360</int>
+ <reference key="object" ref="184708287"/>
+ <reference key="parent" ref="771746599"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4361</int>
+ <reference key="object" ref="961360821"/>
+ <reference key="parent" ref="233168328"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4362</int>
+ <reference key="object" ref="695391491"/>
+ <reference key="parent" ref="471272006"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2097</int>
+ <reference key="object" ref="137852163"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="470110929"/>
+ <reference ref="979216496"/>
+ <reference ref="809780541"/>
+ <reference ref="811082135"/>
+ <reference ref="581334430"/>
+ <reference ref="484554319"/>
+ <reference ref="909262309"/>
+ <reference ref="652187908"/>
+ <reference ref="461107689"/>
+ <reference ref="297892412"/>
+ <reference ref="204134611"/>
+ <reference ref="603384320"/>
+ <reference ref="777318787"/>
+ <reference ref="571505332"/>
+ <reference ref="567495170"/>
+ <reference ref="124484592"/>
+ <reference ref="330064520"/>
+ <reference ref="838258387"/>
+ </object>
+ <reference key="parent" ref="891977572"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2118</int>
+ <reference key="object" ref="470110929"/>
+ <reference key="parent" ref="137852163"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2117</int>
+ <reference key="object" ref="979216496"/>
+ <reference key="parent" ref="137852163"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2116</int>
+ <reference key="object" ref="809780541"/>
+ <reference key="parent" ref="137852163"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2115</int>
+ <reference key="object" ref="811082135"/>
+ <reference key="parent" ref="137852163"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2114</int>
+ <reference key="object" ref="581334430"/>
+ <reference key="parent" ref="137852163"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2113</int>
+ <reference key="object" ref="484554319"/>
+ <reference key="parent" ref="137852163"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2112</int>
+ <reference key="object" ref="909262309"/>
+ <reference key="parent" ref="137852163"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2111</int>
+ <reference key="object" ref="652187908"/>
+ <reference key="parent" ref="137852163"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2110</int>
+ <reference key="object" ref="461107689"/>
+ <reference key="parent" ref="137852163"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2109</int>
+ <reference key="object" ref="297892412"/>
+ <reference key="parent" ref="137852163"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2108</int>
+ <reference key="object" ref="204134611"/>
+ <reference key="parent" ref="137852163"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2107</int>
+ <reference key="object" ref="603384320"/>
+ <reference key="parent" ref="137852163"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2106</int>
+ <reference key="object" ref="777318787"/>
+ <reference key="parent" ref="137852163"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2105</int>
+ <reference key="object" ref="571505332"/>
+ <reference key="parent" ref="137852163"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2104</int>
+ <reference key="object" ref="567495170"/>
+ <reference key="parent" ref="137852163"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2103</int>
+ <reference key="object" ref="124484592"/>
+ <reference key="parent" ref="137852163"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2102</int>
+ <reference key="object" ref="330064520"/>
+ <reference key="parent" ref="137852163"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2096</int>
+ <reference key="object" ref="838258387"/>
+ <reference key="parent" ref="137852163"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2722</int>
+ <reference key="object" ref="992372113"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="568458431"/>
+ <reference ref="63535790"/>
+ <reference ref="613243776"/>
+ </object>
+ <reference key="parent" ref="927742373"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4272</int>
+ <reference key="object" ref="568458431"/>
+ <reference key="parent" ref="992372113"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2724</int>
+ <reference key="object" ref="63535790"/>
+ <reference key="parent" ref="992372113"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2723</int>
+ <reference key="object" ref="613243776"/>
+ <reference key="parent" ref="992372113"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4363</int>
+ <reference key="object" ref="397745312"/>
+ <reference key="parent" ref="302195131"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4364</int>
+ <reference key="object" ref="697955022"/>
+ <reference key="parent" ref="302195131"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4365</int>
+ <reference key="object" ref="601724053"/>
+ <reference key="parent" ref="371811673"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4366</int>
+ <reference key="object" ref="501776014"/>
+ <reference key="parent" ref="371811673"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4367</int>
+ <reference key="object" ref="787765838"/>
+ <reference key="parent" ref="371811673"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4368</int>
+ <reference key="object" ref="162946354"/>
+ <reference key="parent" ref="17789152"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4369</int>
+ <reference key="object" ref="543387813"/>
+ <reference key="parent" ref="17789152"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">-3</int>
+ <reference key="object" ref="658479039"/>
+ <reference key="parent" ref="0"/>
+ <string key="objectName">Application</string>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4370</int>
+ <reference key="object" ref="934861745"/>
+ <reference key="parent" ref="1025665732"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4371</int>
+ <reference key="object" ref="840376184"/>
+ <reference key="parent" ref="0"/>
+ <string key="objectName">VLCSidebar</string>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4372</int>
+ <reference key="object" ref="181536822"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="810175085"/>
+ </object>
+ <reference key="parent" ref="0"/>
+ <string key="objectName">VoutWindow</string>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4373</int>
+ <reference key="object" ref="810175085"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="791459162"/>
+ </object>
+ <reference key="parent" ref="181536822"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4374</int>
+ <reference key="object" ref="791459162"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="273936964"/>
+ <reference ref="393458837"/>
+ </object>
+ <reference key="parent" ref="810175085"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4375</int>
+ <reference key="object" ref="273936964"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="704038250"/>
+ <reference ref="323070352"/>
+ <reference ref="68648151"/>
+ <reference ref="236103997"/>
+ <reference ref="990345256"/>
+ <reference ref="837877940"/>
+ <reference ref="537857711"/>
+ <reference ref="1069893234"/>
+ <reference ref="339098234"/>
+ <reference ref="1043798456"/>
+ <reference ref="803107562"/>
+ <reference ref="782624074"/>
+ <reference ref="650340619"/>
+ <reference ref="11649400"/>
+ <reference ref="1003147624"/>
+ <reference ref="1054006624"/>
+ <reference ref="830022764"/>
+ <reference ref="439918596"/>
+ <reference ref="6285925"/>
+ </object>
+ <reference key="parent" ref="791459162"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4376</int>
+ <reference key="object" ref="393458837"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="250917420"/>
+ <reference ref="985361470"/>
+ <reference ref="471969879"/>
+ <reference ref="151021100"/>
+ <reference ref="630217983"/>
+ </object>
+ <reference key="parent" ref="791459162"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4377</int>
+ <reference key="object" ref="250917420"/>
+ <reference key="parent" ref="393458837"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4378</int>
+ <reference key="object" ref="985361470"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="506953412"/>
+ </object>
+ <reference key="parent" ref="393458837"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4379</int>
+ <reference key="object" ref="471969879"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="152046718"/>
+ <reference ref="1003872504"/>
+ <reference ref="1003622457"/>
+ </object>
+ <reference key="parent" ref="393458837"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4380</int>
+ <reference key="object" ref="630217983"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="567803078"/>
+ <reference ref="994195845"/>
+ <reference ref="928825784"/>
+ </object>
+ <reference key="parent" ref="393458837"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4381</int>
+ <reference key="object" ref="151021100"/>
+ <reference key="parent" ref="393458837"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4382</int>
+ <reference key="object" ref="567803078"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="870934265"/>
+ </object>
+ <reference key="parent" ref="630217983"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4383</int>
+ <reference key="object" ref="994195845"/>
+ <reference key="parent" ref="630217983"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4384</int>
+ <reference key="object" ref="928825784"/>
+ <reference key="parent" ref="630217983"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4385</int>
+ <reference key="object" ref="870934265"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="142262764"/>
+ </object>
+ <reference key="parent" ref="567803078"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4386</int>
+ <reference key="object" ref="142262764"/>
+ <reference key="parent" ref="870934265"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4387</int>
+ <reference key="object" ref="152046718"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="8305122"/>
+ </object>
+ <reference key="parent" ref="471969879"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4388</int>
+ <reference key="object" ref="1003872504"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="734574901"/>
+ </object>
+ <reference key="parent" ref="471969879"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4389</int>
+ <reference key="object" ref="1003622457"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="575187563"/>
+ </object>
+ <reference key="parent" ref="471969879"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4390</int>
+ <reference key="object" ref="575187563"/>
+ <reference key="parent" ref="1003622457"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4391</int>
+ <reference key="object" ref="734574901"/>
+ <reference key="parent" ref="1003872504"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4392</int>
+ <reference key="object" ref="8305122"/>
+ <reference key="parent" ref="152046718"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4393</int>
+ <reference key="object" ref="506953412"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="733469000"/>
+ </object>
+ <reference key="parent" ref="985361470"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4394</int>
+ <reference key="object" ref="733469000"/>
+ <reference key="parent" ref="506953412"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4395</int>
+ <reference key="object" ref="704038250"/>
+ <reference key="parent" ref="273936964"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4396</int>
+ <reference key="object" ref="323070352"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="165982631"/>
+ </object>
+ <reference key="parent" ref="273936964"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4397</int>
+ <reference key="object" ref="68648151"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="919282188"/>
+ </object>
+ <reference key="parent" ref="273936964"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4398</int>
+ <reference key="object" ref="236103997"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="462806559"/>
+ </object>
+ <reference key="parent" ref="273936964"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4399</int>
+ <reference key="object" ref="990345256"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="355116668"/>
+ </object>
+ <reference key="parent" ref="273936964"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4400</int>
+ <reference key="object" ref="837877940"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="315651292"/>
+ </object>
+ <reference key="parent" ref="273936964"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4401</int>
+ <reference key="object" ref="537857711"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="368279232"/>
+ </object>
+ <reference key="parent" ref="273936964"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4402</int>
+ <reference key="object" ref="1069893234"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="91153386"/>
+ </object>
+ <reference key="parent" ref="273936964"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4403</int>
+ <reference key="object" ref="339098234"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="52989605"/>
+ </object>
+ <reference key="parent" ref="273936964"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4404</int>
+ <reference key="object" ref="1043798456"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="949612662"/>
+ </object>
+ <reference key="parent" ref="273936964"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4405</int>
+ <reference key="object" ref="803107562"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="339071106"/>
+ </object>
+ <reference key="parent" ref="273936964"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4406</int>
+ <reference key="object" ref="782624074"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="575706706"/>
+ </object>
+ <reference key="parent" ref="273936964"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4407</int>
+ <reference key="object" ref="650340619"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="705176513"/>
+ </object>
+ <reference key="parent" ref="273936964"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4408</int>
+ <reference key="object" ref="11649400"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="336976528"/>
+ </object>
+ <reference key="parent" ref="273936964"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4409</int>
+ <reference key="object" ref="1003147624"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="789232225"/>
+ <reference ref="159309238"/>
+ </object>
+ <reference key="parent" ref="273936964"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4410</int>
+ <reference key="object" ref="1054006624"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="873596120"/>
+ </object>
+ <reference key="parent" ref="273936964"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4411</int>
+ <reference key="object" ref="830022764"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="909310125"/>
+ </object>
+ <reference key="parent" ref="273936964"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4412</int>
+ <reference key="object" ref="439918596"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="940359849"/>
+ </object>
+ <reference key="parent" ref="273936964"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4413</int>
+ <reference key="object" ref="6285925"/>
+ <reference key="parent" ref="273936964"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4414</int>
+ <reference key="object" ref="940359849"/>
+ <reference key="parent" ref="439918596"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4415</int>
+ <reference key="object" ref="909310125"/>
+ <reference key="parent" ref="830022764"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4416</int>
+ <reference key="object" ref="873596120"/>
+ <reference key="parent" ref="1054006624"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4417</int>
+ <reference key="object" ref="789232225"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="718622970"/>
+ </object>
+ <reference key="parent" ref="1003147624"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4418</int>
+ <reference key="object" ref="159309238"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="640076027"/>
+ </object>
+ <reference key="parent" ref="1003147624"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4419</int>
+ <reference key="object" ref="640076027"/>
+ <reference key="parent" ref="159309238"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4420</int>
+ <reference key="object" ref="718622970"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="269638670"/>
+ <reference ref="526276964"/>
+ <reference ref="1046190814"/>
+ <reference ref="813023486"/>
+ </object>
+ <reference key="parent" ref="789232225"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4421</int>
+ <reference key="object" ref="269638670"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="299796820"/>
+ <reference ref="577171085"/>
+ <reference ref="407071634"/>
+ <reference ref="434111196"/>
+ </object>
+ <reference key="parent" ref="718622970"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4422</int>
+ <reference key="object" ref="526276964"/>
+ <reference key="parent" ref="718622970"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4423</int>
+ <reference key="object" ref="1046190814"/>
+ <reference key="parent" ref="718622970"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4424</int>
+ <reference key="object" ref="813023486"/>
+ <reference key="parent" ref="718622970"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4425</int>
+ <reference key="object" ref="299796820"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="701654677"/>
+ </object>
+ <reference key="parent" ref="269638670"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4426</int>
+ <reference key="object" ref="577171085"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="737135154"/>
+ </object>
+ <reference key="parent" ref="269638670"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4427</int>
+ <reference key="object" ref="407071634"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="198627758"/>
+ </object>
+ <reference key="parent" ref="269638670"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4428</int>
+ <reference key="object" ref="434111196"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="196369285"/>
+ </object>
+ <reference key="parent" ref="269638670"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4429</int>
+ <reference key="object" ref="196369285"/>
+ <reference key="parent" ref="434111196"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4430</int>
+ <reference key="object" ref="198627758"/>
+ <reference key="parent" ref="407071634"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4431</int>
+ <reference key="object" ref="737135154"/>
+ <reference key="parent" ref="577171085"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4432</int>
+ <reference key="object" ref="701654677"/>
+ <reference key="parent" ref="299796820"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4433</int>
+ <reference key="object" ref="336976528"/>
+ <reference key="parent" ref="11649400"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4434</int>
+ <reference key="object" ref="705176513"/>
+ <reference key="parent" ref="650340619"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4435</int>
+ <reference key="object" ref="575706706"/>
+ <reference key="parent" ref="782624074"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4436</int>
+ <reference key="object" ref="339071106"/>
+ <reference key="parent" ref="803107562"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4437</int>
+ <reference key="object" ref="949612662"/>
+ <reference key="parent" ref="1043798456"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4438</int>
+ <reference key="object" ref="52989605"/>
+ <reference key="parent" ref="339098234"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4439</int>
+ <reference key="object" ref="91153386"/>
+ <reference key="parent" ref="1069893234"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4440</int>
+ <reference key="object" ref="368279232"/>
+ <reference key="parent" ref="537857711"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4441</int>
+ <reference key="object" ref="315651292"/>
+ <reference key="parent" ref="837877940"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4442</int>
+ <reference key="object" ref="355116668"/>
+ <reference key="parent" ref="990345256"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4443</int>
+ <reference key="object" ref="462806559"/>
+ <reference key="parent" ref="236103997"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4444</int>
+ <reference key="object" ref="919282188"/>
+ <reference key="parent" ref="68648151"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4445</int>
+ <reference key="object" ref="165982631"/>
+ <reference key="parent" ref="323070352"/>
+ </object>
+ </object>
+ </object>
+ <object class="NSMutableDictionary" key="flattenedProperties">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMutableArray" key="dict.sortedKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>-1.IBPluginDependency</string>
+ <string>-2.IBPluginDependency</string>
+ <string>-3.IBPluginDependency</string>
+ <string>1002.IBPluginDependency</string>
+ <string>1002.ImportedFromIB2</string>
+ <string>1003.IBPluginDependency</string>
+ <string>1003.ImportedFromIB2</string>
+ <string>1014.IBPluginDependency</string>
+ <string>1014.ImportedFromIB2</string>
+ <string>1015.IBPluginDependency</string>
+ <string>1015.ImportedFromIB2</string>
+ <string>1016.IBPluginDependency</string>
+ <string>1016.ImportedFromIB2</string>
+ <string>1028.IBPluginDependency</string>
+ <string>1028.ImportedFromIB2</string>
+ <string>1029.IBPluginDependency</string>
+ <string>1029.ImportedFromIB2</string>
+ <string>1050.IBPluginDependency</string>
+ <string>1050.ImportedFromIB2</string>
+ <string>1051.IBEditorWindowLastContentRect</string>
+ <string>1051.IBPluginDependency</string>
+ <string>1051.ImportedFromIB2</string>
+ <string>1053.IBPluginDependency</string>
+ <string>1053.ImportedFromIB2</string>
+ <string>1054.IBPluginDependency</string>
+ <string>1054.ImportedFromIB2</string>
+ <string>1055.IBPluginDependency</string>
+ <string>1055.ImportedFromIB2</string>
+ <string>1056.IBPluginDependency</string>
+ <string>1056.ImportedFromIB2</string>
+ <string>1057.IBPluginDependency</string>
+ <string>1057.ImportedFromIB2</string>
+ <string>1058.IBPluginDependency</string>
+ <string>1058.ImportedFromIB2</string>
+ <string>1064.IBPluginDependency</string>
+ <string>1064.ImportedFromIB2</string>
+ <string>1065.IBPluginDependency</string>
+ <string>1065.ImportedFromIB2</string>
+ <string>1066.IBPluginDependency</string>
+ <string>1066.ImportedFromIB2</string>
+ <string>1070.IBPluginDependency</string>
+ <string>1070.ImportedFromIB2</string>
+ <string>1071.IBPluginDependency</string>
+ <string>1071.ImportedFromIB2</string>
+ <string>1072.IBPluginDependency</string>
+ <string>1072.ImportedFromIB2</string>
+ <string>1073.IBPluginDependency</string>
+ <string>1073.ImportedFromIB2</string>
+ <string>1074.IBPluginDependency</string>
+ <string>1074.ImportedFromIB2</string>
+ <string>1084.IBPluginDependency</string>
+ <string>1084.ImportedFromIB2</string>
+ <string>1134.IBPluginDependency</string>
+ <string>1134.ImportedFromIB2</string>
+ <string>1135.IBPluginDependency</string>
+ <string>1135.ImportedFromIB2</string>
+ <string>1136.IBPluginDependency</string>
+ <string>1136.ImportedFromIB2</string>
+ <string>1137.IBPluginDependency</string>
+ <string>1137.ImportedFromIB2</string>
+ <string>1140.IBPluginDependency</string>
+ <string>1140.ImportedFromIB2</string>
+ <string>1164.IBPluginDependency</string>
+ <string>1164.ImportedFromIB2</string>
+ <string>1169.IBPluginDependency</string>
+ <string>1169.ImportedFromIB2</string>
+ <string>1170.IBPluginDependency</string>
+ <string>1170.ImportedFromIB2</string>
+ <string>1171.IBPluginDependency</string>
+ <string>1171.ImportedFromIB2</string>
+ <string>1178.IBPluginDependency</string>
+ <string>1178.ImportedFromIB2</string>
+ <string>1179.IBPluginDependency</string>
+ <string>1179.ImportedFromIB2</string>
+ <string>1180.IBPluginDependency</string>
+ <string>1180.ImportedFromIB2</string>
+ <string>1192.IBPluginDependency</string>
+ <string>1192.ImportedFromIB2</string>
+ <string>134.IBPluginDependency</string>
+ <string>134.ImportedFromIB2</string>
+ <string>136.IBPluginDependency</string>
+ <string>136.ImportedFromIB2</string>
+ <string>144.IBPluginDependency</string>
+ <string>144.ImportedFromIB2</string>
+ <string>145.IBPluginDependency</string>
+ <string>145.ImportedFromIB2</string>
+ <string>149.IBPluginDependency</string>
+ <string>149.ImportedFromIB2</string>
+ <string>1499.IBPluginDependency</string>
+ <string>1499.ImportedFromIB2</string>
+ <string>150.IBPluginDependency</string>
+ <string>150.ImportedFromIB2</string>
+ <string>1507.IBPluginDependency</string>
+ <string>1507.ImportedFromIB2</string>
+ <string>1508.IBPluginDependency</string>
+ <string>1508.ImportedFromIB2</string>
+ <string>1509.IBPluginDependency</string>
+ <string>1509.ImportedFromIB2</string>
+ <string>1510.IBPluginDependency</string>
+ <string>1510.ImportedFromIB2</string>
+ <string>1511.IBPluginDependency</string>
+ <string>1511.ImportedFromIB2</string>
+ <string>1512.IBPluginDependency</string>
+ <string>1512.ImportedFromIB2</string>
+ <string>1513.IBPluginDependency</string>
+ <string>1513.ImportedFromIB2</string>
+ <string>1514.IBPluginDependency</string>
+ <string>1514.ImportedFromIB2</string>
+ <string>1559.IBPluginDependency</string>
+ <string>1559.ImportedFromIB2</string>
+ <string>1589.IBPluginDependency</string>
+ <string>1589.ImportedFromIB2</string>
+ <string>1590.IBPluginDependency</string>
+ <string>1590.ImportedFromIB2</string>
+ <string>1599.IBPluginDependency</string>
+ <string>1599.ImportedFromIB2</string>
+ <string>1600.IBPluginDependency</string>
+ <string>1600.ImportedFromIB2</string>
+ <string>1604.IBPluginDependency</string>
+ <string>1604.ImportedFromIB2</string>
+ <string>1605.IBPluginDependency</string>
+ <string>1605.ImportedFromIB2</string>
+ <string>1617.IBPluginDependency</string>
+ <string>1617.ImportedFromIB2</string>
+ <string>1618.IBPluginDependency</string>
+ <string>1618.ImportedFromIB2</string>
+ <string>1619.IBPluginDependency</string>
+ <string>1619.ImportedFromIB2</string>
+ <string>1620.IBPluginDependency</string>
+ <string>1620.ImportedFromIB2</string>
+ <string>1621.IBPluginDependency</string>
+ <string>1621.ImportedFromIB2</string>
+ <string>1622.IBPluginDependency</string>
+ <string>1622.ImportedFromIB2</string>
+ <string>1623.IBPluginDependency</string>
+ <string>1623.ImportedFromIB2</string>
+ <string>1624.IBPluginDependency</string>
+ <string>1624.ImportedFromIB2</string>
+ <string>1636.IBPluginDependency</string>
+ <string>1636.ImportedFromIB2</string>
+ <string>1760.IBPluginDependency</string>
+ <string>1760.ImportedFromIB2</string>
+ <string>1779.IBPluginDependency</string>
+ <string>1779.ImportedFromIB2</string>
+ <string>1876.IBPluginDependency</string>
+ <string>1876.ImportedFromIB2</string>
+ <string>1877.IBPluginDependency</string>
+ <string>1877.ImportedFromIB2</string>
+ <string>1879.IBPluginDependency</string>
+ <string>1879.ImportedFromIB2</string>
+ <string>19.IBPluginDependency</string>
+ <string>19.ImportedFromIB2</string>
+ <string>1948.IBPluginDependency</string>
+ <string>1948.ImportedFromIB2</string>
+ <string>197.IBPluginDependency</string>
+ <string>197.ImportedFromIB2</string>
+ <string>198.IBPluginDependency</string>
+ <string>198.ImportedFromIB2</string>
+ <string>199.IBPluginDependency</string>
+ <string>199.ImportedFromIB2</string>
+ <string>1996.IBPluginDependency</string>
+ <string>1996.ImportedFromIB2</string>
+ <string>1997.IBPluginDependency</string>
+ <string>1997.ImportedFromIB2</string>
+ <string>2.CustomClassName</string>
+ <string>2.IBPluginDependency</string>
+ <string>2.ImportedFromIB2</string>
+ <string>202.IBPluginDependency</string>
+ <string>202.ImportedFromIB2</string>
+ <string>2029.ImportedFromIB2</string>
+ <string>203.IBPluginDependency</string>
+ <string>203.ImportedFromIB2</string>
+ <string>2030.IBPluginDependency</string>
+ <string>2030.ImportedFromIB2</string>
+ <string>2031.IBPluginDependency</string>
+ <string>2031.ImportedFromIB2</string>
+ <string>2035.IBPluginDependency</string>
+ <string>2035.ImportedFromIB2</string>
+ <string>2036.IBPluginDependency</string>
+ <string>2036.ImportedFromIB2</string>
+ <string>2037.IBPluginDependency</string>
+ <string>2037.ImportedFromIB2</string>
+ <string>2038.IBPluginDependency</string>
+ <string>2038.ImportedFromIB2</string>
+ <string>2039.IBPluginDependency</string>
+ <string>2039.ImportedFromIB2</string>
+ <string>2040.IBPluginDependency</string>
+ <string>2040.ImportedFromIB2</string>
+ <string>2041.IBPluginDependency</string>
+ <string>2041.ImportedFromIB2</string>
+ <string>2042.IBPluginDependency</string>
+ <string>2042.ImportedFromIB2</string>
+ <string>2043.IBPluginDependency</string>
+ <string>2043.ImportedFromIB2</string>
+ <string>2044.IBPluginDependency</string>
+ <string>2044.ImportedFromIB2</string>
+ <string>2045.IBPluginDependency</string>
+ <string>2045.ImportedFromIB2</string>
+ <string>2046.IBPluginDependency</string>
+ <string>2046.ImportedFromIB2</string>
+ <string>2047.IBPluginDependency</string>
+ <string>2047.ImportedFromIB2</string>
+ <string>2048.IBPluginDependency</string>
+ <string>2048.ImportedFromIB2</string>
+ <string>2049.IBPluginDependency</string>
+ <string>2049.ImportedFromIB2</string>
+ <string>205.IBPluginDependency</string>
+ <string>205.ImportedFromIB2</string>
+ <string>2050.IBPluginDependency</string>
+ <string>2050.ImportedFromIB2</string>
+ <string>2051.IBPluginDependency</string>
+ <string>2051.ImportedFromIB2</string>
+ <string>2052.IBPluginDependency</string>
+ <string>2052.ImportedFromIB2</string>
+ <string>2053.IBPluginDependency</string>
+ <string>2053.ImportedFromIB2</string>
+ <string>2054.IBPluginDependency</string>
+ <string>2054.ImportedFromIB2</string>
+ <string>2055.IBPluginDependency</string>
+ <string>2055.ImportedFromIB2</string>
+ <string>2056.IBPluginDependency</string>
+ <string>2056.ImportedFromIB2</string>
+ <string>2057.IBPluginDependency</string>
+ <string>2057.ImportedFromIB2</string>
+ <string>2058.IBPluginDependency</string>
+ <string>2058.ImportedFromIB2</string>
+ <string>2059.IBPluginDependency</string>
+ <string>2059.ImportedFromIB2</string>
+ <string>2060.IBPluginDependency</string>
+ <string>2060.ImportedFromIB2</string>
+ <string>2061.IBPluginDependency</string>
+ <string>2061.ImportedFromIB2</string>
+ <string>2094.IBPluginDependency</string>
+ <string>2094.ImportedFromIB2</string>
+ <string>2096.IBPluginDependency</string>
+ <string>2096.ImportedFromIB2</string>
+ <string>2097.IBPluginDependency</string>
+ <string>2097.ImportedFromIB2</string>
+ <string>21.IBEditorWindowLastContentRect</string>
+ <string>21.IBWindowTemplateEditedContentRect</string>
+ <string>21.ImportedFromIB2</string>
+ <string>21.NSWindowTemplate.visibleAtLaunch</string>
+ <string>2102.IBPluginDependency</string>
+ <string>2102.ImportedFromIB2</string>
+ <string>2103.IBPluginDependency</string>
+ <string>2103.ImportedFromIB2</string>
+ <string>2104.IBPluginDependency</string>
+ <string>2104.ImportedFromIB2</string>
+ <string>2105.IBPluginDependency</string>
+ <string>2105.ImportedFromIB2</string>
+ <string>2106.IBPluginDependency</string>
+ <string>2106.ImportedFromIB2</string>
+ <string>2107.IBPluginDependency</string>
+ <string>2107.ImportedFromIB2</string>
+ <string>2108.IBPluginDependency</string>
+ <string>2108.ImportedFromIB2</string>
+ <string>2109.IBPluginDependency</string>
+ <string>2109.ImportedFromIB2</string>
+ <string>2110.IBPluginDependency</string>
+ <string>2110.ImportedFromIB2</string>
+ <string>2111.IBPluginDependency</string>
+ <string>2111.ImportedFromIB2</string>
+ <string>2112.IBPluginDependency</string>
+ <string>2112.ImportedFromIB2</string>
+ <string>2113.IBPluginDependency</string>
+ <string>2113.ImportedFromIB2</string>
+ <string>2114.IBPluginDependency</string>
+ <string>2114.ImportedFromIB2</string>
+ <string>2115.IBPluginDependency</string>
+ <string>2115.ImportedFromIB2</string>
+ <string>2116.IBPluginDependency</string>
+ <string>2116.ImportedFromIB2</string>
+ <string>2117.IBPluginDependency</string>
+ <string>2117.ImportedFromIB2</string>
+ <string>2118.IBPluginDependency</string>
+ <string>2118.ImportedFromIB2</string>
+ <string>2124.IBPluginDependency</string>
+ <string>2124.ImportedFromIB2</string>
+ <string>2132.IBPluginDependency</string>
+ <string>2132.ImportedFromIB2</string>
+ <string>2133.IBPluginDependency</string>
+ <string>2133.ImportedFromIB2</string>
+ <string>217.IBPluginDependency</string>
+ <string>217.ImportedFromIB2</string>
+ <string>2197.IBEditorWindowLastContentRect</string>
+ <string>2197.IBPluginDependency</string>
+ <string>2197.ImportedFromIB2</string>
+ <string>2198.IBPluginDependency</string>
+ <string>2198.ImportedFromIB2</string>
+ <string>2199.IBPluginDependency</string>
+ <string>2199.ImportedFromIB2</string>
+ <string>2200.IBPluginDependency</string>
+ <string>2200.ImportedFromIB2</string>
+ <string>2201.CustomClassName</string>
+ <string>2201.IBPluginDependency</string>
+ <string>2201.ImportedFromIB2</string>
+ <string>2202.IBPluginDependency</string>
+ <string>2202.ImportedFromIB2</string>
+ <string>2208.IBPluginDependency</string>
+ <string>2208.ImportedFromIB2</string>
+ <string>2211.IBPluginDependency</string>
+ <string>2211.ImportedFromIB2</string>
+ <string>2239.IBPluginDependency</string>
+ <string>2239.ImportedFromIB2</string>
+ <string>2240.IBPluginDependency</string>
+ <string>2240.ImportedFromIB2</string>
+ <string>2241.IBPluginDependency</string>
+ <string>2241.ImportedFromIB2</string>
+ <string>2249.IBPluginDependency</string>
+ <string>2249.ImportedFromIB2</string>
+ <string>2261.IBPluginDependency</string>
+ <string>2261.ImportedFromIB2</string>
+ <string>2263.IBPluginDependency</string>
+ <string>2263.ImportedFromIB2</string>
+ <string>2271.IBPluginDependency</string>
+ <string>2271.ImportedFromIB2</string>
+ <string>2293.IBPluginDependency</string>
+ <string>2293.ImportedFromIB2</string>
+ <string>2294.IBPluginDependency</string>
+ <string>2294.ImportedFromIB2</string>
+ <string>2298.IBPluginDependency</string>
+ <string>2298.ImportedFromIB2</string>
+ <string>23.IBPluginDependency</string>
+ <string>23.ImportedFromIB2</string>
+ <string>2300.IBPluginDependency</string>
+ <string>2300.ImportedFromIB2</string>
+ <string>2306.IBPluginDependency</string>
+ <string>2306.ImportedFromIB2</string>
+ <string>2307.IBPluginDependency</string>
+ <string>2307.ImportedFromIB2</string>
+ <string>2312.IBPluginDependency</string>
+ <string>2312.ImportedFromIB2</string>
+ <string>234.IBPluginDependency</string>
+ <string>234.ImportedFromIB2</string>
+ <string>235.IBEditorWindowLastContentRect</string>
+ <string>235.IBPluginDependency</string>
+ <string>235.ImportedFromIB2</string>
+ <string>238.IBPluginDependency</string>
+ <string>238.ImportedFromIB2</string>
+ <string>239.IBPluginDependency</string>
+ <string>239.ImportedFromIB2</string>
+ <string>2390.IBPluginDependency</string>
+ <string>2390.ImportedFromIB2</string>
+ <string>2393.IBPluginDependency</string>
+ <string>2393.ImportedFromIB2</string>
+ <string>2394.IBPluginDependency</string>
+ <string>2394.ImportedFromIB2</string>
+ <string>2395.IBPluginDependency</string>
+ <string>2395.ImportedFromIB2</string>
+ <string>2398.IBPluginDependency</string>
+ <string>2398.ImportedFromIB2</string>
+ <string>24.IBEditorWindowLastContentRect</string>
+ <string>24.IBPluginDependency</string>
+ <string>24.ImportedFromIB2</string>
+ <string>240.IBPluginDependency</string>
+ <string>240.ImportedFromIB2</string>
+ <string>2402.IBPluginDependency</string>
+ <string>2402.ImportedFromIB2</string>
+ <string>241.IBPluginDependency</string>
+ <string>241.ImportedFromIB2</string>
+ <string>242.IBPluginDependency</string>
+ <string>242.ImportedFromIB2</string>
+ <string>243.IBPluginDependency</string>
+ <string>243.ImportedFromIB2</string>
+ <string>244.IBPluginDependency</string>
+ <string>244.ImportedFromIB2</string>
+ <string>245.IBPluginDependency</string>
+ <string>245.ImportedFromIB2</string>
+ <string>2451.IBPluginDependency</string>
+ <string>2451.ImportedFromIB2</string>
+ <string>2452.IBPluginDependency</string>
+ <string>2452.ImportedFromIB2</string>
+ <string>2457.IBPluginDependency</string>
+ <string>2457.ImportedFromIB2</string>
+ <string>2460.ImportedFromIB2</string>
+ <string>2461.IBPluginDependency</string>
+ <string>2461.ImportedFromIB2</string>
+ <string>2462.IBPluginDependency</string>
+ <string>2462.ImportedFromIB2</string>
+ <string>2463.IBPluginDependency</string>
+ <string>2463.ImportedFromIB2</string>
+ <string>2464.IBPluginDependency</string>
+ <string>2464.ImportedFromIB2</string>
+ <string>2465.IBPluginDependency</string>
+ <string>2465.ImportedFromIB2</string>
+ <string>2466.IBPluginDependency</string>
+ <string>2466.ImportedFromIB2</string>
+ <string>2479.IBPluginDependency</string>
+ <string>2479.ImportedFromIB2</string>
+ <string>2482.IBPluginDependency</string>
+ <string>2482.ImportedFromIB2</string>
+ <string>2485.IBPluginDependency</string>
+ <string>2485.ImportedFromIB2</string>
+ <string>266.IBPluginDependency</string>
+ <string>266.ImportedFromIB2</string>
+ <string>269.IBPluginDependency</string>
+ <string>269.ImportedFromIB2</string>
+ <string>2699.IBPluginDependency</string>
+ <string>2699.ImportedFromIB2</string>
+ <string>270.IBPluginDependency</string>
+ <string>270.ImportedFromIB2</string>
+ <string>2700.IBPluginDependency</string>
+ <string>2700.ImportedFromIB2</string>
+ <string>2702.IBPluginDependency</string>
+ <string>2702.ImportedFromIB2</string>
+ <string>2703.IBPluginDependency</string>
+ <string>2703.ImportedFromIB2</string>
+ <string>2709.IBEditorWindowLastContentRect</string>
+ <string>2709.IBPluginDependency</string>
+ <string>2709.ImportedFromIB2</string>
+ <string>2721.IBPluginDependency</string>
+ <string>2721.ImportedFromIB2</string>
+ <string>2722.IBPluginDependency</string>
+ <string>2722.ImportedFromIB2</string>
+ <string>2723.IBPluginDependency</string>
+ <string>2723.ImportedFromIB2</string>
+ <string>2724.IBPluginDependency</string>
+ <string>2724.ImportedFromIB2</string>
+ <string>2725.IBPluginDependency</string>
+ <string>2725.ImportedFromIB2</string>
+ <string>2730.IBPluginDependency</string>
+ <string>2730.ImportedFromIB2</string>
+ <string>2731.IBPluginDependency</string>
+ <string>2731.ImportedFromIB2</string>
+ <string>2732.IBPluginDependency</string>
+ <string>2732.ImportedFromIB2</string>
+ <string>2737.IBPluginDependency</string>
+ <string>2737.ImportedFromIB2</string>
+ <string>2738.IBPluginDependency</string>
+ <string>2738.ImportedFromIB2</string>
+ <string>2739.IBPluginDependency</string>
+ <string>2739.ImportedFromIB2</string>
+ <string>2740.IBPluginDependency</string>
+ <string>2740.ImportedFromIB2</string>
+ <string>2741.IBPluginDependency</string>
+ <string>2741.ImportedFromIB2</string>
+ <string>2742.IBPluginDependency</string>
+ <string>2742.ImportedFromIB2</string>
+ <string>2743.IBPluginDependency</string>
+ <string>2743.ImportedFromIB2</string>
+ <string>2744.IBPluginDependency</string>
+ <string>2744.ImportedFromIB2</string>
+ <string>2745.IBPluginDependency</string>
+ <string>2745.ImportedFromIB2</string>
+ <string>2746.IBPluginDependency</string>
+ <string>2746.ImportedFromIB2</string>
+ <string>2747.IBPluginDependency</string>
+ <string>2747.ImportedFromIB2</string>
+ <string>2756.IBPluginDependency</string>
+ <string>2756.ImportedFromIB2</string>
+ <string>2769.ImportedFromIB2</string>
+ <string>2770.IBPluginDependency</string>
+ <string>2770.ImportedFromIB2</string>
+ <string>2789.IBPluginDependency</string>
+ <string>2789.ImportedFromIB2</string>
+ <string>2796.IBPluginDependency</string>
+ <string>2796.ImportedFromIB2</string>
+ <string>2797.IBPluginDependency</string>
+ <string>2797.ImportedFromIB2</string>
+ <string>2798.IBPluginDependency</string>
+ <string>2798.ImportedFromIB2</string>
+ <string>2799.IBPluginDependency</string>
+ <string>2799.ImportedFromIB2</string>
+ <string>2800.IBPluginDependency</string>
+ <string>2800.ImportedFromIB2</string>
+ <string>2801.IBPluginDependency</string>
+ <string>2801.ImportedFromIB2</string>
+ <string>2802.IBPluginDependency</string>
+ <string>2802.ImportedFromIB2</string>
+ <string>2803.IBPluginDependency</string>
+ <string>2803.ImportedFromIB2</string>
+ <string>2804.IBPluginDependency</string>
+ <string>2804.ImportedFromIB2</string>
+ <string>2805.IBPluginDependency</string>
+ <string>2805.ImportedFromIB2</string>
+ <string>2806.IBPluginDependency</string>
+ <string>2806.ImportedFromIB2</string>
+ <string>2807.IBPluginDependency</string>
+ <string>2807.ImportedFromIB2</string>
+ <string>2808.IBPluginDependency</string>
+ <string>2808.ImportedFromIB2</string>
+ <string>282.IBEditorWindowLastContentRect</string>
+ <string>282.IBWindowTemplateEditedContentRect</string>
+ <string>282.ImportedFromIB2</string>
+ <string>282.windowTemplate.hasMinSize</string>
+ <string>282.windowTemplate.minSize</string>
+ <string>2825.IBPluginDependency</string>
+ <string>2825.ImportedFromIB2</string>
+ <string>283.IBPluginDependency</string>
+ <string>283.ImportedFromIB2</string>
+ <string>2832.IBPluginDependency</string>
+ <string>2832.ImportedFromIB2</string>
+ <string>2834.IBPluginDependency</string>
+ <string>2834.ImportedFromIB2</string>
+ <string>29.IBEditorWindowLastContentRect</string>
+ <string>29.IBPluginDependency</string>
+ <string>29.ImportedFromIB2</string>
+ <string>3292.IBPluginDependency</string>
+ <string>3292.ImportedFromIB2</string>
+ <string>333.IBPluginDependency</string>
+ <string>333.ImportedFromIB2</string>
+ <string>334.IBPluginDependency</string>
+ <string>334.ImportedFromIB2</string>
+ <string>3385.IBPluginDependency</string>
+ <string>3385.ImportedFromIB2</string>
+ <string>3386.IBPluginDependency</string>
+ <string>3386.ImportedFromIB2</string>
+ <string>3387.IBPluginDependency</string>
+ <string>3387.ImportedFromIB2</string>
+ <string>3568.IBEditorWindowLastContentRect</string>
+ <string>3568.IBPluginDependency</string>
+ <string>3568.ImportedFromIB2</string>
+ <string>3570.IBPluginDependency</string>
+ <string>3570.ImportedFromIB2</string>
+ <string>3571.IBPluginDependency</string>
+ <string>3571.ImportedFromIB2</string>
+ <string>3574.IBPluginDependency</string>
+ <string>3574.ImportedFromIB2</string>
+ <string>3575.CustomClassName</string>
+ <string>3575.IBPluginDependency</string>
+ <string>3575.ImportedFromIB2</string>
+ <string>3576.CustomClassName</string>
+ <string>3576.IBPluginDependency</string>
+ <string>3576.ImportedFromIB2</string>
+ <string>3580.IBPluginDependency</string>
+ <string>3580.ImportedFromIB2</string>
+ <string>3584.IBPluginDependency</string>
+ <string>3584.ImportedFromIB2</string>
+ <string>3585.CustomClassName</string>
+ <string>3585.IBPluginDependency</string>
+ <string>3585.ImportedFromIB2</string>
+ <string>3586.CustomClassName</string>
+ <string>3586.IBPluginDependency</string>
+ <string>3586.ImportedFromIB2</string>
+ <string>3647.IBPluginDependency</string>
+ <string>3647.ImportedFromIB2</string>
+ <string>3648.IBPluginDependency</string>
+ <string>3648.ImportedFromIB2</string>
+ <string>3649.CustomClassName</string>
+ <string>3649.IBPluginDependency</string>
+ <string>3649.ImportedFromIB2</string>
+ <string>3650.IBPluginDependency</string>
+ <string>3650.ImportedFromIB2</string>
+ <string>3651.IBPluginDependency</string>
+ <string>3651.ImportedFromIB2</string>
+ <string>3652.IBPluginDependency</string>
+ <string>3652.ImportedFromIB2</string>
+ <string>3653.IBPluginDependency</string>
+ <string>3653.ImportedFromIB2</string>
+ <string>3654.IBPluginDependency</string>
+ <string>3654.ImportedFromIB2</string>
+ <string>3698.CustomClassName</string>
+ <string>3698.IBPluginDependency</string>
+ <string>3698.ImportedFromIB2</string>
+ <string>3706.ImportedFromIB2</string>
+ <string>3707.IBPluginDependency</string>
+ <string>3707.ImportedFromIB2</string>
+ <string>3708.IBPluginDependency</string>
+ <string>3708.ImportedFromIB2</string>
+ <string>3709.IBPluginDependency</string>
+ <string>3709.ImportedFromIB2</string>
+ <string>3710.IBPluginDependency</string>
+ <string>3710.ImportedFromIB2</string>
+ <string>3711.IBPluginDependency</string>
+ <string>3711.ImportedFromIB2</string>
+ <string>3712.IBPluginDependency</string>
+ <string>3712.ImportedFromIB2</string>
+ <string>3713.IBPluginDependency</string>
+ <string>3713.ImportedFromIB2</string>
+ <string>3714.IBPluginDependency</string>
+ <string>3714.ImportedFromIB2</string>
+ <string>3817.IBPluginDependency</string>
+ <string>3817.ImportedFromIB2</string>
+ <string>3819.IBPluginDependency</string>
+ <string>3819.ImportedFromIB2</string>
+ <string>3914.IBPluginDependency</string>
+ <string>3914.ImportedFromIB2</string>
+ <string>3915.IBPluginDependency</string>
+ <string>3915.ImportedFromIB2</string>
+ <string>3916.IBPluginDependency</string>
+ <string>3916.ImportedFromIB2</string>
+ <string>3917.IBPluginDependency</string>
+ <string>3917.ImportedFromIB2</string>
+ <string>3918.IBPluginDependency</string>
+ <string>3918.ImportedFromIB2</string>
+ <string>3919.IBPluginDependency</string>
+ <string>3919.ImportedFromIB2</string>
+ <string>3920.IBPluginDependency</string>
+ <string>3920.ImportedFromIB2</string>
+ <string>3921.IBPluginDependency</string>
+ <string>3921.ImportedFromIB2</string>
+ <string>3922.IBPluginDependency</string>
+ <string>3922.ImportedFromIB2</string>
+ <string>3923.IBPluginDependency</string>
+ <string>3923.ImportedFromIB2</string>
+ <string>3940.IBPluginDependency</string>
+ <string>3940.ImportedFromIB2</string>
+ <string>3941.IBPluginDependency</string>
+ <string>3941.ImportedFromIB2</string>
+ <string>3944.IBPluginDependency</string>
+ <string>3944.ImportedFromIB2</string>
+ <string>3945.IBPluginDependency</string>
+ <string>3945.ImportedFromIB2</string>
+ <string>3946.IBPluginDependency</string>
+ <string>3946.ImportedFromIB2</string>
+ <string>4048.IBPluginDependency</string>
+ <string>4048.ImportedFromIB2</string>
+ <string>413.IBPluginDependency</string>
+ <string>413.ImportedFromIB2</string>
+ <string>4147.IBPluginDependency</string>
+ <string>4147.ImportedFromIB2</string>
+ <string>4250.IBPluginDependency</string>
+ <string>4250.ImportedFromIB2</string>
+ <string>4251.IBPluginDependency</string>
+ <string>4251.ImportedFromIB2</string>
+ <string>4254.IBPluginDependency</string>
+ <string>4254.ImportedFromIB2</string>
+ <string>4257.IBPluginDependency</string>
+ <string>4257.ImportedFromIB2</string>
+ <string>4258.IBPluginDependency</string>
+ <string>4258.ImportedFromIB2</string>
+ <string>4259.IBPluginDependency</string>
+ <string>4259.ImportedFromIB2</string>
+ <string>4267.IBPluginDependency</string>
+ <string>4267.ImportedFromIB2</string>
+ <string>4272.IBPluginDependency</string>
+ <string>4272.ImportedFromIB2</string>
+ <string>4274.IBPluginDependency</string>
+ <string>4275.IBPluginDependency</string>
+ <string>4276.IBPluginDependency</string>
+ <string>4277.IBPluginDependency</string>
+ <string>4278.IBPluginDependency</string>
+ <string>4279.IBPluginDependency</string>
+ <string>4280.IBPluginDependency</string>
+ <string>4281.IBPluginDependency</string>
+ <string>4282.IBPluginDependency</string>
+ <string>4283.IBPluginDependency</string>
+ <string>4284.IBPluginDependency</string>
+ <string>4285.IBPluginDependency</string>
+ <string>4286.IBPluginDependency</string>
+ <string>4287.IBPluginDependency</string>
+ <string>4288.IBPluginDependency</string>
+ <string>4289.IBPluginDependency</string>
+ <string>4290.IBPluginDependency</string>
+ <string>4291.IBPluginDependency</string>
+ <string>4292.IBPluginDependency</string>
+ <string>4293.IBPluginDependency</string>
+ <string>4294.IBPluginDependency</string>
+ <string>4295.IBPluginDependency</string>
+ <string>4296.IBPluginDependency</string>
+ <string>4297.IBPluginDependency</string>
+ <string>4298.IBPluginDependency</string>
+ <string>4299.IBPluginDependency</string>
+ <string>4300.IBPluginDependency</string>
+ <string>4301.IBPluginDependency</string>
+ <string>4302.IBPluginDependency</string>
+ <string>4303.IBPluginDependency</string>
+ <string>4304.IBPluginDependency</string>
+ <string>4305.IBPluginDependency</string>
+ <string>4306.IBPluginDependency</string>
+ <string>4307.IBPluginDependency</string>
+ <string>4308.IBPluginDependency</string>
+ <string>4309.IBPluginDependency</string>
+ <string>4310.IBPluginDependency</string>
+ <string>4311.IBPluginDependency</string>
+ <string>4312.IBPluginDependency</string>
+ <string>4313.IBPluginDependency</string>
+ <string>4314.IBPluginDependency</string>
+ <string>4315.IBPluginDependency</string>
+ <string>4316.IBPluginDependency</string>
+ <string>4326.IBPluginDependency</string>
+ <string>4327.IBPluginDependency</string>
+ <string>4328.IBPluginDependency</string>
+ <string>4329.IBPluginDependency</string>
+ <string>4330.IBPluginDependency</string>
+ <string>4331.IBPluginDependency</string>
+ <string>4332.IBPluginDependency</string>
+ <string>4333.IBPluginDependency</string>
+ <string>4334.IBPluginDependency</string>
+ <string>4335.IBPluginDependency</string>
+ <string>4336.IBPluginDependency</string>
+ <string>4337.IBPluginDependency</string>
+ <string>4338.IBPluginDependency</string>
+ <string>4339.IBPluginDependency</string>
+ <string>4340.IBPluginDependency</string>
+ <string>4341.IBPluginDependency</string>
+ <string>4342.IBPluginDependency</string>
+ <string>4343.IBPluginDependency</string>
+ <string>4344.IBPluginDependency</string>
+ <string>4345.IBPluginDependency</string>
+ <string>4346.IBPluginDependency</string>
+ <string>4347.IBPluginDependency</string>
+ <string>4348.IBPluginDependency</string>
+ <string>4349.IBPluginDependency</string>
+ <string>4350.IBPluginDependency</string>
+ <string>4351.IBPluginDependency</string>
+ <string>4352.IBPluginDependency</string>
+ <string>4353.IBPluginDependency</string>
+ <string>4354.IBPluginDependency</string>
+ <string>4355.IBPluginDependency</string>
+ <string>4356.IBPluginDependency</string>
+ <string>4357.IBPluginDependency</string>
+ <string>4358.IBPluginDependency</string>
+ <string>4359.IBPluginDependency</string>
+ <string>4360.IBPluginDependency</string>
+ <string>4361.IBPluginDependency</string>
+ <string>4362.IBPluginDependency</string>
+ <string>4363.IBPluginDependency</string>
+ <string>4363.IBShouldRemoveOnLegacySave</string>
+ <string>4364.IBPluginDependency</string>
+ <string>4364.IBShouldRemoveOnLegacySave</string>
+ <string>4365.IBPluginDependency</string>
+ <string>4365.IBShouldRemoveOnLegacySave</string>
+ <string>4366.IBPluginDependency</string>
+ <string>4366.IBShouldRemoveOnLegacySave</string>
+ <string>4367.IBPluginDependency</string>
+ <string>4367.IBShouldRemoveOnLegacySave</string>
+ <string>4368.IBPluginDependency</string>
+ <string>4368.IBShouldRemoveOnLegacySave</string>
+ <string>4369.IBPluginDependency</string>
+ <string>4369.IBShouldRemoveOnLegacySave</string>
+ <string>4370.IBPluginDependency</string>
+ <string>4370.ImportedFromIB2</string>
+ <string>4371.IBPluginDependency</string>
+ <string>4372.IBEditorWindowLastContentRect</string>
+ <string>4372.IBWindowTemplateEditedContentRect</string>
+ <string>4372.ImportedFromIB2</string>
+ <string>4372.NSWindowTemplate.visibleAtLaunch</string>
+ <string>4372.windowTemplate.hasMinSize</string>
+ <string>4372.windowTemplate.maxSize</string>
+ <string>4372.windowTemplate.minSize</string>
+ <string>4373.IBPluginDependency</string>
+ <string>4373.ImportedFromIB2</string>
+ <string>4374.CustomClassName</string>
+ <string>4374.IBPluginDependency</string>
+ <string>4374.ImportedFromIB2</string>
+ <string>4375.IBPluginDependency</string>
+ <string>4375.ImportedFromIB2</string>
+ <string>4376.IBPluginDependency</string>
+ <string>4376.ImportedFromIB2</string>
+ <string>4377.IBPluginDependency</string>
+ <string>4378.IBPluginDependency</string>
+ <string>4379.IBPluginDependency</string>
+ <string>4379.ImportedFromIB2</string>
+ <string>4380.IBPluginDependency</string>
+ <string>4380.ImportedFromIB2</string>
+ <string>4381.IBPluginDependency</string>
+ <string>4381.ImportedFromIB2</string>
+ <string>4382.CustomClassName</string>
+ <string>4382.IBPluginDependency</string>
+ <string>4382.ImportedFromIB2</string>
+ <string>4383.IBPluginDependency</string>
+ <string>4383.IBShouldRemoveOnLegacySave</string>
+ <string>4384.IBPluginDependency</string>
+ <string>4384.IBShouldRemoveOnLegacySave</string>
+ <string>4385.IBPluginDependency</string>
+ <string>4385.ImportedFromIB2</string>
+ <string>4386.IBPluginDependency</string>
+ <string>4386.IBShouldRemoveOnLegacySave</string>
+ <string>4387.IBPluginDependency</string>
+ <string>4387.ImportedFromIB2</string>
+ <string>4388.IBPluginDependency</string>
+ <string>4388.ImportedFromIB2</string>
+ <string>4389.IBPluginDependency</string>
+ <string>4389.ImportedFromIB2</string>
+ <string>4390.IBPluginDependency</string>
+ <string>4391.IBPluginDependency</string>
+ <string>4392.IBPluginDependency</string>
+ <string>4393.IBPluginDependency</string>
+ <string>4393.ImportedFromIB2</string>
+ <string>4394.IBPluginDependency</string>
+ <string>4395.IBPluginDependency</string>
+ <string>4395.ImportedFromIB2</string>
+ <string>4396.IBPluginDependency</string>
+ <string>4396.ImportedFromIB2</string>
+ <string>4397.IBPluginDependency</string>
+ <string>4397.ImportedFromIB2</string>
+ <string>4398.IBPluginDependency</string>
+ <string>4398.ImportedFromIB2</string>
+ <string>4399.IBPluginDependency</string>
+ <string>4399.ImportedFromIB2</string>
+ <string>4400.IBPluginDependency</string>
+ <string>4400.ImportedFromIB2</string>
+ <string>4401.IBPluginDependency</string>
+ <string>4401.ImportedFromIB2</string>
+ <string>4402.CustomClassName</string>
+ <string>4402.IBPluginDependency</string>
+ <string>4402.ImportedFromIB2</string>
+ <string>4403.IBPluginDependency</string>
+ <string>4403.ImportedFromIB2</string>
+ <string>4404.IBPluginDependency</string>
+ <string>4404.ImportedFromIB2</string>
+ <string>4405.IBPluginDependency</string>
+ <string>4405.ImportedFromIB2</string>
+ <string>4406.IBPluginDependency</string>
+ <string>4406.ImportedFromIB2</string>
+ <string>4407.IBPluginDependency</string>
+ <string>4407.ImportedFromIB2</string>
+ <string>4408.IBPluginDependency</string>
+ <string>4408.ImportedFromIB2</string>
+ <string>4409.IBPluginDependency</string>
+ <string>4409.ImportedFromIB2</string>
+ <string>4410.IBPluginDependency</string>
+ <string>4410.ImportedFromIB2</string>
+ <string>4411.CustomClassName</string>
+ <string>4411.IBPluginDependency</string>
+ <string>4411.ImportedFromIB2</string>
+ <string>4412.CustomClassName</string>
+ <string>4412.IBPluginDependency</string>
+ <string>4412.ImportedFromIB2</string>
+ <string>4413.IBPluginDependency</string>
+ <string>4413.ImportedFromIB2</string>
+ <string>4414.IBPluginDependency</string>
+ <string>4415.IBPluginDependency</string>
+ <string>4416.IBPluginDependency</string>
+ <string>4417.IBPluginDependency</string>
+ <string>4417.ImportedFromIB2</string>
+ <string>4418.IBPluginDependency</string>
+ <string>4418.ImportedFromIB2</string>
+ <string>4419.IBPluginDependency</string>
+ <string>4419.ImportedFromIB2</string>
+ <string>4420.IBPluginDependency</string>
+ <string>4420.ImportedFromIB2</string>
+ <string>4421.CustomClassName</string>
+ <string>4421.IBPluginDependency</string>
+ <string>4421.ImportedFromIB2</string>
+ <string>4422.IBPluginDependency</string>
+ <string>4422.IBShouldRemoveOnLegacySave</string>
+ <string>4423.IBPluginDependency</string>
+ <string>4423.IBShouldRemoveOnLegacySave</string>
+ <string>4424.IBPluginDependency</string>
+ <string>4424.IBShouldRemoveOnLegacySave</string>
+ <string>4425.IBPluginDependency</string>
+ <string>4425.ImportedFromIB2</string>
+ <string>4426.IBPluginDependency</string>
+ <string>4426.ImportedFromIB2</string>
+ <string>4427.IBPluginDependency</string>
+ <string>4427.ImportedFromIB2</string>
+ <string>4428.IBPluginDependency</string>
+ <string>4428.ImportedFromIB2</string>
+ <string>4429.IBPluginDependency</string>
+ <string>4429.ImportedFromIB2</string>
+ <string>4430.IBPluginDependency</string>
+ <string>4430.ImportedFromIB2</string>
+ <string>4431.IBPluginDependency</string>
+ <string>4431.ImportedFromIB2</string>
+ <string>4432.IBPluginDependency</string>
+ <string>4432.ImportedFromIB2</string>
+ <string>4433.IBPluginDependency</string>
+ <string>4434.IBPluginDependency</string>
+ <string>4435.IBPluginDependency</string>
+ <string>4436.IBPluginDependency</string>
+ <string>4437.IBPluginDependency</string>
+ <string>4438.IBPluginDependency</string>
+ <string>4439.IBPluginDependency</string>
+ <string>4440.IBPluginDependency</string>
+ <string>4441.IBPluginDependency</string>
+ <string>4442.IBPluginDependency</string>
+ <string>4443.IBPluginDependency</string>
+ <string>4444.IBPluginDependency</string>
+ <string>4445.IBPluginDependency</string>
+ <string>446.IBPluginDependency</string>
+ <string>446.ImportedFromIB2</string>
+ <string>5.IBPluginDependency</string>
+ <string>5.ImportedFromIB2</string>
+ <string>56.IBPluginDependency</string>
+ <string>56.ImportedFromIB2</string>
+ <string>568.IBPluginDependency</string>
+ <string>568.ImportedFromIB2</string>
+ <string>569.IBPluginDependency</string>
+ <string>569.ImportedFromIB2</string>
+ <string>57.IBEditorWindowLastContentRect</string>
+ <string>57.IBPluginDependency</string>
+ <string>57.ImportedFromIB2</string>
+ <string>570.IBPluginDependency</string>
+ <string>570.ImportedFromIB2</string>
+ <string>58.IBPluginDependency</string>
+ <string>58.ImportedFromIB2</string>
+ <string>72.IBPluginDependency</string>
+ <string>72.ImportedFromIB2</string>
+ <string>79.IBPluginDependency</string>
+ <string>79.ImportedFromIB2</string>
+ <string>801.IBPluginDependency</string>
+ <string>801.ImportedFromIB2</string>
+ <string>81.IBEditorWindowLastContentRect</string>
+ <string>81.IBPluginDependency</string>
+ <string>81.ImportedFromIB2</string>
+ <string>816.IBPluginDependency</string>
+ <string>816.ImportedFromIB2</string>
+ <string>83.IBPluginDependency</string>
+ <string>83.ImportedFromIB2</string>
+ <string>898.IBPluginDependency</string>
+ <string>898.ImportedFromIB2</string>
+ <string>915.IBPluginDependency</string>
+ <string>915.ImportedFromIB2</string>
+ <string>916.IBPluginDependency</string>
+ <string>916.ImportedFromIB2</string>
+ <string>917.IBPluginDependency</string>
+ <string>917.ImportedFromIB2</string>
+ <string>918.IBPluginDependency</string>
+ <string>918.ImportedFromIB2</string>
+ <string>919.IBPluginDependency</string>
+ <string>919.ImportedFromIB2</string>
+ <string>92.IBPluginDependency</string>
+ <string>92.ImportedFromIB2</string>
+ <string>998.IBPluginDependency</string>
+ <string>998.ImportedFromIB2</string>
+ <string>999.IBPluginDependency</string>
+ <string>999.ImportedFromIB2</string>
+ </object>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <boolean value="YES" id="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>{{291, 259}, {200, 173}}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>VLCControllerView</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>{{42, 648}, {338, 29}}</string>
+ <string>{{42, 648}, {338, 29}}</string>
+ <reference ref="5"/>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>{{63, 573}, {576, 81}}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>VLCPlaylistView</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>{{214, 79}, {255, 353}}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>{{439, 399}, {246, 283}}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>{{84, 591}, {488, 40}}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>{{105, 246}, {599, 368}}</string>
+ <string>{{105, 246}, {599, 368}}</string>
+ <reference ref="5"/>
+ <reference ref="5"/>
+ <string>{599, 368}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>{{103, 682}, {468, 20}}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>{{0, 680}, {308, 43}}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>VLCTimeField</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>MPSlider</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>VLBrushedMetalImageView</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>VLBrushedMetalImageView</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>ITSlider</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>VLBrushedMetalImageView</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="9"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>{{-129, 208}, {886, 548}}</string>
+ <string>{{-129, 208}, {886, 548}}</string>
+ <reference ref="9"/>
+ <reference ref="9"/>
+ <reference ref="9"/>
+ <string>{3.40282e+38, 3.40282e+38}</string>
+ <string>{766, 114}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="9"/>
+ <string>sidebarview</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="9"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="9"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="9"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="9"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="9"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="9"/>
+ <string>VLCPlaylistView</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="9"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="9"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="9"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="9"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="9"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="9"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="9"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="9"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="9"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="9"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="9"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="9"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="9"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="9"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="9"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="9"/>
+ <string>ITSlider</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="9"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="9"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="9"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="9"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="9"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="9"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="9"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="9"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="9"/>
+ <string>VLCTimeField</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="9"/>
+ <string>MPSlider</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="9"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="9"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="9"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="9"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="9"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="9"/>
+ <string>VLCPlaylistView</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="9"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="9"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="9"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="9"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="9"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="9"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="9"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="9"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="9"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="9"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="9"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="9"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>{{82, 199}, {270, 233}}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>{{107, 187}, {300, 263}}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <reference ref="5"/>
+ </object>
+ </object>
+ <object class="NSMutableDictionary" key="unlocalizedProperties">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSArray" key="dict.sortedKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ </object>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ </object>
+ </object>
+ <nil key="activeLocalization"/>
+ <object class="NSMutableDictionary" key="localizations">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSArray" key="dict.sortedKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ </object>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ </object>
+ </object>
+ <nil key="sourceID"/>
+ <int key="maxID">4532</int>
+ </object>
+ <object class="IBClassDescriber" key="IBDocument.Classes">
+ <object class="NSMutableArray" key="referencedPartialClassDescriptions">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="IBPartialClassDescription">
+ <string key="className">FirstResponder</string>
+ <string key="superclassName">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBUserSource</string>
+ <string key="minorKey"/>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">ITSlider</string>
+ <string key="superclassName">NSSlider</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier" id="276635108">
+ <string key="majorKey">IBProjectSource</string>
+ <string key="minorKey">../../../modules/gui/macosx/misc.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">ITSlider</string>
+ <string key="superclassName">NSSlider</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBUserSource</string>
+ <string key="minorKey"/>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">MPSlider</string>
+ <string key="superclassName">NSSlider</string>
+ <reference key="sourceIdentifier" ref="276635108"/>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">MPSlider</string>
+ <string key="superclassName">NSSlider</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBUserSource</string>
+ <string key="minorKey"/>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSApplication</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBProjectSource</string>
+ <string key="minorKey">../../../modules/gui/macosx/applescript.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSApplication</string>
+ <string key="superclassName">NSResponder</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBUserSource</string>
+ <string key="minorKey"/>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBProjectSource</string>
+ <string key="minorKey">../../../modules/gui/macosx/AppleRemote.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBUserSource</string>
+ <string key="minorKey"/>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">VLBrushedMetalImageView</string>
+ <string key="superclassName">NSImageView</string>
+ <reference key="sourceIdentifier" ref="276635108"/>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">VLBrushedMetalImageView</string>
+ <string key="superclassName">NSImageView</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBUserSource</string>
+ <string key="minorKey"/>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">VLCApplication</string>
+ <string key="superclassName">NSApplication</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier" id="857103799">
+ <string key="majorKey">IBProjectSource</string>
+ <string key="minorKey">../../../modules/gui/macosx/intf.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">VLCApplication</string>
+ <string key="superclassName">NSApplication</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBUserSource</string>
+ <string key="minorKey"/>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">VLCBookmarks</string>
+ <string key="superclassName">NSObject</string>
+ <object class="NSMutableDictionary" key="actions">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMutableArray" key="dict.sortedKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>add:</string>
+ <string>clear:</string>
+ <string>edit:</string>
+ <string>edit_cancel:</string>
+ <string>edit_ok:</string>
+ <string>extract:</string>
+ <string>goToBookmark:</string>
+ <string>remove:</string>
+ </object>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ </object>
+ </object>
+ <object class="NSMutableDictionary" key="outlets">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMutableArray" key="dict.sortedKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>o_bookmarks_window</string>
+ <string>o_btn_add</string>
+ <string>o_btn_clear</string>
+ <string>o_btn_edit</string>
+ <string>o_btn_extract</string>
+ <string>o_btn_rm</string>
+ <string>o_edit_btn_cancel</string>
+ <string>o_edit_btn_ok</string>
+ <string>o_edit_fld_bytes</string>
+ <string>o_edit_fld_name</string>
+ <string>o_edit_fld_time</string>
+ <string>o_edit_lbl_bytes</string>
+ <string>o_edit_lbl_name</string>
+ <string>o_edit_lbl_time</string>
+ <string>o_edit_window</string>
+ <string>o_tbl_dataTable</string>
+ </object>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ </object>
+ </object>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBProjectSource</string>
+ <string key="minorKey">../../../modules/gui/macosx/bookmarks.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">VLCControllerView</string>
+ <string key="superclassName">NSView</string>
+ <reference key="sourceIdentifier" ref="276635108"/>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">VLCControllerView</string>
+ <string key="superclassName">NSView</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBUserSource</string>
+ <string key="minorKey"/>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">VLCControllerWindow</string>
+ <string key="superclassName">NSWindow</string>
+ <reference key="sourceIdentifier" ref="276635108"/>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">VLCControllerWindow</string>
+ <string key="superclassName">NSWindow</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBUserSource</string>
+ <string key="minorKey"/>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">VLCControls</string>
+ <string key="superclassName">NSObject</string>
+ <object class="NSMutableDictionary" key="actions">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMutableArray" key="dict.sortedKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>addSubtitleFile:</string>
+ <string>backward:</string>
+ <string>faster:</string>
+ <string>forward:</string>
+ <string>goToSpecificTime:</string>
+ <string>loop:</string>
+ <string>mute:</string>
+ <string>next:</string>
+ <string>play:</string>
+ <string>prev:</string>
+ <string>random:</string>
+ <string>repeat:</string>
+ <string>repeatButtonAction:</string>
+ <string>showPosition:</string>
+ <string>slower:</string>
+ <string>stop:</string>
+ <string>telxNavLink:</string>
+ <string>telxTransparent:</string>
+ <string>toggleVar:</string>
+ <string>toogleFullscreen:</string>
+ <string>volumeDown:</string>
+ <string>volumeSliderUpdated:</string>
+ <string>volumeUp:</string>
+ <string>windowAction:</string>
+ </object>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ </object>
+ </object>
+ <object class="NSMutableDictionary" key="outlets">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMutableArray" key="dict.sortedKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>o_btn_addNode</string>
+ <string>o_btn_repeat</string>
+ <string>o_btn_repeat_embed</string>
+ <string>o_btn_shuffle</string>
+ <string>o_btn_shuffle_embed</string>
+ <string>o_main</string>
+ <string>o_specificTime_cancel_btn</string>
+ <string>o_specificTime_enter_fld</string>
+ <string>o_specificTime_goTo_lbl</string>
+ <string>o_specificTime_mi</string>
+ <string>o_specificTime_ok_btn</string>
+ <string>o_specificTime_sec_lbl</string>
+ <string>o_specificTime_stepper</string>
+ <string>o_specificTime_win</string>
+ <string>o_volumeslider</string>
+ </object>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ </object>
+ </object>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier" id="427653210">
+ <string key="majorKey">IBProjectSource</string>
+ <string key="minorKey">../../../modules/gui/macosx/controls.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">VLCControls</string>
+ <string key="superclassName">NSObject</string>
+ <object class="NSMutableDictionary" key="actions">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMutableArray" key="dict.sortedKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>pause:</string>
+ <string>position:</string>
+ </object>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>id</string>
+ <string>id</string>
+ </object>
+ </object>
+ <object class="NSMutableDictionary" key="outlets">
+ <string key="NS.key.0">o_fs_panel</string>
+ <string key="NS.object.0">id</string>
+ </object>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBUserSource</string>
+ <string key="minorKey"/>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">VLCEmbeddedVoutView</string>
+ <string key="superclassName">VLCVoutView</string>
+ <object class="NSMutableDictionary" key="outlets">
+ <string key="NS.key.0">o_embeddedwindow</string>
+ <string key="NS.object.0">id</string>
+ </object>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier" id="654296239">
+ <string key="majorKey">IBProjectSource</string>
+ <string key="minorKey">../../../modules/gui/macosx/vout.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">VLCEmbeddedVoutView</string>
+ <string key="superclassName">VLCVoutView</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBUserSource</string>
+ <string key="minorKey"/>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">VLCEmbeddedWindow</string>
+ <string key="superclassName">NSWindow</string>
+ <object class="NSMutableDictionary" key="actions">
+ <string key="NS.key.0">togglePlaylist:</string>
+ <string key="NS.object.0">id</string>
+ </object>
+ <object class="NSMutableDictionary" key="outlets">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMutableArray" key="dict.sortedKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>o_background_view</string>
+ <string>o_btn_backward</string>
+ <string>o_btn_equalizer</string>
+ <string>o_btn_forward</string>
+ <string>o_btn_fullscreen</string>
+ <string>o_btn_next</string>
+ <string>o_btn_play</string>
+ <string>o_btn_playlist</string>
+ <string>o_btn_prev</string>
+ <string>o_btn_stop</string>
+ <string>o_btn_volume_down</string>
+ <string>o_btn_volume_up</string>
+ <string>o_horizontal_split</string>
+ <string>o_main_pgbar</string>
+ <string>o_playlist</string>
+ <string>o_playlist_table</string>
+ <string>o_playlist_view</string>
+ <string>o_scrollfield</string>
+ <string>o_searchfield</string>
+ <string>o_sidebar_list</string>
+ <string>o_status</string>
+ <string>o_time</string>
+ <string>o_timeslider</string>
+ <string>o_vertical_split</string>
+ <string>o_videosubview</string>
+ <string>o_view</string>
+ <string>o_vlc_main</string>
+ <string>o_volumeslider</string>
+ </object>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ </object>
+ </object>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier" id="589545472">
+ <string key="majorKey">IBProjectSource</string>
+ <string key="minorKey">../../../modules/gui/macosx/embeddedwindow.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">VLCEmbeddedWindow</string>
+ <string key="superclassName">NSWindow</string>
+ <object class="NSMutableDictionary" key="outlets">
+ <string key="NS.key.0">o_slider</string>
+ <string key="NS.object.0">id</string>
+ </object>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBUserSource</string>
+ <string key="minorKey"/>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">VLCEqualizer</string>
+ <string key="superclassName">NSObject</string>
+ <object class="NSMutableDictionary" key="actions">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMutableArray" key="dict.sortedKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>bandSliderUpdated:</string>
+ <string>changePreset:</string>
+ <string>enable:</string>
+ <string>preampSliderUpdated:</string>
+ <string>toggleWindow:</string>
+ <string>twopass:</string>
+ </object>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ </object>
+ </object>
+ <object class="NSMutableDictionary" key="outlets">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMutableArray" key="dict.sortedKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>o_btn_equalizer</string>
+ <string>o_btn_equalizer_embedded</string>
+ <string>o_ckb_2pass</string>
+ <string>o_ckb_enable</string>
+ <string>o_fld_preamp</string>
+ <string>o_popup_presets</string>
+ <string>o_slider_band1</string>
+ <string>o_slider_band10</string>
+ <string>o_slider_band2</string>
+ <string>o_slider_band3</string>
+ <string>o_slider_band4</string>
+ <string>o_slider_band5</string>
+ <string>o_slider_band6</string>
+ <string>o_slider_band7</string>
+ <string>o_slider_band8</string>
+ <string>o_slider_band9</string>
+ <string>o_slider_preamp</string>
+ <string>o_window</string>
+ </object>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ </object>
+ </object>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBProjectSource</string>
+ <string key="minorKey">../../../modules/gui/macosx/equalizer.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">VLCEqualizer</string>
+ <string key="superclassName">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBUserSource</string>
+ <string key="minorKey"/>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">VLCFSPanel</string>
+ <string key="superclassName">NSWindow</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBProjectSource</string>
+ <string key="minorKey">../../../modules/gui/macosx/fspanel.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">VLCFSPanel</string>
+ <string key="superclassName">NSWindow</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBUserSource</string>
+ <string key="minorKey"/>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">VLCMain</string>
+ <string key="superclassName">NSObject</string>
+ <object class="NSMutableDictionary" key="actions">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMutableArray" key="dict.sortedKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>checkForUpdate:</string>
+ <string>clearRecentItems:</string>
+ <string>crashReporterAction:</string>
+ <string>intfOpenCapture:</string>
+ <string>intfOpenDisc:</string>
+ <string>intfOpenFile:</string>
+ <string>intfOpenFileGeneric:</string>
+ <string>intfOpenNet:</string>
+ <string>openCrashLog:</string>
+ <string>openDocumentation:</string>
+ <string>openDonate:</string>
+ <string>openForum:</string>
+ <string>openReadMe:</string>
+ <string>openRecentItem:</string>
+ <string>openWebsite:</string>
+ <string>saveDebugLog:</string>
+ <string>showBookmarks:</string>
+ <string>showExtended:</string>
+ <string>showInformationPanel:</string>
+ <string>showLicense:</string>
+ <string>showMessagesPanel:</string>
+ <string>showVLM:</string>
+ <string>showWizard:</string>
+ <string>timeFieldWasClicked:</string>
+ <string>timesliderUpdate:</string>
+ <string>togglePlaylist:</string>
+ <string>viewAbout:</string>
+ <string>viewErrorsAndWarnings:</string>
+ <string>viewHelp:</string>
+ <string>viewPreferences:</string>
+ </object>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ </object>
+ </object>
+ <object class="NSMutableDictionary" key="outlets">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMutableArray" key="dict.sortedKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>o_about</string>
+ <string>o_bookmarks</string>
+ <string>o_btn_equalizer</string>
+ <string>o_btn_ff</string>
+ <string>o_btn_fullscreen</string>
+ <string>o_btn_next</string>
+ <string>o_btn_play</string>
+ <string>o_btn_playlist</string>
+ <string>o_btn_prev</string>
+ <string>o_btn_rewind</string>
+ <string>o_btn_stop</string>
+ <string>o_controls</string>
+ <string>o_coredialogs</string>
+ <string>o_crashrep_desc_txt</string>
+ <string>o_crashrep_dontSend_btn</string>
+ <string>o_crashrep_fld</string>
+ <string>o_crashrep_includeEmail_ckb</string>
+ <string>o_crashrep_includeEmail_txt</string>
+ <string>o_crashrep_send_btn</string>
+ <string>o_crashrep_title_txt</string>
+ <string>o_crashrep_win</string>
+ <string>o_dmi_mute</string>
+ <string>o_dmi_next</string>
+ <string>o_dmi_play</string>
+ <string>o_dmi_previous</string>
+ <string>o_dmi_stop</string>
+ <string>o_embedded_list</string>
+ <string>o_embedded_window</string>
+ <string>o_extended</string>
+ <string>o_eyetv</string>
+ <string>o_main_pgbar</string>
+ <string>o_messages</string>
+ <string>o_mi_about</string>
+ <string>o_mi_addSub</string>
+ <string>o_mi_add_intf</string>
+ <string>o_mi_aspect_ratio</string>
+ <string>o_mi_audiotrack</string>
+ <string>o_mi_bookmarks</string>
+ <string>o_mi_bring_atf</string>
+ <string>o_mi_bwd</string>
+ <string>o_mi_bwd1m</string>
+ <string>o_mi_bwd5m</string>
+ <string>o_mi_channels</string>
+ <string>o_mi_chapter</string>
+ <string>o_mi_checkForUpdate</string>
+ <string>o_mi_clear</string>
+ <string>o_mi_close_window</string>
+ <string>o_mi_controller</string>
+ <string>o_mi_copy</string>
+ <string>o_mi_crop</string>
+ <string>o_mi_cut</string>
+ <string>o_mi_deinterlace</string>
+ <string>o_mi_device</string>
+ <string>o_mi_documentation</string>
+ <string>o_mi_donation</string>
+ <string>o_mi_double_window</string>
+ <string>o_mi_equalizer</string>
+ <string>o_mi_errorsAndWarnings</string>
+ <string>o_mi_extended</string>
+ <string>o_mi_faster</string>
+ <string>o_mi_ffmpeg_pp</string>
+ <string>o_mi_fittoscreen</string>
+ <string>o_mi_floatontop</string>
+ <string>o_mi_forum</string>
+ <string>o_mi_fullscreen</string>
+ <string>o_mi_fwd</string>
+ <string>o_mi_fwd1m</string>
+ <string>o_mi_fwd5m</string>
+ <string>o_mi_half_window</string>
+ <string>o_mi_help</string>
+ <string>o_mi_hide</string>
+ <string>o_mi_hide_others</string>
+ <string>o_mi_info</string>
+ <string>o_mi_license</string>
+ <string>o_mi_loop</string>
+ <string>o_mi_messages</string>
+ <string>o_mi_minimize</string>
+ <string>o_mi_mute</string>
+ <string>o_mi_next</string>
+ <string>o_mi_normal_window</string>
+ <string>o_mi_open_capture</string>
+ <string>o_mi_open_disc</string>
+ <string>o_mi_open_file</string>
+ <string>o_mi_open_generic</string>
+ <string>o_mi_open_net</string>
+ <string>o_mi_open_recent</string>
+ <string>o_mi_open_recent_cm</string>
+ <string>o_mi_open_vlm</string>
+ <string>o_mi_open_wizard</string>
+ <string>o_mi_paste</string>
+ <string>o_mi_play</string>
+ <string>o_mi_player</string>
+ <string>o_mi_playlist</string>
+ <string>o_mi_prefs</string>
+ <string>o_mi_previous</string>
+ <string>o_mi_program</string>
+ <string>o_mi_quit</string>
+ <string>o_mi_random</string>
+ <string>o_mi_readme</string>
+ <string>o_mi_repeat</string>
+ <string>o_mi_screen</string>
+ <string>o_mi_select_all</string>
+ <string>o_mi_services</string>
+ <string>o_mi_show_all</string>
+ <string>o_mi_slower</string>
+ <string>o_mi_snapshot</string>
+ <string>o_mi_sprefs</string>
+ <string>o_mi_stop</string>
+ <string>o_mi_subtitle</string>
+ <string>o_mi_teletext</string>
+ <string>o_mi_teletext_blue</string>
+ <string>o_mi_teletext_green</string>
+ <string>o_mi_teletext_index</string>
+ <string>o_mi_teletext_red</string>
+ <string>o_mi_teletext_transparent</string>
+ <string>o_mi_teletext_yellow</string>
+ <string>o_mi_title</string>
+ <string>o_mi_videotrack</string>
+ <string>o_mi_visual</string>
+ <string>o_mi_vol_down</string>
+ <string>o_mi_vol_up</string>
+ <string>o_mi_website</string>
+ <string>o_msgs_crashlog_btn</string>
+ <string>o_msgs_panel</string>
+ <string>o_msgs_save_btn</string>
+ <string>o_mu_add_intf</string>
+ <string>o_mu_aspect_ratio</string>
+ <string>o_mu_audio</string>
+ <string>o_mu_audiotrack</string>
+ <string>o_mu_channels</string>
+ <string>o_mu_chapter</string>
+ <string>o_mu_controls</string>
+ <string>o_mu_crop</string>
+ <string>o_mu_deinterlace</string>
+ <string>o_mu_device</string>
+ <string>o_mu_edit</string>
+ <string>o_mu_ffmpeg_pp</string>
+ <string>o_mu_file</string>
+ <string>o_mu_help</string>
+ <string>o_mu_program</string>
+ <string>o_mu_screen</string>
+ <string>o_mu_subtitle</string>
+ <string>o_mu_title</string>
+ <string>o_mu_video</string>
+ <string>o_mu_videotrack</string>
+ <string>o_mu_visual</string>
+ <string>o_mu_window</string>
+ <string>o_open</string>
+ <string>o_playlist</string>
+ <string>o_playlist_view</string>
+ <string>o_prefs</string>
+ <string>o_scrollfield</string>
+ <string>o_sprefs</string>
+ <string>o_timefield</string>
+ <string>o_timeslider</string>
+ <string>o_update</string>
+ <string>o_vlm</string>
+ <string>o_vmi_fullscreen</string>
+ <string>o_vmi_mute</string>
+ <string>o_vmi_next</string>
+ <string>o_vmi_play</string>
+ <string>o_vmi_prev</string>
+ <string>o_vmi_snapshot</string>
+ <string>o_vmi_stop</string>
+ <string>o_vmi_voldown</string>
+ <string>o_vmi_volup</string>
+ <string>o_volumeslider</string>
+ <string>o_vout_menu</string>
+ <string>o_window</string>
+ <string>o_wizard</string>
+ <string>toolbarMediaControl</string>
+ </object>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>id</string>
+ <string>id</string>
+ <string>NSButton</string>
+ <string>NSButton</string>
+ <string>NSButton</string>
+ <string>NSButton</string>
+ <string>NSButton</string>
+ <string>NSButton</string>
+ <string>NSButton</string>
+ <string>NSButton</string>
+ <string>NSButton</string>
+ <string>VLCControls</string>
+ <string>id</string>
+ <string>NSTextField</string>
+ <string>NSButton</string>
+ <string>NSTextView</string>
+ <string>NSButton</string>
+ <string>NSTextField</string>
+ <string>NSButton</string>
+ <string>NSTextField</string>
+ <string>NSWindow</string>
+ <string>NSMenuItem</string>
+ <string>NSMenuItem</string>
+ <string>NSMenuItem</string>
+ <string>NSMenuItem</string>
+ <string>NSMenuItem</string>
+ <string>id</string>
+ <string>VLCEmbeddedWindow</string>
+ <string>id</string>
+ <string>id</string>
+ <string>NSProgressIndicator</string>
+ <string>NSTextView</string>
+ <string>NSMenuItem</string>
+ <string>NSMenuItem</string>
+ <string>NSMenuItem</string>
+ <string>NSMenuItem</string>
+ <string>NSMenuItem</string>
+ <string>NSMenuItem</string>
+ <string>NSMenuItem</string>
+ <string>NSMenuItem</string>
+ <string>NSMenuItem</string>
+ <string>NSMenuItem</string>
+ <string>NSMenuItem</string>
+ <string>NSMenuItem</string>
+ <string>NSMenuItem</string>
+ <string>NSMenuItem</string>
+ <string>NSMenuItem</string>
+ <string>NSMenuItem</string>
+ <string>NSMenuItem</string>
+ <string>NSMenuItem</string>
+ <string>NSMenuItem</string>
+ <string>NSMenuItem</string>
+ <string>NSMenuItem</string>
+ <string>NSMenuItem</string>
+ <string>NSMenuItem</string>
+ <string>NSMenuItem</string>
+ <string>NSMenuItem</string>
+ <string>NSMenuItem</string>
+ <string>NSMenuItem</string>
+ <string>NSMenuItem</string>
+ <string>NSMenuItem</string>
+ <string>NSMenuItem</string>
+ <string>NSMenuItem</string>
+ <string>NSMenuItem</string>
+ <string>NSMenuItem</string>
+ <string>NSMenuItem</string>
+ <string>NSMenuItem</string>
+ <string>NSMenuItem</string>
+ <string>NSMenuItem</string>
+ <string>NSMenuItem</string>
+ <string>NSMenuItem</string>
+ <string>NSMenuItem</string>
+ <string>NSMenuItem</string>
+ <string>NSMenuItem</string>
+ <string>NSMenuItem</string>
+ <string>NSMenuItem</string>
+ <string>NSMenuItem</string>
+ <string>NSMenuItem</string>
+ <string>NSMenuItem</string>
+ <string>NSMenuItem</string>
+ <string>NSMenuItem</string>
+ <string>NSMenuItem</string>
+ <string>NSMenuItem</string>
+ <string>NSMenuItem</string>
+ <string>NSMenuItem</string>
+ <string>NSMenuItem</string>
+ <string>NSMenuItem</string>
+ <string>NSMenuItem</string>
+ <string>NSMenuItem</string>
+ <string>NSMenuItem</string>
+ <string>NSMenuItem</string>
+ <string>NSMenuItem</string>
+ <string>NSMenuItem</string>
+ <string>NSMenuItem</string>
+ <string>NSMenuItem</string>
+ <string>NSMenuItem</string>
+ <string>NSMenuItem</string>
+ <string>NSMenuItem</string>
+ <string>NSMenuItem</string>
+ <string>NSMenuItem</string>
+ <string>NSMenuItem</string>
+ <string>NSMenuItem</string>
+ <string>NSMenuItem</string>
+ <string>NSMenuItem</string>
+ <string>NSMenuItem</string>
+ <string>NSMenuItem</string>
+ <string>NSMenuItem</string>
+ <string>NSMenuItem</string>
+ <string>NSMenuItem</string>
+ <string>NSMenuItem</string>
+ <string>NSMenuItem</string>
+ <string>NSMenuItem</string>
+ <string>NSMenuItem</string>
+ <string>NSMenuItem</string>
+ <string>NSMenuItem</string>
+ <string>NSMenuItem</string>
+ <string>NSMenuItem</string>
+ <string>NSMenuItem</string>
+ <string>NSMenuItem</string>
+ <string>NSMenuItem</string>
+ <string>NSMenuItem</string>
+ <string>NSMenuItem</string>
+ <string>NSButton</string>
+ <string>NSWindow</string>
+ <string>NSButton</string>
+ <string>NSMenu</string>
+ <string>NSMenu</string>
+ <string>NSMenu</string>
+ <string>NSMenu</string>
+ <string>NSMenu</string>
+ <string>NSMenu</string>
+ <string>NSMenu</string>
+ <string>NSMenu</string>
+ <string>NSMenu</string>
+ <string>NSMenu</string>
+ <string>NSMenu</string>
+ <string>NSMenu</string>
+ <string>NSMenu</string>
+ <string>NSMenu</string>
+ <string>NSMenu</string>
+ <string>NSMenu</string>
+ <string>NSMenu</string>
+ <string>NSMenu</string>
+ <string>NSMenu</string>
+ <string>NSMenu</string>
+ <string>NSMenu</string>
+ <string>NSMenu</string>
+ <string>id</string>
+ <string>VLCPlaylist</string>
+ <string>NSView</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>NSTextField</string>
+ <string>NSSlider</string>
+ <string>id</string>
+ <string>id</string>
+ <string>NSMenuItem</string>
+ <string>NSMenuItem</string>
+ <string>NSMenuItem</string>
+ <string>NSMenuItem</string>
+ <string>NSMenuItem</string>
+ <string>NSMenuItem</string>
+ <string>NSMenuItem</string>
+ <string>NSMenuItem</string>
+ <string>NSMenuItem</string>
+ <string>NSSlider</string>
+ <string>NSMenu</string>
+ <string>VLCControllerWindow</string>
+ <string>id</string>
+ <string>NSView</string>
+ </object>
+ </object>
+ <reference key="sourceIdentifier" ref="857103799"/>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">VLCMain</string>
+ <string key="superclassName">NSObject</string>
+ <object class="NSMutableDictionary" key="outlets">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMutableArray" key="dict.sortedKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>o_info</string>
+ <string>o_interaction_list</string>
+ </object>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>id</string>
+ <string>id</string>
+ </object>
+ </object>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBUserSource</string>
+ <string key="minorKey"/>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">VLCPlaylist</string>
+ <string key="superclassName">VLCPlaylistCommon</string>
+ <object class="NSMutableDictionary" key="actions">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMutableArray" key="dict.sortedKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>addNode:</string>
+ <string>deleteItem:</string>
+ <string>downloadCoverArt:</string>
+ <string>playItem:</string>
+ <string>preparseItem:</string>
+ <string>recursiveExpandNode:</string>
+ <string>revealItemInFinder:</string>
+ <string>savePlaylist:</string>
+ <string>searchItem:</string>
+ <string>selectAll:</string>
+ <string>servicesChange:</string>
+ <string>sortNodeByAuthor:</string>
+ <string>sortNodeByName:</string>
+ </object>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ </object>
+ </object>
+ <object class="NSMutableDictionary" key="outlets">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMutableArray" key="dict.sortedKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>o_btn_addNode</string>
+ <string>o_btn_playlist</string>
+ <string>o_controller</string>
+ <string>o_ctx_menu</string>
+ <string>o_mi_addNode</string>
+ <string>o_mi_delete</string>
+ <string>o_mi_dl_cover_art</string>
+ <string>o_mi_info</string>
+ <string>o_mi_play</string>
+ <string>o_mi_preparse</string>
+ <string>o_mi_recursive_expand</string>
+ <string>o_mi_revealInFinder</string>
+ <string>o_mi_save_playlist</string>
+ <string>o_mi_selectall</string>
+ <string>o_mi_services</string>
+ <string>o_mi_sort_author</string>
+ <string>o_mi_sort_name</string>
+ <string>o_mm_mi_revealInFinder</string>
+ <string>o_mm_mi_services</string>
+ <string>o_mm_mu_services</string>
+ <string>o_mu_services</string>
+ <string>o_playlist_view</string>
+ <string>o_playlist_wizard</string>
+ <string>o_save_accessory_popup</string>
+ <string>o_save_accessory_text</string>
+ <string>o_save_accessory_view</string>
+ <string>o_search_field</string>
+ <string>o_search_field_other</string>
+ <string>o_sidebar</string>
+ <string>o_status_field</string>
+ <string>o_status_field_embed</string>
+ <string>o_tc_sortColumn</string>
+ </object>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ </object>
+ </object>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier" id="447283708">
+ <string key="majorKey">IBProjectSource</string>
+ <string key="minorKey">../../../modules/gui/macosx/playlist.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">VLCPlaylist</string>
+ <string key="superclassName">VLCPlaylistCommon</string>
+ <object class="NSMutableDictionary" key="outlets">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMutableArray" key="dict.sortedKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>o_outline_view</string>
+ <string>o_random_ckb</string>
+ <string>o_tc_author</string>
+ <string>o_tc_duration</string>
+ <string>o_tc_name</string>
+ </object>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ </object>
+ </object>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBUserSource</string>
+ <string key="minorKey"/>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">VLCPlaylistCommon</string>
+ <string key="superclassName">NSObject</string>
+ <object class="NSMutableDictionary" key="outlets">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMutableArray" key="dict.sortedKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>o_outline_view</string>
+ <string>o_outline_view_other</string>
+ <string>o_tc_author</string>
+ <string>o_tc_author_other</string>
+ <string>o_tc_duration</string>
+ <string>o_tc_duration_other</string>
+ <string>o_tc_name</string>
+ <string>o_tc_name_other</string>
+ </object>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ </object>
+ </object>
+ <reference key="sourceIdentifier" ref="447283708"/>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">VLCPlaylistCommon</string>
+ <string key="superclassName">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBUserSource</string>
+ <string key="minorKey"/>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">VLCPlaylistView</string>
+ <string key="superclassName">NSOutlineView</string>
+ <reference key="sourceIdentifier" ref="447283708"/>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">VLCPlaylistView</string>
+ <string key="superclassName">NSOutlineView</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBUserSource</string>
+ <string key="minorKey"/>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">VLCSidebar</string>
+ <string key="superclassName">NSObject</string>
+ <object class="NSMutableDictionary" key="outlets">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMutableArray" key="dict.sortedKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>o_outline_view</string>
+ <string>o_playlist</string>
+ </object>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>id</string>
+ <string>id</string>
+ </object>
+ </object>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier" id="435957333">
+ <string key="majorKey">IBProjectSource</string>
+ <string key="minorKey">../../../modules/gui/macosx/sidebarview.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">VLCTimeField</string>
+ <string key="superclassName">NSTextField</string>
+ <reference key="sourceIdentifier" ref="427653210"/>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">VLCTimeField</string>
+ <string key="superclassName">NSTextField</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBUserSource</string>
+ <string key="minorKey"/>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">VLCVoutView</string>
+ <string key="superclassName">NSView</string>
+ <object class="NSMutableDictionary" key="outlets">
+ <string key="NS.key.0">o_window</string>
+ <string key="NS.object.0">id</string>
+ </object>
+ <reference key="sourceIdentifier" ref="654296239"/>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">VLCVoutView</string>
+ <string key="superclassName">NSView</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBUserSource</string>
+ <string key="minorKey"/>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">embeddedbackground</string>
+ <string key="superclassName">NSView</string>
+ <object class="NSMutableDictionary" key="outlets">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMutableArray" key="dict.sortedKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>o_btn_backward</string>
+ <string>o_btn_equalizer</string>
+ <string>o_btn_forward</string>
+ <string>o_btn_fullscreen</string>
+ <string>o_btn_next</string>
+ <string>o_btn_play</string>
+ <string>o_btn_playlist</string>
+ <string>o_btn_prev</string>
+ <string>o_btn_stop</string>
+ <string>o_btn_volume_down</string>
+ <string>o_btn_volume_up</string>
+ <string>o_main_pgbar</string>
+ <string>o_scrollfield</string>
+ <string>o_searchfield</string>
+ <string>o_time</string>
+ <string>o_timeslider</string>
+ <string>o_volumeslider</string>
+ <string>o_window</string>
+ </object>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ </object>
+ </object>
+ <reference key="sourceIdentifier" ref="589545472"/>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">sidebarview</string>
+ <string key="superclassName">NSSplitView</string>
+ <reference key="sourceIdentifier" ref="435957333"/>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">sidestatusview</string>
+ <string key="superclassName">NSView</string>
+ <object class="NSMutableDictionary" key="outlets">
+ <string key="NS.key.0">splitView</string>
+ <string key="NS.object.0">NSSplitView</string>
+ </object>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBProjectSource</string>
+ <string key="minorKey">../../../modules/gui/macosx/sidestatusview.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">statusbar</string>
+ <string key="superclassName">NSView</string>
+ <object class="NSMutableDictionary" key="outlets">
+ <string key="NS.key.0">o_text</string>
+ <string key="NS.object.0">id</string>
+ </object>
+ <reference key="sourceIdentifier" ref="589545472"/>
+ </object>
+ </object>
+ </object>
+ <int key="IBDocument.localizationMode">0</int>
+ <string key="IBDocument.LastKnownRelativeProjectPath">../../vlc.xcodeproj</string>
+ <int key="IBDocument.defaultPropertyAccessControl">3</int>
+ </data>
+</archive>
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>IBDocumentLocation</key>
- <string>246 207 356 240 0 0 1280 778 </string>
- <key>IBEditorPositions</key>
- <dict>
- <key>2197</key>
- <string>342 506 596 123 0 0 1280 778 </string>
- <key>2709</key>
- <string>386 537 508 82 0 0 1280 778 </string>
- <key>29</key>
- <string>391 728 438 44 0 0 1280 778 </string>
- <key>3568</key>
- <string>476 535 328 85 0 0 1280 778 </string>
- <key>915</key>
- <string>69 318 187 331 0 0 1280 778 </string>
- </dict>
- <key>IBFramework Version</key>
- <string>489.0</string>
- <key>IBLastKnownRelativeProjectPath</key>
- <string>../../vlc.xcodeproj</string>
- <key>IBOldestOS</key>
- <integer>4</integer>
- <key>IBOpenObjects</key>
- <array>
- <integer>3568</integer>
- <integer>2416</integer>
- <integer>29</integer>
- <integer>21</integer>
- <integer>2197</integer>
- <integer>2709</integer>
- </array>
- <key>IBSystem Version</key>
- <string>9G55</string>
- <key>targetFramework</key>
- <string>IBCocoaFramework</string>
-</dict>
-</plist>
CC0FB34C0F8BED1100F057F7 /* CoreDialogs.nib in Resources */ = {isa = PBXBuildFile; fileRef = CC0FB34A0F8BED1100F057F7 /* CoreDialogs.nib */; };
CC402EB00E00ABBB006A4BA4 /* vlc.icns in Resources */ = {isa = PBXBuildFile; fileRef = F74F13DF02C2A53401EE194C /* vlc.icns */; };
CC402EB10E00ABBB006A4BA4 /* MainMenu.nib in Resources */ = {isa = PBXBuildFile; fileRef = F74F13EA02C2A79C01EE194C /* MainMenu.nib */; };
- CC402EB20E00ABBB006A4BA4 /* divx.icns in Resources */ = {isa = PBXBuildFile; fileRef = F6E4F90A02D2648B01A80112 /* divx.icns */; };
CC402EB30E00ABBB006A4BA4 /* generic.icns in Resources */ = {isa = PBXBuildFile; fileRef = F6E4F90B02D2648B01A80112 /* generic.icns */; };
CC402EB40E00ABBB006A4BA4 /* mpeg.icns in Resources */ = {isa = PBXBuildFile; fileRef = F6E4F90C02D2648B01A80112 /* mpeg.icns */; };
- CC402EB50E00ABBB006A4BA4 /* mpeg1.icns in Resources */ = {isa = PBXBuildFile; fileRef = F6E4F90D02D2648B01A80112 /* mpeg1.icns */; };
- CC402EB60E00ABBB006A4BA4 /* mpeg2.icns in Resources */ = {isa = PBXBuildFile; fileRef = F6E4F90E02D2648B01A80112 /* mpeg2.icns */; };
- CC402EB70E00ABBB006A4BA4 /* mpeg4.icns in Resources */ = {isa = PBXBuildFile; fileRef = F6E4F90F02D2648B01A80112 /* mpeg4.icns */; };
CC402EB80E00ABBB006A4BA4 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = F69B0CA602E24F6401A80112 /* InfoPlist.strings */; };
CC402EB90E00ABBB006A4BA4 /* vlc.scriptSuite in Resources */ = {isa = PBXBuildFile; fileRef = 8EBF3FA303F13FFB0059A3A7 /* vlc.scriptSuite */; };
CC402EBA0E00ABBB006A4BA4 /* vlc.scriptTerminology in Resources */ = {isa = PBXBuildFile; fileRef = 8EBF3FA503F140960059A3A7 /* vlc.scriptTerminology */; };
CC402EBB0E00ABBB006A4BA4 /* README.MacOSX.rtf in Resources */ = {isa = PBXBuildFile; fileRef = 8EDAC3430440F72D0059A3A7 /* README.MacOSX.rtf */; };
- CC402EBC0E00ABBB006A4BA4 /* a52.icns in Resources */ = {isa = PBXBuildFile; fileRef = 8E445F8704728A700059A3A7 /* a52.icns */; };
- CC402EBD0E00ABBB006A4BA4 /* aac.icns in Resources */ = {isa = PBXBuildFile; fileRef = 8E445F8804728A700059A3A7 /* aac.icns */; };
- CC402EBE0E00ABBB006A4BA4 /* asf.icns in Resources */ = {isa = PBXBuildFile; fileRef = 8E445F8904728A700059A3A7 /* asf.icns */; };
- CC402EBF0E00ABBB006A4BA4 /* asx.icns in Resources */ = {isa = PBXBuildFile; fileRef = 8E445F8A04728A700059A3A7 /* asx.icns */; };
CC402EC00E00ABBB006A4BA4 /* avi.icns in Resources */ = {isa = PBXBuildFile; fileRef = 8E445F8B04728A700059A3A7 /* avi.icns */; };
- CC402EC10E00ABBB006A4BA4 /* bin.icns in Resources */ = {isa = PBXBuildFile; fileRef = 8E445F8C04728A700059A3A7 /* bin.icns */; };
- CC402EC20E00ABBB006A4BA4 /* cue.icns in Resources */ = {isa = PBXBuildFile; fileRef = 8E445F8D04728A700059A3A7 /* cue.icns */; };
- CC402EC30E00ABBB006A4BA4 /* dat.icns in Resources */ = {isa = PBXBuildFile; fileRef = 8E445F8E04728A700059A3A7 /* dat.icns */; };
- CC402EC40E00ABBB006A4BA4 /* dv.icns in Resources */ = {isa = PBXBuildFile; fileRef = 8E445F8F04728A700059A3A7 /* dv.icns */; };
- CC402EC50E00ABBB006A4BA4 /* m3u.icns in Resources */ = {isa = PBXBuildFile; fileRef = 8E445F9004728A700059A3A7 /* m3u.icns */; };
CC402EC60E00ABBB006A4BA4 /* mov.icns in Resources */ = {isa = PBXBuildFile; fileRef = 8E445F9104728A700059A3A7 /* mov.icns */; };
CC402EC70E00ABBB006A4BA4 /* mp3.icns in Resources */ = {isa = PBXBuildFile; fileRef = 8E445F9204728A700059A3A7 /* mp3.icns */; };
- CC402EC80E00ABBB006A4BA4 /* mp4.icns in Resources */ = {isa = PBXBuildFile; fileRef = 8E445F9304728A700059A3A7 /* mp4.icns */; };
- CC402EC90E00ABBB006A4BA4 /* mpg.icns in Resources */ = {isa = PBXBuildFile; fileRef = 8E445F9404728A700059A3A7 /* mpg.icns */; };
CC402ECA0E00ABBB006A4BA4 /* ogg.icns in Resources */ = {isa = PBXBuildFile; fileRef = 8E445F9504728A700059A3A7 /* ogg.icns */; };
- CC402ECB0E00ABBB006A4BA4 /* ogm.icns in Resources */ = {isa = PBXBuildFile; fileRef = 8E445F9604728A700059A3A7 /* ogm.icns */; };
- CC402ECC0E00ABBB006A4BA4 /* pls.icns in Resources */ = {isa = PBXBuildFile; fileRef = 8E445F9704728A700059A3A7 /* pls.icns */; };
- CC402ECD0E00ABBB006A4BA4 /* srt.icns in Resources */ = {isa = PBXBuildFile; fileRef = 8E445F9804728A700059A3A7 /* srt.icns */; };
- CC402ECE0E00ABBB006A4BA4 /* sub.icns in Resources */ = {isa = PBXBuildFile; fileRef = 8E445F9904728A700059A3A7 /* sub.icns */; };
CC402ECF0E00ABBB006A4BA4 /* vob.icns in Resources */ = {isa = PBXBuildFile; fileRef = 8E445F9A04728A700059A3A7 /* vob.icns */; };
CC402ED00E00ABBB006A4BA4 /* wma.icns in Resources */ = {isa = PBXBuildFile; fileRef = 8E445F9B04728A700059A3A7 /* wma.icns */; };
CC402ED10E00ABBB006A4BA4 /* wmv.icns in Resources */ = {isa = PBXBuildFile; fileRef = 8E445F9C04728A700059A3A7 /* wmv.icns */; };
CC402F420E00ABBB006A4BA4 /* ApplicationServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CC3DC89B0A7CDB9600B53F32 /* ApplicationServices.framework */; };
CC402F430E00ABBB006A4BA4 /* QTKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CC1941240B9C1F8400635F6B /* QTKit.framework */; };
CC402F440E00ABBB006A4BA4 /* WebKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CC962E2C0CC7992800A56695 /* WebKit.framework */; };
+ CC62B8D00FC5787D0077BB8C /* aiff.icns in Resources */ = {isa = PBXBuildFile; fileRef = CC62B8C50FC5787D0077BB8C /* aiff.icns */; };
+ CC62B8D10FC5787D0077BB8C /* audio.icns in Resources */ = {isa = PBXBuildFile; fileRef = CC62B8C60FC5787D0077BB8C /* audio.icns */; };
+ CC62B8D20FC5787D0077BB8C /* flv.icns in Resources */ = {isa = PBXBuildFile; fileRef = CC62B8C70FC5787D0077BB8C /* flv.icns */; };
+ CC62B8D30FC5787D0077BB8C /* m4a.icns in Resources */ = {isa = PBXBuildFile; fileRef = CC62B8C80FC5787D0077BB8C /* m4a.icns */; };
+ CC62B8D40FC5787D0077BB8C /* m4v.icns in Resources */ = {isa = PBXBuildFile; fileRef = CC62B8C90FC5787D0077BB8C /* m4v.icns */; };
+ CC62B8D50FC5787D0077BB8C /* mkv.icns in Resources */ = {isa = PBXBuildFile; fileRef = CC62B8CA0FC5787D0077BB8C /* mkv.icns */; };
+ CC62B8D60FC5787D0077BB8C /* movie.icns in Resources */ = {isa = PBXBuildFile; fileRef = CC62B8CB0FC5787D0077BB8C /* movie.icns */; };
+ CC62B8D70FC5787D0077BB8C /* playlist.icns in Resources */ = {isa = PBXBuildFile; fileRef = CC62B8CC0FC5787D0077BB8C /* playlist.icns */; };
+ CC62B8D80FC5787D0077BB8C /* rm.icns in Resources */ = {isa = PBXBuildFile; fileRef = CC62B8CD0FC5787D0077BB8C /* rm.icns */; };
+ CC62B8D90FC5787D0077BB8C /* subtitle.icns in Resources */ = {isa = PBXBuildFile; fileRef = CC62B8CE0FC5787D0077BB8C /* subtitle.icns */; };
+ CC62B8DA0FC5787D0077BB8C /* wav.icns in Resources */ = {isa = PBXBuildFile; fileRef = CC62B8CF0FC5787D0077BB8C /* wav.icns */; };
+ CC62B93E0FC600CB0077BB8C /* sidebarAdd.png in Resources */ = {isa = PBXBuildFile; fileRef = CC62B9360FC600CB0077BB8C /* sidebarAdd.png */; };
+ CC62B93F0FC600CB0077BB8C /* sidebarRepeat.png in Resources */ = {isa = PBXBuildFile; fileRef = CC62B9370FC600CB0077BB8C /* sidebarRepeat.png */; };
+ CC62B9400FC600CB0077BB8C /* sidebarRepeatOn.png in Resources */ = {isa = PBXBuildFile; fileRef = CC62B9380FC600CB0077BB8C /* sidebarRepeatOn.png */; };
+ CC62B9410FC600CB0077BB8C /* sidebarRepeatOneOn.png in Resources */ = {isa = PBXBuildFile; fileRef = CC62B9390FC600CB0077BB8C /* sidebarRepeatOneOn.png */; };
+ CC62B9420FC600CB0077BB8C /* sidebarResizeWidget.png in Resources */ = {isa = PBXBuildFile; fileRef = CC62B93A0FC600CB0077BB8C /* sidebarResizeWidget.png */; };
+ CC62B9430FC600CB0077BB8C /* sidebarShuffle.png in Resources */ = {isa = PBXBuildFile; fileRef = CC62B93B0FC600CB0077BB8C /* sidebarShuffle.png */; };
+ CC62B9440FC600CB0077BB8C /* sidebarShuffleOn.png in Resources */ = {isa = PBXBuildFile; fileRef = CC62B93C0FC600CB0077BB8C /* sidebarShuffleOn.png */; };
+ CC62B9450FC600CB0077BB8C /* sidebarStatusAreaBackground.png in Resources */ = {isa = PBXBuildFile; fileRef = CC62B93D0FC600CB0077BB8C /* sidebarStatusAreaBackground.png */; };
+ CC62B94C0FC600D20077BB8C /* eq_sm.pdf in Resources */ = {isa = PBXBuildFile; fileRef = CC62B9460FC600D20077BB8C /* eq_sm.pdf */; };
+ CC62B94D0FC600D20077BB8C /* fs_sm.pdf in Resources */ = {isa = PBXBuildFile; fileRef = CC62B9470FC600D20077BB8C /* fs_sm.pdf */; };
+ CC62B94E0FC600D20077BB8C /* list_sm.pdf in Resources */ = {isa = PBXBuildFile; fileRef = CC62B9480FC600D20077BB8C /* list_sm.pdf */; };
+ CC62B94F0FC600D20077BB8C /* next_sm.pdf in Resources */ = {isa = PBXBuildFile; fileRef = CC62B9490FC600D20077BB8C /* next_sm.pdf */; };
+ CC62B9500FC600D20077BB8C /* prev_sm.pdf in Resources */ = {isa = PBXBuildFile; fileRef = CC62B94A0FC600D20077BB8C /* prev_sm.pdf */; };
+ CC62B9510FC600D20077BB8C /* stop_sm.pdf in Resources */ = {isa = PBXBuildFile; fileRef = CC62B94B0FC600D20077BB8C /* stop_sm.pdf */; };
+ CC62B95A0FC600E90077BB8C /* backward_big_down.png in Resources */ = {isa = PBXBuildFile; fileRef = CC62B9520FC600E90077BB8C /* backward_big_down.png */; };
+ CC62B95B0FC600E90077BB8C /* backward_big.png in Resources */ = {isa = PBXBuildFile; fileRef = CC62B9530FC600E90077BB8C /* backward_big.png */; };
+ CC62B95C0FC600E90077BB8C /* forward_big_down.png in Resources */ = {isa = PBXBuildFile; fileRef = CC62B9540FC600E90077BB8C /* forward_big_down.png */; };
+ CC62B95D0FC600E90077BB8C /* forward_big.png in Resources */ = {isa = PBXBuildFile; fileRef = CC62B9550FC600E90077BB8C /* forward_big.png */; };
+ CC62B95E0FC600E90077BB8C /* pause_big_down.png in Resources */ = {isa = PBXBuildFile; fileRef = CC62B9560FC600E90077BB8C /* pause_big_down.png */; };
+ CC62B95F0FC600E90077BB8C /* pause_big.png in Resources */ = {isa = PBXBuildFile; fileRef = CC62B9570FC600E90077BB8C /* pause_big.png */; };
+ CC62B9600FC600E90077BB8C /* play_big_down.png in Resources */ = {isa = PBXBuildFile; fileRef = CC62B9580FC600E90077BB8C /* play_big_down.png */; };
+ CC62B9610FC600E90077BB8C /* play_big.png in Resources */ = {isa = PBXBuildFile; fileRef = CC62B9590FC600E90077BB8C /* play_big.png */; };
CCB60A420E6E5E3F00407004 /* VLM.nib in Resources */ = {isa = PBXBuildFile; fileRef = CCB60A400E6E5E3F00407004 /* VLM.nib */; };
CCBE999F0F922C51000705F8 /* CoreServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CCBE999E0F922C51000705F8 /* CoreServices.framework */; };
CCD90F4E0E87C86D0034564A /* add_schedule.png in Resources */ = {isa = PBXBuildFile; fileRef = CCD90F4B0E87C86D0034564A /* add_schedule.png */; };
2A16E07F06C5074F00C87B09 /* equalizerdrawer_blue.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = equalizerdrawer_blue.png; path = Resources/equalizerdrawer_blue.png; sourceTree = "<group>"; };
2AEF857609A5FEC900130822 /* fspanel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = fspanel.h; path = ../../../modules/gui/macosx/fspanel.h; sourceTree = SOURCE_ROOT; };
2AEF857709A5FEC900130822 /* fspanel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = fspanel.m; path = ../../../modules/gui/macosx/fspanel.m; sourceTree = SOURCE_ROOT; };
- 8E445F8704728A700059A3A7 /* a52.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = a52.icns; path = Resources/a52.icns; sourceTree = SOURCE_ROOT; };
- 8E445F8804728A700059A3A7 /* aac.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = aac.icns; path = Resources/aac.icns; sourceTree = SOURCE_ROOT; };
- 8E445F8904728A700059A3A7 /* asf.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = asf.icns; path = Resources/asf.icns; sourceTree = SOURCE_ROOT; };
- 8E445F8A04728A700059A3A7 /* asx.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = asx.icns; path = Resources/asx.icns; sourceTree = SOURCE_ROOT; };
8E445F8B04728A700059A3A7 /* avi.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = avi.icns; path = Resources/avi.icns; sourceTree = SOURCE_ROOT; };
- 8E445F8C04728A700059A3A7 /* bin.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = bin.icns; path = Resources/bin.icns; sourceTree = SOURCE_ROOT; };
- 8E445F8D04728A700059A3A7 /* cue.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = cue.icns; path = Resources/cue.icns; sourceTree = SOURCE_ROOT; };
- 8E445F8E04728A700059A3A7 /* dat.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = dat.icns; path = Resources/dat.icns; sourceTree = SOURCE_ROOT; };
- 8E445F8F04728A700059A3A7 /* dv.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = dv.icns; path = Resources/dv.icns; sourceTree = SOURCE_ROOT; };
- 8E445F9004728A700059A3A7 /* m3u.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = m3u.icns; path = Resources/m3u.icns; sourceTree = SOURCE_ROOT; };
8E445F9104728A700059A3A7 /* mov.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = mov.icns; path = Resources/mov.icns; sourceTree = SOURCE_ROOT; };
8E445F9204728A700059A3A7 /* mp3.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = mp3.icns; path = Resources/mp3.icns; sourceTree = SOURCE_ROOT; };
- 8E445F9304728A700059A3A7 /* mp4.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = mp4.icns; path = Resources/mp4.icns; sourceTree = SOURCE_ROOT; };
- 8E445F9404728A700059A3A7 /* mpg.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = mpg.icns; path = Resources/mpg.icns; sourceTree = SOURCE_ROOT; };
8E445F9504728A700059A3A7 /* ogg.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = ogg.icns; path = Resources/ogg.icns; sourceTree = SOURCE_ROOT; };
- 8E445F9604728A700059A3A7 /* ogm.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = ogm.icns; path = Resources/ogm.icns; sourceTree = SOURCE_ROOT; };
- 8E445F9704728A700059A3A7 /* pls.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = pls.icns; path = Resources/pls.icns; sourceTree = SOURCE_ROOT; };
- 8E445F9804728A700059A3A7 /* srt.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = srt.icns; path = Resources/srt.icns; sourceTree = SOURCE_ROOT; };
- 8E445F9904728A700059A3A7 /* sub.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = sub.icns; path = Resources/sub.icns; sourceTree = SOURCE_ROOT; };
8E445F9A04728A700059A3A7 /* vob.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = vob.icns; path = Resources/vob.icns; sourceTree = SOURCE_ROOT; };
8E445F9B04728A700059A3A7 /* wma.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = wma.icns; path = Resources/wma.icns; sourceTree = SOURCE_ROOT; };
8E445F9C04728A700059A3A7 /* wmv.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = wmv.icns; path = Resources/wmv.icns; sourceTree = SOURCE_ROOT; };
CC4ED9B00ABE07C800CA4CC5 /* repeat_single_embedded_blue.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = repeat_single_embedded_blue.png; path = Resources/repeat_single_embedded_blue.png; sourceTree = "<group>"; };
CC4ED9B10ABE07C800CA4CC5 /* shuffle_embedded_blue.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = shuffle_embedded_blue.png; path = Resources/shuffle_embedded_blue.png; sourceTree = "<group>"; };
CC4ED9B20ABE07C800CA4CC5 /* shuffle_embedded.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = shuffle_embedded.png; path = Resources/shuffle_embedded.png; sourceTree = "<group>"; };
+ CC62B8C50FC5787D0077BB8C /* aiff.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = aiff.icns; path = Resources/aiff.icns; sourceTree = "<group>"; };
+ CC62B8C60FC5787D0077BB8C /* audio.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = audio.icns; path = Resources/audio.icns; sourceTree = "<group>"; };
+ CC62B8C70FC5787D0077BB8C /* flv.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = flv.icns; path = Resources/flv.icns; sourceTree = "<group>"; };
+ CC62B8C80FC5787D0077BB8C /* m4a.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = m4a.icns; path = Resources/m4a.icns; sourceTree = "<group>"; };
+ CC62B8C90FC5787D0077BB8C /* m4v.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = m4v.icns; path = Resources/m4v.icns; sourceTree = "<group>"; };
+ CC62B8CA0FC5787D0077BB8C /* mkv.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = mkv.icns; path = Resources/mkv.icns; sourceTree = "<group>"; };
+ CC62B8CB0FC5787D0077BB8C /* movie.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = movie.icns; path = Resources/movie.icns; sourceTree = "<group>"; };
+ CC62B8CC0FC5787D0077BB8C /* playlist.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = playlist.icns; path = Resources/playlist.icns; sourceTree = "<group>"; };
+ CC62B8CD0FC5787D0077BB8C /* rm.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = rm.icns; path = Resources/rm.icns; sourceTree = "<group>"; };
+ CC62B8CE0FC5787D0077BB8C /* subtitle.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = subtitle.icns; path = Resources/subtitle.icns; sourceTree = "<group>"; };
+ CC62B8CF0FC5787D0077BB8C /* wav.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = wav.icns; path = Resources/wav.icns; sourceTree = "<group>"; };
+ CC62B9080FC5DB9D0077BB8C /* sidebarview.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = sidebarview.h; path = ../../../modules/gui/macosx/sidebarview.h; sourceTree = SOURCE_ROOT; };
+ CC62B9090FC5DB9D0077BB8C /* sidebarview.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = sidebarview.m; path = ../../../modules/gui/macosx/sidebarview.m; sourceTree = SOURCE_ROOT; };
+ CC62B90A0FC5DB9D0077BB8C /* sidestatusview.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = sidestatusview.h; path = ../../../modules/gui/macosx/sidestatusview.h; sourceTree = SOURCE_ROOT; };
+ CC62B90B0FC5DB9D0077BB8C /* sidestatusview.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = sidestatusview.m; path = ../../../modules/gui/macosx/sidestatusview.m; sourceTree = SOURCE_ROOT; };
+ CC62B9360FC600CB0077BB8C /* sidebarAdd.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = sidebarAdd.png; path = Resources/sidebarAdd.png; sourceTree = "<group>"; };
+ CC62B9370FC600CB0077BB8C /* sidebarRepeat.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = sidebarRepeat.png; path = Resources/sidebarRepeat.png; sourceTree = "<group>"; };
+ CC62B9380FC600CB0077BB8C /* sidebarRepeatOn.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = sidebarRepeatOn.png; path = Resources/sidebarRepeatOn.png; sourceTree = "<group>"; };
+ CC62B9390FC600CB0077BB8C /* sidebarRepeatOneOn.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = sidebarRepeatOneOn.png; path = Resources/sidebarRepeatOneOn.png; sourceTree = "<group>"; };
+ CC62B93A0FC600CB0077BB8C /* sidebarResizeWidget.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = sidebarResizeWidget.png; path = Resources/sidebarResizeWidget.png; sourceTree = "<group>"; };
+ CC62B93B0FC600CB0077BB8C /* sidebarShuffle.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = sidebarShuffle.png; path = Resources/sidebarShuffle.png; sourceTree = "<group>"; };
+ CC62B93C0FC600CB0077BB8C /* sidebarShuffleOn.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = sidebarShuffleOn.png; path = Resources/sidebarShuffleOn.png; sourceTree = "<group>"; };
+ CC62B93D0FC600CB0077BB8C /* sidebarStatusAreaBackground.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = sidebarStatusAreaBackground.png; path = Resources/sidebarStatusAreaBackground.png; sourceTree = "<group>"; };
+ CC62B9460FC600D20077BB8C /* eq_sm.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; name = eq_sm.pdf; path = Resources/eq_sm.pdf; sourceTree = "<group>"; };
+ CC62B9470FC600D20077BB8C /* fs_sm.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; name = fs_sm.pdf; path = Resources/fs_sm.pdf; sourceTree = "<group>"; };
+ CC62B9480FC600D20077BB8C /* list_sm.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; name = list_sm.pdf; path = Resources/list_sm.pdf; sourceTree = "<group>"; };
+ CC62B9490FC600D20077BB8C /* next_sm.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; name = next_sm.pdf; path = Resources/next_sm.pdf; sourceTree = "<group>"; };
+ CC62B94A0FC600D20077BB8C /* prev_sm.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; name = prev_sm.pdf; path = Resources/prev_sm.pdf; sourceTree = "<group>"; };
+ CC62B94B0FC600D20077BB8C /* stop_sm.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; name = stop_sm.pdf; path = Resources/stop_sm.pdf; sourceTree = "<group>"; };
+ CC62B9520FC600E90077BB8C /* backward_big_down.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = backward_big_down.png; path = Resources/backward_big_down.png; sourceTree = "<group>"; };
+ CC62B9530FC600E90077BB8C /* backward_big.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = backward_big.png; path = Resources/backward_big.png; sourceTree = "<group>"; };
+ CC62B9540FC600E90077BB8C /* forward_big_down.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = forward_big_down.png; path = Resources/forward_big_down.png; sourceTree = "<group>"; };
+ CC62B9550FC600E90077BB8C /* forward_big.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = forward_big.png; path = Resources/forward_big.png; sourceTree = "<group>"; };
+ CC62B9560FC600E90077BB8C /* pause_big_down.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = pause_big_down.png; path = Resources/pause_big_down.png; sourceTree = "<group>"; };
+ CC62B9570FC600E90077BB8C /* pause_big.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = pause_big.png; path = Resources/pause_big.png; sourceTree = "<group>"; };
+ CC62B9580FC600E90077BB8C /* play_big_down.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = play_big_down.png; path = Resources/play_big_down.png; sourceTree = "<group>"; };
+ CC62B9590FC600E90077BB8C /* play_big.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = play_big.png; path = Resources/play_big.png; sourceTree = "<group>"; };
CC6C01A90DDF3E9200C7D754 /* intf.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = intf.h; path = ../../../modules/gui/minimal_macosx/intf.h; sourceTree = SOURCE_ROOT; };
CC6C01AA0DDF3E9200C7D754 /* intf.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = intf.m; path = ../../../modules/gui/minimal_macosx/intf.m; sourceTree = SOURCE_ROOT; };
CC6C01AB0DDF3E9200C7D754 /* macosx.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = macosx.c; path = ../../../modules/gui/minimal_macosx/macosx.c; sourceTree = SOURCE_ROOT; };
DCF358BA077F10BA007DB450 /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = Resources/English.lproj/Preferences.nib; sourceTree = "<group>"; };
DCFCCDB8085CE18F001E36AF /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = Resources/English.lproj/Wizard.nib; sourceTree = "<group>"; };
F69B0CA702E24F6401A80112 /* English */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.plist.strings; name = English; path = Resources/English.lproj/InfoPlist.strings; sourceTree = "<group>"; };
- F6E4F90A02D2648B01A80112 /* divx.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = divx.icns; path = Resources/divx.icns; sourceTree = "<group>"; };
F6E4F90B02D2648B01A80112 /* generic.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = generic.icns; path = Resources/generic.icns; sourceTree = "<group>"; };
F6E4F90C02D2648B01A80112 /* mpeg.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = mpeg.icns; path = Resources/mpeg.icns; sourceTree = "<group>"; };
- F6E4F90D02D2648B01A80112 /* mpeg1.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = mpeg1.icns; path = Resources/mpeg1.icns; sourceTree = "<group>"; };
- F6E4F90E02D2648B01A80112 /* mpeg2.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = mpeg2.icns; path = Resources/mpeg2.icns; sourceTree = "<group>"; };
- F6E4F90F02D2648B01A80112 /* mpeg4.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = mpeg4.icns; path = Resources/mpeg4.icns; sourceTree = "<group>"; };
F74F13DF02C2A53401EE194C /* vlc.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = vlc.icns; path = Resources/vlc.icns; sourceTree = "<group>"; };
F74F13EB02C2A79C01EE194C /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = Resources/English.lproj/MainMenu.nib; sourceTree = "<group>"; };
/* End PBXFileReference section */
CCB24D5D0D54BBAE004D780C /* simple_prefs.m */,
CCB60A3F0E6E5DD900407004 /* vlm.h */,
CCB60A3E0E6E5DD900407004 /* vlm.m */,
+ CC62B9080FC5DB9D0077BB8C /* sidebarview.h */,
+ CC62B9090FC5DB9D0077BB8C /* sidebarview.m */,
+ CC62B90A0FC5DB9D0077BB8C /* sidestatusview.h */,
+ CC62B90B0FC5DB9D0077BB8C /* sidestatusview.m */,
);
name = Classes;
sourceTree = "<group>";
8E445F86047289E50059A3A7 /* fileicons */ = {
isa = PBXGroup;
children = (
+ CC62B8C50FC5787D0077BB8C /* aiff.icns */,
+ CC62B8C60FC5787D0077BB8C /* audio.icns */,
+ CC62B8C70FC5787D0077BB8C /* flv.icns */,
+ CC62B8C80FC5787D0077BB8C /* m4a.icns */,
+ CC62B8C90FC5787D0077BB8C /* m4v.icns */,
+ CC62B8CA0FC5787D0077BB8C /* mkv.icns */,
+ CC62B8CB0FC5787D0077BB8C /* movie.icns */,
+ CC62B8CC0FC5787D0077BB8C /* playlist.icns */,
+ CC62B8CD0FC5787D0077BB8C /* rm.icns */,
+ CC62B8CE0FC5787D0077BB8C /* subtitle.icns */,
+ CC62B8CF0FC5787D0077BB8C /* wav.icns */,
F74F13DF02C2A53401EE194C /* vlc.icns */,
- F6E4F90A02D2648B01A80112 /* divx.icns */,
F6E4F90B02D2648B01A80112 /* generic.icns */,
F6E4F90C02D2648B01A80112 /* mpeg.icns */,
- F6E4F90D02D2648B01A80112 /* mpeg1.icns */,
- F6E4F90E02D2648B01A80112 /* mpeg2.icns */,
- F6E4F90F02D2648B01A80112 /* mpeg4.icns */,
- 8E445F8704728A700059A3A7 /* a52.icns */,
- 8E445F8804728A700059A3A7 /* aac.icns */,
- 8E445F8904728A700059A3A7 /* asf.icns */,
- 8E445F8A04728A700059A3A7 /* asx.icns */,
8E445F8B04728A700059A3A7 /* avi.icns */,
- 8E445F8C04728A700059A3A7 /* bin.icns */,
- 8E445F8D04728A700059A3A7 /* cue.icns */,
- C2F2A6FA0958A6E600018C74 /* skip_forward_active_embedded.png */,
- 8E445F8E04728A700059A3A7 /* dat.icns */,
- 8E445F8F04728A700059A3A7 /* dv.icns */,
- 8E445F9004728A700059A3A7 /* m3u.icns */,
8E445F9104728A700059A3A7 /* mov.icns */,
8E445F9204728A700059A3A7 /* mp3.icns */,
- 8E445F9304728A700059A3A7 /* mp4.icns */,
- 8E445F9404728A700059A3A7 /* mpg.icns */,
8E445F9504728A700059A3A7 /* ogg.icns */,
- 8E445F9604728A700059A3A7 /* ogm.icns */,
- 8E445F9704728A700059A3A7 /* pls.icns */,
- 8E445F9804728A700059A3A7 /* srt.icns */,
- 8E445F9904728A700059A3A7 /* sub.icns */,
8E445F9A04728A700059A3A7 /* vob.icns */,
8E445F9B04728A700059A3A7 /* wma.icns */,
8E445F9C04728A700059A3A7 /* wmv.icns */,
8ECA7E520563CD9500DFC000 /* Controller */ = {
isa = PBXGroup;
children = (
+ CC62B9350FC600C40077BB8C /* dudiak */,
+ C2F2A6FA0958A6E600018C74 /* skip_forward_active_embedded.png */,
CC33C2790D2579B2008C4683 /* graphite main window */,
CC33C2740D257994008C4683 /* blue main window */,
CC33C26C0D257958008C4683 /* embedded */,
name = "main window";
sourceTree = "<group>";
};
+ CC62B9350FC600C40077BB8C /* dudiak */ = {
+ isa = PBXGroup;
+ children = (
+ CC62B9520FC600E90077BB8C /* backward_big_down.png */,
+ CC62B9530FC600E90077BB8C /* backward_big.png */,
+ CC62B9540FC600E90077BB8C /* forward_big_down.png */,
+ CC62B9550FC600E90077BB8C /* forward_big.png */,
+ CC62B9560FC600E90077BB8C /* pause_big_down.png */,
+ CC62B9570FC600E90077BB8C /* pause_big.png */,
+ CC62B9580FC600E90077BB8C /* play_big_down.png */,
+ CC62B9590FC600E90077BB8C /* play_big.png */,
+ CC62B9460FC600D20077BB8C /* eq_sm.pdf */,
+ CC62B9470FC600D20077BB8C /* fs_sm.pdf */,
+ CC62B9480FC600D20077BB8C /* list_sm.pdf */,
+ CC62B9490FC600D20077BB8C /* next_sm.pdf */,
+ CC62B94A0FC600D20077BB8C /* prev_sm.pdf */,
+ CC62B94B0FC600D20077BB8C /* stop_sm.pdf */,
+ CC62B9360FC600CB0077BB8C /* sidebarAdd.png */,
+ CC62B9370FC600CB0077BB8C /* sidebarRepeat.png */,
+ CC62B9380FC600CB0077BB8C /* sidebarRepeatOn.png */,
+ CC62B9390FC600CB0077BB8C /* sidebarRepeatOneOn.png */,
+ CC62B93A0FC600CB0077BB8C /* sidebarResizeWidget.png */,
+ CC62B93B0FC600CB0077BB8C /* sidebarShuffle.png */,
+ CC62B93C0FC600CB0077BB8C /* sidebarShuffleOn.png */,
+ CC62B93D0FC600CB0077BB8C /* sidebarStatusAreaBackground.png */,
+ );
+ name = dudiak;
+ sourceTree = "<group>";
+ };
CC6C01A40DDF3E7800C7D754 /* Minimal Mac OS X Classes */ = {
isa = PBXGroup;
children = (
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
+ CC62B95A0FC600E90077BB8C /* backward_big_down.png in Resources */,
+ CC62B95B0FC600E90077BB8C /* backward_big.png in Resources */,
+ CC62B95C0FC600E90077BB8C /* forward_big_down.png in Resources */,
+ CC62B95D0FC600E90077BB8C /* forward_big.png in Resources */,
+ CC62B95E0FC600E90077BB8C /* pause_big_down.png in Resources */,
+ CC62B95F0FC600E90077BB8C /* pause_big.png in Resources */,
+ CC62B9600FC600E90077BB8C /* play_big_down.png in Resources */,
+ CC62B9610FC600E90077BB8C /* play_big.png in Resources */,
+ CC62B94C0FC600D20077BB8C /* eq_sm.pdf in Resources */,
+ CC62B94D0FC600D20077BB8C /* fs_sm.pdf in Resources */,
+ CC62B94E0FC600D20077BB8C /* list_sm.pdf in Resources */,
+ CC62B94F0FC600D20077BB8C /* next_sm.pdf in Resources */,
+ CC62B9500FC600D20077BB8C /* prev_sm.pdf in Resources */,
+ CC62B9510FC600D20077BB8C /* stop_sm.pdf in Resources */,
+ CC62B93E0FC600CB0077BB8C /* sidebarAdd.png in Resources */,
+ CC62B93F0FC600CB0077BB8C /* sidebarRepeat.png in Resources */,
+ CC62B9400FC600CB0077BB8C /* sidebarRepeatOn.png in Resources */,
+ CC62B9410FC600CB0077BB8C /* sidebarRepeatOneOn.png in Resources */,
+ CC62B9420FC600CB0077BB8C /* sidebarResizeWidget.png in Resources */,
+ CC62B9430FC600CB0077BB8C /* sidebarShuffle.png in Resources */,
+ CC62B9440FC600CB0077BB8C /* sidebarShuffleOn.png in Resources */,
+ CC62B9450FC600CB0077BB8C /* sidebarStatusAreaBackground.png in Resources */,
+ CC62B8D00FC5787D0077BB8C /* aiff.icns in Resources */,
+ CC62B8D10FC5787D0077BB8C /* audio.icns in Resources */,
+ CC62B8D20FC5787D0077BB8C /* flv.icns in Resources */,
+ CC62B8D30FC5787D0077BB8C /* m4a.icns in Resources */,
+ CC62B8D40FC5787D0077BB8C /* m4v.icns in Resources */,
+ CC62B8D50FC5787D0077BB8C /* mkv.icns in Resources */,
+ CC62B8D60FC5787D0077BB8C /* movie.icns in Resources */,
+ CC62B8D70FC5787D0077BB8C /* playlist.icns in Resources */,
+ CC62B8D80FC5787D0077BB8C /* rm.icns in Resources */,
+ CC62B8D90FC5787D0077BB8C /* subtitle.icns in Resources */,
+ CC62B8DA0FC5787D0077BB8C /* wav.icns in Resources */,
CC402EB00E00ABBB006A4BA4 /* vlc.icns in Resources */,
- CC402EB10E00ABBB006A4BA4 /* MainMenu.nib in Resources */,
- CC402EB20E00ABBB006A4BA4 /* divx.icns in Resources */,
CC402EB30E00ABBB006A4BA4 /* generic.icns in Resources */,
+ CC402EB10E00ABBB006A4BA4 /* MainMenu.nib in Resources */,
CC402EB40E00ABBB006A4BA4 /* mpeg.icns in Resources */,
- CC402EB50E00ABBB006A4BA4 /* mpeg1.icns in Resources */,
- CC402EB60E00ABBB006A4BA4 /* mpeg2.icns in Resources */,
- CC402EB70E00ABBB006A4BA4 /* mpeg4.icns in Resources */,
CC402EB80E00ABBB006A4BA4 /* InfoPlist.strings in Resources */,
CC402EB90E00ABBB006A4BA4 /* vlc.scriptSuite in Resources */,
CC402EBA0E00ABBB006A4BA4 /* vlc.scriptTerminology in Resources */,
CC402EBB0E00ABBB006A4BA4 /* README.MacOSX.rtf in Resources */,
- CC402EBC0E00ABBB006A4BA4 /* a52.icns in Resources */,
- CC402EBD0E00ABBB006A4BA4 /* aac.icns in Resources */,
- CC402EBE0E00ABBB006A4BA4 /* asf.icns in Resources */,
- CC402EBF0E00ABBB006A4BA4 /* asx.icns in Resources */,
CC402EC00E00ABBB006A4BA4 /* avi.icns in Resources */,
- CC402EC10E00ABBB006A4BA4 /* bin.icns in Resources */,
- CC402EC20E00ABBB006A4BA4 /* cue.icns in Resources */,
- CC402EC30E00ABBB006A4BA4 /* dat.icns in Resources */,
- CC402EC40E00ABBB006A4BA4 /* dv.icns in Resources */,
- CC402EC50E00ABBB006A4BA4 /* m3u.icns in Resources */,
CC402EC60E00ABBB006A4BA4 /* mov.icns in Resources */,
CC402EC70E00ABBB006A4BA4 /* mp3.icns in Resources */,
- CC402EC80E00ABBB006A4BA4 /* mp4.icns in Resources */,
- CC402EC90E00ABBB006A4BA4 /* mpg.icns in Resources */,
CC402ECA0E00ABBB006A4BA4 /* ogg.icns in Resources */,
- CC402ECB0E00ABBB006A4BA4 /* ogm.icns in Resources */,
- CC402ECC0E00ABBB006A4BA4 /* pls.icns in Resources */,
- CC402ECD0E00ABBB006A4BA4 /* srt.icns in Resources */,
- CC402ECE0E00ABBB006A4BA4 /* sub.icns in Resources */,
CC402ECF0E00ABBB006A4BA4 /* vob.icns in Resources */,
CC402ED00E00ABBB006A4BA4 /* wma.icns in Resources */,
CC402ED10E00ABBB006A4BA4 /* wmv.icns in Resources */,
VLC_DEPRECATED_API libvlc_drawable_t
libvlc_media_player_get_drawable ( libvlc_media_player_t *, libvlc_exception_t * );
-/**
- * Set the default video output's parent.
- *
- * This setting will be used as default for any video output.
- *
- * \param p_instance libvlc instance
- * \param drawable the new parent window
- * (see libvlc_media_player_set_drawable() for details)
- * \param p_e an initialized exception pointer
- * @deprecated Use libvlc_media_player_set_drawable
- */
-VLC_DEPRECATED_API void libvlc_video_set_parent( libvlc_instance_t *, libvlc_drawable_t, libvlc_exception_t * );
-
-/**
- * Set the default video output parent.
- *
- * This setting will be used as default for all video outputs.
- *
- * \param p_instance libvlc instance
- * \param drawable the new parent window (Drawable on X11, CGrafPort on MacOSX, HWND on Win32)
- * \param p_e an initialized exception pointer
- * @deprecated Use libvlc_media_player_get_drawable
- */
-VLC_DEPRECATED_API libvlc_drawable_t libvlc_video_get_parent( libvlc_instance_t *, libvlc_exception_t * );
-
-/**
- * Does nothing. Do not use this function.
- */
-VLC_DEPRECATED_API int libvlc_video_reparent( libvlc_media_player_t *, libvlc_drawable_t, libvlc_exception_t * );
-
-/**
- * Resize the current video output window.
- * This might crash. Please use libvlc_video_set_scale() instead.
- *
- * \param p_mi media player instance
- * \param width new width for video output window
- * \param height new height for video output window
- * \param p_e an initialized exception pointer
- * \return the success status (boolean)
- */
-VLC_DEPRECATED_API void libvlc_video_resize( libvlc_media_player_t *, int, int, libvlc_exception_t *);
-
-/**
- * Tell windowless video output to redraw rectangular area (MacOS X only).
- * This might crash. Do not use this function.
- *
- * \param p_mi media player instance
- * \param area coordinates within video drawable
- * \param p_e an initialized exception pointer
- */
-VLC_DEPRECATED_API void libvlc_video_redraw_rectangle( libvlc_media_player_t *, const libvlc_rectangle_t *, libvlc_exception_t * );
-
-/**
- * Set the default video output size.
- * This setting will be used as default for all video outputs.
- *
- * \param p_instance libvlc instance
- * \param width new width for video drawable
- * \param height new height for video drawable
- * \param p_e an initialized exception pointer
- */
-VLC_DEPRECATED_API void libvlc_video_set_size( libvlc_instance_t *, int, int, libvlc_exception_t * );
-
-/**
- * Set the default video output viewport for a windowless video output
- * (MacOS X only). This might crash. Do not use this function.
- *
- * This setting will be used as default for all video outputs.
- *
- * \param p_instance libvlc instance
- * \param p_mi media player instance
- * \param view coordinates within video drawable
- * \param clip coordinates within video drawable
- * \param p_e an initialized exception pointer
- */
-VLC_DEPRECATED_API void libvlc_video_set_viewport( libvlc_instance_t *, libvlc_media_player_t *, const libvlc_rectangle_t *, const libvlc_rectangle_t *, libvlc_exception_t * );
-
-/*
- * This function shall not be used at all. It may lead to crash and race condition.
- */
-VLC_DEPRECATED_API int libvlc_video_destroy( libvlc_media_player_t *, libvlc_exception_t *);
-
/*****************************************************************************
* Playlist (Deprecated)
*****************************************************************************/
* @{
*/
-/**
- * Set the playlist's loop attribute. If set, the playlist runs continuously
- * and wraps around when it reaches the end.
- *
- * \param p_instance the playlist instance
- * \param loop the loop attribute. 1 sets looping, 0 disables it
- * \param p_e an initialized exception pointer
- */
-VLC_DEPRECATED_API void libvlc_playlist_loop( libvlc_instance_t* , int,
- libvlc_exception_t * );
-
/**
* Start playing.
*
VLC_DEPRECATED_API void libvlc_playlist_play( libvlc_instance_t*, int, int,
char **, libvlc_exception_t * );
-/**
- * Toggle the playlist's pause status.
- *
- * If the playlist was running, it is paused. If it was paused, it is resumed.
- *
- * \param p_instance the playlist instance to pause
- * \param p_e an initialized exception pointer
- */
-VLC_DEPRECATED_API void libvlc_playlist_pause( libvlc_instance_t *,
- libvlc_exception_t * );
-
-/**
- * Checks whether the playlist is running
- *
- * \param p_instance the playlist instance
- * \param p_e an initialized exception pointer
- * \return 0 if the playlist is stopped or paused, 1 if it is running
- */
-VLC_DEPRECATED_API int libvlc_playlist_isplaying( libvlc_instance_t *,
- libvlc_exception_t * );
-
-/**
- * Get the number of items in the playlist
- *
- * Expects the playlist instance to be locked already.
- *
- * \param p_instance the playlist instance
- * \param p_e an initialized exception pointer
- * \return the number of items
- */
-VLC_DEPRECATED_API int libvlc_playlist_items_count( libvlc_instance_t *,
- libvlc_exception_t * );
-
-VLC_DEPRECATED_API int libvlc_playlist_get_current_index( libvlc_instance_t *,
- libvlc_exception_t *);
-/**
- * Lock the playlist.
- *
- * \param p_instance the playlist instance
- */
-VLC_DEPRECATED_API void libvlc_playlist_lock( libvlc_instance_t * );
-
-/**
- * Unlock the playlist.
- *
- * \param p_instance the playlist instance
- */
-VLC_DEPRECATED_API void libvlc_playlist_unlock( libvlc_instance_t * );
-
-/**
- * Stop playing.
- *
- * \param p_instance the playlist instance to stop
- * \param p_e an initialized exception pointer
- */
-VLC_DEPRECATED_API void libvlc_playlist_stop( libvlc_instance_t *,
- libvlc_exception_t * );
-
-/**
- * Go to the next playlist item. If the playlist was stopped, playback
- * is started.
- *
- * \param p_instance the playlist instance
- * \param p_e an initialized exception pointer
- */
-VLC_DEPRECATED_API void libvlc_playlist_next( libvlc_instance_t *,
- libvlc_exception_t * );
-
-/**
- * Go to the previous playlist item. If the playlist was stopped, playback
- * is started.
- *
- * \param p_instance the playlist instance
- * \param p_e an initialized exception pointer
- */
-VLC_DEPRECATED_API void libvlc_playlist_prev( libvlc_instance_t *,
- libvlc_exception_t * );
-
-/**
- * Empty a playlist. All items in the playlist are removed.
- *
- * \param p_instance the playlist instance
- * \param p_e an initialized exception pointer
- */
-VLC_DEPRECATED_API void libvlc_playlist_clear( libvlc_instance_t *,
- libvlc_exception_t * );
-
-/**
- * Append an item to the playlist. The item is added at the end. If more
- * advanced options are required, \see libvlc_playlist_add_extended instead.
- *
- * \param p_instance the playlist instance
- * \param psz_uri the URI to open, using VLC format
- * \param psz_name a name that you might want to give or NULL
- * \param p_e an initialized exception pointer
- * \return the identifier of the new item
- */
-VLC_DEPRECATED_API int libvlc_playlist_add( libvlc_instance_t *, const char *,
- const char *, libvlc_exception_t * );
-
-/**
- * Append an item to the playlist. The item is added at the end, with
- * additional input options.
- *
- * \param p_instance the playlist instance
- * \param psz_uri the URI to open, using VLC format
- * \param psz_name a name that you might want to give or NULL
- * \param i_options the number of options to add
- * \param ppsz_options strings representing the options to add
- * \param p_e an initialized exception pointer
- * \return the identifier of the new item
- */
-VLC_DEPRECATED_API int libvlc_playlist_add_extended( libvlc_instance_t *, const char *,
- const char *, int, const char **,
- libvlc_exception_t * );
-
-/**
- * Append an item to the playlist. The item is added at the end, with
- * additional input options from an untrusted source.
- *
- * \param p_instance the playlist instance
- * \param psz_uri the URI to open, using VLC format
- * \param psz_name a name that you might want to give or NULL
- * \param i_options the number of options to add
- * \param ppsz_options strings representing the options to add
- * \param p_e an initialized exception pointer
- * \return the identifier of the new item
- */
-VLC_DEPRECATED_API int libvlc_playlist_add_extended_untrusted( libvlc_instance_t *, const char *,
- const char *, int, const char **,
- libvlc_exception_t * );
-
-/**
- * Delete the playlist item with the given ID.
- *
- * \param p_instance the playlist instance
- * \param i_id the id to remove
- * \param p_e an initialized exception pointer
- * \return 0 in case of success, a non-zero value otherwise
- */
-VLC_DEPRECATED_API int libvlc_playlist_delete_item( libvlc_instance_t *, int,
- libvlc_exception_t * );
-
-/** Get the input that is currently being played by the playlist.
- *
- * \param p_instance the playlist instance to use
- * \param p_e an initialized exception pointern
- * \return a media instance object
- */
-VLC_DEPRECATED_API libvlc_media_player_t * libvlc_playlist_get_media_player(
- libvlc_instance_t *, libvlc_exception_t * );
-
/** @}*/
# ifdef __cplusplus
libvlc_MediaPlayerTitleChanged,
libvlc_MediaPlayerSnapshotTaken,
+ libvlc_MediaPlayerLengthChanged,
/* New event types HERE */
} libvlc_event_type_t;
char* psz_filename ;
} media_player_snapshot_taken ;
+ /* Length changed */
+ struct
+ {
+ libvlc_time_t new_length;
+ } media_player_length_changed;
} u;
} libvlc_event_t;
&& ((p_first)->i_physical_channels == (p_second)->i_physical_channels)\
&& ((p_first)->i_original_channels == (p_second)->i_original_channels) )
-#ifdef WORDS_BIGENDIAN
-# define AOUT_FMT_S16_NE VLC_FOURCC('s','1','6','b')
-# define AOUT_FMT_U16_NE VLC_FOURCC('u','1','6','b')
-# define AOUT_FMT_S24_NE VLC_FOURCC('s','2','4','b')
-# define AOUT_FMT_S32_NE VLC_FOURCC('s','3','2','b')
-# define AOUT_FMT_SPDIF_NE VLC_FOURCC('s','p','d','b')
-#else
-# define AOUT_FMT_S16_NE VLC_FOURCC('s','1','6','l')
-# define AOUT_FMT_U16_NE VLC_FOURCC('u','1','6','l')
-# define AOUT_FMT_S24_NE VLC_FOURCC('s','2','4','l')
-# define AOUT_FMT_S32_NE VLC_FOURCC('s','3','2','l')
-# define AOUT_FMT_SPDIF_NE VLC_FOURCC('s','p','d','i')
-#endif
-
-#define AOUT_FMT_NON_LINEAR( p_format ) \
- ( ((p_format)->i_format == VLC_FOURCC('s','p','d','i')) \
- || ((p_format)->i_format == VLC_FOURCC('s','p','d','b')) \
- || ((p_format)->i_format == VLC_FOURCC('a','5','2',' ')) \
- || ((p_format)->i_format == VLC_FOURCC('d','t','s',' ')) )
+#define VLC_CODEC_SPDIFL VLC_FOURCC('s','p','d','i')
+#define VLC_CODEC_SPDIFB VLC_FOURCC('s','p','d','b')
+
+#define AOUT_FMT_NON_LINEAR( p_format ) \
+ ( ((p_format)->i_format == VLC_CODEC_SPDIFL) \
+ || ((p_format)->i_format == VLC_CODEC_SPDIFB) \
+ || ((p_format)->i_format == VLC_CODEC_A52) \
+ || ((p_format)->i_format == VLC_CODEC_DTS) )
/* This is heavily borrowed from libmad, by Robert Leslie <rob@mars.org> */
/*
#include <vlc_block.h>
#include <vlc_es.h>
+#include <vlc_picture.h>
+#include <vlc_subpicture.h>
/**
* \file
#ifndef VLC_CODECS_H
#define VLC_CODECS_H 1
+#include <vlc_fourcc.h>
/**
* \file
* This file defines codec related structures needed by the demuxers and decoders
{ WAVE_FORMAT_PCM, VLC_FOURCC( 'a', 'r', 'a', 'w' ), "Raw audio" },
{ WAVE_FORMAT_ADPCM, VLC_FOURCC( 'm', 's', 0x00,0x02), "ADPCM" },
{ WAVE_FORMAT_IEEE_FLOAT, VLC_FOURCC( 'a', 'f', 'l', 't' ), "IEEE Float audio" },
- { WAVE_FORMAT_ALAW, VLC_FOURCC( 'a', 'l', 'a', 'w' ), "A-Law" },
- { WAVE_FORMAT_MULAW, VLC_FOURCC( 'm', 'l', 'a', 'w' ), "Mu-Law" },
+ { WAVE_FORMAT_ALAW, VLC_CODEC_ALAW, "A-Law" },
+ { WAVE_FORMAT_MULAW, VLC_CODEC_MULAW, "Mu-Law" },
{ WAVE_FORMAT_IMA_ADPCM, VLC_FOURCC( 'm', 's', 0x00,0x11), "Ima-ADPCM" },
- { WAVE_FORMAT_GSM610, VLC_FOURCC( 'a', 'g', 's', 'm' ), "Microsoft WAV GSM" },
- { WAVE_FORMAT_G726, VLC_FOURCC( 'g', '7', '2', '6' ), "G.726 ADPCM" },
- { WAVE_FORMAT_MPEGLAYER3, VLC_FOURCC( 'm', 'p', 'g', 'a' ), "Mpeg Audio" },
- { WAVE_FORMAT_MPEG, VLC_FOURCC( 'm', 'p', 'g', 'a' ), "Mpeg Audio" },
- { WAVE_FORMAT_A52, VLC_FOURCC( 'a', '5', '2', ' ' ), "A/52" },
- { WAVE_FORMAT_WMA1, VLC_FOURCC( 'w', 'm', 'a', '1' ), "Window Media Audio v1" },
- { WAVE_FORMAT_WMA2, VLC_FOURCC( 'w', 'm', 'a', '2' ), "Window Media Audio v2" },
- { WAVE_FORMAT_WMA2, VLC_FOURCC( 'w', 'm', 'a', ' ' ), "Window Media Audio v2" },
- { WAVE_FORMAT_WMAP, VLC_FOURCC( 'w', 'm', 'a', 'p' ), "Window Media Audio 9 Professional" },
- { WAVE_FORMAT_WMAL, VLC_FOURCC( 'w', 'm', 'a', 'l' ), "Window Media Audio 9 Lossless" },
- { WAVE_FORMAT_WMAS, VLC_FOURCC( 'w', 'm', 'a', 's' ), "Window Media Audio 9 Speech" },
+ { WAVE_FORMAT_GSM610, VLC_CODEC_GSM_MS, "Microsoft WAV GSM" },
+ { WAVE_FORMAT_G726, VLC_CODEC_ADPCM_G726, "G.726 ADPCM" },
+ { WAVE_FORMAT_MPEGLAYER3, VLC_CODEC_MPGA, "Mpeg Audio" },
+ { WAVE_FORMAT_MPEG, VLC_CODEC_MPGA, "Mpeg Audio" },
+ { WAVE_FORMAT_A52, VLC_CODEC_A52, "A/52" },
+ { WAVE_FORMAT_WMA1, VLC_CODEC_WMA1, "Window Media Audio v1" },
+ { WAVE_FORMAT_WMA2, VLC_CODEC_WMA2, "Window Media Audio v2" },
+ { WAVE_FORMAT_WMAP, VLC_CODEC_WMAP, "Window Media Audio 9 Professional" },
+ { WAVE_FORMAT_WMAL, VLC_CODEC_WMAL, "Window Media Audio 9 Lossless" },
+ { WAVE_FORMAT_WMAS, VLC_CODEC_WMAS, "Window Media Audio 9 Speech" },
{ WAVE_FORMAT_DK3, VLC_FOURCC( 'm', 's', 0x00,0x61), "Duck DK3" },
{ WAVE_FORMAT_DK4, VLC_FOURCC( 'm', 's', 0x00,0x62), "Duck DK4" },
- { WAVE_FORMAT_DTS, VLC_FOURCC( 'd', 't', 's', ' ' ), "DTS Coherent Acoustics" },
- { WAVE_FORMAT_DTS_MS, VLC_FOURCC( 'd', 't', 's', ' ' ), "DTS Coherent Acoustics" },
- { WAVE_FORMAT_DIVIO_AAC, VLC_FOURCC( 'm', 'p', '4', 'a' ), "MPEG-4 Audio (Divio)" },
- { WAVE_FORMAT_AAC, VLC_FOURCC( 'm', 'p', '4', 'a' ), "MPEG-4 Audio" },
- { WAVE_FORMAT_FFMPEG_AAC, VLC_FOURCC( 'm', 'p', '4', 'a' ), "MPEG-4 Audio" },
- { WAVE_FORMAT_VORBIS, VLC_FOURCC( 'v', 'o', 'r', 'b' ), "Vorbis Audio" },
+ { WAVE_FORMAT_DTS, VLC_CODEC_DTS, "DTS Coherent Acoustics" },
+ { WAVE_FORMAT_DTS_MS, VLC_CODEC_DTS, "DTS Coherent Acoustics" },
+ { WAVE_FORMAT_DIVIO_AAC, VLC_CODEC_MP4A, "MPEG-4 Audio (Divio)" },
+ { WAVE_FORMAT_AAC, VLC_CODEC_MP4A, "MPEG-4 Audio" },
+ { WAVE_FORMAT_FFMPEG_AAC, VLC_CODEC_MP4A, "MPEG-4 Audio" },
+ { WAVE_FORMAT_VORBIS, VLC_CODEC_VORBIS, "Vorbis Audio" },
{ WAVE_FORMAT_VORB_1, VLC_FOURCC( 'v', 'o', 'r', '1' ), "Vorbis 1 Audio" },
{ WAVE_FORMAT_VORB_1PLUS, VLC_FOURCC( 'v', 'o', '1', '+' ), "Vorbis 1+ Audio" },
{ WAVE_FORMAT_VORB_2, VLC_FOURCC( 'v', 'o', 'r', '2' ), "Vorbis 2 Audio" },
{ WAVE_FORMAT_VORB_2PLUS, VLC_FOURCC( 'v', 'o', '2', '+' ), "Vorbis 2+ Audio" },
{ WAVE_FORMAT_VORB_3, VLC_FOURCC( 'v', 'o', 'r', '3' ), "Vorbis 3 Audio" },
{ WAVE_FORMAT_VORB_3PLUS, VLC_FOURCC( 'v', 'o', '3', '+' ), "Vorbis 3+ Audio" },
- { WAVE_FORMAT_SPEEX, VLC_FOURCC( 's', 'p', 'x', ' ' ), "Speex Audio" },
+ { WAVE_FORMAT_SPEEX, VLC_CODEC_SPEEX, "Speex Audio" },
{ WAVE_FORMAT_UNKNOWN, VLC_FOURCC( 'u', 'n', 'd', 'f' ), "Unknown" }
};
if( ppsz_name ) *ppsz_name = sub_format_tag_to_fourcc[i].psz_name;
}
-/**
- * Structure to hold information concerning subtitles.
- * Used between demuxers and decoders of subtitles.
- */
-typedef struct es_sys_t
-{
- char *psz_header; /* for 'ssa ' and 'subt' */
-
- /* for spudec */
- unsigned int i_orig_height;
- unsigned int i_orig_width;
- unsigned int i_origin_x;
- unsigned int i_origin_y;
- unsigned int i_scale_h;
- unsigned int i_scale_v;
- unsigned int i_alpha;
- bool b_smooth;
- mtime_t i_fade_in;
- mtime_t i_fade_out;
- unsigned int i_align;
- mtime_t i_time_offset;
- bool b_forced_subs;
- unsigned int palette[16];
- unsigned int colors[4];
-
-} subtitle_data_t;
-
#endif /* "codecs.h" */
typedef struct config_category_t config_category_t;
-/* Interface */
-typedef struct intf_thread_t intf_thread_t;
-typedef struct intf_sys_t intf_sys_t;
-typedef struct intf_msg_t intf_msg_t;
-typedef struct user_widget_t user_widget_t;
-
/* Input */
typedef struct input_thread_t input_thread_t;
typedef struct input_thread_sys_t input_thread_sys_t;
/* FIXME: i'm not too sure about this include but it fixes compilation of
* video chromas -- dionoea */
#include "vlc_common.h"
+#include <vlc_fourcc.h>
/**
* \file
uint8_t i_flavor;
};
-#ifdef WORDS_BIGENDIAN
-# define AUDIO_FMT_S16_NE VLC_FOURCC('s','1','6','b')
-# define AUDIO_FMT_U16_NE VLC_FOURCC('u','1','6','b')
-#else
-# define AUDIO_FMT_S16_NE VLC_FOURCC('s','1','6','l')
-# define AUDIO_FMT_U16_NE VLC_FOURCC('u','1','6','l')
-#endif
-
/**
* video format description
*/
p_src->p_palette = NULL;
}
+/**
+ * It will fill up a video_format_tvideo_format_t using the given arguments.
+ * Becarefull that the video_format_t must already be initialized.
+ */
+VLC_EXPORT( void, video_format_Setup, ( video_format_t *, vlc_fourcc_t i_chroma, int i_width, int i_height, int i_aspect ) );
+
/**
* subtitles format description
*/
*/
struct es_format_t
{
- int i_cat; /**< ES category @see es_format_category_e */
- vlc_fourcc_t i_codec; /**< FOURCC value as used in vlc */
+ int i_cat; /**< ES category @see es_format_category_e */
+ vlc_fourcc_t i_codec; /**< FOURCC value as used in vlc */
+ vlc_fourcc_t i_original_fourcc; /**< original FOURCC from the container */
int i_id; /**< es identifier, where means
-1: let the core mark the right id
#define VLC_FILTER_H 1
#include <vlc_es.h>
+#include <vlc_picture.h>
+#include <vlc_subpicture.h>
/**
* \file
--- /dev/null
+/*****************************************************************************
+ * vlc_fourcc.h: Definition of various FOURCC and helpers
+ *****************************************************************************
+ * Copyright (C) 2009 Laurent Aimar
+ * $Id$
+ *
+ * Authors: Laurent Aimar <fenrir _AT_ videolan _DOT_ com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
+ *****************************************************************************/
+
+#ifndef VLC_FOURCC_H
+#define VLC_FOURCC_H 1
+
+#include <vlc_common.h>
+#include <vlc_es.h>
+
+/* Video codec */
+#define VLC_CODEC_MPGV VLC_FOURCC('m','p','g','v')
+#define VLC_CODEC_MP4V VLC_FOURCC('m','p','4','v')
+#define VLC_CODEC_DIV1 VLC_FOURCC('D','I','V','1')
+#define VLC_CODEC_DIV2 VLC_FOURCC('D','I','V','2')
+#define VLC_CODEC_DIV3 VLC_FOURCC('D','I','V','3')
+#define VLC_CODEC_SVQ1 VLC_FOURCC('S','V','Q','1')
+#define VLC_CODEC_SVQ3 VLC_FOURCC('S','V','Q','3')
+#define VLC_CODEC_H264 VLC_FOURCC('h','2','6','4')
+#define VLC_CODEC_H263 VLC_FOURCC('h','2','6','3')
+#define VLC_CODEC_H263I VLC_FOURCC('I','2','6','3')
+#define VLC_CODEC_H263P VLC_FOURCC('I','L','V','R')
+#define VLC_CODEC_FLV1 VLC_FOURCC('F','L','V','1')
+#define VLC_CODEC_H261 VLC_FOURCC('h','2','6','1')
+#define VLC_CODEC_MJPG VLC_FOURCC('M','J','P','G')
+#define VLC_CODEC_MJPGB VLC_FOURCC('m','j','p','b')
+#define VLC_CODEC_LJPG VLC_FOURCC('L','J','P','G')
+#define VLC_CODEC_WMV1 VLC_FOURCC('W','M','V','1')
+#define VLC_CODEC_WMV2 VLC_FOURCC('W','M','V','2')
+#define VLC_CODEC_WMV3 VLC_FOURCC('W','M','V','3')
+#define VLC_CODEC_WMVA VLC_FOURCC('W','M','V','A')
+#define VLC_CODEC_VC1 VLC_FOURCC('V','C','-','1')
+#define VLC_CODEC_THEORA VLC_FOURCC('t','h','e','o')
+#define VLC_CODEC_TARKIN VLC_FOURCC('t','a','r','k')
+#define VLC_CODEC_SNOW VLC_FOURCC('S','N','O','W')
+#define VLC_CODEC_DIRAC VLC_FOURCC('d','r','a','c')
+#define VLC_CODEC_CAVS VLC_FOURCC('C','A','V','S')
+#define VLC_CODEC_NUV VLC_FOURCC('N','J','P','G')
+#define VLC_CODEC_RV10 VLC_FOURCC('R','V','1','0')
+#define VLC_CODEC_RV13 VLC_FOURCC('R','V','1','3')
+#define VLC_CODEC_RV20 VLC_FOURCC('R','V','2','0')
+#define VLC_CODEC_RV30 VLC_FOURCC('R','V','3','0')
+#define VLC_CODEC_RV40 VLC_FOURCC('R','V','4','0')
+#define VLC_CODEC_VP3 VLC_FOURCC('V','P','3',' ')
+#define VLC_CODEC_VP5 VLC_FOURCC('V','P','5',' ')
+#define VLC_CODEC_VP6 VLC_FOURCC('V','P','6','2')
+#define VLC_CODEC_VP6F VLC_FOURCC('V','P','6','F')
+#define VLC_CODEC_VP6A VLC_FOURCC('V','P','6','A')
+#define VLC_CODEC_MSVIDEO1 VLC_FOURCC('M','S','V','C')
+#define VLC_CODEC_FLIC VLC_FOURCC('F','L','I','C')
+#define VLC_CODEC_SP5X VLC_FOURCC('S','P','5','X')
+#define VLC_CODEC_DV VLC_FOURCC('d','v',' ',' ')
+#define VLC_CODEC_MSRLE VLC_FOURCC('m','r','l','e')
+#define VLC_CODEC_INDEO3 VLC_FOURCC('I','V','3','1')
+#define VLC_CODEC_HUFFYUV VLC_FOURCC('H','F','Y','U')
+#define VLC_CODEC_FFVHUFF VLC_FOURCC('F','F','V','H')
+#define VLC_CODEC_ASV1 VLC_FOURCC('A','S','V','1')
+#define VLC_CODEC_ASV2 VLC_FOURCC('A','S','V','2')
+#define VLC_CODEC_FFV1 VLC_FOURCC('F','F','V','1')
+#define VLC_CODEC_VCR1 VLC_FOURCC('V','C','R','1')
+#define VLC_CODEC_CLJR VLC_FOURCC('C','L','J','R')
+#define VLC_CODEC_RPZA VLC_FOURCC('r','p','z','a')
+#define VLC_CODEC_SMC VLC_FOURCC('s','m','c',' ')
+#define VLC_CODEC_CINEPAK VLC_FOURCC('C','V','I','D')
+#define VLC_CODEC_TSCC VLC_FOURCC('T','S','C','C')
+#define VLC_CODEC_CSCD VLC_FOURCC('C','S','C','D')
+#define VLC_CODEC_ZMBV VLC_FOURCC('Z','M','B','V')
+#define VLC_CODEC_VMNC VLC_FOURCC('V','M','n','c')
+#define VLC_CODEC_FRAPS VLC_FOURCC('F','P','S','1')
+#define VLC_CODEC_TRUEMOTION1 VLC_FOURCC('D','U','C','K')
+#define VLC_CODEC_TRUEMOTION2 VLC_FOURCC('T','M','2','0')
+#define VLC_CODEC_QTRLE VLC_FOURCC('r','l','e',' ')
+#define VLC_CODEC_QDRAW VLC_FOURCC('q','d','r','w')
+#define VLC_CODEC_QPEG VLC_FOURCC('Q','P','E','G')
+#define VLC_CODEC_ULTI VLC_FOURCC('U','L','T','I')
+#define VLC_CODEC_VIXL VLC_FOURCC('V','I','X','L')
+#define VLC_CODEC_LOCO VLC_FOURCC('L','O','C','O')
+#define VLC_CODEC_WNV1 VLC_FOURCC('W','N','V','1')
+#define VLC_CODEC_AASC VLC_FOURCC('A','A','S','C')
+#define VLC_CODEC_INDEO2 VLC_FOURCC('I','V','2','0')
+#define VLC_CODEC_FLASHSV VLC_FOURCC('F','S','V','1')
+#define VLC_CODEC_KMVC VLC_FOURCC('K','M','V','C')
+#define VLC_CODEC_SMACKVIDEO VLC_FOURCC('S','M','K','2')
+#define VLC_CODEC_DNXHD VLC_FOURCC('A','V','d','n')
+#define VLC_CODEC_8BPS VLC_FOURCC('8','B','P','S')
+#define VLC_CODEC_MIMIC VLC_FOURCC('M','L','2','O')
+#define VLC_CODEC_INTERPLAY VLC_FOURCC('i','m','v','e')
+#define VLC_CODEC_IDCIN VLC_FOURCC('I','D','C','I')
+#define VLC_CODEC_4XM VLC_FOURCC('4','X','M','V')
+#define VLC_CODEC_ROQ VLC_FOURCC('R','o','Q','v')
+#define VLC_CODEC_MDEC VLC_FOURCC('M','D','E','C')
+#define VLC_CODEC_VMDVIDEO VLC_FOURCC('V','M','D','V')
+#define VLC_CODEC_CDG VLC_FOURCC('C','D','G',' ')
+
+/* Planar YUV 4:2:0 Y:V:U */
+#define VLC_CODEC_YV12 VLC_FOURCC('Y','V','1','2')
+/* Planar YUV 4:1:0 Y:U:V */
+#define VLC_CODEC_I410 VLC_FOURCC('I','4','1','0')
+/* Planar YUV 4:1:1 Y:U:V */
+#define VLC_CODEC_I411 VLC_FOURCC('I','4','1','1')
+/* Planar YUV 4:2:0 Y:U:V */
+#define VLC_CODEC_I420 VLC_FOURCC('I','4','2','0')
+/* Planar YUV 4:2:2 Y:U:V */
+#define VLC_CODEC_I422 VLC_FOURCC('I','4','2','2')
+/* Planar YUV 4:4:0 Y:U:V */
+#define VLC_CODEC_I440 VLC_FOURCC('I','4','4','0')
+/* Planar YUV 4:4:4 Y:U:V */
+#define VLC_CODEC_I444 VLC_FOURCC('I','4','4','4')
+/* Planar YUV 4:2:0 Y:U:V full scale */
+#define VLC_CODEC_J420 VLC_FOURCC('J','4','2','0')
+/* Planar YUV 4:2:2 Y:U:V full scale */
+#define VLC_CODEC_J422 VLC_FOURCC('J','4','2','2')
+/* Planar YUV 4:4:0 Y:U:V full scale */
+#define VLC_CODEC_J440 VLC_FOURCC('J','4','4','0')
+/* Planar YUV 4:4:4 Y:U:V full scale */
+#define VLC_CODEC_J444 VLC_FOURCC('J','4','4','4')
+/* Palettized YUV with palette element Y:U:V:A */
+#define VLC_CODEC_YUVP VLC_FOURCC('Y','U','V','P')
+/* Planar YUV 4:4:4 Y:U:V:A */
+#define VLC_CODEC_YUVA VLC_FOURCC('Y','U','V','A')
+/* Palettized RGB with palette element R:G:B */
+#define VLC_CODEC_RGBP VLC_FOURCC('R','G','B','P')
+/* 8 bits RGB */
+#define VLC_CODEC_RGB8 VLC_FOURCC('R','G','B','2')
+/* 15 bits RGB stored on 16 bits */
+#define VLC_CODEC_RGB15 VLC_FOURCC('R','V','1','5')
+/* 16 bits RGB store on a 16 bits */
+#define VLC_CODEC_RGB16 VLC_FOURCC('R','V','1','6')
+/* 24 bits RGB */
+#define VLC_CODEC_RGB24 VLC_FOURCC('R','V','2','4')
+/* 32 bits RGB */
+#define VLC_CODEC_RGB32 VLC_FOURCC('R','V','3','2')
+/* 32 bits VLC RGBA */
+#define VLC_CODEC_RGBA VLC_FOURCC('R','G','B','A')
+/* 8 bits grey */
+#define VLC_CODEC_GREY VLC_FOURCC('G','R','E','Y')
+/* Packed YUV 4:2:2, U:Y:V:Y */
+#define VLC_CODEC_UYVY VLC_FOURCC('U','Y','V','Y')
+/* Packed YUV 4:2:2, V:Y:U:Y */
+#define VLC_CODEC_VYUY VLC_FOURCC('V','Y','U','Y')
+/* Packed YUV 4:2:2, Y:U:Y:V */
+#define VLC_CODEC_YUYV VLC_FOURCC('Y','U','Y','2')
+/* Packed YUV 4:2:2, Y:V:Y:U */
+#define VLC_CODEC_YVYU VLC_FOURCC('Y','V','Y','U')
+/* Packed YUV 2:1:1, Y:U:Y:V */
+#define VLC_CODEC_Y211 VLC_FOURCC('Y','2','1','1')
+/* Planar Y, packed UV, from Matrox */
+#define VLC_CODEC_YMGA VLC_FOURCC('Y','M','G','A')
+/* Packed YUV 4:2:2, U:Y:V:Y, reverted */
+#define VLC_CODEC_CYUV VLC_FOURCC('c','y','u','v')
+/* 10-bit 4:2:2 Component YCbCr */
+#define VLC_CODEC_V210 VLC_FOURCC('v','2','1','0')
+
+/* Image codec (video) */
+#define VLC_CODEC_PNG VLC_FOURCC('p','n','g',' ')
+#define VLC_CODEC_PPM VLC_FOURCC('p','p','m',' ')
+#define VLC_CODEC_PGM VLC_FOURCC('p','g','m',' ')
+#define VLC_CODEC_PGMYUV VLC_FOURCC('p','g','m','y')
+#define VLC_CODEC_PAM VLC_FOURCC('p','a','m',' ')
+#define VLC_CODEC_JPEG VLC_FOURCC('j','p','e','g')
+#define VLC_CODEC_JPEGLS VLC_FOURCC('M','J','L','S')
+#define VLC_CODEC_BMP VLC_FOURCC('b','m','p',' ')
+#define VLC_CODEC_TIFF VLC_FOURCC('t','i','f','f')
+#define VLC_CODEC_GIF VLC_FOURCC('g','i','f',' ')
+#define VLC_CODEC_TARGA VLC_FOURCC('t','g','a',' ')
+#define VLC_CODEC_SGI VLC_FOURCC('s','g','i',' ')
+#define VLC_CODEC_PNM VLC_FOURCC('p','n','m',' ')
+#define VLC_CODEC_PCX VLC_FOURCC('p','c','x',' ')
+
+
+/* Audio codec */
+#define VLC_CODEC_MPGA VLC_FOURCC('m','p','g','a')
+#define VLC_CODEC_MP4A VLC_FOURCC('m','p','4','a')
+#define VLC_CODEC_A52 VLC_FOURCC('a','5','2',' ')
+#define VLC_CODEC_EAC3 VLC_FOURCC('e','a','c','3')
+#define VLC_CODEC_DTS VLC_FOURCC('d','t','s',' ')
+#define VLC_CODEC_WMA1 VLC_FOURCC('W','M','A','1')
+#define VLC_CODEC_WMA2 VLC_FOURCC('W','M','A','2')
+#define VLC_CODEC_WMAP VLC_FOURCC('W','M','A','P')
+#define VLC_CODEC_WMAL VLC_FOURCC('W','M','A','L')
+#define VLC_CODEC_WMAS VLC_FOURCC('W','M','A','S')
+#define VLC_CODEC_FLAC VLC_FOURCC('f','l','a','c')
+#define VLC_CODEC_MLP VLC_FOURCC('m','l','p',' ')
+#define VLC_CODEC_TRUEHD VLC_FOURCC('t','r','h','d')
+#define VLC_CODEC_DVAUDIO VLC_FOURCC('d','v','a','u')
+#define VLC_CODEC_SPEEX VLC_FOURCC('s','p','x',' ')
+#define VLC_CODEC_VORBIS VLC_FOURCC('v','o','r','b')
+#define VLC_CODEC_MACE3 VLC_FOURCC('M','A','C','3')
+#define VLC_CODEC_MACE6 VLC_FOURCC('M','A','C','6')
+#define VLC_CODEC_MUSEPACK7 VLC_FOURCC('M','P','C',' ')
+#define VLC_CODEC_MUSEPACK8 VLC_FOURCC('M','P','C','K')
+#define VLC_CODEC_RA_144 VLC_FOURCC('1','4','_','4')
+#define VLC_CODEC_RA_288 VLC_FOURCC('2','8','_','8')
+#define VLC_CODEC_ADPCM_4XM VLC_FOURCC('4','x','m','a')
+#define VLC_CODEC_ADPCM_EA VLC_FOURCC('A','D','E','A')
+#define VLC_CODEC_INTERPLAY_DPCM VLC_FOURCC('i','d','p','c')
+#define VLC_CODEC_ROQ_DPCM VLC_FOURCC('R','o','Q','a')
+#define VLC_CODEC_DSICINAUDIO VLC_FOURCC('D','C','I','A')
+#define VLC_CODEC_ADPCM_XA VLC_FOURCC('x','a',' ',' ')
+#define VLC_CODEC_ADPCM_ADX VLC_FOURCC('a','d','x',' ')
+#define VLC_CODEC_ADPCM_IMA_WS VLC_FOURCC('A','I','W','S')
+#define VLC_CODEC_VMDAUDIO VLC_FOURCC('v','m','d','a')
+#define VLC_CODEC_ADPCM_G726 VLC_FOURCC('g','7','2','6')
+#define VLC_CODEC_AMR_NB VLC_FOURCC('s','a','m','r')
+#define VLC_CODEC_AMR_WB VLC_FOURCC('s','a','w','b')
+#define VLC_CODEC_ALAC VLC_FOURCC('a','l','a','c')
+#define VLC_CODEC_QDM2 VLC_FOURCC('Q','D','M','2')
+#define VLC_CODEC_COOK VLC_FOURCC('c','o','o','k')
+#define VLC_CODEC_TTA VLC_FOURCC('T','T','A','1')
+#define VLC_CODEC_SHORTEN VLC_FOURCC('s','h','n',' ')
+#define VLC_CODEC_WAVPACK VLC_FOURCC('W','V','P','K')
+#define VLC_CODEC_GSM VLC_FOURCC('g','s','m',' ')
+#define VLC_CODEC_GSM_MS VLC_FOURCC('a','g','s','m')
+#define VLC_CODEC_ATRAC3 VLC_FOURCC('a','t','r','c')
+#define VLC_CODEC_SONIC VLC_FOURCC('S','O','N','C')
+#define VLC_CODEC_IMC VLC_FOURCC(0x1,0x4,0x0,0x0)
+#define VLC_CODEC_TRUESPEECH VLC_FOURCC(0x22,0x0,0x0,0x0)
+#define VLC_CODEC_NELLYMOSER VLC_FOURCC('N','E','L','L')
+#define VLC_CODEC_APE VLC_FOURCC('A','P','E',' ')
+#define VLC_CODEC_QCELP VLC_FOURCC('Q','c','l','p')
+#define VLC_CODEC_302M VLC_FOURCC('3','0','2','m')
+#define VLC_CODEC_DVD_LPCM VLC_FOURCC('l','p','c','m')
+#define VLC_CODEC_BD_LPCM VLC_FOURCC('b','p','c','m')
+#define VLC_CODEC_SDDS VLC_FOURCC('s','d','d','s')
+#define VLC_CODEC_MIDI VLC_FOURCC('M','I','D','I')
+#define VLC_CODEC_S8 VLC_FOURCC('s','8',' ',' ')
+#define VLC_CODEC_U8 VLC_FOURCC('u','8',' ',' ')
+#define VLC_CODEC_S16L VLC_FOURCC('s','1','6','l')
+#define VLC_CODEC_S16B VLC_FOURCC('s','1','6','b')
+#define VLC_CODEC_U16L VLC_FOURCC('u','1','6','l')
+#define VLC_CODEC_U16B VLC_FOURCC('u','1','6','b')
+#define VLC_CODEC_S24L VLC_FOURCC('s','2','4','l')
+#define VLC_CODEC_S24B VLC_FOURCC('s','2','4','b')
+#define VLC_CODEC_U24L VLC_FOURCC('u','2','4','l')
+#define VLC_CODEC_U24B VLC_FOURCC('u','2','4','b')
+#define VLC_CODEC_S32L VLC_FOURCC('s','3','2','l')
+#define VLC_CODEC_S32B VLC_FOURCC('s','3','2','b')
+#define VLC_CODEC_U32L VLC_FOURCC('u','3','2','l')
+#define VLC_CODEC_U32B VLC_FOURCC('u','3','2','b')
+#define VLC_CODEC_ALAW VLC_FOURCC('a','l','a','w')
+#define VLC_CODEC_MULAW VLC_FOURCC('m','l','a','w')
+#define VLC_CODEC_S24DAUD VLC_FOURCC('d','a','u','d')
+#define VLC_CODEC_FI32 VLC_FOURCC('f','i','3','2')
+#define VLC_CODEC_FL32 VLC_FOURCC('f','l','3','2')
+#define VLC_CODEC_FL64 VLC_FOURCC('f','l','6','4')
+
+/* Subtitle */
+#define VLC_CODEC_SPU VLC_FOURCC('s','p','u',' ')
+#define VLC_CODEC_DVBS VLC_FOURCC('d','v','b','s')
+#define VLC_CODEC_SUBT VLC_FOURCC('s','u','b','t')
+#define VLC_CODEC_XSUB VLC_FOURCC('X','S','U','B')
+#define VLC_CODEC_SSA VLC_FOURCC('s','s','a',' ')
+#define VLC_CODEC_TEXT VLC_FOURCC('T','E','X','T')
+#define VLC_CODEC_TELETEXT VLC_FOURCC('t','e','l','x')
+#define VLC_CODEC_KATE VLC_FOURCC('k','a','t','e')
+#define VLC_CODEC_CMML VLC_FOURCC('c','m','m','l')
+#define VLC_CODEC_ITU_T140 VLC_FOURCC('t','1','4','0')
+#define VLC_CODEC_USF VLC_FOURCC('u','s','f',' ')
+#define VLC_CODEC_OGT VLC_FOURCC('o','g','t',' ')
+#define VLC_CODEC_CVD VLC_FOURCC('c','v','d',' ')
+
+
+/* Special endian dependant values
+ * The suffic N means Native
+ * The suffix I means Inverted (ie non native) */
+#ifdef WORDS_BIGENDIAN
+# define VLC_CODEC_S16N VLC_CODEC_S16B
+# define VLC_CODEC_U16N VLC_CODEC_U16B
+# define VLC_CODEC_S24N VLC_CODEC_S24B
+# define VLC_CODEC_S32N VLC_CODEC_S32B
+
+# define VLC_CODEC_S16I VLC_CODEC_S16L
+# define VLC_CODEC_U16I VLC_CODEC_U16L
+# define VLC_CODEC_S24I VLC_CODEC_S24L
+# define VLC_CODEC_S32I VLC_CODEC_S32L
+#else
+# define VLC_CODEC_S16N VLC_CODEC_S16L
+# define VLC_CODEC_U16N VLC_CODEC_U16L
+# define VLC_CODEC_S24N VLC_CODEC_S24L
+# define VLC_CODEC_S32N VLC_CODEC_S32L
+
+# define VLC_CODEC_S16I VLC_CODEC_S16B
+# define VLC_CODEC_U16I VLC_CODEC_U16B
+# define VLC_CODEC_S24I VLC_CODEC_S24B
+# define VLC_CODEC_S32I VLC_CODEC_S32B
+#endif
+
+/* Non official codecs, used to force a profile in an encoder */
+/* MPEG-1 video */
+#define VLC_CODEC_MP1V VLC_FOURCC('m','p','1','v')
+/* MPEG-2 video */
+#define VLC_CODEC_MP2V VLC_FOURCC('m','p','2','v')
+/* MPEG-I/II layer 3 audio */
+#define VLC_CODEC_MP3 VLC_FOURCC('m','p','3',' ')
+
+/**
+ * It returns the codec associated to a fourcc within a ES category.
+ *
+ * If not found, it will return the given fourcc.
+ * If found, it will allways be one of the VLC_CODEC_ defined above.
+ *
+ * You may use UNKNOWN_ES for the ES category if you don't have the information.
+ */
+VLC_EXPORT( vlc_fourcc_t, vlc_fourcc_GetCodec, ( int i_cat, vlc_fourcc_t i_fourcc ) );
+
+/**
+ * It returns the codec associated to a fourcc store in a zero terminated
+ * string.
+ *
+ * If the string is NULL or does not have exactly 4 charateres, it will
+ * return 0, otherwise it behaves like vlc_fourcc_GetCodec.
+ *
+ * Provided for convenience.
+ */
+VLC_EXPORT( vlc_fourcc_t, vlc_fourcc_GetCodecFromString, ( int i_cat, const char * ) );
+
+/**
+ * It convert the gives fourcc to an audio codec when possible.
+ *
+ * The fourcc converted are aflt, araw/pcm , twos, sowt. When an incompatible i_bits
+ * is detected, 0 is returned.
+ * The other fourcc goes through vlc_fourcc_GetCodec and i_bits is not checked.
+ */
+VLC_EXPORT( vlc_fourcc_t, vlc_fourcc_GetCodecAudio, ( vlc_fourcc_t i_fourcc, int i_bits ) );
+
+/**
+ * It returns the description of the given fourcc or NULL if not found.
+ *
+ * You may use UNKNOWN_ES for the ES category if you don't have the information.
+ */
+VLC_EXPORT( const char *, vlc_fourcc_GetDescription, ( int i_cat, vlc_fourcc_t i_fourcc ) );
+
+#endif /* _VLC_FOURCC_H */
+
/* "rate" has changed */
INPUT_EVENT_RATE,
- /* At least one of "position" or "time" or "length" has changed */
- INPUT_EVENT_TIMES,
+ /* At least one of "position" or "time" */
+ INPUT_EVENT_POSITION,
+
+ /* "length" has changed */
+ INPUT_EVENT_LENGTH,
/* A title has been added or removed or selected.
* It imply that chapter has changed (not chapter event is sent) */
* @{
*/
+typedef struct intf_sys_t intf_sys_t;
+
/** Describe all interface-specific data of the interface thread */
-struct intf_thread_t
+typedef struct intf_thread_t
{
VLC_COMMON_MEMBERS
+ struct intf_thread_t *p_next; /** LibVLC interfaces book keeping */
/* Thread properties and locks */
#if defined( __APPLE__ ) || defined( WIN32 )
bool b_should_run_on_first_thread;
/** Interface module */
module_t * p_module;
- void ( *pf_run ) ( intf_thread_t * ); /** Run function */
+ void ( *pf_run ) ( struct intf_thread_t * ); /** Run function */
/** Specific for dialogs providers */
- void ( *pf_show_dialog ) ( intf_thread_t *, int, int,
+ void ( *pf_show_dialog ) ( struct intf_thread_t *, int, int,
intf_dialog_args_t * );
config_chain_t *p_cfg;
-};
+} intf_thread_t;
/** \brief Arguments passed to a dialogs provider
* This describes the arguments passed to the dialogs provider. They are
/*****************************************************************************
* Prototypes
*****************************************************************************/
-#define intf_Create(a,b) __intf_Create(VLC_OBJECT(a),b)
-VLC_EXPORT( intf_thread_t *, __intf_Create, ( vlc_object_t *, const char * ) );
-VLC_EXPORT( int, intf_RunThread, ( intf_thread_t * ) );
-VLC_EXPORT( void, intf_StopThread, ( intf_thread_t * ) );
+VLC_EXPORT( int, intf_Create, ( vlc_object_t *, const char * ) );
+#define intf_Create(a,b) intf_Create(VLC_OBJECT(a),b)
#define intf_Eject(a,b) __intf_Eject(VLC_OBJECT(a),b)
VLC_EXPORT( int, __intf_Eject, ( vlc_object_t *, const char * ) );
/*****************************************************************************
* vlc_keys.h: keycode defines
*****************************************************************************
- * Copyright (C) 2003 the VideoLAN team
+ * Copyright (C) 2003-2009 the VideoLAN team
* $Id$
*
* Authors: Sigmund Augdal Helberg <dnumgis@videolan.org>
#ifndef VLC_KEYS_H
#define VLC_KEYS_H 1
+#ifdef __APPLE__
+#include <stdint.h>
+#endif
+
/**
* \file
* This file defines keys, functions and structures for hotkey handling in vlc
#define KEY_MODIFIER_META 0x08000000
#define KEY_MODIFIER_COMMAND 0x10000000
-#define KEY_SPECIAL 0x00FF0000
-#define KEY_LEFT 0x00010000
-#define KEY_RIGHT 0x00020000
-#define KEY_UP 0x00030000
-#define KEY_DOWN 0x00040000
-#define KEY_SPACE 0x00050000
-#define KEY_ENTER 0x00060000
-#define KEY_F1 0x00070000
-#define KEY_F2 0x00080000
-#define KEY_F3 0x00090000
-#define KEY_F4 0x000A0000
-#define KEY_F5 0x000B0000
-#define KEY_F6 0x000C0000
-#define KEY_F7 0x000D0000
-#define KEY_F8 0x000E0000
-#define KEY_F9 0x000F0000
-#define KEY_F10 0x00100000
-#define KEY_F11 0x00110000
-#define KEY_F12 0x00120000
-#define KEY_HOME 0x00130000
-#define KEY_END 0x00140000
-#define KEY_INSERT 0x00150000
-#define KEY_DELETE 0x00160000
-#define KEY_MENU 0x00170000
-#define KEY_ESC 0x00180000
-#define KEY_PAGEUP 0x00190000
-#define KEY_PAGEDOWN 0x001A0000
-#define KEY_TAB 0x001B0000
-#define KEY_BACKSPACE 0x001C0000
-#define KEY_MOUSEWHEELUP 0x001D0000
-#define KEY_MOUSEWHEELDOWN 0x001E0000
-#define KEY_MOUSEWHEELLEFT 0x001F0000
-#define KEY_MOUSEWHEELRIGHT 0x00200000
+#define KEY_UNSET 0x00000000
+/* End of Unicode range: 0x0010FFFF */
+#define KEY_LEFT 0x00210000
+#define KEY_RIGHT 0x00220000
+#define KEY_UP 0x00230000
+#define KEY_DOWN 0x00240000
+#define KEY_SPACE 0x00250000
+#define KEY_ENTER 0x00260000
+#define KEY_F1 0x00270000
+#define KEY_F2 0x00280000
+#define KEY_F3 0x00290000
+#define KEY_F4 0x002A0000
+#define KEY_F5 0x002B0000
+#define KEY_F6 0x002C0000
+#define KEY_F7 0x002D0000
+#define KEY_F8 0x002E0000
+#define KEY_F9 0x002F0000
+#define KEY_F10 0x00300000
+#define KEY_F11 0x00310000
+#define KEY_F12 0x00320000
+#define KEY_HOME 0x00330000
+#define KEY_END 0x00340000
+#define KEY_INSERT 0x00350000
+#define KEY_DELETE 0x00360000
+#define KEY_MENU 0x00370000
+#define KEY_ESC 0x00380000
+#define KEY_PAGEUP 0x00390000
+#define KEY_PAGEDOWN 0x003A0000
+#define KEY_TAB 0x003B0000
+#define KEY_BACKSPACE 0x003C0000
-/* TODO:
- * The media keys are only used in win32. Support for other OSes needs to
- * be added */
-#define KEY_BROWSER_BACK 0x001F0000
-#define KEY_BROWSER_FORWARD 0x00200000
-#define KEY_BROWSER_REFRESH 0x00210000
-#define KEY_BROWSER_STOP 0x00220000
-#define KEY_BROWSER_SEARCH 0x00230000
-#define KEY_BROWSER_FAVORITES 0x00240000
-#define KEY_BROWSER_HOME 0x00250000
-#define KEY_VOLUME_MUTE 0x00260000
-#define KEY_VOLUME_DOWN 0x00270000
-#define KEY_VOLUME_UP 0x00280000
-#define KEY_MEDIA_NEXT_TRACK 0x00290000
-#define KEY_MEDIA_PREV_TRACK 0x002a0000
-#define KEY_MEDIA_STOP 0x002b0000
-#define KEY_MEDIA_PLAY_PAUSE 0x002c0000
+#define KEY_BROWSER_BACK 0x003F0000
+#define KEY_BROWSER_FORWARD 0x00400000
+#define KEY_BROWSER_REFRESH 0x00410000
+#define KEY_BROWSER_STOP 0x00420000
+#define KEY_BROWSER_SEARCH 0x00430000
+#define KEY_BROWSER_FAVORITES 0x00440000
+#define KEY_BROWSER_HOME 0x00450000
+#define KEY_VOLUME_MUTE 0x00460000
+#define KEY_VOLUME_DOWN 0x00470000
+#define KEY_VOLUME_UP 0x00480000
+#define KEY_MEDIA_NEXT_TRACK 0x00490000
+#define KEY_MEDIA_PREV_TRACK 0x004A0000
+#define KEY_MEDIA_STOP 0x004B0000
+#define KEY_MEDIA_PLAY_PAUSE 0x004C0000
-#define KEY_ASCII 0x0000007F
-#define KEY_UNSET 0
+#define KEY_MOUSEWHEELUP 0x00F00000
+#define KEY_MOUSEWHEELDOWN 0x00F10000
+#define KEY_MOUSEWHEELLEFT 0x00F20000
+#define KEY_MOUSEWHEELRIGHT 0x00F30000
typedef struct key_descriptor_s
{
const char *psz_key_string;
- int i_key_code;
+ uint32_t i_key_code;
} key_descriptor_t;
#define ADD_KEY(a) { a, *a }
{ "Meta", KEY_MODIFIER_META },
{ "Command", KEY_MODIFIER_COMMAND }
};
+enum { vlc_num_modifiers=sizeof(vlc_modifiers)
+ /sizeof(struct key_descriptor_s) };
static const struct key_descriptor_s vlc_keys[] =
{
{ "Unset", KEY_UNSET },
- { "Left", KEY_LEFT },
- { "Right", KEY_RIGHT },
- { "Up", KEY_UP },
- { "Down", KEY_DOWN },
- { "Space", KEY_SPACE },
- { "Enter", KEY_ENTER },
- { "F1", KEY_F1 },
- { "F2", KEY_F2 },
- { "F3", KEY_F3 },
- { "F4", KEY_F4 },
- { "F5", KEY_F5 },
- { "F6", KEY_F6 },
- { "F7", KEY_F7 },
- { "F8", KEY_F8 },
- { "F9", KEY_F9 },
- { "F10", KEY_F10 },
- { "F11", KEY_F11 },
- { "F12", KEY_F12 },
- { "Home", KEY_HOME },
- { "End", KEY_END },
- { "Insert", KEY_INSERT },
- { "Delete", KEY_DELETE },
- { "Menu", KEY_MENU },
- { "Esc", KEY_ESC },
- { "Page Up", KEY_PAGEUP },
- { "Page Down", KEY_PAGEDOWN },
- { "Tab", KEY_TAB },
- { "Backspace", KEY_BACKSPACE },
- { "Mouse Wheel Up", KEY_MOUSEWHEELUP },
- { "Mouse Wheel Down", KEY_MOUSEWHEELDOWN },
+ { "!", '!' },
+ { "\"", '\"' },
+ { "#", '#' },
+ { "$", '$' },
+ { "%", '%' },
+ { "&", '&' },
+ { "'", '\'' },
+ { "(", ')' },
+ { ")", ')' },
+ { "*", '*' },
+ { "+", '+' },
+ { ",", ',' },
+ { "-", '-' },
+ { ".", '.' },
+ { "/", '/' },
{ "0", '0' },
{ "1", '1' },
{ "2", '2' },
{ "7", '7' },
{ "8", '8' },
{ "9", '9' },
+ { ":", ':' },
+ { ";", ';' },
+ { "<", '<' },
+ { "=", '=' },
+ { ">", '>' },
+ { "?", '?' },
+ { "@", '@' },
+ { "[", '[' },
+ { "\\", '\\' },
+ { "]", ']' },
+ { "^", '^' },
+ { "_", '_' },
+ { "`", '`' },
{ "a", 'a' },
{ "b", 'b' },
{ "c", 'c' },
{ "x", 'x' },
{ "y", 'y' },
{ "z", 'z' },
- { "!", '!' },
- { "\"", '\"' },
- { "#", '#' },
- { "$", '$' },
- { "%", '%' },
- { "&", '&' },
- { "'", '\'' },
- { "(", ')' },
- { ")", ')' },
- { "*", '*' },
- { "+", '+' },
- { ",", ',' },
- { "-", '-' },
- { ".", '.' },
- { "/", '/' },
- { ":", ':' },
- { ";", ';' },
- { "<", '<' },
- { "=", '=' },
- { ">", '>' },
- { "?", '?' },
- { "@", '@' },
- { "[", '[' },
- { "\\", '\\' },
- { "]", ']' },
- { "^", '^' },
- { "_", '_' },
- { "`", '`' },
+ { "Left", KEY_LEFT },
+ { "Right", KEY_RIGHT },
+ { "Up", KEY_UP },
+ { "Down", KEY_DOWN },
+ { "Space", KEY_SPACE },
+ { "Enter", KEY_ENTER },
+ { "F1", KEY_F1 },
+ { "F2", KEY_F2 },
+ { "F3", KEY_F3 },
+ { "F4", KEY_F4 },
+ { "F5", KEY_F5 },
+ { "F6", KEY_F6 },
+ { "F7", KEY_F7 },
+ { "F8", KEY_F8 },
+ { "F9", KEY_F9 },
+ { "F10", KEY_F10 },
+ { "F11", KEY_F11 },
+ { "F12", KEY_F12 },
+ { "Home", KEY_HOME },
+ { "End", KEY_END },
+ { "Insert", KEY_INSERT },
+ { "Delete", KEY_DELETE },
+ { "Menu", KEY_MENU },
+ { "Esc", KEY_ESC },
+ { "Page Up", KEY_PAGEUP },
+ { "Page Down", KEY_PAGEDOWN },
+ { "Tab", KEY_TAB },
+ { "Backspace", KEY_BACKSPACE },
{ "Browser Back", KEY_BROWSER_BACK },
{ "Browser Forward", KEY_BROWSER_FORWARD },
{ "Browser Refresh", KEY_BROWSER_REFRESH },
{ "Media Next Track", KEY_MEDIA_NEXT_TRACK },
{ "Media Prev Track", KEY_MEDIA_PREV_TRACK },
{ "Media Stop", KEY_MEDIA_STOP },
- { "Media Play Pause", KEY_MEDIA_PLAY_PAUSE }
+ { "Media Play Pause", KEY_MEDIA_PLAY_PAUSE },
+ { "Mouse Wheel Up", KEY_MOUSEWHEELUP },
+ { "Mouse Wheel Down", KEY_MOUSEWHEELDOWN },
+ { "Mouse Wheel Left", KEY_MOUSEWHEELLEFT },
+ { "Mouse Wheel Right", KEY_MOUSEWHEELRIGHT },
};
+enum { vlc_num_keys=sizeof(vlc_keys)/sizeof(struct key_descriptor_s) };
-static inline const char *KeyToString( int i_key )
+#include <stdlib.h>
+
+static inline int cmpkey (const void *key, const void *elem)
{
- unsigned int i = 0;
- for ( i = 0; i < sizeof(vlc_keys) / sizeof(key_descriptor_t); i++ )
- {
- if ( vlc_keys[i].i_key_code == i_key )
- {
- return vlc_keys[i].psz_key_string;
- }
- }
- return NULL;
+ return ((uintptr_t)key) - ((key_descriptor_t *)elem)->i_key_code;
+}
+
+static inline const char *KeyToString( uint32_t i_key )
+{
+ key_descriptor_t *d;
+
+ d = (key_descriptor_t *)
+ bsearch ((void *)(uintptr_t)i_key, vlc_keys, vlc_num_keys,
+ sizeof (vlc_keys[0]), cmpkey);
+ return d ? d->psz_key_string : NULL;
}
static inline int StringToKey( char *psz_key )
{
- unsigned int i = 0;
- for ( i = 0; i < sizeof(vlc_keys) / sizeof(key_descriptor_t); i++ )
+ size_t i;
+ for ( i = 0; i < vlc_num_keys; ++i )
{
if ( !strcmp( vlc_keys[i].psz_key_string, psz_key ))
{
#define STYLE_UNDERLINE 32
#define STYLE_STRIKEOUT 64
-static const text_style_t default_text_style = { NULL, 22, 0xffffff, 0xff, STYLE_OUTLINE,
- 0x000000, 0xff, 0x000000, 0xff, 0xffffff, 0x80, 0xffffff, 0xff, 1, 0, -1 };
+/**
+ * Create a default text style
+ */
+VLC_EXPORT( text_style_t *, text_style_New, ( void ) );
+
+/**
+ * Copy a text style into another
+ */
+VLC_EXPORT( text_style_t *, text_style_Copy, ( text_style_t *, const text_style_t * ) );
+
+/**
+ * Duplicate a text style
+ */
+VLC_EXPORT( text_style_t *, text_style_Duplicate, ( const text_style_t * ) );
+
+/**
+ * Delete a text style created by text_style_New or text_style_Duplicate
+ */
+VLC_EXPORT( void, text_style_Delete, ( text_style_t * ) );
/**
* OSD menu button states
* object. The types are declared in the include file include/vlc_osd.h
* @see vlc_osd.h
*/
-VLC_EXPORT( int, osd_ShowTextRelative, ( spu_t *, int, const char *, text_style_t *, int, int, int, mtime_t ) );
-VLC_EXPORT( int, osd_ShowTextAbsolute, ( spu_t *, int, const char *, text_style_t *, int, int, int, mtime_t, mtime_t ) );
+VLC_EXPORT( int, osd_ShowTextRelative, ( spu_t *, int, const char *, const text_style_t *, int, int, int, mtime_t ) );
+VLC_EXPORT( int, osd_ShowTextAbsolute, ( spu_t *, int, const char *, const text_style_t *, int, int, int, mtime_t, mtime_t ) );
VLC_EXPORT( void, osd_Message, ( spu_t *, int, char *, ... ) LIBVLC_FORMAT( 3, 4 ) );
/**
* Vout text and widget overlays
**********************************************************************/
-/**
- * Show text on the video for some time
- * \param p_vout pointer to the vout the text is to be showed on
- * \param i_channel Subpicture channel
- * \param psz_string The text to be shown
- * \param p_style Pointer to a struct with text style info
- * \param i_flags flags for alignment and such
- * \param i_hmargin horizontal margin in pixels
- * \param i_vmargin vertical margin in pixels
- * \param i_duration Amount of time the text is to be shown.
- */
-VLC_EXPORT( int, vout_ShowTextRelative, ( vout_thread_t *, int, char *, text_style_t *, int, int, int, mtime_t ) );
+VLC_EXPORT( int, vout_ShowTextRelative, ( vout_thread_t *, int, char *, const text_style_t *, int, int, int, mtime_t ) );
-/**
- * Show text on the video from a given start date to a given end date
- * \param p_vout pointer to the vout the text is to be showed on
- * \param i_channel Subpicture channel
- * \param psz_string The text to be shown
- * \param p_style Pointer to a struct with text style info
- * \param i_flags flags for alignment and such
- * \param i_hmargin horizontal margin in pixels
- * \param i_vmargin vertical margin in pixels
- * \param i_start the time when this string is to appear on the video
- * \param i_stop the time when this string should stop to be displayed
- * if this is 0 the string will be shown untill the next string
- * is about to be shown
- */
-VLC_EXPORT( int, vout_ShowTextAbsolute, ( vout_thread_t *, int, const char *, text_style_t *, int, int, int, mtime_t, mtime_t ) );
+VLC_EXPORT( int, vout_ShowTextAbsolute, ( vout_thread_t *, int, const char *, const text_style_t *, int, int, int, mtime_t, mtime_t ) );
/**
* Write an informative message at the default location,
--- /dev/null
+/*****************************************************************************
+ * vlc_picture.h: picture definitions
+ *****************************************************************************
+ * Copyright (C) 1999 - 2009 the VideoLAN team
+ * $Id$
+ *
+ * Authors: Vincent Seguin <seguin@via.ecp.fr>
+ * Samuel Hocevar <sam@via.ecp.fr>
+ * Olivier Aubert <oaubert 47 videolan d07 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., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
+ *****************************************************************************/
+
+#ifndef VLC_PICTURE_H
+#define VLC_PICTURE_H 1
+
+/**
+ * \file
+ * This file defines picture structures and functions in vlc
+ */
+
+#include <vlc_es.h>
+
+/** Description of a planar graphic field */
+typedef struct plane_t
+{
+ uint8_t *p_pixels; /**< Start of the plane's data */
+
+ /* Variables used for fast memcpy operations */
+ int i_lines; /**< Number of lines, including margins */
+ int i_pitch; /**< Number of bytes in a line, including margins */
+
+ /** Size of a macropixel, defaults to 1 */
+ int i_pixel_pitch;
+
+ /* Variables used for pictures with margins */
+ int i_visible_lines; /**< How many visible lines are there ? */
+ int i_visible_pitch; /**< How many visible pixels are there ? */
+
+} plane_t;
+
+/**
+ * A private definition to help overloading picture release
+ */
+typedef struct picture_release_sys_t picture_release_sys_t;
+
+/**
+ * Video picture
+ *
+ * Any picture destined to be displayed by a video output thread should be
+ * stored in this structure from it's creation to it's effective display.
+ * Picture type and flags should only be modified by the output thread. Note
+ * that an empty picture MUST have its flags set to 0.
+ */
+struct picture_t
+{
+ /**
+ * The properties of the picture
+ */
+ video_frame_format_t format;
+
+ /** Picture data - data can always be freely modified, but p_data may
+ * NEVER be modified. A direct buffer can be handled as the plugin
+ * wishes, it can even swap p_pixels buffers. */
+ uint8_t *p_data;
+ void *p_data_orig; /**< pointer before memalign */
+ plane_t p[ VOUT_MAX_PLANES ]; /**< description of the planes */
+ int i_planes; /**< number of allocated planes */
+
+ /** \name Type and flags
+ * Should NOT be modified except by the vout thread
+ * @{*/
+ int i_status; /**< picture flags */
+ int i_type; /**< is picture a direct buffer ? */
+ bool b_slow; /**< is picture in slow memory ? */
+ /**@}*/
+
+ /** \name Picture management properties
+ * These properties can be modified using the video output thread API,
+ * but should never be written directly */
+ /**@{*/
+ unsigned i_refcount; /**< link reference counter */
+ mtime_t date; /**< display date */
+ bool b_force;
+ /**@}*/
+
+ /** \name Picture dynamic properties
+ * Those properties can be changed by the decoder
+ * @{
+ */
+ bool b_progressive; /**< is it a progressive frame ? */
+ unsigned int i_nb_fields; /**< # of displayed fields */
+ bool b_top_field_first; /**< which field is first */
+ uint8_t *p_q; /**< quantification table */
+ int i_qstride; /**< quantification stride */
+ int i_qtype; /**< quantification style */
+ /**@}*/
+
+ /* Some vouts require the picture to be locked before it can be modified */
+ int (* pf_lock) ( vout_thread_t *, picture_t * );
+ int (* pf_unlock) ( vout_thread_t *, picture_t * );
+
+ /** Private data - the video output plugin might want to put stuff here to
+ * keep track of the picture */
+ picture_sys_t * p_sys;
+
+ /** This way the picture_Release can be overloaded */
+ void (*pf_release)( picture_t * );
+ picture_release_sys_t *p_release_sys;
+
+ /** Next picture in a FIFO a pictures */
+ struct picture_t *p_next;
+};
+
+/**
+ * This function will create a new picture.
+ * The picture created will implement a default release management compatible
+ * with picture_Hold and picture_Release. This default management will release
+ * p_sys, p_q, p_data_orig fields if non NULL.
+ */
+VLC_EXPORT( picture_t *, picture_New, ( vlc_fourcc_t i_chroma, int i_width, int i_height, int i_aspect ) );
+
+/**
+ * This function will force the destruction a picture.
+ * The value of the picture reference count should be 0 before entering this
+ * function.
+ * Unless used for reimplementing pf_release, you should not use this
+ * function but picture_Release.
+ */
+VLC_EXPORT( void, picture_Delete, ( picture_t * ) );
+
+/**
+ * This function will increase the picture reference count.
+ * It will not have any effect on picture obtained from vout
+ */
+static inline void picture_Hold( picture_t *p_picture )
+{
+ if( p_picture->pf_release )
+ p_picture->i_refcount++;
+}
+/**
+ * This function will release a picture.
+ * It will not have any effect on picture obtained from vout
+ */
+static inline void picture_Release( picture_t *p_picture )
+{
+ /* FIXME why do we let pf_release handle the i_refcount ? */
+ if( p_picture->pf_release )
+ p_picture->pf_release( p_picture );
+}
+
+/**
+ * This function will return true if you are not the only owner of the
+ * picture.
+ *
+ * It is only valid if it is created using picture_New.
+ */
+static inline bool picture_IsReferenced( picture_t *p_picture )
+{
+ return p_picture->i_refcount > 1;
+}
+
+/**
+ * Cleanup quantization matrix data and set to 0
+ */
+static inline void picture_CleanupQuant( picture_t *p_pic )
+{
+ free( p_pic->p_q );
+ p_pic->p_q = NULL;
+ p_pic->i_qstride = 0;
+ p_pic->i_qtype = 0;
+}
+
+/**
+ * This function will copy all picture dynamic properties.
+ */
+static inline void picture_CopyProperties( picture_t *p_dst, const picture_t *p_src )
+{
+ p_dst->date = p_src->date;
+ p_dst->b_force = p_src->b_force;
+
+ p_dst->b_progressive = p_src->b_progressive;
+ p_dst->i_nb_fields = p_src->i_nb_fields;
+ p_dst->b_top_field_first = p_src->b_top_field_first;
+
+ /* FIXME: copy ->p_q and ->p_qstride */
+}
+
+/**
+ * This function will copy the picture pixels.
+ * You can safely copy between pictures that do not have the same size,
+ * only the compatible(smaller) part will be copied.
+ */
+VLC_EXPORT( void, picture_CopyPixels, ( picture_t *p_dst, const picture_t *p_src ) );
+VLC_EXPORT( void, plane_CopyPixels, ( plane_t *p_dst, const plane_t *p_src ) );
+
+/**
+ * This function will copy both picture dynamic properties and pixels.
+ * You have to notice that sometime a simple picture_Hold may do what
+ * you want without the copy overhead.
+ * Provided for convenience.
+ *
+ * \param p_dst pointer to the destination picture.
+ * \param p_src pointer to the source picture.
+ */
+static inline void picture_Copy( picture_t *p_dst, const picture_t *p_src )
+{
+ picture_CopyPixels( p_dst, p_src );
+ picture_CopyProperties( p_dst, p_src );
+}
+
+/**
+ * This function will export a picture to an encoded bitstream.
+ *
+ * pp_image will contain the encoded bitstream in psz_format format.
+ *
+ * p_fmt can be NULL otherwise it will be set with the format used for the
+ * picture before encoding.
+ *
+ * i_override_width/height allow to override the width and/or the height of the
+ * picture to be encoded. If at most one of them is > 0 then the picture aspect
+ * ratio will be kept.
+ */
+VLC_EXPORT( int, picture_Export, ( vlc_object_t *p_obj, block_t **pp_image, video_format_t *p_fmt, picture_t *p_picture, vlc_fourcc_t i_format, int i_override_width, int i_override_height ) );
+
+/**
+ * This function will setup all fields of a picture_t without allocating any
+ * memory.
+ * XXX The memory must already be initialized.
+ * It does not need to be released.
+ *
+ * It will return VLC_EGENERIC if the core does not understand the requested
+ * format.
+ *
+ * It can be usefull to get the properties of planes.
+ */
+VLC_EXPORT( int, picture_Setup, ( picture_t *, vlc_fourcc_t i_chroma, int i_width, int i_height, int i_aspect ) );
+
+/*****************************************************************************
+ * Flags used to describe the status of a picture
+ *****************************************************************************/
+
+/* Picture type
+ * FIXME are the values meaningfull ? */
+enum
+{
+ EMPTY_PICTURE = 0, /* empty buffer */
+ MEMORY_PICTURE = 100, /* heap-allocated buffer */
+ DIRECT_PICTURE = 200, /* direct buffer */
+};
+
+/* Picture status */
+enum
+{
+ FREE_PICTURE, /* free and not allocated */
+ RESERVED_PICTURE, /* allocated and reserved */
+ READY_PICTURE, /* ready for display */
+ DISPLAYED_PICTURE, /* been displayed but is linked */
+ DESTROYED_PICTURE, /* allocated but no more used */
+};
+
+/* Quantification type */
+enum
+{
+ QTYPE_NONE,
+
+ QTYPE_MPEG1,
+ QTYPE_MPEG2,
+ QTYPE_H264,
+};
+
+/*****************************************************************************
+ * Shortcuts to access image components
+ *****************************************************************************/
+
+/* Plane indices */
+enum
+{
+ Y_PLANE = 0,
+ U_PLANE = 1,
+ V_PLANE = 2,
+ A_PLANE = 3,
+};
+
+/* Shortcuts */
+#define Y_PIXELS p[Y_PLANE].p_pixels
+#define Y_PITCH p[Y_PLANE].i_pitch
+#define U_PIXELS p[U_PLANE].p_pixels
+#define U_PITCH p[U_PLANE].i_pitch
+#define V_PIXELS p[V_PLANE].p_pixels
+#define V_PITCH p[V_PLANE].i_pitch
+#define A_PIXELS p[A_PLANE].p_pixels
+#define A_PITCH p[A_PLANE].i_pitch
+
+/**@}*/
+
+#endif /* VLC_PICTURE_H */
* Generally speaking, playlist_NodeAddInput should not be used in newer code, it
* will maybe become useful again when we merge VLM;
*
- * To delete an item, use playlist_DeleteFromInput( input_id ) which will
+ * To delete an item, use playlist_DeleteFromInput( p_item ) which will
* remove all occurrences of the input in both trees
*
*
********************************************************/
/*************************** Item deletion **************************/
-VLC_EXPORT( int, playlist_DeleteFromInput, ( playlist_t *, int, bool ) );
+VLC_EXPORT( int, playlist_DeleteFromInput, ( playlist_t *, input_item_t *, bool ) );
/******************** Item addition ********************/
VLC_EXPORT( int, playlist_Add, ( playlist_t *, const char *, const char *, int, int, bool, bool ) );
/********************************** Item search *************************/
VLC_EXPORT( playlist_item_t *, playlist_ItemGetById, (playlist_t *, int ) );
VLC_EXPORT( playlist_item_t *, playlist_ItemGetByInput, (playlist_t *,input_item_t * ) );
-VLC_EXPORT( playlist_item_t *, playlist_ItemGetByInputId, (playlist_t *, int, playlist_item_t *) );
VLC_EXPORT( int, playlist_LiveSearchUpdate, (playlist_t *, playlist_item_t *, const char *) );
--- /dev/null
+/*****************************************************************************
+ * vlc_subpicture.h: subpicture definitions
+ *****************************************************************************
+ * Copyright (C) 1999 - 2009 the VideoLAN team
+ * $Id$
+ *
+ * Authors: Vincent Seguin <seguin@via.ecp.fr>
+ * Samuel Hocevar <sam@via.ecp.fr>
+ * Olivier Aubert <oaubert 47 videolan d07 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., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
+ *****************************************************************************/
+
+#ifndef VLC_SUBPICTURE_H
+#define VLC_SUBPICTURE_H 1
+
+/**
+ * \file
+ * This file defines subpicture structures and functions in vlc
+ */
+
+#include <vlc_picture.h>
+
+/**
+ * \defgroup subpicture Video Subpictures
+ * Subpictures are pictures that should be displayed on top of the video, like
+ * subtitles and OSD
+ * \ingroup video_output
+ * @{
+ */
+
+/**
+ * Video subtitle region spu core private
+ */
+typedef struct subpicture_region_private_t subpicture_region_private_t;
+
+/**
+ * Video subtitle region
+ *
+ * A subtitle region is defined by a picture (graphic) and its rendering
+ * coordinates.
+ * Subtitles contain a list of regions.
+ */
+struct subpicture_region_t
+{
+ video_format_t fmt; /**< format of the picture */
+ picture_t *p_picture; /**< picture comprising this region */
+
+ int i_x; /**< position of region */
+ int i_y; /**< position of region */
+ int i_align; /**< alignment within a region */
+ int i_alpha; /**< transparency */
+
+ char *psz_text; /**< text string comprising this region */
+ char *psz_html; /**< HTML version of subtitle (NULL = use psz_text) */
+ text_style_t *p_style; /**< a description of the text style formatting */
+
+ subpicture_region_t *p_next; /**< next region in the list */
+ subpicture_region_private_t *p_private; /**< Private data for spu_t *only* */
+};
+
+/* Subpicture region position flags */
+#define SUBPICTURE_ALIGN_LEFT 0x1
+#define SUBPICTURE_ALIGN_RIGHT 0x2
+#define SUBPICTURE_ALIGN_TOP 0x4
+#define SUBPICTURE_ALIGN_BOTTOM 0x8
+#define SUBPICTURE_ALIGN_MASK ( SUBPICTURE_ALIGN_LEFT|SUBPICTURE_ALIGN_RIGHT| \
+ SUBPICTURE_ALIGN_TOP |SUBPICTURE_ALIGN_BOTTOM )
+
+/**
+ * This function will create a new subpicture region.
+ *
+ * You must use subpicture_region_Delete to destroy it.
+ */
+VLC_EXPORT( subpicture_region_t *, subpicture_region_New, ( const video_format_t *p_fmt ) );
+
+/**
+ * This function will destroy a subpicture region allocated by
+ * subpicture_region_New.
+ *
+ * You may give it NULL.
+ */
+VLC_EXPORT( void, subpicture_region_Delete, ( subpicture_region_t *p_region ) );
+
+/**
+ * This function will destroy a list of subpicture regions allocated by
+ * subpicture_region_New.
+ *
+ * Provided for convenience.
+ */
+VLC_EXPORT( void, subpicture_region_ChainDelete, ( subpicture_region_t *p_head ) );
+
+/**
+ * Video subtitle
+ *
+ * Any subtitle destined to be displayed by a video output thread should
+ * be stored in this structure from it's creation to it's effective display.
+ * Subtitle type and flags should only be modified by the output thread. Note
+ * that an empty subtitle MUST have its flags set to 0.
+ */
+struct subpicture_t
+{
+ /** \name Channel ID */
+ /**@{*/
+ int i_channel; /**< subpicture channel ID */
+ /**@}*/
+
+ /** \name Type and flags
+ Should NOT be modified except by the vout thread */
+ /**@{*/
+ int64_t i_order; /** an increasing unique number */
+ subpicture_t * p_next; /**< next subtitle to be displayed */
+ /**@}*/
+
+ /** \name Date properties */
+ /**@{*/
+ mtime_t i_start; /**< beginning of display date */
+ mtime_t i_stop; /**< end of display date */
+ bool b_ephemer; /**< If this flag is set to true the subtitle
+ will be displayed untill the next one appear */
+ bool b_fade; /**< enable fading */
+ /**@}*/
+
+ subpicture_region_t *p_region; /**< region list composing this subtitle */
+
+ /** \name Display properties
+ * These properties are only indicative and may be
+ * changed by the video output thread, or simply ignored depending of the
+ * subtitle type. */
+ /**@{*/
+ int i_original_picture_width; /**< original width of the movie */
+ int i_original_picture_height;/**< original height of the movie */
+ bool b_subtitle; /**< the picture is a movie subtitle */
+ bool b_absolute; /**< position is absolute */
+ int i_alpha; /**< transparency */
+ /**@}*/
+
+ /** Pointer to function that renders this subtitle in a picture */
+ void ( *pf_render ) ( vout_thread_t *, picture_t *, const subpicture_t * );
+ /** Pointer to function that cleans up the private data of this subtitle */
+ void ( *pf_destroy ) ( subpicture_t * );
+
+ /** Pointer to functions for region management */
+ void (*pf_pre_render) ( spu_t *, subpicture_t *, const video_format_t * );
+ void (*pf_update_regions)( spu_t *,
+ subpicture_t *, const video_format_t *, mtime_t );
+
+ /** Private data - the subtitle plugin might want to put stuff here to
+ * keep track of the subpicture */
+ subpicture_sys_t *p_sys; /* subpicture data */
+};
+
+
+/**
+ * This function create a new empty subpicture.
+ *
+ * You must use subpicture_Delete to destroy it.
+ */
+VLC_EXPORT( subpicture_t *, subpicture_New, ( void ) );
+
+/**
+ * This function delete a subpicture created by subpicture_New.
+ * You may give it NULL.
+ */
+VLC_EXPORT( void, subpicture_Delete, ( subpicture_t *p_subpic ) );
+
+/**@}*/
+
+#endif /* _VLC_VIDEO_H */
/*****************************************************************************
* Function definitions
*****************************************************************************/
-VLC_EXPORT( int, vlc_mutex_init, ( vlc_mutex_t * ) );
-VLC_EXPORT( int, vlc_mutex_init_recursive, ( vlc_mutex_t * ) );
+VLC_EXPORT( void, vlc_mutex_init, ( vlc_mutex_t * ) );
+VLC_EXPORT( void, vlc_mutex_init_recursive, ( vlc_mutex_t * ) );
VLC_EXPORT( void, vlc_mutex_destroy, ( vlc_mutex_t * ) );
VLC_EXPORT( void, vlc_mutex_lock, ( vlc_mutex_t * ) );
-VLC_EXPORT( int, vlc_mutex_trylock, ( vlc_mutex_t * ) );
+VLC_EXPORT( int, vlc_mutex_trylock, ( vlc_mutex_t * ) LIBVLC_USED );
VLC_EXPORT( void, vlc_mutex_unlock, ( vlc_mutex_t * ) );
-VLC_EXPORT( int, vlc_cond_init, ( vlc_cond_t * ) );
+VLC_EXPORT( void, vlc_cond_init, ( vlc_cond_t * ) );
VLC_EXPORT( void, vlc_cond_destroy, ( vlc_cond_t * ) );
VLC_EXPORT( void, vlc_cond_signal, (vlc_cond_t *) );
VLC_EXPORT( void, vlc_cond_broadcast, (vlc_cond_t *) );
VLC_EXPORT( void, vlc_threadvar_delete, (vlc_threadvar_t *) );
VLC_EXPORT( int, vlc_threadvar_set, (vlc_threadvar_t, void *) );
VLC_EXPORT( void *, vlc_threadvar_get, (vlc_threadvar_t) );
-VLC_EXPORT( int, vlc_thread_create, ( vlc_object_t *, const char *, int, const char *, void * ( * ) ( vlc_object_t * ), int ) );
+VLC_EXPORT( int, vlc_thread_create, ( vlc_object_t *, const char *, int, const char *, void * ( * ) ( vlc_object_t * ), int ) LIBVLC_USED );
VLC_EXPORT( int, __vlc_thread_set_priority, ( vlc_object_t *, const char *, int, int ) );
VLC_EXPORT( void, __vlc_thread_join, ( vlc_object_t * ) );
-VLC_EXPORT( int, vlc_clone, (vlc_thread_t *, void * (*) (void *), void *, int) );
+VLC_EXPORT( int, vlc_clone, (vlc_thread_t *, void * (*) (void *), void *, int) LIBVLC_USED );
VLC_EXPORT( void, vlc_cancel, (vlc_thread_t) );
VLC_EXPORT( void, vlc_join, (vlc_thread_t, void **) );
VLC_EXPORT (void, vlc_control_cancel, (int cmd, ...));
/**
* Initializes a spinlock.
*/
-static inline int vlc_spin_init (vlc_spinlock_t *spin)
+static inline void vlc_spin_init (vlc_spinlock_t *spin)
{
- return pthread_spin_init (spin, PTHREAD_PROCESS_PRIVATE);
+ if (pthread_spin_init (spin, PTHREAD_PROCESS_PRIVATE))
+ abort ();
}
/**
pthread_spin_destroy (spin);
}
-#elif defined( WIN32 )
+#elif defined (WIN32) && !defined (UNDER_CE)
typedef CRITICAL_SECTION vlc_spinlock_t;
/**
* Initializes a spinlock.
*/
-static inline int vlc_spin_init (vlc_spinlock_t *spin)
+static inline void vlc_spin_init (vlc_spinlock_t *spin)
{
-#ifdef UNDER_CE
- InitializeCriticalSection(spin);
- return 0;
-#else
- return !InitializeCriticalSectionAndSpinCount(spin, 4000);
-#endif
+ if (!InitializeCriticalSectionAndSpinCount(spin, 4000))
+ abort ();
}
/**
/* Fallback to plain mutexes if spinlocks are not available */
typedef vlc_mutex_t vlc_spinlock_t;
-static inline int vlc_spin_init (vlc_spinlock_t *spin)
+static inline void vlc_spin_init (vlc_spinlock_t *spin)
{
- return vlc_mutex_init (spin);
+ vlc_mutex_init (spin);
}
# define vlc_spin_lock vlc_mutex_lock
#define VLC_VAR_GETCHOICES 0x0024
#define VLC_VAR_FREECHOICES 0x0025
#define VLC_VAR_GETLIST 0x0026
-#define VLC_VAR_FREELIST 0x0027
-#define VLC_VAR_CHOICESCOUNT 0x0028
+#define VLC_VAR_CHOICESCOUNT 0x0027
#define VLC_VAR_INHERITVALUE 0x0030
#define var_Command(a,b,c,d,e) __var_Command( VLC_OBJECT( a ), b, c, d, e )
VLC_EXPORT( int, __var_Command, ( vlc_object_t *, const char *, const char *, const char *, char ** ) );
+VLC_EXPORT( void, var_FreeList, ( vlc_value_t *, vlc_value_t * ) );
+
/**
* __var_Create() with automatic casting.
*/
* This file defines common video output structures and functions in vlc
*/
-#include <vlc_es.h>
+#include <vlc_picture.h>
#include <vlc_filter.h>
-
-/** Description of a planar graphic field */
-typedef struct plane_t
-{
- uint8_t *p_pixels; /**< Start of the plane's data */
-
- /* Variables used for fast memcpy operations */
- int i_lines; /**< Number of lines, including margins */
- int i_pitch; /**< Number of bytes in a line, including margins */
-
- /** Size of a macropixel, defaults to 1 */
- int i_pixel_pitch;
-
- /* Variables used for pictures with margins */
- int i_visible_lines; /**< How many visible lines are there ? */
- int i_visible_pitch; /**< How many visible pixels are there ? */
-
-} plane_t;
-
-/**
- * Video picture
- *
- * Any picture destined to be displayed by a video output thread should be
- * stored in this structure from it's creation to it's effective display.
- * Picture type and flags should only be modified by the output thread. Note
- * that an empty picture MUST have its flags set to 0.
- */
-struct picture_t
-{
- /**
- * The properties of the picture
- */
- video_frame_format_t format;
-
- /** Picture data - data can always be freely modified, but p_data may
- * NEVER be modified. A direct buffer can be handled as the plugin
- * wishes, it can even swap p_pixels buffers. */
- uint8_t *p_data;
- void *p_data_orig; /**< pointer before memalign */
- plane_t p[ VOUT_MAX_PLANES ]; /**< description of the planes */
- int i_planes; /**< number of allocated planes */
-
- /** \name Type and flags
- * Should NOT be modified except by the vout thread
- * @{*/
- int i_status; /**< picture flags */
- int i_type; /**< is picture a direct buffer ? */
- bool b_slow; /**< is picture in slow memory ? */
- /**@}*/
-
- /** \name Picture management properties
- * These properties can be modified using the video output thread API,
- * but should never be written directly */
- /**@{*/
- unsigned i_refcount; /**< link reference counter */
- mtime_t date; /**< display date */
- bool b_force;
- /**@}*/
-
- /** \name Picture dynamic properties
- * Those properties can be changed by the decoder
- * @{
- */
- bool b_progressive; /**< is it a progressive frame ? */
- unsigned int i_nb_fields; /**< # of displayed fields */
- bool b_top_field_first; /**< which field is first */
- uint8_t *p_q; /**< quantification table */
- int i_qstride; /**< quantification stride */
- int i_qtype; /**< quantification style */
- /**@}*/
-
- /** The picture heap we are attached to */
- picture_heap_t* p_heap;
-
- /* Some vouts require the picture to be locked before it can be modified */
- int (* pf_lock) ( vout_thread_t *, picture_t * );
- int (* pf_unlock) ( vout_thread_t *, picture_t * );
-
- /** Private data - the video output plugin might want to put stuff here to
- * keep track of the picture */
- picture_sys_t * p_sys;
-
- /** This way the picture_Release can be overloaded */
- void (*pf_release)( picture_t * );
-
- /** Next picture in a FIFO a pictures */
- struct picture_t *p_next;
-};
-
-/**
- * This function will create a new picture.
- * The picture created will implement a default release management compatible
- * with picture_Hold and picture_Release. This default management will release
- * picture_sys_t *p_sys field if non NULL.
- */
-VLC_EXPORT( picture_t *, picture_New, ( vlc_fourcc_t i_chroma, int i_width, int i_height, int i_aspect ) );
-
-/**
- * This function will force the destruction a picture.
- * The value of the picture reference count should be 0 before entering this
- * function.
- * Unless used for reimplementing pf_release, you should not use this
- * function but picture_Release.
- */
-VLC_EXPORT( void, picture_Delete, ( picture_t * ) );
-
-/**
- * This function will increase the picture reference count.
- * It will not have any effect on picture obtained from vout
- */
-static inline void picture_Hold( picture_t *p_picture )
-{
- if( p_picture->pf_release )
- p_picture->i_refcount++;
-}
-/**
- * This function will release a picture.
- * It will not have any effect on picture obtained from vout
- */
-static inline void picture_Release( picture_t *p_picture )
-{
- /* FIXME why do we let pf_release handle the i_refcount ? */
- if( p_picture->pf_release )
- p_picture->pf_release( p_picture );
-}
-
-/**
- * Cleanup quantization matrix data and set to 0
- */
-static inline void picture_CleanupQuant( picture_t *p_pic )
-{
- free( p_pic->p_q );
- p_pic->p_q = NULL;
- p_pic->i_qstride = 0;
- p_pic->i_qtype = 0;
-}
-
-/**
- * This function will copy all picture dynamic properties.
- */
-static inline void picture_CopyProperties( picture_t *p_dst, const picture_t *p_src )
-{
- p_dst->date = p_src->date;
- p_dst->b_force = p_src->b_force;
-
- p_dst->b_progressive = p_src->b_progressive;
- p_dst->i_nb_fields = p_src->i_nb_fields;
- p_dst->b_top_field_first = p_src->b_top_field_first;
-
- /* FIXME: copy ->p_q and ->p_qstride */
-}
-
-/**
- * This function will copy the picture pixels.
- * You can safely copy between pictures that do not have the same size,
- * only the compatible(smaller) part will be copied.
- */
-VLC_EXPORT( void, picture_CopyPixels, ( picture_t *p_dst, const picture_t *p_src ) );
-VLC_EXPORT( void, plane_CopyPixels, ( plane_t *p_dst, const plane_t *p_src ) );
-
-/**
- * This function will copy both picture dynamic properties and pixels.
- * You have to notice that sometime a simple picture_Hold may do what
- * you want without the copy overhead.
- * Provided for convenience.
- *
- * \param p_dst pointer to the destination picture.
- * \param p_src pointer to the source picture.
- */
-static inline void picture_Copy( picture_t *p_dst, const picture_t *p_src )
-{
- picture_CopyPixels( p_dst, p_src );
- picture_CopyProperties( p_dst, p_src );
-}
-
-/**
- * This function will export a picture to an encoded bitstream.
- *
- * pp_image will contain the encoded bitstream in psz_format format.
- *
- * p_fmt can be NULL otherwise it will be set with the format used for the
- * picture before encoding.
- *
- * i_override_width/height allow to override the width and/or the height of the
- * picture to be encoded. If at most one of them is > 0 then the picture aspect
- * ratio will be kept.
- */
-VLC_EXPORT( int, picture_Export, ( vlc_object_t *p_obj, block_t **pp_image, video_format_t *p_fmt, picture_t *p_picture, vlc_fourcc_t i_format, int i_override_width, int i_override_height ) );
-
+#include <vlc_subpicture.h>
/**
* Video picture heap, either render (to store pictures used
void (* pf_setpalette) ( vout_thread_t *, uint16_t *, uint16_t *, uint16_t * );
};
-/*****************************************************************************
- * Flags used to describe the status of a picture
- *****************************************************************************/
-
-/* Picture type
- * FIXME are the values meaningfull ? */
-enum
-{
- EMPTY_PICTURE = 0, /* empty buffer */
- MEMORY_PICTURE = 100, /* heap-allocated buffer */
- DIRECT_PICTURE = 200, /* direct buffer */
-};
-
-/* Picture status */
-enum
-{
- FREE_PICTURE, /* free and not allocated */
- RESERVED_PICTURE, /* allocated and reserved */
- READY_PICTURE, /* ready for display */
- DISPLAYED_PICTURE, /* been displayed but is linked */
- DESTROYED_PICTURE, /* allocated but no more used */
-};
-
-/* Quantification type */
-enum
-{
- QTYPE_NONE,
-
- QTYPE_MPEG1,
- QTYPE_MPEG2,
- QTYPE_H264,
-};
-
-/*****************************************************************************
- * Shortcuts to access image components
- *****************************************************************************/
-
-/* Plane indices */
-enum
-{
- Y_PLANE = 0,
- U_PLANE = 1,
- V_PLANE = 2,
- A_PLANE = 3,
-};
-
-/* Shortcuts */
-#define Y_PIXELS p[Y_PLANE].p_pixels
-#define Y_PITCH p[Y_PLANE].i_pitch
-#define U_PIXELS p[U_PLANE].p_pixels
-#define U_PITCH p[U_PLANE].i_pitch
-#define V_PIXELS p[V_PLANE].p_pixels
-#define V_PITCH p[V_PLANE].i_pitch
-#define A_PIXELS p[A_PLANE].p_pixels
-#define A_PITCH p[A_PLANE].i_pitch
-
-/**
- * \defgroup subpicture Video Subpictures
- * Subpictures are pictures that should be displayed on top of the video, like
- * subtitles and OSD
- * \ingroup video_output
- * @{
- */
-
-/**
- * Video subtitle region spu core private
- */
-typedef struct subpicture_region_private_t subpicture_region_private_t;
-
-/**
- * Video subtitle region
- *
- * A subtitle region is defined by a picture (graphic) and its rendering
- * coordinates.
- * Subtitles contain a list of regions.
- */
-struct subpicture_region_t
-{
- video_format_t fmt; /**< format of the picture */
- picture_t *p_picture; /**< picture comprising this region */
-
- int i_x; /**< position of region */
- int i_y; /**< position of region */
- int i_align; /**< alignment within a region */
- int i_alpha; /**< transparency */
-
- char *psz_text; /**< text string comprising this region */
- char *psz_html; /**< HTML version of subtitle (NULL = use psz_text) */
- text_style_t *p_style; /**< a description of the text style formatting */
-
- subpicture_region_t *p_next; /**< next region in the list */
- subpicture_region_private_t *p_private; /**< Private data for spu_t *only* */
-};
-
-/* Subpicture region position flags */
-#define SUBPICTURE_ALIGN_LEFT 0x1
-#define SUBPICTURE_ALIGN_RIGHT 0x2
-#define SUBPICTURE_ALIGN_TOP 0x4
-#define SUBPICTURE_ALIGN_BOTTOM 0x8
-#define SUBPICTURE_ALIGN_MASK ( SUBPICTURE_ALIGN_LEFT|SUBPICTURE_ALIGN_RIGHT| \
- SUBPICTURE_ALIGN_TOP |SUBPICTURE_ALIGN_BOTTOM )
-
-/**
- * This function will create a new subpicture region.
- *
- * You must use subpicture_region_Delete to destroy it.
- */
-VLC_EXPORT( subpicture_region_t *, subpicture_region_New, ( const video_format_t *p_fmt ) );
-
-/**
- * This function will destroy a subpicture region allocated by
- * subpicture_region_New.
- *
- * You may give it NULL.
- */
-VLC_EXPORT( void, subpicture_region_Delete, ( subpicture_region_t *p_region ) );
-
-/**
- * This function will destroy a list of subpicture regions allocated by
- * subpicture_region_New.
- *
- * Provided for convenience.
- */
-VLC_EXPORT( void, subpicture_region_ChainDelete, ( subpicture_region_t *p_head ) );
-
-/**
- * Video subtitle
- *
- * Any subtitle destined to be displayed by a video output thread should
- * be stored in this structure from it's creation to it's effective display.
- * Subtitle type and flags should only be modified by the output thread. Note
- * that an empty subtitle MUST have its flags set to 0.
- */
-struct subpicture_t
-{
- /** \name Channel ID */
- /**@{*/
- int i_channel; /**< subpicture channel ID */
- /**@}*/
-
- /** \name Type and flags
- Should NOT be modified except by the vout thread */
- /**@{*/
- int64_t i_order; /** an increasing unique number */
- subpicture_t * p_next; /**< next subtitle to be displayed */
- /**@}*/
-
- /** \name Date properties */
- /**@{*/
- mtime_t i_start; /**< beginning of display date */
- mtime_t i_stop; /**< end of display date */
- bool b_ephemer; /**< If this flag is set to true the subtitle
- will be displayed untill the next one appear */
- bool b_fade; /**< enable fading */
- /**@}*/
-
- subpicture_region_t *p_region; /**< region list composing this subtitle */
-
- /** \name Display properties
- * These properties are only indicative and may be
- * changed by the video output thread, or simply ignored depending of the
- * subtitle type. */
- /**@{*/
- int i_original_picture_width; /**< original width of the movie */
- int i_original_picture_height;/**< original height of the movie */
- bool b_subtitle; /**< the picture is a movie subtitle */
- bool b_absolute; /**< position is absolute */
- int i_alpha; /**< transparency */
- /**@}*/
-
- /** Pointer to function that renders this subtitle in a picture */
- void ( *pf_render ) ( vout_thread_t *, picture_t *, const subpicture_t * );
- /** Pointer to function that cleans up the private data of this subtitle */
- void ( *pf_destroy ) ( subpicture_t * );
-
- /** Pointer to functions for region management */
- void (*pf_pre_render) ( spu_t *, subpicture_t *, const video_format_t * );
- void (*pf_update_regions)( spu_t *,
- subpicture_t *, const video_format_t *, mtime_t );
-
- /** Private data - the subtitle plugin might want to put stuff here to
- * keep track of the subpicture */
- subpicture_sys_t *p_sys; /* subpicture data */
-};
-
-
-/**
- * This function create a new empty subpicture.
- *
- * You must use subpicture_Delete to destroy it.
- */
-VLC_EXPORT( subpicture_t *, subpicture_New, ( void ) );
-
-/**
- * This function delete a subpicture created by subpicture_New.
- * You may give it NULL.
- */
-VLC_EXPORT( void, subpicture_Delete, ( subpicture_t *p_subpic ) );
-
/* Default subpicture channel ID */
#define DEFAULT_CHAN 1
* Prototypes
*****************************************************************************/
-/**
- * Initialise different fields of a picture_t (but does not allocate memory).
- * \param p_this a vlc object
- * \param p_pic pointer to the picture structure.
- * \param i_chroma the wanted chroma for the picture.
- * \param i_width the wanted width for the picture.
- * \param i_height the wanted height for the picture.
- * \param i_aspect the wanted aspect ratio for the picture.
- */
-#define vout_InitPicture(a,b,c,d,e,f) \
- __vout_InitPicture(VLC_OBJECT(a),b,c,d,e,f)
-VLC_EXPORT( int, __vout_InitPicture, ( vlc_object_t *p_this, picture_t *p_pic, uint32_t i_chroma, int i_width, int i_height, int i_aspect ) );
-
/**
* Initialise different fields of a picture_t and allocates the picture buffer.
* \param p_this a vlc object
VLC_EXPORT( int, vout_ChromaCmp, ( uint32_t, uint32_t ) );
VLC_EXPORT( picture_t *, vout_CreatePicture, ( vout_thread_t *, bool, bool, unsigned int ) );
-VLC_EXPORT( void, vout_InitFormat, ( video_frame_format_t *, uint32_t, int, int, int ) );
VLC_EXPORT( void, vout_DestroyPicture, ( vout_thread_t *, picture_t * ) );
VLC_EXPORT( void, vout_DisplayPicture, ( vout_thread_t *, picture_t * ) );
VLC_EXPORT( void, vout_LinkPicture, ( vout_thread_t *, picture_t * ) );
#include <vlc_access.h>
#include <vlc_demux.h>
#include <vlc_input.h>
-#include <vlc_vout.h>
#include <ctype.h>
#include <fcntl.h>
#include <vlc_common.h>
#include <vlc_plugin.h>
#include <vlc_input.h>
-#include <vlc_vout.h>
#include <vlc_demux.h>
int i;
int i_width;
int i_height;
- int i_aspect;
int result = 0;
if( strncmp(p_demux->psz_access, "dc1394", 6) != 0 )
i_width = p_sys->camera.frame_width;
i_height = p_sys->camera.frame_height;
- i_aspect = vout_InitPicture( VLC_OBJECT(p_demux), &p_sys->pic,
- VLC_FOURCC('U', 'Y', 'V', 'Y'),
- i_width, i_height,
- i_width * VOUT_ASPECT_FACTOR / i_height );
+ if( picture_Setup( &p_sys->pic, VLC_CODEC_UYVY,
+ i_width, i_height,
+ i_width * VOUT_ASPECT_FACTOR / i_height ) )
+ {
+ msg_Err( p_demux ,"unknown chroma" );
+ Close( p_this );
+ return VLC_EGENERIC;
+ }
- es_format_Init( &fmt, VIDEO_ES, VLC_FOURCC('U', 'Y', 'V', 'Y') );
+ es_format_Init( &fmt, VIDEO_ES, VLC_CODEC_UYVY );
fmt.video.i_width = i_width;
fmt.video.i_height = i_height;
if( p_sys->fd_audio >= 0 )
{
es_format_t fmt;
- es_format_Init( &fmt, AUDIO_ES, VLC_FOURCC('a','r','a','w') );
+ es_format_Init( &fmt, AUDIO_ES, VLC_CODEC_S16L ); /* FIXME: hmm, ?? */
fmt.audio.i_channels = p_sys->channels ? p_sys->channels : 1;
fmt.audio.i_rate = p_sys->i_sample_rate;
- fmt.audio.i_bitspersample = 16; /* FIXME: hmm, ?? */
+ fmt.audio.i_bitspersample = 16;
fmt.audio.i_blockalign = fmt.audio.i_channels *
fmt.audio.i_bitspersample / 8;
fmt.i_bitrate = fmt.audio.i_channels * fmt.audio.i_rate *
#endif
#include <vlc_common.h>
-#include <vlc_vout.h>
#ifndef _MSC_VER
/* Work-around a bug in w32api-2.5 */
#include <vlc_input.h>
#include <vlc_access.h>
#include <vlc_demux.h>
-#include <vlc_vout.h>
#include <vlc_dialog.h>
#include <vlc_charset.h>
/* Get/parse options and open device(s) */
string vdevname, adevname;
- int i_width = 0, i_height = 0, i_chroma = 0;
+ int i_width = 0, i_height = 0;
+ vlc_fourcc_t i_chroma = 0;
bool b_use_audio = true;
bool b_use_video = true;
p_sys->b_chroma = false;
var_Create( p_this, "dshow-chroma", VLC_VAR_STRING | VLC_VAR_DOINHERIT );
var_Get( p_this, "dshow-chroma", &val );
- if( val.psz_string && strlen( val.psz_string ) >= 4 )
- {
- i_chroma = VLC_FOURCC( val.psz_string[0], val.psz_string[1],
- val.psz_string[2], val.psz_string[3] );
- p_sys->b_chroma = true;
- }
+
+ i_chroma = vlc_fourcc_GetCodecFromString( UNKNOWN_ES, val.psz_string );
+ p_sys->b_chroma = i_chroma != 0;
free( val.psz_string );
var_Create( p_this, "dshow-fps", VLC_VAR_FLOAT | VLC_VAR_DOINHERIT );
if( p_stream->mt.majortype == MEDIATYPE_Video )
{
if( /* Raw DV stream */
- p_stream->i_fourcc == VLC_FOURCC('d','v','s','l') ||
- p_stream->i_fourcc == VLC_FOURCC('d','v','s','d') ||
- p_stream->i_fourcc == VLC_FOURCC('d','v','h','d') ||
+ p_stream->i_fourcc == VLC_CODEC_DV ||
/* Raw MPEG video stream */
- p_stream->i_fourcc == VLC_FOURCC('m','p','2','v') )
+ p_stream->i_fourcc == VLC_CODEC_MPGV )
{
b_use_audio = false;
}
/* Setup rgb mask for RGB formats */
- if( p_stream->i_fourcc == VLC_FOURCC('R','V','2','4') )
+ if( p_stream->i_fourcc == VLC_CODEC_RGB24 )
{
/* This is in BGR format */
fmt.video.i_bmask = 0x00ff0000;
/* Check if we need to force demuxers */
if( !p_access->psz_demux || !*p_access->psz_demux )
{
- if( p_stream->i_fourcc == VLC_FOURCC('d','v','s','l') ||
- p_stream->i_fourcc == VLC_FOURCC('d','v','s','d') ||
- p_stream->i_fourcc == VLC_FOURCC('d','v','h','d') )
+ if( p_stream->i_fourcc == VLC_CODEC_DV )
{
free( p_access->psz_demux );
p_access->psz_demux = strdup( "rawdv" );
}
- else if( p_stream->i_fourcc == VLC_FOURCC('m','p','2','v') )
+ else if( p_stream->i_fourcc == VLC_CODEC_MPGV )
{
free( p_access->psz_demux );
p_access->psz_demux = strdup( "mpgv" );
{
switch( i_fourcc )
{
- case VLC_FOURCC('I','4','2','0'):
- case VLC_FOURCC('f','l','3','2'):
+ case VLC_CODEC_I420:
+ case VLC_CODEC_FL32:
return 9;
- case VLC_FOURCC('Y','V','1','2'):
+ case VLC_CODEC_YV12:
case VLC_FOURCC('a','r','a','w'):
return 8;
- case VLC_FOURCC('R','V','2','4'):
+ case VLC_CODEC_RGB24:
return 7;
- case VLC_FOURCC('Y','U','Y','2'):
- case VLC_FOURCC('R','V','3','2'):
- case VLC_FOURCC('R','G','B','A'):
+ case VLC_CODEC_YUYV:
+ case VLC_CODEC_RGB32:
+ case VLC_CODEC_RGBA:
return 6;
}
val = i_bitspersample;
if( ! val )
{
- if( VLC_FOURCC('f', 'l', '3', '2') == i_current_fourcc )
+ if( VLC_CODEC_FL32 == i_current_fourcc )
val = 32;
else
val = 16;
{
// output format for 'Hauppauge WinTV PVR PCI II Capture'
// try I420 as an input format
- i_current_fourcc = VLC_FOURCC('I','4','2','0');
+ i_current_fourcc = VLC_CODEC_I420;
if( !i_fourcc || i_fourcc == i_current_fourcc )
{
// return alternative media type
((VIDEOINFOHEADER *)p_mt->pbFormat)->bmiHeader.biHeight;
vh.bmiHeader.biPlanes = 3;
vh.bmiHeader.biBitCount = 12;
- vh.bmiHeader.biCompression = VLC_FOURCC('I','4','2','0');
+ vh.bmiHeader.biCompression = VLC_CODEC_I420;
vh.bmiHeader.biSizeImage = vh.bmiHeader.biWidth * 12 *
vh.bmiHeader.biHeight / 8;
mtr.lSampleSize = vh.bmiHeader.biSizeImage;
#endif
#include <vlc_common.h>
-#include <vlc_vout.h>
+#include <vlc_fourcc.h>
#ifndef _MSC_VER
/* Work-around a bug in w32api-2.5 */
else if( media_type.subtype == MEDIASUBTYPE_RGB8 )
i_fourcc = VLC_FOURCC( 'R', 'G', 'B', '8' );
else if( media_type.subtype == MEDIASUBTYPE_RGB555 )
- i_fourcc = VLC_FOURCC( 'R', 'V', '1', '5' );
+ i_fourcc = VLC_CODEC_RGB15;
else if( media_type.subtype == MEDIASUBTYPE_RGB565 )
- i_fourcc = VLC_FOURCC( 'R', 'V', '1', '6' );
+ i_fourcc = VLC_CODEC_RGB16;
else if( media_type.subtype == MEDIASUBTYPE_RGB24 )
- i_fourcc = VLC_FOURCC( 'R', 'V', '2', '4' );
+ i_fourcc = VLC_CODEC_RGB24;
else if( media_type.subtype == MEDIASUBTYPE_RGB32 )
- i_fourcc = VLC_FOURCC( 'R', 'V', '3', '2' );
+ i_fourcc = VLC_CODEC_RGB32;
else if( media_type.subtype == MEDIASUBTYPE_ARGB32 )
- i_fourcc = VLC_FOURCC( 'R', 'G', 'B', 'A' );
+ i_fourcc = VLC_CODEC_RGBA;
/* Planar YUV formats */
else if( media_type.subtype == MEDIASUBTYPE_I420 )
- i_fourcc = VLC_FOURCC( 'I', '4', '2', '0' );
+ i_fourcc = VLC_CODEC_I420;
else if( media_type.subtype == MEDIASUBTYPE_Y41P )
- i_fourcc = VLC_FOURCC( 'I', '4', '1', '1' );
+ i_fourcc = VLC_CODEC_I411;
else if( media_type.subtype == MEDIASUBTYPE_YV12 )
- i_fourcc = VLC_FOURCC( 'Y', 'V', '1', '2' );
+ i_fourcc = VLC_CODEC_YV12;
else if( media_type.subtype == MEDIASUBTYPE_IYUV )
- i_fourcc = VLC_FOURCC( 'Y', 'V', '1', '2' );
+ i_fourcc = VLC_CODEC_YV12;
else if( media_type.subtype == MEDIASUBTYPE_YVU9 )
- i_fourcc = VLC_FOURCC( 'Y', 'V', 'U', '9' );
+ i_fourcc = VLC_CODEC_I410;
/* Packed YUV formats */
else if( media_type.subtype == MEDIASUBTYPE_YVYU )
- i_fourcc = VLC_FOURCC( 'Y', 'V', 'Y', 'U' );
+ i_fourcc = VLC_CODEC_YVYU;
else if( media_type.subtype == MEDIASUBTYPE_YUYV )
- i_fourcc = VLC_FOURCC( 'Y', 'U', 'Y', '2' );
+ i_fourcc = VLC_CODEC_YUYV;
else if( media_type.subtype == MEDIASUBTYPE_Y411 )
i_fourcc = VLC_FOURCC( 'I', '4', '1', 'N' );
else if( media_type.subtype == MEDIASUBTYPE_Y211 )
- i_fourcc = VLC_FOURCC( 'Y', '2', '1', '1' );
+ i_fourcc = VLC_CODEC_Y211;
else if( media_type.subtype == MEDIASUBTYPE_YUY2 )
- i_fourcc = VLC_FOURCC( 'Y', 'U', 'Y', '2' );
+ i_fourcc = VLC_CODEC_YUYV;
else if( media_type.subtype == MEDIASUBTYPE_UYVY )
- i_fourcc = VLC_FOURCC( 'U', 'Y', 'V', 'Y' );
+ i_fourcc = VLC_CODEC_UYVY;
/* HDYC uses UYVY sample positions but Rec709 colourimetry */
/* FIXME: When VLC understands colourspace, something will need
* to be added / changed here. Until then, just make it behave
* like UYVY */
else if( media_type.subtype == MEDIASUBTYPE_HDYC )
- i_fourcc = VLC_FOURCC( 'U', 'Y', 'V', 'Y');
+ i_fourcc = VLC_CODEC_UYVY;
/* MPEG2 video elementary stream */
else if( media_type.subtype == MEDIASUBTYPE_MPEG2_VIDEO )
- i_fourcc = VLC_FOURCC( 'm', 'p', '2', 'v' );
+ i_fourcc = VLC_CODEC_MPGV;
- /* DivX video */
+ /* DivX video */
else if( media_type.subtype == MEDIASUBTYPE_DIVX )
- i_fourcc = VLC_FOURCC( 'D', 'I', 'V', 'X' );
+ i_fourcc = VLC_CODEC_MP4V;
/* DV formats */
else if( media_type.subtype == MEDIASUBTYPE_dvsl )
- i_fourcc = VLC_FOURCC( 'd', 'v', 's', 'l' );
+ i_fourcc = VLC_CODEC_DV;
else if( media_type.subtype == MEDIASUBTYPE_dvsd )
- i_fourcc = VLC_FOURCC( 'd', 'v', 's', 'd' );
+ i_fourcc = VLC_CODEC_DV;
else if( media_type.subtype == MEDIASUBTYPE_dvhd )
- i_fourcc = VLC_FOURCC( 'd', 'v', 'h', 'd' );
+ i_fourcc = VLC_CODEC_DV;
/* MJPEG format */
else if( media_type.subtype == MEDIASUBTYPE_MJPG )
- i_fourcc = VLC_FOURCC( 'M', 'J', 'P', 'G' );
+ i_fourcc = VLC_CODEC_MJPG;
}
}
if( media_type.subtype == MEDIASUBTYPE_PCM )
i_fourcc = VLC_FOURCC( 'a', 'r', 'a', 'w' );
else if( media_type.subtype == MEDIASUBTYPE_IEEE_FLOAT )
- i_fourcc = VLC_FOURCC( 'f', 'l', '3', '2' );
+ i_fourcc = VLC_CODEC_FL32;
}
}
else if( media_type.majortype == MEDIATYPE_Stream )
free( psz_name );
return VLC_EGENERIC;
}
-
+
p_sys->p_ev->p_frame = NULL;
p_sys->p_ev->pp_last = &p_sys->p_ev->p_frame;
p_sys->p_ev->p_access = p_access;
access_sys_t *p_sys = p_access->p_sys;
block_t *p_block = NULL;
-#if 0
- if( !p_access->psz_demux )
- {
- free( p_access->psz_demux );
- p_access->psz_demux = strdup( "rawdv" );
- }
-#endif
-
vlc_mutex_lock( &p_sys->lock );
p_block = p_sys->p_frame;
//msg_Dbg( p_access, "sending frame %p",p_block );
p_sys = p_access->p_sys;
/* skip empty packets */
- if ( length > 16 )
+ if( length > 16 )
{
unsigned char * p = ( unsigned char* ) &data[ 3 ];
int section_type = p[ 0 ] >> 5; /* section type is in bits 5 - 7 */
raw1394handle_t handle;
/* get a raw1394 handle */
- if ( !( handle = raw1394_new_handle() ) )
+ if( !( handle = raw1394_new_handle() ) )
{
msg_Err( p_access, "raw1394 - failed to get handle: %m." );
return VLC_EGENERIC;
}
- if ( ( n_ports = raw1394_get_port_info( handle, pinf, 16 ) ) < 0 )
+ if( ( n_ports = raw1394_get_port_info( handle, pinf, 16 ) ) < 0 )
{
msg_Err( p_access, "raw1394 - failed to get port info: %m." );
raw1394_destroy_handle( handle );
raw1394handle_t handle;
/* get a raw1394 handle */
-#ifdef RAW1394_V_0_8
-
- handle = raw1394_get_handle();
-#else
-
handle = raw1394_new_handle();
-#endif
-
- if ( !handle )
+ if( !handle )
{
msg_Err( p_access, "raw1394 - failed to get handle: %m." );
return NULL;
}
- if ( ( n_ports = raw1394_get_port_info( handle, pinf, 16 ) ) < 0 )
+ if( ( n_ports = raw1394_get_port_info( handle, pinf, 16 ) ) < 0 )
{
msg_Err( p_access, "raw1394 - failed to get port info: %m." );
raw1394_destroy_handle( handle );
}
/* tell raw1394 which host adapter to use */
- if ( raw1394_set_port( handle, port ) < 0 )
+ if( raw1394_set_port( handle, port ) < 0 )
{
msg_Err( p_access, "raw1394 - failed to set set port: %m." );
return NULL;
static raw1394handle_t AVCOpen( access_t *p_access, int port )
{
access_sys_t *p_sys = p_access->p_sys;
- int numcards;
struct raw1394_portinfo pinf[ 16 ];
+ int numcards;
p_sys->p_avc1394 = raw1394_new_handle();
if( !p_sys->p_avc1394 )
}
}
-
static int AVCResetHandler( raw1394handle_t handle, unsigned int generation )
{
raw1394_update_generation( handle, generation );
#include <vlc_plugin.h>
#include <vlc_input.h>
#include <vlc_demux.h>
-#include <vlc_vout.h>
#include <vlc_codecs.h>
#include <vlc_url.h>
#include <vlc_strings.h>
p_sys->jack_sample_size = sizeof( jack_default_audio_sample_t );
/* Define output format */
- es_format_Init( &fmt, AUDIO_ES, VLC_FOURCC( 'f','l','3','2' ) );
+ es_format_Init( &fmt, AUDIO_ES, VLC_CODEC_FL32 );
fmt.audio.i_channels = p_sys->i_channels;
fmt.audio.i_rate = p_sys->jack_sample_rate;
fmt.audio.i_bitspersample = p_sys->jack_sample_size * 8;
#include <vlc_access.h>
#include <vlc_demux.h>
#include <vlc_input.h>
-#include <vlc_vout.h>
#include <ctype.h>
#include <fcntl.h>
p_sys->i_sample_rate );
es_format_t fmt;
- es_format_Init( &fmt, AUDIO_ES, VLC_FOURCC('a','r','a','w') );
+ es_format_Init( &fmt, AUDIO_ES, VLC_CODEC_S16L );
fmt.audio.i_channels = p_sys->b_stereo ? 2 : 1;
fmt.audio.i_rate = p_sys->i_sample_rate;
#include <vlc_common.h>
#include <vlc_plugin.h>
#include <vlc_input.h>
-#include <vlc_vout.h>
#include <vlc_demux.h>
#include <vlc_interface.h>
#include <vlc_dialog.h>
} qtchroma_to_fourcc[] =
{
/* Raw data types */
- { k422YpCbCr8CodecType, VLC_FOURCC('U','Y','V','Y') },
- { kComponentVideoCodecType,VLC_FOURCC('Y','U','Y','2') },
+ { k422YpCbCr8CodecType, VLC_CODEC_UYVY },
+ { kComponentVideoCodecType,VLC_CODEC_YUYV },
{ 0, 0 }
};
int i;
{
es_format_t fmt;
- es_format_Init (&fmt, AUDIO_ES, VLC_FOURCC ('u', 'l', 'a', 'w'));
+ es_format_Init (&fmt, AUDIO_ES, VLC_CODEC_MULAW);
fmt.audio.i_rate = 8000;
fmt.audio.i_channels = 1;
return codec_init (demux, &fmt);
{
es_format_t fmt;
- es_format_Init (&fmt, AUDIO_ES, VLC_FOURCC ('g', 's', 'm', ' '));
+ es_format_Init (&fmt, AUDIO_ES, VLC_CODEC_GSM);
fmt.audio.i_rate = 8000;
fmt.audio.i_channels = 1;
return codec_init (demux, &fmt);
{
es_format_t fmt;
- es_format_Init (&fmt, AUDIO_ES, VLC_FOURCC ('a', 'l', 'a', 'w'));
+ es_format_Init (&fmt, AUDIO_ES, VLC_CODEC_ALAW);
fmt.audio.i_rate = 8000;
fmt.audio.i_channels = 1;
return codec_init (demux, &fmt);
{
es_format_t fmt;
- es_format_Init (&fmt, AUDIO_ES, VLC_FOURCC ('s', '1', '6', 'b'));
+ es_format_Init (&fmt, AUDIO_ES, VLC_CODEC_S16B);
fmt.audio.i_rate = 44100;
fmt.audio.i_channels = 2;
return codec_init (demux, &fmt);
{
es_format_t fmt;
- es_format_Init (&fmt, AUDIO_ES, VLC_FOURCC ('s', '1', '6', 'b'));
+ es_format_Init (&fmt, AUDIO_ES, VLC_CODEC_S16B);
fmt.audio.i_rate = 44100;
fmt.audio.i_channels = 1;
return codec_init (demux, &fmt);
{
es_format_t fmt;
- es_format_Init (&fmt, AUDIO_ES, VLC_FOURCC ('Q', 'c', 'l', 'p'));
+ es_format_Init (&fmt, AUDIO_ES, VLC_CODEC_QCELP);
fmt.audio.i_rate = 8000;
fmt.audio.i_channels = 1;
return codec_init (demux, &fmt);
{
es_format_t fmt;
- es_format_Init (&fmt, AUDIO_ES, VLC_FOURCC ('m', 'p', 'g', 'a'));
+ es_format_Init (&fmt, AUDIO_ES, VLC_CODEC_MPGA);
fmt.audio.i_channels = 2;
fmt.b_packetized = false;
return codec_init (demux, &fmt);
{
es_format_t fmt;
- es_format_Init (&fmt, VIDEO_ES, VLC_FOURCC ('m', 'p', 'g', 'v'));
+ es_format_Init (&fmt, VIDEO_ES, VLC_CODEC_MPGV);
fmt.b_packetized = false;
return codec_init (demux, &fmt);
}
break;
es_format_t fmt;
- es_format_Init (&fmt, AUDIO_ES, VLC_FOURCC ('v','o','r','b'));
+ es_format_Init (&fmt, AUDIO_ES, VLC_CODEC_VORBIS);
fmt.p_extra = extv;
fmt.i_extra = extc;
codec_destroy (demux, self->id);
rmff_fix_header(header);
- if( desc ) sdpplin_free( desc );
+ sdpplin_free( desc );
free( buf );
return header;
error:
- if( desc ) sdpplin_free( desc );
- if( header ) rmff_free_header( header );
+ sdpplin_free( desc );
+ rmff_free_header( header );
free( buf );
return NULL;
}
return h;
error:
- if( h ) rmff_free_header( h );
+ rmff_free_header( h );
free( challenge1 );
free( session_id );
free( description );
* sdp/sdpplin parser.
*
*/
-
+
#include "real.h"
+#include "vlc_strings.h"
#define BUFLEN 32000
-/*
- * Decodes base64 strings (based upon b64 package)
- */
-
-static char *b64_decode(const char *in, char *out, int *size) {
-
- char dtable[256]; /* Encode / decode table */
- int i,k;
- unsigned int j;
-
- for( i = 0; i < 256; i++ )
- dtable[i] = 0x80;
-
- for( i = 'A'; i <= 'Z'; i++ )
- dtable[i] = 0 + (i - 'A');
-
- for( i = 'a'; i <= 'z'; i++ )
- dtable[i] = 26 + (i - 'a');
-
- for( i = '0'; i <= '9'; i++ )
- dtable[i] = 52 + (i - '0');
-
- dtable['+'] = 62;
- dtable['/'] = 63;
- dtable['='] = 0;
-
- k=0;
- /*CONSTANTCONDITION*/
- int in_len = strlen(in);
- for (j=0; j < in_len; j+=4) {
- char a[4], b[4];
-
- for (i = 0; i < 4 && j + i < in_len; i++) {
- int c = in[i+j];
-
- if (dtable[c] & 0x80) {
- printf("Illegal character '%c' in input.\n", c);
- exit(1);
- }
- a[i] = (char) c;
- b[i] = (char) dtable[c];
- }
- //xine_buffer_ensure_size(out, k+3);
- out[k++] = (b[0] << 2) | (b[1] >> 4);
- out[k++] = (b[1] << 4) | (b[2] >> 2);
- out[k++] = (b[2] << 6) | b[3];
- i = a[2] == '=' ? 1 : (a[3] == '=' ? 2 : 3);
- if (i < 3) {
- out[k]=0;
- *size=k;
- return out;
- }
- }
- out[k]=0;
- *size=k;
- return out;
-}
-
-static char *nl(char *data) {
-
+static inline char *nl(char *data) {
char *nlptr = (data) ? strchr(data,'\n') : NULL;
return (nlptr) ? nlptr + 1 : NULL;
}
*data=nl(*data);
}
if(filter(*data,"a=OpaqueData:buffer;",&buf, BUFLEN)) {
- decoded = b64_decode(buf, decoded, &(desc->mlti_data_size));
- if ( decoded != NULL ) {
+ desc->mlti_data_size =
+ vlc_b64_decode_binary_to_buffer(decoded, BUFLEN, buf );
+ if ( desc->mlti_data_size ) {
desc->mlti_data = malloc(desc->mlti_data_size);
memcpy(desc->mlti_data, decoded, desc->mlti_data_size);
handled=1;
continue;
}
if(filter(data,"a=Title:buffer;",&buf, BUFLEN)) {
- decoded=b64_decode(buf, decoded, &len);
- if ( decoded != NULL ) {
- desc->title=strdup(decoded);
- handled=1;
- data=nl(data);
+ desc->title=vlc_b64_decode(buf);
+ if(desc->title) {
+ handled=1;
+ data=nl(data);
}
}
if(filter(data,"a=Author:buffer;",&buf, BUFLEN)) {
- decoded=b64_decode(buf, decoded, &len);
- if ( decoded != NULL ) {
- desc->author=strdup(decoded);
- handled=1;
- data=nl(data);
+ desc->author=vlc_b64_decode(buf);
+ if(desc->author) {
+ handled=1;
+ data=nl(data);
}
}
if(filter(data,"a=Copyright:buffer;",&buf, BUFLEN)) {
- decoded=b64_decode(buf, decoded, &len);
- if ( decoded != NULL ) {
- desc->copyright=strdup(decoded);
- handled=1;
- data=nl(data);
+ desc->copyright=vlc_b64_decode(buf);
+ if(desc->copyright) {
+ handled=1;
+ data=nl(data);
}
}
if(filter(data,"a=Abstract:buffer;",&buf, BUFLEN)) {
- decoded=b64_decode(buf, decoded, &len);
- if ( decoded != NULL ) {
- desc->abstract=strdup(decoded);
- handled=1;
- data=nl(data);
+ desc->abstract=vlc_b64_decode(buf);
+ if(desc->abstract) {
+ handled=1;
+ data=nl(data);
}
}
if(filter(data,"a=StreamCount:integer;",&buf, BUFLEN)) {
switch( p_data->p_screen->ColorSpace() )
{
case B_RGB32:
- i_chroma = VLC_FOURCC('R','V','3','2');
+ i_chroma = VLC_CODEC_RGB32;
i_bits_per_pixel = 32;
break;
case B_RGB16:
- i_chroma = VLC_FOURCC('R','V','1','6');
+ i_chroma = VLC_CODEC_RGB16;
i_bits_per_pixel = 16;
break;
default:
CGLSetOffScreen( p_data->scaled, p_data->dest_width, p_data->dest_height,
p_data->dest_width * 4, p_data->scaled_image );
- es_format_Init( &p_sys->fmt, VIDEO_ES, VLC_FOURCC( 'R','V','3','2' ) );
+ es_format_Init( &p_sys->fmt, VIDEO_ES, VLC_CODEC_RGB32 );
/* p_sys->fmt.video.i_* must set to screen size, not subscreen size */
p_sys->fmt.video.i_width = p_data->screen_width;
msg_Dbg( p_demux, "Using %s for the mouse pointer image", psz_mouse );
memset( &fmt_in, 0, sizeof( fmt_in ) );
memset( &fmt_out, 0, sizeof( fmt_out ) );
- fmt_out.i_chroma = VLC_FOURCC('R','G','B','A');
+ fmt_out.i_chroma = VLC_CODEC_RGBA;
p_image = image_HandlerCreate( p_demux );
if( p_image )
{
{
demux_sys_t *p_sys = p_demux->p_sys;
if( !p_sys->dst.i_planes )
- vout_InitPicture( p_demux, &p_sys->dst,
- p_sys->fmt.video.i_chroma,
- p_sys->fmt.video.i_width,
- p_sys->fmt.video.i_height,
- p_sys->fmt.video.i_aspect );
+ picture_Setup( &p_sys->dst,
+ p_sys->fmt.video.i_chroma,
+ p_sys->fmt.video.i_width,
+ p_sys->fmt.video.i_height,
+ p_sys->fmt.video.i_aspect );
if( !p_sys->p_blend )
{
p_sys->p_blend = vlc_object_create( p_demux, sizeof(filter_t) );
if( p_sys->p_blend )
{
es_format_Init( &p_sys->p_blend->fmt_in, VIDEO_ES,
- VLC_FOURCC('R','G','B','A') );
+ VLC_CODEC_RGBA );
p_sys->p_blend->fmt_in.video = p_sys->p_mouse->format;
p_sys->p_blend->fmt_out = p_sys->fmt;
p_sys->p_blend->p_module =
switch( i_bits_per_pixel )
{
case 8: /* FIXME: set the palette */
- i_chroma = VLC_FOURCC('R','G','B','2'); break;
+ i_chroma = VLC_CODEC_RGB8; break;
case 15:
case 16: /* Yes it is really 15 bits (when using BI_RGB) */
- i_chroma = VLC_FOURCC('R','V','1','5'); break;
+ i_chroma = VLC_CODEC_RGB15; break;
case 24:
- i_chroma = VLC_FOURCC('R','V','2','4'); break;
+ i_chroma = VLC_CODEC_RGB24; break;
case 32:
- i_chroma = VLC_FOURCC('R','V','3','2'); break;
+ i_chroma = VLC_CODEC_RGB32; break;
default:
msg_Err( p_demux, "unknown screen depth %i",
p_sys->fmt.video.i_bits_per_pixel );
switch( i_chroma )
{
- case VLC_FOURCC('R','V','1','5'):
+ case VLC_CODEC_RGB15:
p_sys->fmt.video.i_rmask = 0x7c00;
p_sys->fmt.video.i_gmask = 0x03e0;
p_sys->fmt.video.i_bmask = 0x001f;
break;
- case VLC_FOURCC('R','V','2','4'):
+ case VLC_CODEC_RGB24:
p_sys->fmt.video.i_rmask = 0x00ff0000;
p_sys->fmt.video.i_gmask = 0x0000ff00;
p_sys->fmt.video.i_bmask = 0x000000ff;
break;
- case VLC_FOURCC('R','V','3','2'):
+ case VLC_CODEC_RGB32:
p_sys->fmt.video.i_rmask = 0x00ff0000;
p_sys->fmt.video.i_gmask = 0x0000ff00;
p_sys->fmt.video.i_bmask = 0x000000ff;
switch( win_info.depth )
{
case 8: /* FIXME: set the palette */
- i_chroma = VLC_FOURCC('R','G','B','2'); break;
+ i_chroma = VLC_CODEC_RGB8; break;
case 15:
- i_chroma = VLC_FOURCC('R','V','1','5'); break;
+ i_chroma = VLC_CODEC_RGB15; break;
case 16:
- i_chroma = VLC_FOURCC('R','V','1','6'); break;
+ i_chroma = VLC_CODEC_RGB16; break;
case 24:
case 32:
- i_chroma = VLC_FOURCC('R','V','3','2');
+ i_chroma = VLC_CODEC_RGB32;
win_info.depth = 32;
break;
default:
#include <vlc_input.h>
#include <vlc_demux.h>
#include <vlc_access.h>
-#include <vlc_vout.h>
+#include <vlc_picture.h>
#include <sys/ioctl.h>
#include <sys/mman.h>
static const struct
{
int i_v4l;
- int i_fourcc;
+ vlc_fourcc_t i_fourcc;
} v4lchroma_to_fourcc[] =
{
- { VIDEO_PALETTE_GREY, VLC_FOURCC( 'G', 'R', 'E', 'Y' ) },
+ { VIDEO_PALETTE_GREY, VLC_CODEC_GREY },
{ VIDEO_PALETTE_HI240, VLC_FOURCC( 'I', '2', '4', '0' ) },
- { VIDEO_PALETTE_RGB565, VLC_FOURCC( 'R', 'V', '1', '6' ) },
- { VIDEO_PALETTE_RGB555, VLC_FOURCC( 'R', 'V', '1', '5' ) },
- { VIDEO_PALETTE_RGB24, VLC_FOURCC( 'R', 'V', '2', '4' ) },
- { VIDEO_PALETTE_RGB32, VLC_FOURCC( 'R', 'V', '3', '2' ) },
- { VIDEO_PALETTE_YUV422, VLC_FOURCC( 'Y', 'U', 'Y', '2' ) },
- { VIDEO_PALETTE_YUV422, VLC_FOURCC( 'Y', 'U', 'Y', 'V' ) },
- { VIDEO_PALETTE_YUYV, VLC_FOURCC( 'Y', 'U', 'Y', '2' ) },
- { VIDEO_PALETTE_YUYV, VLC_FOURCC( 'Y', 'U', 'Y', 'V' ) },
- { VIDEO_PALETTE_UYVY, VLC_FOURCC( 'U', 'Y', 'V', 'Y' ) },
+ { VIDEO_PALETTE_RGB565, VLC_CODEC_RGB16 },
+ { VIDEO_PALETTE_RGB555, VLC_CODEC_RGB15 },
+ { VIDEO_PALETTE_RGB24, VLC_CODEC_RGB24 },
+ { VIDEO_PALETTE_RGB32, VLC_CODEC_RGB32 },
+ { VIDEO_PALETTE_YUV422, VLC_CODEC_YUYV },
+ { VIDEO_PALETTE_YUYV, VLC_CODEC_YUYV },
+ { VIDEO_PALETTE_UYVY, VLC_CODEC_UYVY },
{ VIDEO_PALETTE_YUV420, VLC_FOURCC( 'I', '4', '2', 'N' ) },
{ VIDEO_PALETTE_YUV411, VLC_FOURCC( 'I', '4', '1', 'N' ) },
{ VIDEO_PALETTE_RAW, VLC_FOURCC( 'G', 'R', 'A', 'W' ) },
- { VIDEO_PALETTE_YUV422P, VLC_FOURCC( 'I', '4', '2', '2' ) },
- { VIDEO_PALETTE_YUV420P, VLC_FOURCC( 'I', '4', '2', '0' ) },
- { VIDEO_PALETTE_YUV411P, VLC_FOURCC( 'I', '4', '1', '1' ) },
+ { VIDEO_PALETTE_YUV422P, VLC_CODEC_I422 },
+ { VIDEO_PALETTE_YUV420P, VLC_CODEC_I420 },
+ { VIDEO_PALETTE_YUV411P, VLC_CODEC_I411 },
{ 0, 0 }
};
/* Setup rgb mask for RGB formats */
switch( p_sys->i_fourcc )
{
- case VLC_FOURCC('R','V','1','5'):
+ case VLC_CODEC_RGB15:
fmt.video.i_rmask = 0x001f;
fmt.video.i_gmask = 0x03e0;
fmt.video.i_bmask = 0x7c00;
break;
- case VLC_FOURCC('R','V','1','6'):
+ case VLC_CODEC_RGB16:
fmt.video.i_rmask = 0x001f;
fmt.video.i_gmask = 0x07e0;
fmt.video.i_bmask = 0xf800;
break;
- case VLC_FOURCC('R','V','2','4'):
- case VLC_FOURCC('R','V','3','2'):
+ case VLC_CODEC_RGB24:
+ case VLC_CODEC_RGB32:
fmt.video.i_rmask = 0x00ff0000;
fmt.video.i_gmask = 0x0000ff00;
fmt.video.i_bmask = 0x000000ff;
p_sys->i_fourcc = 0;
psz = var_CreateGetString( p_demux, "v4l-chroma" );
- if( strlen( psz ) >= 4 )
+
+ const vlc_fourcc_t i_chroma =
+ vlc_fourcc_GetCodecFromString( VIDEO_ES, psz );
+ if( i_chroma )
{
vid_picture.palette = 0;
- int i_chroma = VLC_FOURCC( psz[0], psz[1], psz[2], psz[3] );
/* Find out v4l chroma code */
for( i = 0; v4lchroma_to_fourcc[i].i_v4l != 0; i++ )
goto vdev_failed;
}
- p_sys->i_fourcc = VLC_FOURCC( 'm','j','p','g' );
+ p_sys->i_fourcc = VLC_CODEC_MJPG;
p_sys->i_frame_pos = -1;
/* queue up all the frames */
else
{
/* Fill in picture_t fields */
- vout_InitPicture( VLC_OBJECT(p_demux), &p_sys->pic, p_sys->i_fourcc,
- p_sys->i_width, p_sys->i_height, p_sys->i_width *
- VOUT_ASPECT_FACTOR / p_sys->i_height );
- if( !p_sys->pic.i_planes )
+ if( picture_Setup( &p_sys->pic, p_sys->i_fourcc,
+ p_sys->i_width, p_sys->i_height, p_sys->i_width *
+ VOUT_ASPECT_FACTOR / p_sys->i_height ) )
{
msg_Err( p_demux, "unsupported chroma" );
goto vdev_failed;
static const struct
{
unsigned int i_v4l2;
- int i_fourcc;
+ vlc_fourcc_t i_fourcc;
int i_rmask;
int i_gmask;
int i_bmask;
} v4l2chroma_to_fourcc[] =
{
/* Raw data types */
- { V4L2_PIX_FMT_GREY, VLC_FOURCC('G','R','E','Y'), 0, 0, 0 },
+ { V4L2_PIX_FMT_GREY, VLC_CODEC_GREY, 0, 0, 0 },
{ V4L2_PIX_FMT_HI240, VLC_FOURCC('I','2','4','0'), 0, 0, 0 },
- { V4L2_PIX_FMT_RGB555, VLC_FOURCC('R','V','1','5'), 0x001f,0x03e0,0x7c00 },
- { V4L2_PIX_FMT_RGB565, VLC_FOURCC('R','V','1','6'), 0x001f,0x07e0,0xf800 },
+ { V4L2_PIX_FMT_RGB555, VLC_CODEC_RGB15, 0x001f,0x03e0,0x7c00 },
+ { V4L2_PIX_FMT_RGB565, VLC_CODEC_RGB16, 0x001f,0x07e0,0xf800 },
/* Won't work since we don't know how to handle such gmask values
* correctly
- { V4L2_PIX_FMT_RGB555X, VLC_FOURCC('R','V','1','5'), 0x007c,0xe003,0x1f00 },
- { V4L2_PIX_FMT_RGB565X, VLC_FOURCC('R','V','1','6'), 0x00f8,0xe007,0x1f00 },
+ { V4L2_PIX_FMT_RGB555X, VLC_CODEC_RGB15, 0x007c,0xe003,0x1f00 },
+ { V4L2_PIX_FMT_RGB565X, VLC_CODEC_RGB16, 0x00f8,0xe007,0x1f00 },
*/
- { V4L2_PIX_FMT_BGR24, VLC_FOURCC('R','V','2','4'), 0xff0000,0xff00,0xff },
- { V4L2_PIX_FMT_RGB24, VLC_FOURCC('R','V','2','4'), 0xff,0xff00,0xff0000 },
- { V4L2_PIX_FMT_BGR32, VLC_FOURCC('R','V','3','2'), 0xff0000,0xff00,0xff },
- { V4L2_PIX_FMT_RGB32, VLC_FOURCC('R','V','3','2'), 0xff,0xff00,0xff0000 },
- { V4L2_PIX_FMT_YUYV, VLC_FOURCC('Y','U','Y','2'), 0, 0, 0 },
- { V4L2_PIX_FMT_YUYV, VLC_FOURCC('Y','U','Y','V'), 0, 0, 0 },
- { V4L2_PIX_FMT_UYVY, VLC_FOURCC('U','Y','V','Y'), 0, 0, 0 },
+ { V4L2_PIX_FMT_BGR24, VLC_CODEC_RGB24, 0xff0000,0xff00,0xff },
+ { V4L2_PIX_FMT_RGB24, VLC_CODEC_RGB24, 0xff,0xff00,0xff0000 },
+ { V4L2_PIX_FMT_BGR32, VLC_CODEC_RGB32, 0xff0000,0xff00,0xff },
+ { V4L2_PIX_FMT_RGB32, VLC_CODEC_RGB32, 0xff,0xff00,0xff0000 },
+ { V4L2_PIX_FMT_YUYV, VLC_CODEC_YUYV, 0, 0, 0 },
+ { V4L2_PIX_FMT_UYVY, VLC_CODEC_UYVY, 0, 0, 0 },
{ V4L2_PIX_FMT_Y41P, VLC_FOURCC('I','4','1','N'), 0, 0, 0 },
- { V4L2_PIX_FMT_YUV422P, VLC_FOURCC('I','4','2','2'), 0, 0, 0 },
- { V4L2_PIX_FMT_YVU420, VLC_FOURCC('Y','V','1','2'), 0, 0, 0 },
- { V4L2_PIX_FMT_YUV411P, VLC_FOURCC('I','4','1','1'), 0, 0, 0 },
- { V4L2_PIX_FMT_YUV410, VLC_FOURCC('I','4','1','0'), 0, 0, 0 },
+ { V4L2_PIX_FMT_YUV422P, VLC_CODEC_I422, 0, 0, 0 },
+ { V4L2_PIX_FMT_YVU420, VLC_CODEC_YV12, 0, 0, 0 },
+ { V4L2_PIX_FMT_YUV411P, VLC_CODEC_I411, 0, 0, 0 },
+ { V4L2_PIX_FMT_YUV410, VLC_CODEC_I410, 0, 0, 0 },
/* Raw data types, not in V4L2 spec but still in videodev2.h and supported
* by VLC */
- { V4L2_PIX_FMT_YUV420, VLC_FOURCC('I','4','2','0'), 0, 0, 0 },
- /* FIXME { V4L2_PIX_FMT_RGB444, VLC_FOURCC('R','V','3','2') }, */
+ { V4L2_PIX_FMT_YUV420, VLC_CODEC_I420, 0, 0, 0 },
+ /* FIXME { V4L2_PIX_FMT_RGB444, VLC_CODEC_RGB32 }, */
/* Compressed data types */
- { V4L2_PIX_FMT_MJPEG, VLC_FOURCC('M','J','P','G'), 0, 0, 0 },
+ { V4L2_PIX_FMT_MJPEG, VLC_CODEC_MJPG, 0, 0, 0 },
#if 0
{ V4L2_PIX_FMT_JPEG, VLC_FOURCC('J','P','E','G') },
{ V4L2_PIX_FMT_DV, VLC_FOURCC('?','?','?','?') },
/* Test and set Chroma */
fmt.fmt.pix.pixelformat = 0;
- if( p_sys->psz_requested_chroma && strlen( p_sys->psz_requested_chroma ) > 0 )
+ if( p_sys->psz_requested_chroma && *p_sys->psz_requested_chroma )
{
/* User specified chroma */
- if( strlen( p_sys->psz_requested_chroma ) >= 4 )
+ const vlc_fourcc_t i_requested_fourcc =
+ vlc_fourcc_GetCodecFromString( VIDEO_ES, p_sys->psz_requested_chroma );
+
+ for( int i = 0; v4l2chroma_to_fourcc[i].i_v4l2 != 0; i++ )
{
- int i_requested_fourcc = VLC_FOURCC(
- p_sys->psz_requested_chroma[0], p_sys->psz_requested_chroma[1],
- p_sys->psz_requested_chroma[2], p_sys->psz_requested_chroma[3] );
- for( int i = 0; v4l2chroma_to_fourcc[i].i_v4l2 != 0; i++ )
+ if( v4l2chroma_to_fourcc[i].i_fourcc == i_requested_fourcc )
{
- if( v4l2chroma_to_fourcc[i].i_fourcc == i_requested_fourcc )
- {
- fmt.fmt.pix.pixelformat = v4l2chroma_to_fourcc[i].i_v4l2;
- break;
- }
+ fmt.fmt.pix.pixelformat = v4l2chroma_to_fourcc[i].i_v4l2;
+ break;
}
}
/* Try and set user chroma */
psz_parser = ( *psz_delim ) ? ( psz_delim + 1 ) : psz_delim;
}
}
- var_Change( p_obj, "allcontrols", VLC_VAR_FREELIST, &val, &text );
+ var_FreeList( &val, &text );
}
/*****************************************************************************
SOURCES_vcdx = \
+ access.h \
access.c \
- intf.c \
- intf.h \
vcd.c \
vcd.h \
vcdplayer.h \
#include <libvcd/logging.h>
#include "vcd.h"
#include "info.h"
-#include "intf.h"
-
-extern void VCDSetOrigin( access_t *p_access, lsn_t i_lsn, track_t i_track,
- const vcdinfo_itemid_t *p_itemid );
+#include "access.h"
/*****************************************************************************
* Local prototypes
#endif
p_vcdplayer->p_access = p_access;
-#ifdef FIXED
- intf_RunThread( p_vcdplayer->p_intf );
-#endif
-
free( psz_source );
return VLC_SUCCESS;
*/
case ACCESS_GET_META:
{
- vlc_meta_t **pp_meta = (vlc_meta_t**)va_arg( args, vlc_meta_t** );
-
dbg_print( INPUT_DBG_EVENT, "get meta info" );
#if 0
if( p_vcdplayer->p_meta )
{
+ vlc_meta_t **pp_meta = (vlc_meta_t**)va_arg(args,vlc_meta_t**);
+
*pp_meta = vlc_meta_Duplicate( p_vcdplayer->p_meta );
dbg_print( INPUT_DBG_META, "%s", "Meta copied" );
}
--- /dev/null
+/*****************************************************************************
+ * access.h : VCD access.c routine headers
+ *****************************************************************************
+ * Copyright (C) 2004 the VideoLAN team
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
+ *****************************************************************************/
+#ifndef VCD_ACCESS_H
+#define VCD_ACCESS_H
+
+void VCDSetOrigin( access_t *p_access, lsn_t i_lsn, track_t i_track,
+ const vcdinfo_itemid_t *p_itemid );
+
+int VCDOpen ( vlc_object_t * );
+void VCDClose ( vlc_object_t * );
+
+
+#endif /* VCD_ACCESS_H */
+
+++ /dev/null
-/*****************************************************************************
- * demux.c: demux functions for dvdplay.
- *****************************************************************************
- * Copyright (C) 1998-2001 the VideoLAN team
- * $Id$
- *
- * Author: Stéphane Borel <stef@via.ecp.fr>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
- *****************************************************************************/
-
-/*****************************************************************************
- * Preamble
- *****************************************************************************/
-
-#ifdef HAVE_CONFIG_H
-# include "config.h"
-#endif
-
-#include <stddef.h>
-#include <vlc_common.h>
-#include <vlc_input.h>
-#include <vlc_access.h>
-#include <vlc_interface.h>
-
-#ifdef HAVE_UNISTD_H
-# include <unistd.h>
-#endif
-
-#include <fcntl.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <errno.h>
-
-#ifdef STRNCASECMP_IN_STRINGS_H
-# include <strings.h>
-#endif
-
-#include "vcd.h"
-#include "vcdplayer.h"
-#include "intf.h"
-
-/* how many packets vcdx_Demux will read in each loop */
-/* #define vcdplay_READ_ONCE 64 */
-
-/*****************************************************************************
- * Local prototypes
- *****************************************************************************/
-static int Demux ( input_thread_t * );
-
-/*****************************************************************************
- * Private structure
- *****************************************************************************/
-struct demux_sys_t
-{
- vcd_data_t * p_vcd;
-
- module_t * p_module;
- mpeg_demux_t mpeg;
-};
-
-/*****************************************************************************
- * VCDInit: initializes structures
- *****************************************************************************/
-int VCDInit ( vlc_object_t *p_this )
-{
- input_thread_t *p_input = (input_thread_t *)p_this;
- vcd_data_t * p_vcd = (vcd_data_t *)p_input->p_sys;
- demux_sys_t * p_demux;
-
- printf("++++ VCDInit CALLED\n");
-
-
- if( p_input->stream.i_method != INPUT_METHOD_VCD )
- {
- return VLC_EGENERIC;
- }
-
- p_demux = p_input->p_demux_data = malloc( sizeof(demux_sys_t ) );
- if( p_demux == NULL )
- {
- return VLC_ENOMOD;
- }
-
- p_input->p_private = (void*)&p_demux->mpeg;
- p_demux->p_module = module_need( p_input, "mpeg-system", NULL, false );
- if( p_demux->p_module == NULL )
- {
- free( p_input->p_demux_data );
- return VLC_ENOMOD;
- }
-
- p_input->p_demux_data->p_vcd = p_vcd;
-
- p_input->pf_demux = Demux;
- p_input->pf_demux_control = demux_vaControlDefault;
- p_input->pf_rewind = NULL;
-
- p_vcd->p_intf = NULL;
- p_vcd->i_still_time = 0;
-
- return VLC_SUCCESS;
-}
-
-/*****************************************************************************
- * VCDEnd: frees unused data
- *****************************************************************************/
-void VCDEnd ( vlc_object_t *p_this )
-{
- input_thread_t *p_input = (input_thread_t *)p_this;
- vcd_data_t * p_vcd = p_input->p_demux_data->p_vcd;
-#if FIXED
- intf_thread_t * p_intf = NULL;
-
- p_intf = vlc_object_find( p_input, VLC_OBJECT_INTF, FIND_CHILD );
- if( p_intf != NULL )
- {
- intf_StopThread( p_intf );
- vlc_object_detach( p_intf );
- vlc_object_release( p_intf );
- vlc_object_release( p_intf );
- }
-
- p_vcd->p_intf = NULL;
-#endif
- module_unneed( p_input, p_input->p_demux_data->p_module );
- free( p_input->p_demux_data );
-}
-
-/*****************************************************************************
- * Demux
- *****************************************************************************/
-static int Demux( input_thread_t * p_input )
-{
- vcd_data_t * p_vcd;
- data_packet_t * p_data;
- ssize_t i_result;
- ptrdiff_t i_remains;
- int i_data_nb = 0;
-
- p_vcd = p_input->p_demux_data->p_vcd;
-
- /* Read headers to compute payload length */
- do
- {
- i_result = p_input->p_demux_data->mpeg.pf_read_ps( p_input, &p_data );
-
- if( i_result <= 0 )
- {
- return i_result;
- }
-
- i_remains = p_input->p_last_data - p_input->p_current_data;
-
- p_input->p_demux_data->mpeg.pf_demux_ps( p_input, p_data );
-
-
- ++i_data_nb;
- }
- while( i_remains );
-
-
-
-// if( p_vcd->b_still && p_vcd->b_end_of_cell && p_vcd->p_intf != NULL )
- if( p_vcd->i_still_time && p_vcd->b_end_of_cell && p_vcd->p_intf != NULL )
- {
- pgrm_descriptor_t * p_pgrm;
-
- /* when we receive still_time flag, we have to pause immediately */
- var_SetInteger( p_input, "state", PAUSE_S );
-
- vcdIntfStillTime( p_vcd->p_intf, p_vcd->i_still_time );
- p_vcd->i_still_time = 0;
-
- vlc_mutex_lock( &p_input->stream.stream_lock );
-
- p_pgrm = p_input->stream.p_selected_program;
- p_pgrm->i_synchro_state = SYNCHRO_REINIT;
-
- vlc_mutex_unlock( &p_input->stream.stream_lock );
-
- input_ClockManageControl( p_input, p_pgrm, 0 );
- }
-
- return i_data_nb;
-}
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
*****************************************************************************/
#ifdef HAVE_CONFIG_H
#include <vlc_input.h>
#include <vlc_access.h>
#include "vcd.h"
-#include <vlc_keys.h>
#include "info.h"
#include <cdio/cdio.h>
#include <libvcd/info.h>
#include <libvcd/logging.h>
-static inline void
-MetaInfoAddStr( access_t *p_access, char *psz_cat,
- const char *title, const char *psz )
-{
- vcdplayer_t *p_vcdplayer = (vcdplayer_t *) p_access->p_sys;
- if ( psz ) {
- dbg_print( INPUT_DBG_META, "cat %s, field: %s: %s", psz_cat, title, psz);
- input_Control( p_vcdplayer->p_input, INPUT_ADD_INFO, psz_cat, title, "%s",
- psz);
- }
-}
-
-
-static inline void
-MetaInfoAddNum(access_t *p_access, char *psz_cat, const char *title, int num)
-{
- vcdplayer_t *p_vcdplayer = (vcdplayer_t *) p_access->p_sys;
- dbg_print( INPUT_DBG_META, "cat %s, field %s: %d", psz_cat, title, num);
- input_Control( p_vcdplayer->p_input, INPUT_ADD_INFO, psz_cat, title,
- "%d", num );
-}
-
-static inline void
-MetaInfoAddHex(access_t *p_access, char *psz_cat, const char *title, int hex)
-{
- vcdplayer_t *p_vcdplayer = (vcdplayer_t *) p_access->p_sys;
- dbg_print( INPUT_DBG_META, "cat %s, field %s: %d", psz_cat, title, hex);
- input_Control( p_vcdplayer->p_input, INPUT_ADD_INFO, psz_cat, title,
- "%x", hex );
-}
-
-#define addstr(title, str) \
- MetaInfoAddStr( p_access, psz_cat, title, str );
-
-#define addnum(title, num) \
- MetaInfoAddNum( p_access, psz_cat, title, num );
-
-#define addhex(title, hex) \
- MetaInfoAddHex( p_access, psz_cat, title, hex );
-
+static char *
+VCDFormatStr(vcdplayer_t *p_vcdplayer,
+ const char *format_str, const char *mrl,
+ const vcdinfo_itemid_t *itemid);
void
VCDMetaInfo( access_t *p_access, /*const*/ char *psz_mrl )
{
- vcdplayer_t *p_vcdplayer = (vcdplayer_t *) p_access->p_sys;
- unsigned int i_entries = vcdinfo_get_num_entries(p_vcdplayer->vcd);
- unsigned int last_entry = 0;
- char *psz_cat;
+ vcdplayer_t *p_vcdplayer = (vcdplayer_t *) p_access->p_sys;
+ input_thread_t *p_input = p_vcdplayer->p_input;
+ vcdinfo_obj_t *p_vcdev = p_vcdplayer->vcd;
+
+ size_t i_entries = vcdinfo_get_num_entries(p_vcdev);
+ size_t last_entry = 0;
+ char *psz_cat = _("Disc");
+
track_t i_track;
- psz_cat = _("Disc");
-
- addstr( _("VCD Format"), vcdinfo_get_format_version_str(p_vcdplayer->vcd) );
- addstr( _("Album"), vcdinfo_get_album_id(p_vcdplayer->vcd));
- addstr( _("Application"), vcdinfo_get_application_id(p_vcdplayer->vcd) );
- addstr( _("Preparer"), vcdinfo_get_preparer_id(p_vcdplayer->vcd) );
- addnum( _("Vol #"), vcdinfo_get_volume_num(p_vcdplayer->vcd) );
- addnum( _("Vol max #"), vcdinfo_get_volume_count(p_vcdplayer->vcd) );
- addstr( _("Volume Set"), vcdinfo_get_volumeset_id(p_vcdplayer->vcd) );
- addstr( _("Volume"), vcdinfo_get_volume_id(p_vcdplayer->vcd) );
- addstr( _("Publisher"), vcdinfo_get_publisher_id(p_vcdplayer->vcd) );
- addstr( _("System Id"), vcdinfo_get_system_id(p_vcdplayer->vcd) );
- addnum( "LIDs", vcdinfo_get_num_LIDs(p_vcdplayer->vcd) );
- addnum( _("Entries"), vcdinfo_get_num_entries(p_vcdplayer->vcd) );
- addnum( _("Segments"), vcdinfo_get_num_segments(p_vcdplayer->vcd) );
- addnum( _("Tracks"), vcdinfo_get_num_tracks(p_vcdplayer->vcd) );
+# define addstr(t,v) input_Control(p_input,INPUT_ADD_INFO,psz_cat,t,"%s",v)
+# define addnum(t,v) input_Control(p_input,INPUT_ADD_INFO,psz_cat,t,"%d",v)
+# define addhex(t,v) input_Control(p_input,INPUT_ADD_INFO,psz_cat,t,"%x",v)
+
+ addstr(_("VCD Format"), vcdinfo_get_format_version_str(p_vcdev));
+ addstr(_("Album"), vcdinfo_get_album_id (p_vcdev));
+ addstr(_("Application"), vcdinfo_get_application_id (p_vcdev));
+ addstr(_("Preparer"), vcdinfo_get_preparer_id (p_vcdev));
+ addnum(_("Vol #"), vcdinfo_get_volume_num (p_vcdev));
+ addnum(_("Vol max #"), vcdinfo_get_volume_count (p_vcdev));
+ addstr(_("Volume Set"), vcdinfo_get_volumeset_id (p_vcdev));
+ addstr(_("Volume"), vcdinfo_get_volume_id (p_vcdev));
+ addstr(_("Publisher"), vcdinfo_get_publisher_id (p_vcdev));
+ addstr(_("System Id"), vcdinfo_get_system_id (p_vcdev));
+ addnum("LIDs", vcdinfo_get_num_LIDs (p_vcdev));
+ addnum(_("Entries"), vcdinfo_get_num_entries (p_vcdev));
+ addnum(_("Segments"), vcdinfo_get_num_segments (p_vcdev));
+ addnum(_("Tracks"), vcdinfo_get_num_tracks (p_vcdev));
/* Spit out track information. Could also include MSF info.
Also build title table.
*/
-#define TITLE_MAX 30
for( i_track = 1 ; i_track < p_vcdplayer->i_tracks ; i_track++ ) {
- char psz_cat[20];
- unsigned int audio_type = vcdinfo_get_track_audio_type(p_vcdplayer->vcd,
- i_track);
- uint32_t i_secsize = vcdinfo_get_track_sect_count(p_vcdplayer->vcd, i_track);
+ unsigned int audio_type = vcdinfo_get_track_audio_type(p_vcdev, i_track);
+ uint32_t i_secsize = vcdinfo_get_track_sect_count(p_vcdev, i_track);
- snprintf(psz_cat, sizeof(psz_cat), "Track %d", i_track);
if (p_vcdplayer->b_svd) {
addnum(_("Audio Channels"),
- vcdinfo_audio_type_num_channels(p_vcdplayer->vcd, audio_type) );
+ vcdinfo_audio_type_num_channels(p_vcdev, audio_type) );
}
- addnum(_("First Entry Point"), last_entry );
- for ( ; last_entry < i_entries
- && vcdinfo_get_track(p_vcdplayer->vcd, last_entry) == i_track;
- last_entry++ ) ;
+ addnum(_("First Entry Point"), 0 );
+
+ for ( last_entry = 0 ; last_entry < i_entries
+ && vcdinfo_get_track(p_vcdev, last_entry) == i_track; last_entry++ ) ;
+
addnum(_("Last Entry Point"), last_entry-1 );
addnum(_("Track size (in sectors)"), i_secsize );
}
lid_t i_lid;
for( i_lid = 1 ; i_lid <= p_vcdplayer->i_lids ; i_lid++ ) {
PsdListDescriptor_t pxd;
- char psz_cat[20];
- snprintf(psz_cat, sizeof(psz_cat), "LID %d", i_lid);
- if (vcdinfo_lid_get_pxd(p_vcdplayer->vcd, &pxd, i_lid)) {
+ if (vcdinfo_lid_get_pxd(p_vcdev, &pxd, i_lid)) {
switch (pxd.descriptor_type) {
case PSD_TYPE_END_LIST:
addstr(_("type"), _("end"));
break;
case PSD_TYPE_SELECTION_LIST:
case PSD_TYPE_EXT_SELECTION_LIST:
- addstr(_("type"),
- PSD_TYPE_SELECTION_LIST == pxd.descriptor_type
- ? _("extended selection list")
- : _("selection list")
- );
+ addstr(_("type"), PSD_TYPE_SELECTION_LIST == pxd.descriptor_type
+ ? _("extended selection list") : _("selection list") );
addhex("default", vcdinf_psd_get_default_offset(pxd.psd));
addhex("loop count", vcdinf_get_loop_count(pxd.psd));
addhex("next", vcdinf_psd_get_next_offset(pxd.psd));
}
}
}
+# undef addstr
+# undef addnum
+# undef addhex
if ( CDIO_INVALID_TRACK != i_track )
{
- char* psz_title_format = config_GetPsz( p_access, MODULE_STRING "-title-format" );
- char *psz_name =
- VCDFormatStr( p_access, p_vcdplayer, psz_title_format, psz_mrl,
- &(p_vcdplayer->play_item) );
- free( psz_title_format );
+ char *psz_tfmt = config_GetPsz( p_access, MODULE_STRING "-title-format" );
+ char *psz_name = VCDFormatStr( p_vcdplayer, psz_tfmt, psz_mrl,
+ &(p_vcdplayer->play_item) );
+ free( psz_tfmt );
- input_Control( p_vcdplayer->p_input, INPUT_SET_NAME, psz_name );
+ input_Control( p_input, INPUT_SET_NAME, psz_name );
+ free( psz_name );
}
}
-#define add_format_str_info(val) \
- { \
- const char *str = strdup(val); \
- unsigned int len; \
- if (val != NULL) { \
- len=strlen(str); \
- if (len != 0) { \
- strncat(tp, str, TEMP_STR_LEN-(tp-temp_str)); \
- tp += len; \
- } \
- saw_control_prefix = false; \
- } \
- }
-
-#define add_format_num_info( val, fmt ) \
- { \
- char num_str[10]; \
- unsigned int len; \
- sprintf(num_str, fmt, val); \
- len = strlen(num_str); \
- if( len != 0 ) \
- { \
- strncat(tp, num_str, TEMP_STR_LEN-(tp-temp_str)); \
- tp += len; \
- } \
- saw_control_prefix = false; \
- }
-
/*!
Take a format string and expand escape sequences, that is sequences that
begin with %, with information from the current VCD.
A number between 1 and the volume count.
%% : a %
*/
-char *
-VCDFormatStr(const access_t *p_access, vcdplayer_t *p_vcdplayer,
- const char format_str[], const char *mrl,
+static char *
+VCDFormatStr(vcdplayer_t *p_vcdplayer,
+ const char *format_str, const char *mrl,
const vcdinfo_itemid_t *itemid)
{
#define TEMP_STR_SIZE 256
-#define TEMP_STR_LEN (TEMP_STR_SIZE-1)
- char temp_str[TEMP_STR_SIZE];
- size_t i;
- char * tp = temp_str;
- bool saw_control_prefix = false;
- size_t format_len = strlen(format_str);
+ char temp_str[TEMP_STR_SIZE];
+ char *tp = temp_str;
+ const char *te = tp+TEMP_STR_SIZE-1;
+ bool saw_control_prefix = false;
memset(temp_str, 0, TEMP_STR_SIZE);
- for (i=0; i<format_len; i++) {
+ for (; *format_str && tp<te; ++format_str) {
- if (!saw_control_prefix && format_str[i] != '%') {
- *tp++ = format_str[i];
+ if (!saw_control_prefix && *format_str != '%') {
+ *tp++ = *format_str;
saw_control_prefix = false;
continue;
}
- switch(format_str[i]) {
+ switch(*format_str) {
case '%':
if (saw_control_prefix) {
*tp++ = '%';
saw_control_prefix = !saw_control_prefix;
break;
case 'A':
- add_format_str_info(vcdinfo_strip_trail(vcdinfo_get_album_id(p_vcdplayer->vcd),
- MAX_ALBUM_LEN));
+ tp += snprintf(tp,te-tp,"%s",
+ vcdinfo_strip_trail(vcdinfo_get_album_id(p_vcdplayer->vcd),
+ MAX_ALBUM_LEN));
break;
case 'c':
- add_format_num_info(vcdinfo_get_volume_num(p_vcdplayer->vcd), "%d");
+ tp += snprintf(tp,te-tp,"%d",vcdinfo_get_volume_num(p_vcdplayer->vcd));
break;
case 'C':
- add_format_num_info(vcdinfo_get_volume_count(p_vcdplayer->vcd), "%d");
+ tp += snprintf(tp,te-tp,"%d",vcdinfo_get_volume_count(p_vcdplayer->vcd));
break;
case 'F':
- add_format_str_info(vcdinfo_get_format_version_str(p_vcdplayer->vcd));
+ tp += snprintf(tp,te-tp,"%s",
+ vcdinfo_get_format_version_str(p_vcdplayer->vcd));
break;
case 'I':
{
switch (itemid->type) {
case VCDINFO_ITEM_TYPE_TRACK:
- strncat(tp, _("Track"), TEMP_STR_LEN-(tp-temp_str));
- tp += strlen(_("Track"));
+ tp += snprintf(tp,te-tp,"%s",_("Track"));
break;
case VCDINFO_ITEM_TYPE_ENTRY:
- strncat(tp, _("Entry"), TEMP_STR_LEN-(tp-temp_str));
- tp += strlen(_("Entry"));
+ tp += snprintf(tp,te-tp,"%s",_("Entry"));
break;
case VCDINFO_ITEM_TYPE_SEGMENT:
- strncat(tp, _("Segment"), TEMP_STR_LEN-(tp-temp_str));
- tp += strlen(_("Segment"));
+ tp += snprintf(tp,te-tp,"%s",_("Segment"));
break;
case VCDINFO_ITEM_TYPE_LID:
- strncat(tp, _("List ID"), TEMP_STR_LEN-(tp-temp_str));
- tp += strlen(_("List ID"));
+ tp += snprintf(tp,te-tp,"%s",_("List ID"));
break;
case VCDINFO_ITEM_TYPE_SPAREID2:
- strncat(tp, _("Navigation"), TEMP_STR_LEN-(tp-temp_str));
- tp += strlen(_("Navigation"));
+ tp += snprintf(tp,te-tp,"%s",_("Navigation"));
break;
default:
/* What to do? */
break;
case 'L':
- if (vcdplayer_pbc_is_on(p_vcdplayer)) {
- char num_str[40];
- sprintf(num_str, "%s %d", _("List ID"), p_vcdplayer->i_lid);
- strncat(tp, num_str, TEMP_STR_LEN-(tp-temp_str));
- tp += strlen(num_str);
- }
+ if (vcdplayer_pbc_is_on(p_vcdplayer))
+ tp += snprintf(tp,te-tp,"%s %d",_("List ID"),p_vcdplayer->i_lid);
saw_control_prefix = false;
break;
case 'M':
- add_format_str_info(mrl);
+ tp += snprintf(tp,te-tp,"%s",mrl);
break;
case 'N':
- add_format_num_info(itemid->num, "%d");
+ tp += snprintf(tp,te-tp,"%d",itemid->num);
break;
case 'p':
- add_format_str_info(vcdinfo_get_preparer_id(p_vcdplayer->vcd));
+ tp += snprintf(tp,te-tp,"%s",vcdinfo_get_preparer_id(p_vcdplayer->vcd));
break;
case 'P':
- add_format_str_info(vcdinfo_get_publisher_id(p_vcdplayer->vcd));
+ tp += snprintf(tp,te-tp,"%s",vcdinfo_get_publisher_id(p_vcdplayer->vcd));
break;
case 'S':
if ( VCDINFO_ITEM_TYPE_SEGMENT==itemid->type ) {
- char seg_type_str[30];
-
- sprintf(seg_type_str, " %s",
+ tp += snprintf(tp,te-tp," %s",
vcdinfo_video_type2str(p_vcdplayer->vcd, itemid->num));
- strncat(tp, seg_type_str, TEMP_STR_LEN-(tp-temp_str));
- tp += strlen(seg_type_str);
}
saw_control_prefix = false;
break;
case 'T':
- add_format_num_info(p_vcdplayer->i_track, "%d");
+ tp += snprintf(tp,te-tp,"%d",p_vcdplayer->i_track);
break;
case 'V':
- add_format_str_info(vcdinfo_get_volumeset_id(p_vcdplayer->vcd));
+ tp += snprintf(tp,te-tp,"%s",vcdinfo_get_volumeset_id(p_vcdplayer->vcd));
break;
case 'v':
- add_format_str_info(vcdinfo_get_volume_id(p_vcdplayer->vcd));
+ tp += snprintf(tp,te-tp,"%s",vcdinfo_get_volume_id(p_vcdplayer->vcd));
break;
default:
*tp++ = '%';
- *tp++ = format_str[i];
+ if(tp<te)
+ *tp++ = *format_str;
saw_control_prefix = false;
}
}
void
VCDUpdateTitle( access_t *p_access )
{
-
vcdplayer_t *p_vcdplayer= (vcdplayer_t *)p_access->p_sys;
- unsigned int psz_mrl_max = strlen(VCD_MRL_PREFIX)
- + strlen(p_vcdplayer->psz_source) + sizeof("@E999")+3;
+ size_t psz_mrl_max = strlen(VCD_MRL_PREFIX)
+ + strlen(p_vcdplayer->psz_source) + sizeof("@E999")+3;
char *psz_mrl = malloc( psz_mrl_max );
if( psz_mrl )
{
char *psz_name;
- char* psz_title_format = config_GetPsz( p_access, MODULE_STRING "-title-format" );
+ char *psz_tfmt = config_GetPsz( p_access, MODULE_STRING "-title-format" );
snprintf( psz_mrl, psz_mrl_max, "%s%s",
VCD_MRL_PREFIX, p_vcdplayer->psz_source );
- psz_name = VCDFormatStr( p_access, p_vcdplayer, psz_title_format, psz_mrl,
+ free(psz_tfmt);
+ psz_name = VCDFormatStr( p_vcdplayer, psz_tfmt, psz_mrl,
&(p_vcdplayer->play_item) );
- input_Control( p_vcdplayer->p_input, INPUT_SET_NAME, psz_name );
- free( psz_title_format );
free(psz_mrl);
+ input_Control( p_vcdplayer->p_input, INPUT_SET_NAME, psz_name );
+ free(psz_name);
}
}
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
*****************************************************************************/
#ifndef VCD_INFO_H
void VCDMetaInfo( access_t *p_access, /*const*/ char *psz_mrl );
-char * VCDFormatStr(const access_t *p_access, vcdplayer_t *p_vcdplayer,
- const char format_str[], const char *mrl,
+#if 0
+char * VCDFormatStr(vcdplayer_t *p_vcdplayer,
+ const char *format_str, const char *mrl,
const vcdinfo_itemid_t *itemid);
+#endif
+
void VCDUpdateTitle( access_t *p_access );
+++ /dev/null
-/*****************************************************************************
- * intf.c: Video CD interface to handle user interaction and still time
- *****************************************************************************
- * Copyright (C) 2002,2003 the VideoLAN team
- * $Id$
- *
- * Author: Rocky Bernstein <rocky@panix.com>
- * from DVD code by Stéphane Borel <stef@via.ecp.fr>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
- *****************************************************************************/
-
-/*****************************************************************************
- * Preamble
- *****************************************************************************/
-#ifdef HAVE_CONFIG_H
-# include "config.h"
-#endif
-
-#include <vlc_common.h>
-#include <vlc_interface.h>
-#include <vlc_access.h>
-
-#include "vlc_keys.h"
-
-#include "vcd.h"
-#include "vcdplayer.h"
-#include "intf.h"
-
-/*****************************************************************************
- * Local prototypes.
- *****************************************************************************/
-static int InitThread ( intf_thread_t *p_intf );
-static int KeyEvent ( vlc_object_t *, char const *,
- vlc_value_t, vlc_value_t, void * );
-
-/* Exported functions */
-static void RunIntf ( intf_thread_t *p_intf );
-
-/*****************************************************************************
- * OpenIntf: initialize dummy interface
- *****************************************************************************/
-int VCDOpenIntf ( vlc_object_t *p_this )
-{
- intf_thread_t *p_intf = (intf_thread_t *)p_this;
-
- msg_Dbg( p_intf, "VCDOpenIntf" );
-
- /* Allocate instance and initialize some members */
- p_intf->p_sys = malloc( sizeof( intf_sys_t ) );
- if( p_intf->p_sys == NULL )
- {
- return( VLC_EGENERIC );
- };
- vlc_mutex_init( &p_intf->p_sys->lock );
-
- p_intf->pf_run = RunIntf;
-
- var_AddCallback( p_intf->p_libvlc, "key-pressed", KeyEvent, p_intf );
- p_intf->p_sys->m_still_time = 0;
- p_intf->p_sys->b_infinite_still = 0;
- p_intf->p_sys->b_still = 0;
-
- return( VLC_SUCCESS );
-}
-
-/*****************************************************************************
- * CloseIntf: destroy dummy interface
- *****************************************************************************/
-void VCDCloseIntf ( vlc_object_t *p_this )
-{
- intf_thread_t *p_intf = (intf_thread_t *)p_this;
- var_DelCallback( p_intf->p_libvlc, "key-pressed", KeyEvent, p_intf );
-
- /* Destroy structure */
- vlc_mutex_destroy( &p_intf->p_sys->lock );
- free( p_intf->p_sys );
-}
-
-
-/*****************************************************************************
- * RunIntf: main loop
- *****************************************************************************/
-static void
-RunIntf( intf_thread_t *p_intf )
-{
- vlc_object_t * p_vout = NULL;
- mtime_t mtime = 0;
- mtime_t mlast = 0;
- vcdplayer_t * p_vcdplayer;
- input_thread_t * p_input;
- access_t * p_access;
-
- /* What you add to the last input number entry. It accumulates all of
- the 10_ADD keypresses */
- int number_addend = 0;
-
- int canc = vlc_savecancel();
- if( InitThread( p_intf ) < 0 )
- {
- msg_Err( p_intf, "can't initialize intf" );
- return;
- }
-
- p_input = p_intf->p_sys->p_input;
-
- while ( !p_intf->p_sys->p_vcdplayer )
- {
- msleep( INTF_IDLE_SLEEP );
- }
-
- p_vcdplayer = p_intf->p_sys->p_vcdplayer;
- p_access = p_vcdplayer->p_access;
-
- canc = vlc_savecancel();
- dbg_print( INPUT_DBG_CALL, "intf initialized" );
-
- /* Main loop */
- while( vlc_object_alive (p_intf) )
- {
- vlc_mutex_lock( &p_intf->p_sys->lock );
-
- /*
- * Have we timed-out in showing a still frame?
- */
- if( p_intf->p_sys->b_still && !p_intf->p_sys->b_infinite_still )
- {
- if( p_intf->p_sys->m_still_time > 0 )
- {
- /* Update remaining still time */
- dbg_print(INPUT_DBG_STILL, "updating still time");
- mtime = mdate();
- if( mlast )
- {
- p_intf->p_sys->m_still_time -= mtime - mlast;
- }
-
- mlast = mtime;
- }
- else
- {
- /* Still time has elapsed; set to continue playing. */
- dbg_print(INPUT_DBG_STILL, "wait time done - setting play");
- var_SetInteger( p_intf->p_sys->p_input, "state", PLAYING_S );
- p_intf->p_sys->m_still_time = 0;
- p_intf->p_sys->b_still = 0;
- mlast = 0;
- }
- }
-
- /*
- * Do we have a keyboard event?
- */
- if( p_vout && p_intf->p_sys->b_key_pressed )
- {
- vlc_value_t val;
- int i, i_action = -1;
- struct hotkey *p_hotkeys = p_intf->p_libvlc->p_hotkeys;
-
- p_intf->p_sys->b_key_pressed = false;
-
- /* Find action triggered by hotkey (if any) */
- var_Get( p_intf->p_libvlc, "key-pressed", &val );
-
- dbg_print( INPUT_DBG_EVENT, "Key pressed %d", val.i_int );
-
- for( i = 0; p_hotkeys[i].psz_action != NULL; i++ )
- {
- if( p_hotkeys[i].i_key == val.i_int )
- {
- i_action = p_hotkeys[i].i_action;
- }
- }
-
- if( i_action != -1) {
- switch (i_action) {
-
- case ACTIONID_NAV_LEFT:
- dbg_print( INPUT_DBG_EVENT, "ACTIONID_NAV_LEFT - prev (%d)",
- number_addend );
- do {
- vcdplayer_play_prev( p_access );
- } while (number_addend-- > 0);
- break;
-
- case ACTIONID_NAV_RIGHT:
- dbg_print( INPUT_DBG_EVENT, "ACTIONID_NAV_RIGHT - next (%d)",
- number_addend );
- do {
- vcdplayer_play_next( p_access );
- } while (number_addend-- > 0);
- break;
-
- case ACTIONID_NAV_UP:
- dbg_print( INPUT_DBG_EVENT, "ACTIONID_NAV_UP - return" );
- do {
- vcdplayer_play_return( p_access );
- } while (number_addend-- > 0);
- break;
-
- case ACTIONID_NAV_DOWN:
- dbg_print( INPUT_DBG_EVENT, "ACTIONID_NAV_DOWN - default" );
- vcdplayer_play_default( p_access );
- break;
-
- case ACTIONID_NAV_ACTIVATE:
- {
- vcdinfo_itemid_t itemid;
- itemid.type=p_vcdplayer->play_item.type;
-
- dbg_print( INPUT_DBG_EVENT, "ACTIONID_NAV_ACTIVATE" );
-
- if ( vcdplayer_pbc_is_on( p_vcdplayer )
- && number_addend != 0 ) {
- lid_t next_num=vcdinfo_selection_get_lid(p_vcdplayer->vcd,
- p_vcdplayer->i_lid,
- number_addend);
- if (VCDINFO_INVALID_LID != next_num) {
- itemid.num = next_num;
- itemid.type = VCDINFO_ITEM_TYPE_LID;
- vcdplayer_play( p_access, itemid );
- }
- } else {
- itemid.num = number_addend;
- vcdplayer_play( p_access, itemid );
- }
- break;
- }
- }
- number_addend = 0;
-
- /* Any keypress gets rid of still frame waiting.
- FIXME - should handle just the ones that cause an action.
- */
- if( p_intf->p_sys->b_still )
- {
- dbg_print(INPUT_DBG_STILL, "Playing still after activate");
- var_SetInteger( p_intf->p_sys->p_input, "state", PLAYING_S );
- p_intf->p_sys->b_still = 0;
- p_intf->p_sys->b_infinite_still = 0;
- p_intf->p_sys->m_still_time = 0;
- }
-
- } else {
- unsigned int digit_entered=0;
-
- switch (val.i_int) {
- case '9':
- digit_entered++;
- case '8':
- digit_entered++;
- case '7':
- digit_entered++;
- case '6':
- digit_entered++;
- case '5':
- digit_entered++;
- case '4':
- digit_entered++;
- case '3':
- digit_entered++;
- case '2':
- digit_entered++;
- case '1':
- digit_entered++;
- case '0':
- {
- number_addend *= 10;
- number_addend += digit_entered;
- dbg_print( INPUT_DBG_EVENT,
- "Added %d. Number is now: %d\n",
- digit_entered, number_addend);
- break;
- }
- }
- }
- }
-
-
- vlc_mutex_unlock( &p_intf->p_sys->lock );
-
- if( p_vout == NULL )
- {
- p_vout = vlc_object_find( p_intf->p_sys->p_input,
- VLC_OBJECT_VOUT, FIND_CHILD );
- if( p_vout )
- {
- var_AddCallback( p_vout, "key-pressed", KeyEvent, p_intf );
- }
- }
-
-
- /* Wait a bit */
- msleep( INTF_IDLE_SLEEP );
- }
-
- if( p_vout )
- {
- var_DelCallback( p_vout, "key-pressed", KeyEvent, p_intf );
- vlc_object_release( p_vout );
- }
-
- vlc_object_release( p_intf->p_sys->p_input );
- vlc_restorecancel( canc );
-}
-
-/*****************************************************************************
- * InitThread:
- *****************************************************************************/
-static int InitThread( intf_thread_t * p_intf )
-{
- /* We might need some locking here */
- input_thread_t * p_input;
-
- p_input = vlc_object_find( p_intf, VLC_OBJECT_INPUT, FIND_PARENT );
-
- /* Maybe the input just died */
- if( p_input == NULL )
- return VLC_EGENERIC;
-
- vlc_mutex_lock( &p_intf->p_sys->lock );
-
- p_intf->p_sys->p_input = p_input;
- p_intf->p_sys->p_vcdplayer = NULL;
-
- p_intf->p_sys->b_move = false;
- p_intf->p_sys->b_click = false;
- p_intf->p_sys->b_key_pressed = false;
-
- vlc_mutex_unlock( &p_intf->p_sys->lock );
- /* make sure we return a value */
- return 0;
-}
-
-/*****************************************************************************
- * KeyEvent: callback for keyboard events
- *****************************************************************************/
-static int KeyEvent( vlc_object_t *p_this, char const *psz_var,
- vlc_value_t oldval, vlc_value_t newval, void *p_data )
-{
- intf_thread_t *p_intf = (intf_thread_t *)p_data;
- vlc_mutex_lock( &p_intf->p_sys->lock );
-
- p_intf->p_sys->b_key_pressed = true;
-
- vlc_mutex_unlock( &p_intf->p_sys->lock );
-
- return VLC_SUCCESS;
-}
-
-/*****************************************************************************
- * vcdIntfStillTime: function provided to demux plugin to request
- * still images
- *****************************************************************************/
-int vcdIntfStillTime( intf_thread_t *p_intf, uint8_t i_sec )
-{
- vlc_mutex_lock( &p_intf->p_sys->lock );
-
- p_intf->p_sys->b_still = 1;
- if( 255 == i_sec )
- {
- p_intf->p_sys->b_infinite_still = true;
- }
- else
- {
- p_intf->p_sys->m_still_time = MILLISECONDS_PER_SEC * i_sec;
- }
- vlc_mutex_unlock( &p_intf->p_sys->lock );
-
- return VLC_SUCCESS;
-}
-
-/*****************************************************************************
- * vcdIntfStillTime: function provided to reset still image
- *****************************************************************************/
-int vcdIntfResetStillTime( intf_thread_t *p_intf )
-{
- vlc_mutex_lock( &p_intf->p_sys->lock );
- p_intf->p_sys->m_still_time = 0;
- var_SetInteger( p_intf->p_sys->p_input, "state", PLAYING_S );
- vlc_mutex_unlock( &p_intf->p_sys->lock );
-
- return VLC_SUCCESS;
-}
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
*****************************************************************************/
/*****************************************************************************
#include <vlc_plugin.h>
#include <vlc_charset.h>
-/*****************************************************************************
- * Exported prototypes
- *****************************************************************************/
-int VCDOpen ( vlc_object_t * );
-void VCDClose ( vlc_object_t * );
-int VCDOpenIntf ( vlc_object_t * );
-void VCDCloseIntf ( vlc_object_t * );
-int VCDInit ( vlc_object_t * );
-void VCDEnd ( vlc_object_t * );
-
-int DebugCallback ( vlc_object_t *p_this, const char *psz_name,
- vlc_value_t oldval, vlc_value_t val,
- void *p_data );
-
-int BlocksPerReadCallback ( vlc_object_t *p_this, const char *psz_name,
- vlc_value_t oldval, vlc_value_t val,
- void *p_data );
+#include "vcd.h"
+#include "access.h"
/*****************************************************************************
* Option help text
#include "vcd.h"
#include "vcdplayer.h"
-#include "intf.h"
-
+#include "access.h"
#include <cdio/cdio.h>
#include <cdio/util.h>
#include <libvcd/info.h>
-extern void VCDSetOrigin ( access_t *p_access, lsn_t i_lsn, track_t i_track,
- const vcdinfo_itemid_t * p_itemid );
-
/*!
Return true if playback control (PBC) is on
*/
return true if the caller should return.
*/
-vcdplayer_read_status_t
+static vcdplayer_read_status_t
vcdplayer_non_pbc_nav ( access_t *p_access, uint8_t *wait_time )
{
vcdplayer_t *p_vcdplayer= (vcdplayer_t *)p_access->p_sys;
case VCDINFO_ITEM_TYPE_TRACK:
case VCDINFO_ITEM_TYPE_ENTRY: {
if ( ! vcdplayer_play_next( p_access ) )
- {
- return READ_END;
- }
+ return READ_END;
break;
}
case VCDINFO_ITEM_TYPE_SPAREID2:
if( VCDINFO_NULL_LSN == i_lsn )
{
- LOG_ERR("%s %d", "Invalid LSN for track", i_track);
- return;
+ LOG_ERR("%s %d", "Invalid LSN for track", i_track);
+ return;
}
p_vcdplayer->play_item.num = p_itemid->num;
static bool
vcdplayer_inc_play_item(access_t *p_access)
{
-
vcdplayer_t *p_vcdplayer = (vcdplayer_t *)p_access->p_sys;
int noi;
dbg_print(INPUT_DBG_CALL, "called pli: %d", p_vcdplayer->pdi);
- if ( NULL == p_vcdplayer || NULL == p_vcdplayer->pxd.pld ) return false;
+ if ( NULL == p_vcdplayer || NULL == p_vcdplayer->pxd.pld )
+ return false;
noi = vcdinf_pld_get_noi(p_vcdplayer->pxd.pld);
-
- if ( noi <= 0 ) return false;
+ if ( noi <= 0 )
+ return false;
/* Handle delays like autowait or wait here? */
p_vcdplayer->pdi++;
- if ( p_vcdplayer->pdi < 0 || p_vcdplayer->pdi >= noi ) return false;
+ if ( p_vcdplayer->pdi < 0 || p_vcdplayer->pdi >= noi )
+ return false;
- else {
- uint16_t trans_itemid_num=vcdinf_pld_get_play_item(p_vcdplayer->pxd.pld,
- p_vcdplayer->pdi);
- vcdinfo_itemid_t trans_itemid;
+ uint16_t trans_itemid_num=vcdinf_pld_get_play_item(p_vcdplayer->pxd.pld,
+ p_vcdplayer->pdi);
+ vcdinfo_itemid_t trans_itemid;
- if (VCDINFO_INVALID_ITEMID == trans_itemid_num) return false;
+ if (VCDINFO_INVALID_ITEMID == trans_itemid_num) return false;
- vcdinfo_classify_itemid(trans_itemid_num, &trans_itemid);
- dbg_print(INPUT_DBG_PBC, " play-item[%d]: %s",
- p_vcdplayer->pdi, vcdinfo_pin2str (trans_itemid_num));
- return vcdplayer_play_single_item(p_access, trans_itemid);
- }
+ vcdinfo_classify_itemid(trans_itemid_num, &trans_itemid);
+ dbg_print(INPUT_DBG_PBC, " play-item[%d]: %s",
+ p_vcdplayer->pdi, vcdinfo_pin2str (trans_itemid_num));
+ return vcdplayer_play_single_item(p_access, trans_itemid);
}
void
vcdinfo_obj_t *p_vcdinfo = p_vcdplayer->vcd;
- if (p_vcdinfo == NULL) return;
+ if (p_vcdinfo == NULL)
+ return;
p_vcdplayer->i_lid = itemid.num;
vcdinfo_lid_get_pxd(p_vcdinfo, &(p_vcdplayer->pxd), itemid.num);
}
/* Handles PBC navigation when reaching the end of a play item. */
-vcdplayer_read_status_t
+static vcdplayer_read_status_t
vcdplayer_pbc_nav ( access_t * p_access, uint8_t *wait_time )
{
vcdplayer_t *p_vcdplayer= (vcdplayer_t *)p_access->p_sys;
/* Set up for caller process wait time given. */
if (p_vcdplayer->i_still) {
- *wait_time = vcdinf_get_timeout_time(p_vcdplayer->pxd.psd);
- dbg_print((INPUT_DBG_PBC|INPUT_DBG_STILL),
- "playlist wait_time: %d", *wait_time);
- return READ_STILL_FRAME;
+ *wait_time = vcdinf_get_timeout_time(p_vcdplayer->pxd.psd);
+ dbg_print((INPUT_DBG_PBC|INPUT_DBG_STILL),
+ "playlist wait_time: %d", *wait_time);
+ return READ_STILL_FRAME;
}
/* Wait time has been processed; continue with next entry. */
{
/* p_access->handle_events (); */
- uint8_t wait_time;
+ uint8_t wait_time=0;
vcdplayer_t *p_vcdplayer= (vcdplayer_t *)p_access->p_sys;
if ( p_vcdplayer->i_lsn > p_vcdplayer->end_lsn ) {
/* We've run off of the end of this entry. Do we continue or stop? */
dbg_print( (INPUT_DBG_LSN|INPUT_DBG_PBC),
- "end reached, cur: %u, end: %u\n", p_vcdplayer->i_lsn, p_vcdplayer->end_lsn);
+ "end reached, cur: %u, end: %u\n",
+ p_vcdplayer->i_lsn, p_vcdplayer->end_lsn);
handle_item_continuation:
read_status = vcdplayer_pbc_is_on( p_vcdplayer )
do {
if (cdio_read_mode2_sector(p_img, &vcd_sector,
- p_vcdplayer->i_lsn, true)!=0) {
+ p_vcdplayer->i_lsn, true)!=0) {
dbg_print(INPUT_DBG_LSN, "read error\n");
- p_vcdplayer->i_lsn++;
+ p_vcdplayer->i_lsn++;
return READ_ERROR;
}
p_vcdplayer->i_lsn++;
itemid.type = p_vcdplayer->play_item.type;
- if (vcdplayer_pbc_is_on(p_vcdplayer)) {
+ if (vcdplayer_pbc_is_on(p_vcdplayer)) {
#if defined(LIBVCD_VERSION)
lid_t lid=vcdinfo_get_multi_default_lid(p_vcdplayer->vcd, p_vcdplayer->i_lid,
}
#else
- vcdinfo_lid_get_pxd(p_vcdplayer->vcd, &(p_vcdplayer->pxd), p_vcdplayer->i_lid);
+ vcdinfo_lid_get_pxd(p_vcdplayer->vcd, &(p_vcdplayer->pxd),
+ p_vcdplayer->i_lid);
switch (p_vcdplayer->pxd.descriptor_type) {
case PSD_TYPE_SELECTION_LIST:
case PSD_TYPE_EXT_SELECTION_LIST:
if (p_vcdplayer->pxd.psd == NULL) return false;
- vcdplayer_update_entry( p_access,
- vcdinfo_get_default_offset(p_vcdplayer->vcd,
- p_vcdplayer->i_lid),
- &itemid.num, "default");
+ vcdplayer_update_entry(p_access,
+ vcdinfo_get_default_offset(p_vcdplayer->vcd,
+ p_vcdplayer->i_lid),
+ &itemid.num, "default");
break;
case PSD_TYPE_PLAY_LIST:
case PSD_TYPE_SELECTION_LIST:
case PSD_TYPE_EXT_SELECTION_LIST:
if (p_vcdplayer->pxd.psd == NULL) return false;
- vcdplayer_update_entry( p_access,
- vcdinf_psd_get_next_offset(p_vcdplayer->pxd.psd),
- &itemid.num, "next");
+ vcdplayer_update_entry(p_access,
+ vcdinf_psd_get_next_offset(p_vcdplayer->pxd.psd),
+ &itemid.num, "next");
itemid.type = VCDINFO_ITEM_TYPE_LID;
break;
case PSD_TYPE_PLAY_LIST:
if (p_vcdplayer->pxd.pld == NULL) return false;
- vcdplayer_update_entry( p_access,
- vcdinf_pld_get_next_offset(p_vcdplayer->pxd.pld),
- &itemid.num, "next");
+ vcdplayer_update_entry(p_access,
+ vcdinf_pld_get_next_offset(p_vcdplayer->pxd.pld),
+ &itemid.num, "next");
itemid.type = VCDINFO_ITEM_TYPE_LID;
break;
switch (p_vcdplayer->play_item.type) {
case VCDINFO_ITEM_TYPE_ENTRY:
- max_entry = p_vcdplayer->i_entries;
- break;
+ max_entry = p_vcdplayer->i_entries;
+ break;
case VCDINFO_ITEM_TYPE_SEGMENT:
- max_entry = p_vcdplayer->i_segments;
- break;
+ max_entry = p_vcdplayer->i_segments;
+ break;
case VCDINFO_ITEM_TYPE_TRACK:
- max_entry = p_vcdplayer->i_tracks;
- break;
+ max_entry = p_vcdplayer->i_tracks;
+ break;
default: ; /* Handle exceptional cases below */
}
if (p_vcdplayer->play_item.num+1 < max_entry) {
- itemid.num = p_vcdplayer->play_item.num+1;
+ itemid.num = p_vcdplayer->play_item.num+1;
} else {
- LOG_WARN( "At the end - non-PBC 'next' not possible here" );
- return false;
+ LOG_WARN( "At the end - non-PBC 'next' not possible here" );
+ return false;
}
break;
case VCDINFO_ITEM_TYPE_LID:
- {
- /* Should have handled above. */
- LOG_WARN( "Internal inconsistency - should not have gotten here." );
- return false;
- }
+ /* Should have handled above. */
+ LOG_WARN( "Internal inconsistency - should not have gotten here." );
+ return false;
default:
return false;
}
itemid = p_vcdplayer->play_item;
- if (vcdplayer_pbc_is_on(p_vcdplayer)) {
+ if (vcdplayer_pbc_is_on(p_vcdplayer)) {
vcdinfo_lid_get_pxd(p_vcdinfo, &(p_vcdplayer->pxd), p_vcdplayer->i_lid);
case PSD_TYPE_SELECTION_LIST:
case PSD_TYPE_EXT_SELECTION_LIST:
if (p_vcdplayer->pxd.psd == NULL) return false;
- vcdplayer_update_entry( p_access,
- vcdinf_psd_get_prev_offset(p_vcdplayer->pxd.psd),
- &itemid.num, "prev");
+ vcdplayer_update_entry(p_access,
+ vcdinf_psd_get_prev_offset(p_vcdplayer->pxd.psd),
+ &itemid.num, "prev");
itemid.type = VCDINFO_ITEM_TYPE_LID;
break;
case PSD_TYPE_PLAY_LIST:
if (p_vcdplayer->pxd.pld == NULL) return false;
- vcdplayer_update_entry( p_access,
- vcdinf_pld_get_prev_offset(p_vcdplayer->pxd.pld),
- &itemid.num, "prev");
+ vcdplayer_update_entry(p_access,
+ vcdinf_pld_get_prev_offset(p_vcdplayer->pxd.pld),
+ &itemid.num, "prev");
itemid.type = VCDINFO_ITEM_TYPE_LID;
break;
/* PBC is not on. "Prev" selection is play_item.num-1 if possible. */
int min_entry = (VCDINFO_ITEM_TYPE_ENTRY == p_vcdplayer->play_item.type)
- ? 0 : 1;
+ ? 0 : 1;
if (p_vcdplayer->play_item.num > min_entry) {
itemid.num = p_vcdplayer->play_item.num-1;
vcdinfo_itemid_t itemid;
dbg_print( (INPUT_DBG_CALL|INPUT_DBG_PBC),
- "current: %d" , p_vcdplayer->play_item.num);
+ "current: %d" , p_vcdplayer->play_item.num);
itemid = p_vcdplayer->play_item;
- if (vcdplayer_pbc_is_on(p_vcdplayer)) {
+ if (vcdplayer_pbc_is_on(p_vcdplayer)) {
vcdinfo_lid_get_pxd(p_vcdinfo, &(p_vcdplayer->pxd), p_vcdplayer->i_lid);
case PSD_TYPE_SELECTION_LIST:
case PSD_TYPE_EXT_SELECTION_LIST:
if (p_vcdplayer->pxd.psd == NULL) return false;
- vcdplayer_update_entry( p_access,
- vcdinf_psd_get_return_offset(p_vcdplayer->pxd.psd),
- &itemid.num, "return");
+ vcdplayer_update_entry(p_access,
+ vcdinf_psd_get_return_offset(p_vcdplayer->pxd.psd),
+ &itemid.num, "return");
itemid.type = VCDINFO_ITEM_TYPE_LID;
break;
case PSD_TYPE_PLAY_LIST:
if (p_vcdplayer->pxd.pld == NULL) return false;
- vcdplayer_update_entry( p_access,
- vcdinf_pld_get_return_offset(p_vcdplayer->pxd.pld),
- &itemid.num, "return");
+ vcdplayer_update_entry(p_access,
+ vcdinf_pld_get_return_offset(p_vcdplayer->pxd.pld),
+ &itemid.num, "return");
itemid.type = VCDINFO_ITEM_TYPE_LID;
break;
return VLC_SUCCESS;
}
-
-/*
- * Local variables:
- * c-file-style: "gnu"
- * tab-width: 8
- * indent-tabs-mode: nil
- * End:
- */
return VLC_EGENERIC;
}
- if ( p_filter->input.i_format != VLC_FOURCC('f','l','3','2')
- || p_filter->output.i_format != VLC_FOURCC('f','l','3','2') )
+ if ( p_filter->input.i_format != VLC_CODEC_FL32
+ || p_filter->output.i_format != VLC_CODEC_FL32 )
{
return VLC_EGENERIC;
}
p_filter->input.i_original_channels =
p_filter->output.i_original_channels;
}
- if( p_filter->input.i_format != VLC_FOURCC('f','l','3','2')
- || p_filter->output.i_format != VLC_FOURCC('f','l','3','2') )
+ if( p_filter->input.i_format != VLC_CODEC_FL32
+ || p_filter->output.i_format != VLC_CODEC_FL32 )
{
b_fit = false;
- p_filter->input.i_format = VLC_FOURCC('f','l','3','2');
- p_filter->output.i_format = VLC_FOURCC('f','l','3','2');
+ p_filter->input.i_format = VLC_CODEC_FL32;
+ p_filter->output.i_format = VLC_CODEC_FL32;
}
if( p_filter->input.i_rate != p_filter->output.i_rate )
{
p_filter->fmt_in.audio.i_original_channels =
p_filter->fmt_out.audio.i_original_channels;
}
- if( p_filter->fmt_in.audio.i_format != VLC_FOURCC('f','l','3','2')
- || p_filter->fmt_out.audio.i_format != VLC_FOURCC('f','l','3','2') )
+ if( p_filter->fmt_in.audio.i_format != VLC_CODEC_FL32
+ || p_filter->fmt_out.audio.i_format != VLC_CODEC_FL32 )
{
b_fit = false;
- p_filter->fmt_in.audio.i_format = VLC_FOURCC('f','l','3','2');
- p_filter->fmt_out.audio.i_format = VLC_FOURCC('f','l','3','2');
+ p_filter->fmt_in.audio.i_format = VLC_CODEC_FL32;
+ p_filter->fmt_out.audio.i_format = VLC_CODEC_FL32;
}
if( p_filter->fmt_in.audio.i_rate != p_filter->fmt_out.audio.i_rate )
{
return VLC_EGENERIC;
}
- if( (p_filter->fmt_in.i_codec != AOUT_FMT_S16_NE) ||
- (p_filter->fmt_out.i_codec != AOUT_FMT_S16_NE) )
+ if( (p_filter->fmt_in.i_codec != VLC_CODEC_S16N) ||
+ (p_filter->fmt_out.i_codec != VLC_CODEC_S16N) )
{
/*msg_Err( p_this, "filter discarded (invalid format)" );*/
return VLC_EGENERIC;
if( (p_filter->fmt_in.audio.i_format != p_filter->fmt_out.audio.i_format) &&
(p_filter->fmt_in.audio.i_rate != p_filter->fmt_out.audio.i_rate) &&
- (p_filter->fmt_in.audio.i_format != AOUT_FMT_S16_NE) &&
- (p_filter->fmt_out.audio.i_format != AOUT_FMT_S16_NE) &&
+ (p_filter->fmt_in.audio.i_format != VLC_CODEC_S16N) &&
+ (p_filter->fmt_out.audio.i_format != VLC_CODEC_S16N) &&
(p_filter->fmt_in.audio.i_bitspersample !=
p_filter->fmt_out.audio.i_bitspersample))
{
*****************************************************************************/
static bool IsSupported( const audio_format_t *p_input, const audio_format_t *p_output )
{
- if( p_input->i_format != VLC_FOURCC('f','l','3','2') ||
+ if( p_input->i_format != VLC_CODEC_FL32 ||
p_input->i_format != p_output->i_format ||
p_input->i_rate != p_output->i_rate )
return false;
== p_filter->output.i_original_channels)
|| p_filter->input.i_format != p_filter->output.i_format
|| p_filter->input.i_rate != p_filter->output.i_rate
- || (p_filter->input.i_format != VLC_FOURCC('f','l','3','2')
- && p_filter->input.i_format != VLC_FOURCC('f','i','3','2')) )
+ || (p_filter->input.i_format != VLC_CODEC_FL32
+ && p_filter->input.i_format != VLC_CODEC_FI32) )
{
return -1;
}
filter_sys_t *p_sys = (filter_sys_t *)p_filter->p_sys;
int i_ret;
- if ( p_filter->input.i_format != VLC_FOURCC('a','5','2',' ')
+ if ( p_filter->input.i_format != VLC_CODEC_A52
#ifdef LIBA52_FIXED
- || p_filter->output.i_format != VLC_FOURCC('f','i','3','2') )
+ || p_filter->output.i_format != VLC_CODEC_FI32 )
#else
- || p_filter->output.i_format != VLC_FOURCC('f','l','3','2') )
+ || p_filter->output.i_format != VLC_CODEC_FL32 )
#endif
{
return -1;
filter_sys_t *p_sys;
int i_ret;
- if( p_filter->fmt_in.i_codec != VLC_FOURCC('a','5','2',' ') )
+ if( p_filter->fmt_in.i_codec != VLC_CODEC_A52 )
{
return VLC_EGENERIC;
}
p_filter->fmt_out.audio.i_format =
#ifdef LIBA52_FIXED
- p_filter->fmt_out.i_codec = VLC_FOURCC('f','i','3','2');
+ p_filter->fmt_out.i_codec = VLC_CODEC_FI32;
#else
- p_filter->fmt_out.i_codec = VLC_FOURCC('f','l','3','2');
+ p_filter->fmt_out.i_codec = VLC_CODEC_FL32;
#endif
p_filter->fmt_out.audio.i_bitspersample =
aout_BitsPerSample( p_filter->fmt_out.i_codec );
{
aout_filter_t * p_filter = (aout_filter_t *)p_this;
- if ( p_filter->input.i_format != VLC_FOURCC('a','5','2',' ') ||
- ( p_filter->output.i_format != VLC_FOURCC('s','p','d','b') &&
- p_filter->output.i_format != VLC_FOURCC('s','p','d','i') ) )
+ if ( p_filter->input.i_format != VLC_CODEC_A52 ||
+ ( p_filter->output.i_format != VLC_CODEC_SPDIFB &&
+ p_filter->output.i_format != VLC_CODEC_SPDIFL ) )
{
return -1;
}
uint8_t * p_out = p_out_buf->p_buffer;
/* Copy the S/PDIF headers. */
- if( p_filter->output.i_format == VLC_FOURCC('s','p','d','b') )
+ if( p_filter->output.i_format == VLC_CODEC_SPDIFB )
{
vlc_memcpy( p_out, p_sync_be, 6 );
p_out[4] = p_in[5] & 0x7; /* bsmod */
filter_sys_t *p_sys;
int i_ret;
- if ( p_filter->input.i_format != VLC_FOURCC('d','t','s',' ')
- || p_filter->output.i_format != VLC_FOURCC('f','l','3','2') )
+ if ( p_filter->input.i_format != VLC_CODEC_DTS
+ || p_filter->output.i_format != VLC_CODEC_FL32 )
{
return -1;
}
filter_sys_t *p_sys;
int i_ret;
- if( p_filter->fmt_in.i_codec != VLC_FOURCC('d','t','s',' ') )
+ if( p_filter->fmt_in.i_codec != VLC_CODEC_DTS )
{
return VLC_EGENERIC;
}
p_filter->fmt_out.audio.i_format =
- p_filter->fmt_out.i_codec = VLC_FOURCC('f','l','3','2');
+ p_filter->fmt_out.i_codec = VLC_CODEC_FL32;
p_filter->fmt_out.audio.i_bitspersample =
aout_BitsPerSample( p_filter->fmt_out.i_codec );
{
aout_filter_t * p_filter = (aout_filter_t *)p_this;
- if( p_filter->input.i_format != VLC_FOURCC('d','t','s',' ') ||
- ( p_filter->output.i_format != VLC_FOURCC('s','p','d','i') &&
- p_filter->output.i_format != VLC_FOURCC('s','p','d','b') ) )
+ if( p_filter->input.i_format != VLC_CODEC_DTS ||
+ ( p_filter->output.i_format != VLC_CODEC_SPDIFL &&
+ p_filter->output.i_format != VLC_CODEC_SPDIFB ) )
{
return -1;
}
}
/* Copy the S/PDIF headers. */
- if( p_filter->output.i_format == VLC_FOURCC('s','p','d','b') )
+ if( p_filter->output.i_format == VLC_CODEC_SPDIFB )
{
vlc_memcpy( p_out, p_sync_be, 6 );
p_out[5] = i_ac5_spdif_type;
p_out[7] = (( i_length ) >> 5 ) & 0xFF;
}
- if( ( (p_in[0] == 0x1F || p_in[0] == 0x7F) && p_filter->output.i_format == VLC_FOURCC('s','p','d','i') ) ||
- ( (p_in[0] == 0xFF || p_in[0] == 0xFE) && p_filter->output.i_format == VLC_FOURCC('s','p','d','b') ) )
+ if( ( (p_in[0] == 0x1F || p_in[0] == 0x7F) && p_filter->output.i_format == VLC_CODEC_SPDIFL ) ||
+ ( (p_in[0] == 0xFF || p_in[0] == 0xFE) && p_filter->output.i_format == VLC_CODEC_SPDIFB ) )
{
/* We are dealing with a big endian bitstream and a little endian output
* or a little endian bitstream and a big endian output.
{
aout_filter_t * p_filter = (aout_filter_t *)p_this;
- if ( p_filter->input.i_format != VLC_FOURCC('f','i','3','2')
- || p_filter->output.i_format != AOUT_FMT_S16_NE )
+ if ( p_filter->input.i_format != VLC_CODEC_FI32
+ || p_filter->output.i_format != VLC_CODEC_S16N )
{
return -1;
}
{
aout_filter_t * p_filter = (aout_filter_t *)p_this;
- if ( p_filter->output.i_format != VLC_FOURCC('f','i','3','2')
- || p_filter->input.i_format != AOUT_FMT_S16_NE )
+ if ( p_filter->output.i_format != VLC_CODEC_FI32
+ || p_filter->input.i_format != VLC_CODEC_S16N )
{
return -1;
}
{
aout_filter_t * p_filter = (aout_filter_t *)p_this;
- if ( p_filter->input.i_format != VLC_FOURCC('u','8',' ',' ')
- || p_filter->output.i_format != VLC_FOURCC('f','i','3','2') )
+ if ( p_filter->input.i_format != VLC_CODEC_U8
+ || p_filter->output.i_format != VLC_CODEC_FI32 )
{
return -1;
}
{
aout_filter_t * p_filter = (aout_filter_t *)p_this;
- if( ( p_filter->input.i_format != VLC_FOURCC('f','i','3','2')
- || p_filter->output.i_format != VLC_FOURCC('f','l','3','2') )
- && ( p_filter->input.i_format != VLC_FOURCC('f','l','3','2')
- || p_filter->output.i_format != VLC_FOURCC('f','i','3','2') ) )
+ if( ( p_filter->input.i_format != VLC_CODEC_FI32
+ || p_filter->output.i_format != VLC_CODEC_FL32 )
+ && ( p_filter->input.i_format != VLC_CODEC_FL32
+ || p_filter->output.i_format != VLC_CODEC_FI32 ) )
{
return -1;
}
return -1;
}
- if( p_filter->input.i_format == VLC_FOURCC('f','i','3','2') )
+ if( p_filter->input.i_format == VLC_CODEC_FI32 )
{
p_filter->pf_do_work = Do_F32ToFL32;
}
{
aout_filter_t * p_filter = (aout_filter_t *)p_this;
- if ( p_filter->input.i_format != VLC_FOURCC('f','l','3','2')
- || p_filter->output.i_format != AOUT_FMT_S16_NE )
+ if ( p_filter->input.i_format != VLC_CODEC_FL32
+ || p_filter->output.i_format != VLC_CODEC_S16N )
{
return -1;
}
{
aout_filter_t * p_filter = (aout_filter_t *)p_this;
- if ( p_filter->input.i_format != VLC_FOURCC('f','l','3','2')
- || p_filter->output.i_format != VLC_FOURCC('s','8',' ',' ') )
+ if ( p_filter->input.i_format != VLC_CODEC_FL32
+ || p_filter->output.i_format != VLC_CODEC_S8 )
{
return -1;
}
{
aout_filter_t * p_filter = (aout_filter_t *)p_this;
- if ( p_filter->input.i_format != VLC_FOURCC('f','l','3','2')
- || p_filter->output.i_format != AOUT_FMT_U16_NE )
+ if ( p_filter->input.i_format != VLC_CODEC_FL32
+ || p_filter->output.i_format != VLC_CODEC_U16N )
{
return -1;
}
{
aout_filter_t * p_filter = (aout_filter_t *)p_this;
- if ( p_filter->input.i_format != VLC_FOURCC('f','l','3','2')
- || p_filter->output.i_format != VLC_FOURCC('u','8',' ',' ') )
+ if ( p_filter->input.i_format != VLC_CODEC_FL32
+ || p_filter->output.i_format != VLC_CODEC_U8 )
{
return -1;
}
{
aout_filter_t * p_filter = (aout_filter_t *)p_this;
- if ( ( p_filter->input.i_format != AOUT_FMT_S16_NE &&
- p_filter->input.i_format != AOUT_FMT_S24_NE &&
- p_filter->input.i_format != AOUT_FMT_S32_NE )
- || p_filter->output.i_format != VLC_FOURCC('f','l','3','2') )
+ if ( ( p_filter->input.i_format != VLC_CODEC_S16N &&
+ p_filter->input.i_format != VLC_CODEC_S24N &&
+ p_filter->input.i_format != VLC_CODEC_S32N )
+ || p_filter->output.i_format != VLC_CODEC_FL32 )
{
return -1;
}
return -1;
}
- if( p_filter->input.i_format == AOUT_FMT_S32_NE )
+ if( p_filter->input.i_format == VLC_CODEC_S32N )
p_filter->pf_do_work = Do_S32ToFL32;
- else if( p_filter->input.i_format == AOUT_FMT_S24_NE )
+ else if( p_filter->input.i_format == VLC_CODEC_S24N )
p_filter->pf_do_work = Do_S24ToFL32;
else
p_filter->pf_do_work = Do_S16ToFL32;
return -1;
}
- if ( (p_filter->input.i_format == VLC_FOURCC('s','1','6','l') ||
- p_filter->input.i_format == VLC_FOURCC('s','1','6','b'))
- && p_filter->output.i_format == VLC_FOURCC('f','l','3','2')
- && p_filter->input.i_format != AOUT_FMT_S16_NE )
+ if ( (p_filter->input.i_format == VLC_CODEC_S16L ||
+ p_filter->input.i_format == VLC_CODEC_S16B)
+ && p_filter->output.i_format == VLC_CODEC_FL32
+ && p_filter->input.i_format != VLC_CODEC_S16N )
{
p_filter->pf_do_work = Do_S16ToFL32_SW;
p_filter->b_in_place = true;
return 0;
}
- if ( (p_filter->input.i_format == VLC_FOURCC('s','2','4','l') ||
- p_filter->input.i_format == VLC_FOURCC('s','2','4','b'))
- && p_filter->output.i_format == VLC_FOURCC('f','l','3','2')
- && p_filter->input.i_format != AOUT_FMT_S24_NE )
+ if ( (p_filter->input.i_format == VLC_CODEC_S24L ||
+ p_filter->input.i_format == VLC_CODEC_S24B)
+ && p_filter->output.i_format == VLC_CODEC_FL32
+ && p_filter->input.i_format != VLC_CODEC_S24N )
{
p_filter->pf_do_work = Do_S24ToFL32_SW;
p_filter->b_in_place = true;
return 0;
}
- if ( (p_filter->input.i_format == VLC_FOURCC('s','3','2','l') ||
- p_filter->input.i_format == VLC_FOURCC('s','3','2','b'))
- && p_filter->output.i_format == VLC_FOURCC('f','l','3','2')
- && p_filter->input.i_format != AOUT_FMT_S32_NE )
+ if ( (p_filter->input.i_format == VLC_CODEC_S32L ||
+ p_filter->input.i_format == VLC_CODEC_S32B)
+ && p_filter->output.i_format == VLC_CODEC_FL32
+ && p_filter->input.i_format != VLC_CODEC_S32N )
{
p_filter->pf_do_work = Do_S32ToFL32_SW;
p_filter->b_in_place = true;
{
aout_filter_t * p_filter = (aout_filter_t *)p_this;
- if ( p_filter->input.i_format != VLC_FOURCC('s','8',' ',' ')
- || p_filter->output.i_format != VLC_FOURCC('f','l','3','2') )
+ if ( p_filter->input.i_format != VLC_CODEC_S8
+ || p_filter->output.i_format != VLC_CODEC_FL32 )
{
return -1;
}
{
aout_filter_t * p_filter = (aout_filter_t *)p_this;
- if ( p_filter->input.i_format != VLC_FOURCC('u','8',' ',' ')
- || p_filter->output.i_format != VLC_FOURCC('f','l','3','2') )
+ if ( p_filter->input.i_format != VLC_CODEC_U8
+ || p_filter->output.i_format != VLC_CODEC_FL32 )
{
return -1;
}
aout_filter_t *p_filter = (aout_filter_t *)p_this;
struct filter_sys_t *p_sys;
- if ( (p_filter->input.i_format != VLC_FOURCC('m','p','g','a')
+ if ( (p_filter->input.i_format != VLC_CODEC_MPGA
&& p_filter->input.i_format != VLC_FOURCC('m','p','g','3'))
- || (p_filter->output.i_format != VLC_FOURCC('f','l','3','2')
- && p_filter->output.i_format != VLC_FOURCC('f','i','3','2')) )
+ || (p_filter->output.i_format != VLC_CODEC_FL32
+ && p_filter->output.i_format != VLC_CODEC_FI32) )
{
return -1;
}
if( p_sys->i_reject_count > 0 )
{
- if( p_filter->output.i_format == VLC_FOURCC('f','l','3','2') )
+ if( p_filter->output.i_format == VLC_CODEC_FL32 )
{
int i;
int i_size = p_out_buf->i_nb_bytes / sizeof(float);
mad_synth_frame( &p_sys->mad_synth, &p_sys->mad_frame );
- if ( p_filter->output.i_format == VLC_FOURCC('f','i','3','2') )
+ if ( p_filter->output.i_format == VLC_CODEC_FI32 )
{
/* Interleave and keep buffers in mad_fixed_t format */
mad_fixed_t * p_samples = (mad_fixed_t *)p_out_buf->p_buffer;
filter_t *p_filter = (filter_t *)p_this;
filter_sys_t *p_sys;
- if( p_filter->fmt_in.i_codec != VLC_FOURCC('m','p','g','a') &&
+ if( p_filter->fmt_in.i_codec != VLC_CODEC_MPGA &&
p_filter->fmt_in.i_codec != VLC_FOURCC('m','p','g','3') )
{
return VLC_EGENERIC;
mad_stream_options( &p_sys->mad_stream, MAD_OPTION_IGNORECRC );
if( vlc_CPU() & CPU_CAPABILITY_FPU )
- p_filter->fmt_out.i_codec = VLC_FOURCC('f','l','3','2');
+ p_filter->fmt_out.i_codec = VLC_CODEC_FL32;
else
- p_filter->fmt_out.i_codec = VLC_FOURCC('f','i','3','2');
+ p_filter->fmt_out.i_codec = VLC_CODEC_FI32;
p_filter->fmt_out.audio.i_format = p_filter->fmt_out.i_codec;
p_filter->fmt_out.audio.i_bitspersample =
aout_BitsPerSample( p_filter->fmt_out.i_codec );
aout_filter_sys_t *p_sys;
bool b_fit = true;
- if( p_filter->input.i_format != VLC_FOURCC('f','l','3','2' ) ||
- p_filter->output.i_format != VLC_FOURCC('f','l','3','2') )
+ if( p_filter->input.i_format != VLC_CODEC_FL32 ||
+ p_filter->output.i_format != VLC_CODEC_FL32 )
{
b_fit = false;
- p_filter->input.i_format = VLC_FOURCC('f','l','3','2');
- p_filter->output.i_format = VLC_FOURCC('f','l','3','2');
+ p_filter->input.i_format = VLC_CODEC_FL32;
+ p_filter->output.i_format = VLC_CODEC_FL32;
msg_Warn( p_filter, "bad input or output format" );
}
if ( !AOUT_FMTS_SIMILAR( &p_filter->input, &p_filter->output ) )
#include <vlc_block.h>
#include "vlc_filter.h"
-#ifdef WORDS_BIGENDIAN
-# define AOUT_FMT_S24_IE VLC_FOURCC('s','2','4','l')
-# define AOUT_FMT_S16_IE VLC_FOURCC('s','1','6','l')
-# define AOUT_FMT_U16_IE VLC_FOURCC('u','1','6','l')
-#else
-# define AOUT_FMT_S24_IE VLC_FOURCC('s','2','4','b')
-# define AOUT_FMT_S16_IE VLC_FOURCC('s','1','6','b')
-# define AOUT_FMT_U16_IE VLC_FOURCC('u','1','6','b')
-#endif
-
-
/*****************************************************************************
* Local prototypes
*****************************************************************************/
} ConvertTable[] =
{
/* From fl32 */
- { VLC_FOURCC('f','l','3','2'), AOUT_FMT_S24_NE, Float32toS24 },
- { VLC_FOURCC('f','l','3','2'), AOUT_FMT_S16_NE, Float32toS16 },
- { VLC_FOURCC('f','l','3','2'), AOUT_FMT_U16_NE, Float32toU16 },
- { VLC_FOURCC('f','l','3','2'), AOUT_FMT_S24_IE, Float32toS24Invert },
- { VLC_FOURCC('f','l','3','2'), AOUT_FMT_S16_IE, Float32toS16Invert },
- { VLC_FOURCC('f','l','3','2'), AOUT_FMT_U16_IE, Float32toU16Invert },
- { VLC_FOURCC('f','l','3','2'), VLC_FOURCC('s','8',' ',' '), Float32toS8 },
- { VLC_FOURCC('f','l','3','2'), VLC_FOURCC('u','8',' ',' '), Float32toU8 },
+ { VLC_CODEC_FL32, VLC_CODEC_S24N, Float32toS24 },
+ { VLC_CODEC_FL32, VLC_CODEC_S16N, Float32toS16 },
+ { VLC_CODEC_FL32, VLC_CODEC_U16N, Float32toU16 },
+ { VLC_CODEC_FL32, VLC_CODEC_S24I, Float32toS24Invert },
+ { VLC_CODEC_FL32, VLC_CODEC_S16I, Float32toS16Invert },
+ { VLC_CODEC_FL32, VLC_CODEC_U16I, Float32toU16Invert },
+ { VLC_CODEC_FL32, VLC_CODEC_S8, Float32toS8 },
+ { VLC_CODEC_FL32, VLC_CODEC_U8, Float32toU8 },
/* From s24 invert */
- { AOUT_FMT_S24_NE, VLC_FOURCC('f','l','3','2'), S24toFloat32 },
- { AOUT_FMT_S24_NE, AOUT_FMT_S24_IE, Swap24 },
- { AOUT_FMT_S24_NE, AOUT_FMT_S16_NE, S24toS16 },
- { AOUT_FMT_S24_NE, AOUT_FMT_S16_IE, S24toS16Invert },
+ { VLC_CODEC_S24N, VLC_CODEC_FL32, S24toFloat32 },
+ { VLC_CODEC_S24N, VLC_CODEC_S24I, Swap24 },
+ { VLC_CODEC_S24N, VLC_CODEC_S16N, S24toS16 },
+ { VLC_CODEC_S24N, VLC_CODEC_S16I, S24toS16Invert },
/* From s16 */
- { AOUT_FMT_S16_NE, VLC_FOURCC('f','l','3','2'), S16toFloat32 },
- { AOUT_FMT_S16_NE, AOUT_FMT_S24_NE, S16toS24 },
- { AOUT_FMT_S16_NE, AOUT_FMT_S24_IE, S16toS24Invert },
- { AOUT_FMT_S16_NE, AOUT_FMT_S16_IE, Swap16 },
- { AOUT_FMT_S16_NE, AOUT_FMT_U16_IE, S16toU16 },
- { AOUT_FMT_S16_NE, VLC_FOURCC('s','8',' ',' '), S16toS8 },
- { AOUT_FMT_S16_NE, VLC_FOURCC('u','8',' ',' '), S16toU8 },
+ { VLC_CODEC_S16N, VLC_CODEC_FL32, S16toFloat32 },
+ { VLC_CODEC_S16N, VLC_CODEC_S24N, S16toS24 },
+ { VLC_CODEC_S16N, VLC_CODEC_S24I, S16toS24Invert },
+ { VLC_CODEC_S16N, VLC_CODEC_S16I, Swap16 },
+ { VLC_CODEC_S16N, VLC_CODEC_U16I, S16toU16 },
+ { VLC_CODEC_S16N, VLC_CODEC_S8, S16toS8 },
+ { VLC_CODEC_S16N, VLC_CODEC_U8, S16toU8 },
/* From u16 */
- { AOUT_FMT_U16_NE, VLC_FOURCC('f','l','3','2'), U16toFloat32 },
- { AOUT_FMT_U16_NE, AOUT_FMT_U16_IE, Swap16 },
- { AOUT_FMT_U16_NE, AOUT_FMT_S16_IE, U16toS16 },
- { AOUT_FMT_U16_NE, VLC_FOURCC('s','8',' ',' '), U16toS8 },
- { AOUT_FMT_U16_NE, VLC_FOURCC('u','8',' ',' '), U16toU8 },
+ { VLC_CODEC_U16N, VLC_CODEC_FL32, U16toFloat32 },
+ { VLC_CODEC_U16N, VLC_CODEC_U16I, Swap16 },
+ { VLC_CODEC_U16N, VLC_CODEC_S16I, U16toS16 },
+ { VLC_CODEC_U16N, VLC_CODEC_S8, U16toS8 },
+ { VLC_CODEC_U16N, VLC_CODEC_U8, U16toU8 },
/* From s8 */
- { VLC_FOURCC('s','8',' ',' '), VLC_FOURCC('f','l','3','2'), S8toFloat32 },
- { VLC_FOURCC('s','8',' ',' '), AOUT_FMT_S16_NE, S8toS16 },
- { VLC_FOURCC('s','8',' ',' '), AOUT_FMT_S16_IE, S8toS16Invert },
- { VLC_FOURCC('s','8',' ',' '), AOUT_FMT_U16_NE, S8toU16 },
- { VLC_FOURCC('s','8',' ',' '), AOUT_FMT_U16_IE, S8toU16Invert },
- { VLC_FOURCC('s','8',' ',' '), VLC_FOURCC('u','8',' ',' '), S8toU8 },
+ { VLC_CODEC_S8, VLC_CODEC_FL32, S8toFloat32 },
+ { VLC_CODEC_S8, VLC_CODEC_S16N, S8toS16 },
+ { VLC_CODEC_S8, VLC_CODEC_S16I, S8toS16Invert },
+ { VLC_CODEC_S8, VLC_CODEC_U16N, S8toU16 },
+ { VLC_CODEC_S8, VLC_CODEC_U16I, S8toU16Invert },
+ { VLC_CODEC_S8, VLC_CODEC_U8, S8toU8 },
/* From u8 */
- { VLC_FOURCC('u','8',' ',' '), VLC_FOURCC('f','l','3','2'), U8toFloat32 },
- { VLC_FOURCC('u','8',' ',' '), AOUT_FMT_S16_NE, U8toS16 },
- { VLC_FOURCC('u','8',' ',' '), AOUT_FMT_S16_IE, U8toS16Invert },
- { VLC_FOURCC('u','8',' ',' '), AOUT_FMT_U16_NE, U8toU16 },
- { VLC_FOURCC('u','8',' ',' '), AOUT_FMT_U16_IE, U8toU16Invert },
- { VLC_FOURCC('u','8',' ',' '), VLC_FOURCC('s','8',' ',' '), U8toS8 },
+ { VLC_CODEC_U8, VLC_CODEC_FL32, U8toFloat32 },
+ { VLC_CODEC_U8, VLC_CODEC_S16N, U8toS16 },
+ { VLC_CODEC_U8, VLC_CODEC_S16I, U8toS16Invert },
+ { VLC_CODEC_U8, VLC_CODEC_U16N, U8toU16 },
+ { VLC_CODEC_U8, VLC_CODEC_U16I, U8toU16Invert },
+ { VLC_CODEC_U8, VLC_CODEC_S8, U8toS8 },
/* From s24 invert */
- { AOUT_FMT_S24_IE, VLC_FOURCC('f','l','3','2'), S24InverttoFloat32 },
- { AOUT_FMT_S24_IE, AOUT_FMT_S24_NE, Swap24 },
- { AOUT_FMT_S24_IE, AOUT_FMT_S16_NE, S24InverttoS16 },
- { AOUT_FMT_S24_IE, AOUT_FMT_S16_IE, S24InverttoS16Invert },
+ { VLC_CODEC_S24I, VLC_CODEC_FL32, S24InverttoFloat32 },
+ { VLC_CODEC_S24I, VLC_CODEC_S24N, Swap24 },
+ { VLC_CODEC_S24I, VLC_CODEC_S16N, S24InverttoS16 },
+ { VLC_CODEC_S24I, VLC_CODEC_S16I, S24InverttoS16Invert },
/* From s16 invert */
- { AOUT_FMT_S16_IE, VLC_FOURCC('f','l','3','2'), S16InverttoFloat32 },
- { AOUT_FMT_S16_IE, AOUT_FMT_S24_NE, S16InverttoS24 },
- { AOUT_FMT_S16_IE, AOUT_FMT_S24_IE, S16InverttoS24Invert },
- { AOUT_FMT_S16_IE, AOUT_FMT_S16_NE, Swap16 },
- { AOUT_FMT_S16_IE, AOUT_FMT_U16_NE, S16InverttoU16 },
- { AOUT_FMT_S16_IE, VLC_FOURCC('s','8',' ',' '), S16InverttoS8 },
- { AOUT_FMT_S16_IE, VLC_FOURCC('u','8',' ',' '), S16InverttoU8 },
+ { VLC_CODEC_S16I, VLC_CODEC_FL32, S16InverttoFloat32 },
+ { VLC_CODEC_S16I, VLC_CODEC_S24N, S16InverttoS24 },
+ { VLC_CODEC_S16I, VLC_CODEC_S24I, S16InverttoS24Invert },
+ { VLC_CODEC_S16I, VLC_CODEC_S16N, Swap16 },
+ { VLC_CODEC_S16I, VLC_CODEC_U16N, S16InverttoU16 },
+ { VLC_CODEC_S16I, VLC_CODEC_S8, S16InverttoS8 },
+ { VLC_CODEC_S16I, VLC_CODEC_U8, S16InverttoU8 },
/* From u16 invert */
- { AOUT_FMT_U16_IE, VLC_FOURCC('f','l','3','2'), U16InverttoFloat32 },
- { AOUT_FMT_U16_IE, AOUT_FMT_U16_NE, Swap16 },
- { AOUT_FMT_U16_IE, AOUT_FMT_S16_NE, U16InverttoS16 },
- { AOUT_FMT_U16_IE, VLC_FOURCC('s','8',' ',' '), U16InverttoS8 },
- { AOUT_FMT_U16_IE, VLC_FOURCC('u','8',' ',' '), U16InverttoU8 },
+ { VLC_CODEC_U16I, VLC_CODEC_FL32, U16InverttoFloat32 },
+ { VLC_CODEC_U16I, VLC_CODEC_U16N, Swap16 },
+ { VLC_CODEC_U16I, VLC_CODEC_S16N, U16InverttoS16 },
+ { VLC_CODEC_U16I, VLC_CODEC_S8, U16InverttoS8 },
+ { VLC_CODEC_U16I, VLC_CODEC_U8, U16InverttoU8 },
{ 0, 0, NULL },
};
int i_channels;
aout_filter_sys_t *p_sys;
- if( p_filter->input.i_format != VLC_FOURCC('f','l','3','2' ) ||
- p_filter->output.i_format != VLC_FOURCC('f','l','3','2') )
+ if( p_filter->input.i_format != VLC_CODEC_FL32 ||
+ p_filter->output.i_format != VLC_CODEC_FL32 )
{
b_fit = false;
- p_filter->input.i_format = VLC_FOURCC('f','l','3','2');
- p_filter->output.i_format = VLC_FOURCC('f','l','3','2');
+ p_filter->input.i_format = VLC_CODEC_FL32;
+ p_filter->output.i_format = VLC_CODEC_FL32;
msg_Warn( p_filter, "bad input or output format" );
}
bool b_fit = true;
int i_samplerate;
- if( p_filter->input.i_format != VLC_FOURCC('f','l','3','2' ) ||
- p_filter->output.i_format != VLC_FOURCC('f','l','3','2') )
+ if( p_filter->input.i_format != VLC_CODEC_FL32 ||
+ p_filter->output.i_format != VLC_CODEC_FL32 )
{
b_fit = false;
- p_filter->input.i_format = VLC_FOURCC('f','l','3','2');
- p_filter->output.i_format = VLC_FOURCC('f','l','3','2');
+ p_filter->input.i_format = VLC_CODEC_FL32;
+ p_filter->output.i_format = VLC_CODEC_FL32;
msg_Warn( p_filter, "bad input or output format" );
}
if ( !AOUT_FMTS_SIMILAR( &p_filter->input, &p_filter->output ) )
!= p_filter->output.i_physical_channels
|| p_filter->input.i_original_channels
!= p_filter->output.i_original_channels
- || p_filter->input.i_format != VLC_FOURCC('f','l','3','2') )
+ || p_filter->input.i_format != VLC_CODEC_FL32 )
{
return VLC_EGENERIC;
}
int i_filter_wing;
if( p_filter->fmt_in.audio.i_rate == p_filter->fmt_out.audio.i_rate ||
- p_filter->fmt_in.i_codec != VLC_FOURCC('f','l','3','2') )
+ p_filter->fmt_in.i_codec != VLC_CODEC_FL32 )
{
return VLC_EGENERIC;
}
!= p_filter->output.i_physical_channels
|| p_filter->input.i_original_channels
!= p_filter->output.i_original_channels
- || p_filter->input.i_format != VLC_FOURCC('f','l','3','2') )
+ || p_filter->input.i_format != VLC_CODEC_FL32 )
{
return VLC_EGENERIC;
}
int i_out_rate = p_filter->fmt_out.audio.i_rate;
if( p_filter->fmt_in.audio.i_rate == p_filter->fmt_out.audio.i_rate ||
- p_filter->fmt_in.i_codec != VLC_FOURCC('f','l','3','2') )
+ p_filter->fmt_in.i_codec != VLC_CODEC_FL32 )
{
return VLC_EGENERIC;
}
!= p_filter->output.i_physical_channels
|| p_filter->input.i_original_channels
!= p_filter->output.i_original_channels
- || (p_filter->input.i_format != VLC_FOURCC('f','l','3','2')
- && p_filter->input.i_format != VLC_FOURCC('f','i','3','2')) )
+ || (p_filter->input.i_format != VLC_CODEC_FL32
+ && p_filter->input.i_format != VLC_CODEC_FI32) )
{
return -1;
}
!= p_filter->output.i_physical_channels
|| p_filter->input.i_original_channels
!= p_filter->output.i_original_channels
- || (p_filter->input.i_format != VLC_FOURCC('f','l','3','2')
- && p_filter->input.i_format != VLC_FOURCC('f','i','3','2')) )
+ || (p_filter->input.i_format != VLC_CODEC_FL32
+ && p_filter->input.i_format != VLC_CODEC_FI32) )
{
return VLC_EGENERIC;
}
aout_filter_sys_t *p_sys;
bool b_fit = true;
- if( p_filter->input.i_format != VLC_FOURCC('f','l','3','2' ) ||
- p_filter->output.i_format != VLC_FOURCC('f','l','3','2') )
+ if( p_filter->input.i_format != VLC_CODEC_FL32 ||
+ p_filter->output.i_format != VLC_CODEC_FL32 )
{
b_fit = false;
- p_filter->input.i_format = p_filter->output.i_format = VLC_FOURCC('f','l','3','2');
+ p_filter->input.i_format = p_filter->output.i_format = VLC_CODEC_FL32;
msg_Warn( p_filter, "bad input or output format" );
}
if( ! AOUT_FMTS_SIMILAR( &p_filter->input, &p_filter->output ) )
/*****************************************************************************
* Preamble
*****************************************************************************/
-#include <stdlib.h> /* malloc(), free() */
-#include <math.h>
-
#ifdef HAVE_CONFIG_H
# include "config.h"
#endif
+#include <stdlib.h> /* malloc(), free() */
+#include <math.h>
+
#include <vlc_common.h>
#include <vlc_plugin.h>
#include "vlc_aout.h"
bool b_fit = true;
msg_Dbg(p_this, "Opening filter spatializer %s %s %d", __FILE__,__func__,__LINE__);
- if( p_filter->input.i_format != VLC_FOURCC('f','l','3','2' ) ||
- p_filter->output.i_format != VLC_FOURCC('f','l','3','2') )
+ if( p_filter->input.i_format != VLC_CODEC_FL32 ||
+ p_filter->output.i_format != VLC_CODEC_FL32 )
{
b_fit = false;
- p_filter->input.i_format = VLC_FOURCC('f','l','3','2');
- p_filter->output.i_format = VLC_FOURCC('f','l','3','2');
+ p_filter->input.i_format = VLC_CODEC_FL32;
+ p_filter->output.i_format = VLC_CODEC_FL32;
msg_Warn( p_filter, "bad input or output format" );
}
if ( !AOUT_FMTS_SIMILAR( &p_filter->input, &p_filter->output ) )
{
aout_instance_t * p_aout = (aout_instance_t *)p_this;
- if ( p_aout->mixer.mixer.i_format != VLC_FOURCC('f','l','3','2') )
+ if ( p_aout->mixer.mixer.i_format != VLC_CODEC_FL32 )
{
return -1;
}
{
aout_instance_t * p_aout = (aout_instance_t *)p_this;
- if ( p_aout->mixer.mixer.i_format != VLC_FOURCC('f','l','3','2')
- && p_aout->mixer.mixer.i_format != VLC_FOURCC('f','i','3','2') )
+ if ( p_aout->mixer.mixer.i_format != VLC_CODEC_FL32
+ && p_aout->mixer.mixer.i_format != VLC_CODEC_FI32 )
{
return -1;
}
and float32) */
if( vlc_CPU() & CPU_CAPABILITY_FPU )
{
- i_vlc_pcm_format = VLC_FOURCC('f','l','3','2');
+ i_vlc_pcm_format = VLC_CODEC_FL32;
i_snd_pcm_format = SND_PCM_FORMAT_FLOAT;
}
else
{
- i_vlc_pcm_format = AOUT_FMT_S16_NE;
+ i_vlc_pcm_format = VLC_CODEC_S16N;
i_snd_pcm_format = SND_PCM_FORMAT_S16;
}
i_snd_pcm_format = SND_PCM_FORMAT_S16;
i_channels = 2;
- i_vlc_pcm_format = VLC_FOURCC('s','p','d','i');
+ i_vlc_pcm_format = VLC_CODEC_SPDIFL;
p_aout->output.i_nb_samples = i_period_size = ALSA_SPDIF_PERIOD_SIZE;
p_aout->output.output.i_bytes_per_frame = AOUT_SPDIF_SIZE;
p_aout->output.output.i_frame_length = A52_FRAME_NB;
goto error;
}
}
- if( i_vlc_pcm_format != VLC_FOURCC('s','p','d','i') )
+ if( i_vlc_pcm_format != VLC_CODEC_SPDIFL )
switch( i_snd_pcm_format )
{
case SND_PCM_FORMAT_FLOAT:
- i_vlc_pcm_format = VLC_FOURCC('f','l','3','2');
+ i_vlc_pcm_format = VLC_CODEC_FL32;
break;
case SND_PCM_FORMAT_S16:
- i_vlc_pcm_format = AOUT_FMT_S16_NE;
+ i_vlc_pcm_format = VLC_CODEC_S16N;
break;
}
p_aout->output.output.i_format = i_vlc_pcm_format;
{
b_retry = true;
i_snd_pcm_format = SND_PCM_FORMAT_S16;
- p_aout->output.output.i_format = AOUT_FMT_S16_NE;
+ p_aout->output.output.i_format = VLC_CODEC_S16N;
msg_Warn( p_aout, "unable to commit hardware configuration "
"with fl32 samples. Retrying with s16l (%s)", snd_strerror( i_snd_rc ) );
}
}
p_buffer = aout_OutputNextBuffer( p_aout, next_date,
- (p_aout->output.output.i_format == VLC_FOURCC('s','p','d','i')) );
+ (p_aout->output.output.i_format == VLC_CODEC_SPDIFL) );
/* Audio output buffer shortage -> stop the fill process and wait */
if( p_buffer == NULL )
DeviceFormat.mFormatID = kAudioFormatLinearPCM;
/* We use float 32. It's the best supported format by both VLC and Coreaudio */
- p_aout->output.output.i_format = VLC_FOURCC( 'f','l','3','2');
+ p_aout->output.output.i_format = VLC_CODEC_FL32;
DeviceFormat.mFormatFlags = kAudioFormatFlagsNativeFloatPacked;
DeviceFormat.mBitsPerChannel = 32;
DeviceFormat.mChannelsPerFrame = aout_FormatNbChannels( &p_aout->output.output );
/* Set the format flags */
if( p_sys->stream_format.mFormatFlags & kAudioFormatFlagIsBigEndian )
- p_aout->output.output.i_format = VLC_FOURCC('s','p','d','b');
+ p_aout->output.output.i_format = VLC_CODEC_SPDIFB;
else
- p_aout->output.output.i_format = VLC_FOURCC('s','p','d','i');
+ p_aout->output.output.i_format = VLC_CODEC_SPDIFL;
p_aout->output.output.i_bytes_per_frame = AOUT_SPDIF_SIZE;
p_aout->output.output.i_frame_length = A52_FRAME_NB;
p_aout->output.i_nb_samples = p_aout->output.output.i_frame_length;
/* Open the device */
if( val.i_int == AOUT_VAR_SPDIF )
{
- p_aout->output.output.i_format = VLC_FOURCC('s','p','d','i');
+ p_aout->output.output.i_format = VLC_CODEC_SPDIFL;
/* Calculate the frame size in bytes */
p_aout->output.i_nb_samples = A52_FRAME_NB;
p_aout->output.p_sys->i_frame_size =
p_aout->output.output.i_bytes_per_frame;
- if( CreateDSBuffer( p_aout, VLC_FOURCC('s','p','d','i'),
+ if( CreateDSBuffer( p_aout, VLC_CODEC_SPDIFL,
p_aout->output.output.i_physical_channels,
aout_FormatNbChannels( &p_aout->output.output ),
p_aout->output.output.i_rate,
/* Test for SPDIF support */
if ( AOUT_FMT_NON_LINEAR( &p_aout->output.output ) )
{
- if( CreateDSBuffer( p_aout, VLC_FOURCC('s','p','d','i'),
+ if( CreateDSBuffer( p_aout, VLC_CODEC_SPDIFL,
p_aout->output.output.i_physical_channels,
aout_FormatNbChannels( &p_aout->output.output ),
p_aout->output.output.i_rate,
switch( i_format )
{
- case VLC_FOURCC('s','p','d','i'):
+ case VLC_CODEC_SPDIFL:
i_nb_channels = 2;
/* To prevent channel re-ordering */
waveformat.dwChannelMask = SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT;
waveformat.SubFormat = _KSDATAFORMAT_SUBTYPE_DOLBY_AC3_SPDIF;
break;
- case VLC_FOURCC('f','l','3','2'):
+ case VLC_CODEC_FL32:
waveformat.Format.wBitsPerSample = sizeof(float) * 8;
waveformat.Samples.wValidBitsPerSample =
waveformat.Format.wBitsPerSample;
waveformat.SubFormat = _KSDATAFORMAT_SUBTYPE_IEEE_FLOAT;
break;
- case VLC_FOURCC('s','1','6','l'):
+ case VLC_CODEC_S16L:
waveformat.Format.wBitsPerSample = 16;
waveformat.Samples.wValidBitsPerSample =
waveformat.Format.wBitsPerSample;
/* Float32 audio samples are not supported for 5.1 output on the emu101k */
if( !var_GetBool( p_aout, "directx-audio-float32" ) ||
i_nb_channels > 2 ||
- CreateDSBuffer( p_aout, VLC_FOURCC('f','l','3','2'),
+ CreateDSBuffer( p_aout, VLC_CODEC_FL32,
i_channels, i_nb_channels, i_rate,
FRAME_SIZE * 4 * i_nb_channels, b_probe )
!= VLC_SUCCESS )
{
- if ( CreateDSBuffer( p_aout, VLC_FOURCC('s','1','6','l'),
+ if ( CreateDSBuffer( p_aout, VLC_CODEC_S16L,
i_channels, i_nb_channels, i_rate,
FRAME_SIZE * 2 * i_nb_channels, b_probe )
!= VLC_SUCCESS )
}
else
{
- *i_format = VLC_FOURCC('s','1','6','l');
+ *i_format = VLC_CODEC_S16L;
return VLC_SUCCESS;
}
}
else
{
- *i_format = VLC_FOURCC('f','l','3','2');
+ *i_format = VLC_CODEC_FL32;
return VLC_SUCCESS;
}
}
int canc = vlc_savecancel ();
/* We don't want any resampling when using S/PDIF output */
- b_sleek = p_aout->output.output.i_format == VLC_FOURCC('s','p','d','i');
+ b_sleek = p_aout->output.output.i_format == VLC_CODEC_SPDIFL;
msg_Dbg( p_notif, "DirectSoundThread ready" );
static const char *const format_list[] = { "u8", "s8", "u16", "s16", "u16_le",
"s16_le", "u16_be", "s16_be", "fixed32",
"float32", "spdif" };
-static const int format_int[] = { VLC_FOURCC('u','8',' ',' '),
- VLC_FOURCC('s','8',' ',' '),
- AOUT_FMT_U16_NE, AOUT_FMT_S16_NE,
- VLC_FOURCC('u','1','6','l'),
- VLC_FOURCC('s','1','6','l'),
- VLC_FOURCC('u','1','6','b'),
- VLC_FOURCC('s','1','6','b'),
- VLC_FOURCC('f','i','3','2'),
- VLC_FOURCC('f','l','3','2'),
- VLC_FOURCC('s','p','i','f') };
+static const int format_int[] = { VLC_CODEC_U8,
+ VLC_CODEC_S8,
+ VLC_CODEC_U16N, VLC_CODEC_S16N,
+ VLC_CODEC_U16L,
+ VLC_CODEC_S16L,
+ VLC_CODEC_U16B,
+ VLC_CODEC_S16B,
+ VLC_CODEC_FI32,
+ VLC_CODEC_FL32,
+ VLC_CODEC_SPDIFL };
#define FILE_TEXT N_("Output file")
#define FILE_LONGTEXT N_("File to which the audio samples will be written to. (\"-\" for stdout")
switch( p_aout->output.output.i_format )
{
- case VLC_FOURCC('f','l','3','2'):
+ case VLC_CODEC_FL32:
wh->Format = WAVE_FORMAT_IEEE_FLOAT;
wh->BitsPerSample = sizeof(float) * 8;
break;
- case VLC_FOURCC('u','8',' ',' '):
+ case VLC_CODEC_U8:
wh->Format = WAVE_FORMAT_PCM;
wh->BitsPerSample = 8;
break;
- case VLC_FOURCC('s','1','6','l'):
+ case VLC_CODEC_S16L:
default:
wh->Format = WAVE_FORMAT_PCM;
wh->BitsPerSample = 16;
}
}
- p_aout->output.output.i_format = AOUT_FMT_S16_NE;
+ p_aout->output.output.i_format = VLC_CODEC_S16N;
p_aout->output.i_nb_samples = FRAME_SIZE;
p_aout->output.output.i_physical_channels
= AOUT_CHAN_LEFT | AOUT_CHAN_RIGHT;
aout_VolumeSoftInit( p_aout );
/* JACK only supports fl32 format */
- p_aout->output.output.i_format = VLC_FOURCC('f','l','3','2');
+ p_aout->output.output.i_format = VLC_CODEC_FL32;
// TODO add buffer size callback
p_aout->output.i_nb_samples = jack_get_buffer_size( p_sys->p_jack_client );
p_aout->output.output.i_rate = jack_get_sample_rate( p_sys->p_jack_client );
if ( val.i_int == AOUT_VAR_SPDIF )
{
- p_aout->output.output.i_format = VLC_FOURCC('s','p','d','i');
+ p_aout->output.output.i_format = VLC_CODEC_SPDIFL;
}
else if ( val.i_int == AOUT_VAR_5_1 )
{
- p_aout->output.output.i_format = AOUT_FMT_S16_NE;
+ p_aout->output.output.i_format = VLC_CODEC_S16N;
p_aout->output.output.i_physical_channels
= AOUT_CHAN_LEFT | AOUT_CHAN_RIGHT | AOUT_CHAN_CENTER
| AOUT_CHAN_REARLEFT | AOUT_CHAN_REARRIGHT
}
else if ( val.i_int == AOUT_VAR_2F2R )
{
- p_aout->output.output.i_format = AOUT_FMT_S16_NE;
+ p_aout->output.output.i_format = VLC_CODEC_S16N;
p_aout->output.output.i_physical_channels
= AOUT_CHAN_LEFT | AOUT_CHAN_RIGHT
| AOUT_CHAN_REARLEFT | AOUT_CHAN_REARRIGHT;
}
else if ( val.i_int == AOUT_VAR_STEREO )
{
- p_aout->output.output.i_format = AOUT_FMT_S16_NE;
+ p_aout->output.output.i_format = VLC_CODEC_S16N;
p_aout->output.output.i_physical_channels
= AOUT_CHAN_LEFT | AOUT_CHAN_RIGHT;
}
else if ( val.i_int == AOUT_VAR_MONO )
{
- p_aout->output.output.i_format = AOUT_FMT_S16_NE;
+ p_aout->output.output.i_format = VLC_CODEC_S16N;
p_aout->output.output.i_physical_channels = AOUT_CHAN_CENTER;
}
else
return VLC_EGENERIC;
}
- p_aout->output.output.i_format = VLC_FOURCC('s','p','d','i');
+ p_aout->output.output.i_format = VLC_CODEC_SPDIFL;
p_aout->output.i_nb_samples = A52_FRAME_NB;
p_aout->output.output.i_bytes_per_frame = AOUT_SPDIF_SIZE;
p_aout->output.output.i_frame_length = A52_FRAME_NB;
switch ( i_format )
{
case AFMT_U8:
- p_aout->output.output.i_format = VLC_FOURCC('u','8',' ',' ');
+ p_aout->output.output.i_format = VLC_CODEC_U8;
break;
case AFMT_S8:
- p_aout->output.output.i_format = VLC_FOURCC('s','8',' ',' ');
+ p_aout->output.output.i_format = VLC_CODEC_S8;
break;
case AFMT_U16_LE:
- p_aout->output.output.i_format = VLC_FOURCC('u','1','6','l');
+ p_aout->output.output.i_format = VLC_CODEC_U16L;
break;
case AFMT_S16_LE:
- p_aout->output.output.i_format = VLC_FOURCC('s','1','6','l');
+ p_aout->output.output.i_format = VLC_CODEC_S16L;
break;
case AFMT_U16_BE:
- p_aout->output.output.i_format = VLC_FOURCC('u','1','6','b');
+ p_aout->output.output.i_format = VLC_CODEC_U16B;
break;
case AFMT_S16_BE:
- p_aout->output.output.i_format = VLC_FOURCC('s','1','6','b');
+ p_aout->output.output.i_format = VLC_CODEC_S16B;
break;
default:
msg_Err( p_aout, "OSS fell back to an unknown format (%d)",
int i_tmp, i_size;
uint8_t * p_bytes;
- if ( p_aout->output.output.i_format != VLC_FOURCC('s','p','d','i') )
+ if ( p_aout->output.output.i_format != VLC_CODEC_SPDIFL )
{
mtime_t buffered = BufferDuration( p_aout );
}
/* Audio format is paFloat32 (always supported by portaudio v19) */
- p_aout->output.output.i_format = VLC_FOURCC('f','l','3','2');
+ p_aout->output.output.i_format = VLC_CODEC_FL32;
return VLC_SUCCESS;
ss.rate = p_aout->output.output.i_rate;
ss.format = PA_SAMPLE_FLOAT32NE;
- p_aout->output.output.i_format = VLC_FOURCC('f','l','3','2');
+ p_aout->output.output.i_format = VLC_CODEC_FL32;
if (!pa_sample_spec_valid(&ss)) {
msg_Err(p_aout,"Invalid sample spec");
switch ( obtained.format )
{
case AUDIO_S16LSB:
- p_aout->output.output.i_format = VLC_FOURCC('s','1','6','l'); break;
+ p_aout->output.output.i_format = VLC_CODEC_S16L; break;
case AUDIO_S16MSB:
- p_aout->output.output.i_format = VLC_FOURCC('s','1','6','b'); break;
+ p_aout->output.output.i_format = VLC_CODEC_S16B; break;
case AUDIO_U16LSB:
- p_aout->output.output.i_format = VLC_FOURCC('u','1','6','l'); break;
+ p_aout->output.output.i_format = VLC_CODEC_U16L; break;
case AUDIO_U16MSB:
- p_aout->output.output.i_format = VLC_FOURCC('u','1','6','b'); break;
+ p_aout->output.output.i_format = VLC_CODEC_U16B; break;
case AUDIO_S8:
- p_aout->output.output.i_format = VLC_FOURCC('s','8',' ',' '); break;
+ p_aout->output.output.i_format = VLC_CODEC_S8; break;
case AUDIO_U8:
- p_aout->output.output.i_format = VLC_FOURCC('u','8',' ',' '); break;
+ p_aout->output.output.i_format = VLC_CODEC_U8; break;
}
/* Volume is entirely done in software. */
aout_VolumeSoftInit( p_aout );
/* Open the device */
if( val.i_int == AOUT_VAR_SPDIF )
{
- p_aout->output.output.i_format = VLC_FOURCC('s','p','d','i');
+ p_aout->output.output.i_format = VLC_CODEC_SPDIFL;
if( OpenWaveOut( p_aout,
p_aout->output.p_sys->i_wave_device_id,
- VLC_FOURCC('s','p','d','i'),
+ VLC_CODEC_SPDIFL,
p_aout->output.output.i_physical_channels,
aout_FormatNbChannels( &p_aout->output.output ),
p_aout->output.output.i_rate, false )
{
if( OpenWaveOut( p_aout,
p_aout->output.p_sys->i_wave_device_id,
- VLC_FOURCC('s','p','d','i'),
+ VLC_CODEC_SPDIFL,
p_aout->output.output.i_physical_channels,
aout_FormatNbChannels( &p_aout->output.output ),
p_aout->output.output.i_rate, true )
switch( i_format )
{
- case VLC_FOURCC('s','p','d','i'):
+ case VLC_CODEC_SPDIFL:
i_nb_channels = 2;
/* To prevent channel re-ordering */
waveformat.dwChannelMask = SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT;
waveformat.SubFormat = __KSDATAFORMAT_SUBTYPE_DOLBY_AC3_SPDIF;
break;
- case VLC_FOURCC('f','l','3','2'):
+ case VLC_CODEC_FL32:
waveformat.Format.wBitsPerSample = sizeof(float) * 8;
waveformat.Samples.wValidBitsPerSample =
waveformat.Format.wBitsPerSample;
waveformat.SubFormat = __KSDATAFORMAT_SUBTYPE_IEEE_FLOAT;
break;
- case VLC_FOURCC('s','1','6','l'):
+ case VLC_CODEC_S16L:
waveformat.Format.wBitsPerSample = 16;
waveformat.Samples.wValidBitsPerSample =
waveformat.Format.wBitsPerSample;
{
bool b_use_float32 = var_CreateGetBool( p_aout, "waveout-float32");
- if( !b_use_float32 || OpenWaveOut( p_aout, i_device_id, VLC_FOURCC('f','l','3','2'),
+ if( !b_use_float32 || OpenWaveOut( p_aout, i_device_id, VLC_CODEC_FL32,
i_channels, i_nb_channels, i_rate, b_probe )
!= VLC_SUCCESS )
{
- if ( OpenWaveOut( p_aout, i_device_id, VLC_FOURCC('s','1','6','l'),
+ if ( OpenWaveOut( p_aout, i_device_id, VLC_CODEC_S16L,
i_channels, i_nb_channels, i_rate, b_probe )
!= VLC_SUCCESS )
{
}
else
{
- *i_format = VLC_FOURCC('s','1','6','l');
+ *i_format = VLC_CODEC_S16L;
return VLC_SUCCESS;
}
}
else
{
- *i_format = VLC_FOURCC('f','l','3','2');
+ *i_format = VLC_CODEC_FL32;
return VLC_SUCCESS;
}
}
int canc = vlc_savecancel ();
/* We don't want any resampling when using S/PDIF */
- b_sleek = p_aout->output.output.i_format == VLC_FOURCC('s','p','d','i');
+ b_sleek = p_aout->output.output.i_format == VLC_CODEC_SPDIFL;
// wait for first call to "play()"
while( !p_sys->start_date && vlc_object_alive (p_aout) )
switch( p_dec->fmt_in.i_codec )
{
- case VLC_FOURCC('a','5','2',' '):
- case VLC_FOURCC('a','5','2','b'):
- i_codec = VLC_FOURCC('a','5','2',' ');
+ case VLC_CODEC_A52:
+ i_codec = VLC_CODEC_A52;
break;
- case VLC_FOURCC('e','a','c','3'):
+ case VLC_CODEC_EAC3:
/* XXX ugly hack, a52 does not support eac3 so no eac3 pass-through
* support */
if( !b_packetizer )
return VLC_EGENERIC;
- i_codec = VLC_FOURCC('e','a','c','3');
+ i_codec = VLC_CODEC_EAC3;
break;
default:
return VLC_EGENERIC;
p_sys->i_samplesperblock );
p_dec->fmt_out.i_cat = AUDIO_ES;
- p_dec->fmt_out.i_codec = AOUT_FMT_S16_NE;
+ p_dec->fmt_out.i_codec = VLC_CODEC_S16N;
p_dec->fmt_out.audio.i_rate = p_dec->fmt_in.audio.i_rate;
p_dec->fmt_out.audio.i_channels = p_dec->fmt_in.audio.i_channels;
p_dec->fmt_out.audio.i_physical_channels =
{
decoder_sys_t *p_sys;
- if( p_dec->fmt_in.i_codec != VLC_FOURCC('a','e','s','3') )
+ if( p_dec->fmt_in.i_codec != VLC_CODEC_302M )
return VLC_EGENERIC;
/* Allocate the memory needed to store the decoder's structure */
/* Set callback */
if( b_packetizer )
{
- p_dec->fmt_out.i_codec = VLC_FOURCC('a','e','s','3');
+ p_dec->fmt_out.i_codec = VLC_CODEC_302M;
p_dec->pf_decode_audio = NULL;
p_dec->pf_packetize = Packetize;
}
else
{
- p_dec->fmt_out.i_codec = i_bits == 16 ? VLC_FOURCC('s','1','6','l') : VLC_FOURCC('s','2','4','l');
+ p_dec->fmt_out.i_codec = i_bits == 16 ? VLC_CODEC_S16L : VLC_CODEC_S24L;
p_dec->fmt_out.audio.i_bitspersample = i_bits == 16 ? 16 : 24;
}
/* _signed_ little endian samples (mov)*/
case VLC_FOURCC('s','o','w','t'):
- case VLC_FOURCC('a','l','a','w'):
- case VLC_FOURCC('u','l','a','w'):
- case VLC_FOURCC('m','l','a','w'):
-
- case VLC_FOURCC('f','l','6','4'):
- case VLC_FOURCC('f','l','3','2'):
- case VLC_FOURCC('s','3','2','l'):
- case VLC_FOURCC('s','3','2','b'):
- case VLC_FOURCC('s','2','4','l'):
- case VLC_FOURCC('s','2','4','b'):
- case VLC_FOURCC('s','1','6','l'):
- case VLC_FOURCC('s','1','6','b'):
- case VLC_FOURCC('s','8',' ',' '):
- case VLC_FOURCC('u','8',' ',' '):
- case VLC_FOURCC('i','n','2','4'): /* Quicktime in24, bigendian int24 */
- case VLC_FOURCC('4','2','n','i'): /* Quicktime in24, little-endian int24 */
- case VLC_FOURCC('i','n','3','2'): /* Quicktime in32, bigendian int32 */
+ case VLC_CODEC_ALAW:
+ case VLC_CODEC_MULAW:
+
+ case VLC_CODEC_FL64:
+ case VLC_CODEC_FL32:
+ case VLC_CODEC_S32L:
+ case VLC_CODEC_S32B:
+ case VLC_CODEC_S24L:
+ case VLC_CODEC_S24B:
+ case VLC_CODEC_S16L:
+ case VLC_CODEC_S16B:
+ case VLC_CODEC_S8:
+ case VLC_CODEC_U8:
break;
default:
p_dec->fmt_in.audio.i_rate, p_dec->fmt_in.audio.i_channels,
p_dec->fmt_in.audio.i_bitspersample );
- if( p_dec->fmt_in.i_codec == VLC_FOURCC( 'f', 'l', '6', '4' ) )
+ if( p_dec->fmt_in.i_codec == VLC_CODEC_FL64 )
{
p_dec->fmt_out.i_codec = p_dec->fmt_in.i_codec;
p_dec->fmt_in.audio.i_bitspersample = 64;
}
- else if( p_dec->fmt_in.i_codec == VLC_FOURCC( 'f', 'l', '3', '2' ) )
+ else if( p_dec->fmt_in.i_codec == VLC_CODEC_FL32 )
{
p_dec->fmt_out.i_codec = p_dec->fmt_in.i_codec;
p_dec->fmt_in.audio.i_bitspersample = 32;
}
- else if( p_dec->fmt_in.i_codec == VLC_FOURCC( 's', '3', '2', 'l' ) ||
- p_dec->fmt_in.i_codec == VLC_FOURCC( 's', '3', '2', 'b' ) )
+ else if( p_dec->fmt_in.i_codec == VLC_CODEC_S32L ||
+ p_dec->fmt_in.i_codec == VLC_CODEC_S32B )
{
p_dec->fmt_out.i_codec = p_dec->fmt_in.i_codec;
p_dec->fmt_in.audio.i_bitspersample = 32;
}
- else if( p_dec->fmt_in.i_codec == VLC_FOURCC( 'i', 'n', '3', '2' ) )
- {
- /* FIXME: mplayer uses bigendian for in24 .... but here it works
- * with little endian ... weird */
- p_dec->fmt_out.i_codec = VLC_FOURCC( 's', '3', '2', 'l' );
- p_dec->fmt_in.audio.i_bitspersample = 32;
- }
- else if( p_dec->fmt_in.i_codec == VLC_FOURCC( 's', '2', '4', 'l' ) ||
- p_dec->fmt_in.i_codec == VLC_FOURCC( 's', '2', '4', 'b' ) )
+ else if( p_dec->fmt_in.i_codec == VLC_CODEC_S24L ||
+ p_dec->fmt_in.i_codec == VLC_CODEC_S24B )
{
p_dec->fmt_out.i_codec = p_dec->fmt_in.i_codec;
p_dec->fmt_in.audio.i_bitspersample = 24;
}
- else if( p_dec->fmt_in.i_codec == VLC_FOURCC( 'i', 'n', '2', '4' ) )
- {
- p_dec->fmt_out.i_codec = VLC_FOURCC( 's', '2', '4', 'b' );
- p_dec->fmt_in.audio.i_bitspersample = 24;
- }
- else if( p_dec->fmt_in.i_codec == VLC_FOURCC( '4', '2', 'n', 'i' ) )
- {
- p_dec->fmt_out.i_codec = VLC_FOURCC( 's', '2', '4', 'l' );
- p_dec->fmt_in.audio.i_bitspersample = 24;
- }
- else if( p_dec->fmt_in.i_codec == VLC_FOURCC( 's', '1', '6', 'l' ) ||
- p_dec->fmt_in.i_codec == VLC_FOURCC( 's', '1', '6', 'b' ) )
+ else if( p_dec->fmt_in.i_codec == VLC_CODEC_S16L ||
+ p_dec->fmt_in.i_codec == VLC_CODEC_S16B )
{
p_dec->fmt_out.i_codec = p_dec->fmt_in.i_codec;
p_dec->fmt_in.audio.i_bitspersample = 16;
}
- else if( p_dec->fmt_in.i_codec == VLC_FOURCC( 's', '8', ' ', ' ' ) ||
- p_dec->fmt_in.i_codec == VLC_FOURCC( 'u', '8', ' ', ' ' ) )
+ else if( p_dec->fmt_in.i_codec == VLC_CODEC_S8 ||
+ p_dec->fmt_in.i_codec == VLC_CODEC_U8 )
{
p_dec->fmt_out.i_codec = p_dec->fmt_in.i_codec;
p_dec->fmt_in.audio.i_bitspersample = 8;
}
- else if( p_dec->fmt_in.i_codec == VLC_FOURCC( 'a', 'f', 'l', 't' ) )
+ else if( p_dec->fmt_in.i_codec == VLC_CODEC_ALAW )
{
- switch( ( p_dec->fmt_in.audio.i_bitspersample + 7 ) / 8 )
- {
- case 4:
- p_dec->fmt_out.i_codec = VLC_FOURCC('f','l','3','2');
- break;
- case 8:
- p_dec->fmt_out.i_codec = VLC_FOURCC('f','l','6','4');
- break;
- default:
- msg_Err( p_dec, "bad parameters(bits/sample)" );
- return VLC_EGENERIC;
- }
- }
- else if( p_dec->fmt_in.i_codec == VLC_FOURCC( 'a', 'r', 'a', 'w' ) ||
- p_dec->fmt_in.i_codec == VLC_FOURCC( 'p', 'c', 'm', ' ' ) )
- {
- switch( ( p_dec->fmt_in.audio.i_bitspersample + 7 ) / 8 )
- {
- case 1:
- p_dec->fmt_out.i_codec = VLC_FOURCC('u','8',' ',' ');
- break;
- case 2:
- p_dec->fmt_out.i_codec = VLC_FOURCC('s','1','6','l');
- break;
- case 3:
- p_dec->fmt_out.i_codec = VLC_FOURCC('s','2','4','l');
- break;
- case 4:
- p_dec->fmt_out.i_codec = VLC_FOURCC('s','3','2','l');
- break;
- default:
- msg_Err( p_dec, "bad parameters(bits/sample)" );
- return VLC_EGENERIC;
- }
+ p_dec->fmt_out.i_codec = VLC_CODEC_S16N;
+ p_sys->p_logtos16 = alawtos16;
+ p_dec->fmt_in.audio.i_bitspersample = 8;
}
- else if( p_dec->fmt_in.i_codec == VLC_FOURCC( 't', 'w', 'o', 's' ) )
+ else if( p_dec->fmt_in.i_codec == VLC_CODEC_MULAW )
{
- switch( ( p_dec->fmt_in.audio.i_bitspersample + 7 ) / 8 )
- {
- case 1:
- p_dec->fmt_out.i_codec = VLC_FOURCC('s','8',' ',' ');
- break;
- case 2:
- p_dec->fmt_out.i_codec = VLC_FOURCC('s','1','6','b');
- break;
- case 3:
- p_dec->fmt_out.i_codec = VLC_FOURCC('s','2','4','b');
- break;
- case 4:
- p_dec->fmt_out.i_codec = VLC_FOURCC('s','3','2','b');
- break;
- default:
- msg_Err( p_dec, "bad parameters(bits/sample)" );
- return VLC_EGENERIC;
- }
+ p_dec->fmt_out.i_codec = VLC_CODEC_S16N;
+ p_sys->p_logtos16 = ulawtos16;
+ p_dec->fmt_in.audio.i_bitspersample = 8;
}
- else if( p_dec->fmt_in.i_codec == VLC_FOURCC( 's', 'o', 'w', 't' ) )
+ else
{
- switch( ( p_dec->fmt_in.audio.i_bitspersample + 7 ) / 8 )
+ p_dec->fmt_out.i_codec =
+ vlc_fourcc_GetCodecAudio( p_dec->fmt_in.i_codec,
+ p_dec->fmt_in.audio.i_bitspersample );
+ if( !p_dec->fmt_out.i_codec )
{
- case 1:
- p_dec->fmt_out.i_codec = VLC_FOURCC('s','8',' ',' ');
- break;
- case 2:
- p_dec->fmt_out.i_codec = VLC_FOURCC('s','1','6','l');
- break;
- case 3:
- p_dec->fmt_out.i_codec = VLC_FOURCC('s','2','4','l');
- break;
- case 4:
- p_dec->fmt_out.i_codec = VLC_FOURCC('s','3','2','l');
- break;
- default:
msg_Err( p_dec, "bad parameters(bits/sample)" );
return VLC_EGENERIC;
}
}
- else if( p_dec->fmt_in.i_codec == VLC_FOURCC( 'a', 'l', 'a', 'w' ) )
- {
- p_dec->fmt_out.i_codec = AOUT_FMT_S16_NE;
- p_sys->p_logtos16 = alawtos16;
- p_dec->fmt_in.audio.i_bitspersample = 8;
- }
- else if( p_dec->fmt_in.i_codec == VLC_FOURCC( 'u', 'l', 'a', 'w' ) ||
- p_dec->fmt_in.i_codec == VLC_FOURCC( 'm', 'l', 'a', 'w' ) )
- {
- p_dec->fmt_out.i_codec = AOUT_FMT_S16_NE;
- p_sys->p_logtos16 = ulawtos16;
- p_dec->fmt_in.audio.i_bitspersample = 8;
- }
- else return VLC_EGENERIC;
/* Set output properties */
p_dec->fmt_out.i_cat = AUDIO_ES;
p_dec->fmt_out.audio.i_original_channels =
p_dec->fmt_in.audio.i_original_channels;
- if( p_dec->fmt_in.i_codec == VLC_FOURCC( 'a', 'l', 'a', 'w' ) ||
- p_dec->fmt_in.i_codec == VLC_FOURCC( 'u', 'l', 'a', 'w' ) ||
- p_dec->fmt_in.i_codec == VLC_FOURCC( 'm', 'l', 'a', 'w' ) )
+ if( p_dec->fmt_in.i_codec == VLC_CODEC_ALAW ||
+ p_dec->fmt_in.i_codec == VLC_CODEC_MULAW )
{
p_dec->fmt_out.audio.i_bitspersample = 16;
}
encoder_t *p_enc = (encoder_t *)p_this;
encoder_sys_t *p_sys;
- if( p_enc->fmt_out.i_codec == VLC_FOURCC('u','8',' ',' ') ||
- p_enc->fmt_out.i_codec == VLC_FOURCC('s','8',' ',' ') ||
- p_enc->fmt_out.i_codec == VLC_FOURCC('a','l','a','w') ||
- p_enc->fmt_out.i_codec == VLC_FOURCC('u','l','a','w') ||
- p_enc->fmt_out.i_codec == VLC_FOURCC('m','l','a','w'))
+ if( p_enc->fmt_out.i_codec == VLC_CODEC_U8 ||
+ p_enc->fmt_out.i_codec == VLC_CODEC_S8 ||
+ p_enc->fmt_out.i_codec == VLC_CODEC_ALAW ||
+ p_enc->fmt_out.i_codec == VLC_CODEC_MULAW)
{
p_enc->fmt_out.audio.i_bitspersample = 8;
}
- else if( p_enc->fmt_out.i_codec == VLC_FOURCC('u','1','6','l') ||
- p_enc->fmt_out.i_codec == VLC_FOURCC('u','1','6','b') ||
- p_enc->fmt_out.i_codec == VLC_FOURCC('s','1','6','l') ||
- p_enc->fmt_out.i_codec == VLC_FOURCC('s','1','6','b') )
+ else if( p_enc->fmt_out.i_codec == VLC_CODEC_U16L ||
+ p_enc->fmt_out.i_codec == VLC_CODEC_U16B ||
+ p_enc->fmt_out.i_codec == VLC_CODEC_S16L ||
+ p_enc->fmt_out.i_codec == VLC_CODEC_S16B )
{
p_enc->fmt_out.audio.i_bitspersample = 16;
}
- else if( p_enc->fmt_out.i_codec == VLC_FOURCC('u','2','4','l') ||
- p_enc->fmt_out.i_codec == VLC_FOURCC('u','2','4','b') ||
- p_enc->fmt_out.i_codec == VLC_FOURCC('s','2','4','l') ||
- p_enc->fmt_out.i_codec == VLC_FOURCC('s','2','4','b') ||
- p_enc->fmt_out.i_codec == VLC_FOURCC('i','n','2','4') )
+ else if( p_enc->fmt_out.i_codec == VLC_CODEC_U24L ||
+ p_enc->fmt_out.i_codec == VLC_CODEC_U24B ||
+ p_enc->fmt_out.i_codec == VLC_CODEC_S24L ||
+ p_enc->fmt_out.i_codec == VLC_CODEC_S24B )
{
p_enc->fmt_out.audio.i_bitspersample = 24;
}
- else if( p_enc->fmt_out.i_codec == VLC_FOURCC('u','3','2','l') ||
- p_enc->fmt_out.i_codec == VLC_FOURCC('u','3','2','b') ||
- p_enc->fmt_out.i_codec == VLC_FOURCC('s','3','2','l') ||
- p_enc->fmt_out.i_codec == VLC_FOURCC('s','3','2','b') ||
- p_enc->fmt_out.i_codec == VLC_FOURCC('i','n','3','2') ||
- p_enc->fmt_out.i_codec == VLC_FOURCC('f','i','3','2') ||
- p_enc->fmt_out.i_codec == VLC_FOURCC('f','l','3','2') )
+ else if( p_enc->fmt_out.i_codec == VLC_CODEC_U32L ||
+ p_enc->fmt_out.i_codec == VLC_CODEC_U32B ||
+ p_enc->fmt_out.i_codec == VLC_CODEC_S32L ||
+ p_enc->fmt_out.i_codec == VLC_CODEC_S32B ||
+ p_enc->fmt_out.i_codec == VLC_CODEC_FI32 ||
+ p_enc->fmt_out.i_codec == VLC_CODEC_FL32 )
{
p_enc->fmt_out.audio.i_bitspersample = 32;
}
- else if( p_enc->fmt_out.i_codec == VLC_FOURCC('f','l','6','4') )
+ else if( p_enc->fmt_out.i_codec == VLC_CODEC_FL64 )
{
p_enc->fmt_out.audio.i_bitspersample = 64;
}
p_enc->fmt_in.i_codec = p_enc->fmt_out.i_codec;
p_sys->i_s16tolog = 0;
- if( p_enc->fmt_out.i_codec == VLC_FOURCC( 'a', 'l', 'a', 'w' ))
+ if( p_enc->fmt_out.i_codec == VLC_CODEC_ALAW)
{
p_enc->fmt_in.audio.i_bitspersample = 16;
- p_enc->fmt_in.i_codec = AOUT_FMT_S16_NE;
+ p_enc->fmt_in.i_codec = VLC_CODEC_S16N;
p_sys->i_s16tolog = ALAW;
}
- else if( p_enc->fmt_out.i_codec == VLC_FOURCC( 'u', 'l', 'a', 'w' ) ||
- p_enc->fmt_out.i_codec == VLC_FOURCC( 'm', 'l', 'a', 'w' ) )
+ else if( p_enc->fmt_out.i_codec == VLC_CODEC_MULAW )
{
p_enc->fmt_in.audio.i_bitspersample = 16;
- p_enc->fmt_in.i_codec = AOUT_FMT_S16_NE;
+ p_enc->fmt_in.i_codec = VLC_CODEC_S16N;
p_sys->i_s16tolog = ULAW;
}
int i_offset;
int i_size;
- if( p_dec->fmt_in.i_codec == VLC_FOURCC( 'f', 'l', 'a', 'c' ) )
+ if( p_dec->fmt_in.i_codec == VLC_CODEC_FLAC )
{
i_offset = 8;
i_size = p_dec->fmt_in.i_extra - 8;
}
- else if( p_dec->fmt_in.i_codec == VLC_FOURCC( 'a', 'l', 'a', 'c' ) )
+ else if( p_dec->fmt_in.i_codec == VLC_CODEC_ALAC )
{
static const uint8_t p_pattern[] = { 0, 0, 0, 36, 'a', 'l', 'a', 'c' };
/* Find alac atom XXX it is a bit ugly */
switch( p_sys->p_context->sample_fmt )
{
case SAMPLE_FMT_U8:
- p_dec->fmt_out.i_codec = VLC_FOURCC('u','8',' ',' ');
+ p_dec->fmt_out.i_codec = VLC_CODEC_U8;
p_dec->fmt_out.audio.i_bitspersample = 8;
break;
case SAMPLE_FMT_S32:
- p_dec->fmt_out.i_codec = AOUT_FMT_S32_NE;
+ p_dec->fmt_out.i_codec = VLC_CODEC_S32N;
p_dec->fmt_out.audio.i_bitspersample = 32;
break;
case SAMPLE_FMT_FLT:
- p_dec->fmt_out.i_codec = VLC_FOURCC('f','l','3','2');
+ p_dec->fmt_out.i_codec = VLC_CODEC_FL32;
p_dec->fmt_out.audio.i_bitspersample = 32;
break;
case SAMPLE_FMT_DBL:
- p_dec->fmt_out.i_codec = VLC_FOURCC('f','l','6','4');
+ p_dec->fmt_out.i_codec = VLC_CODEC_FL64;
p_dec->fmt_out.audio.i_bitspersample = 64;
break;
case SAMPLE_FMT_S16:
default:
- p_dec->fmt_out.i_codec = AOUT_FMT_S16_NE;
+ p_dec->fmt_out.i_codec = VLC_CODEC_S16N;
p_dec->fmt_out.audio.i_bitspersample = 16;
break;
}
#else
- p_dec->fmt_out.i_codec = AOUT_FMT_S16_NE;
+ p_dec->fmt_out.i_codec = VLC_CODEC_S16N;
p_dec->fmt_out.audio.i_bitspersample = 16;
#endif
p_dec->fmt_out.audio.i_rate = p_sys->p_context->sample_rate;
} chroma_table[] =
{
/* Planar YUV formats */
- {VLC_FOURCC('I','4','4','4'), PIX_FMT_YUV444P, 0, 0, 0 },
- {VLC_FOURCC('J','4','4','4'), PIX_FMT_YUVJ444P, 0, 0, 0 },
+ {VLC_CODEC_I444, PIX_FMT_YUV444P, 0, 0, 0 },
+ {VLC_CODEC_J444, PIX_FMT_YUVJ444P, 0, 0, 0 },
#if LIBAVUTIL_VERSION_INT >= ((49<<16)+(5<<8)+0)
- {VLC_FOURCC('I','4','4','0'), PIX_FMT_YUV440P, 0, 0, 0 },
- {VLC_FOURCC('J','4','4','0'), PIX_FMT_YUVJ440P, 0, 0, 0 },
+ {VLC_CODEC_I440, PIX_FMT_YUV440P, 0, 0, 0 },
+ {VLC_CODEC_J440, PIX_FMT_YUVJ440P, 0, 0, 0 },
#endif
- {VLC_FOURCC('I','4','2','2'), PIX_FMT_YUV422P, 0, 0, 0 },
- {VLC_FOURCC('J','4','2','2'), PIX_FMT_YUVJ422P, 0, 0, 0 },
+ {VLC_CODEC_I422, PIX_FMT_YUV422P, 0, 0, 0 },
+ {VLC_CODEC_J422, PIX_FMT_YUVJ422P, 0, 0, 0 },
- {VLC_FOURCC('I','4','2','0'), PIX_FMT_YUV420P, 0, 0, 0 },
- {VLC_FOURCC('Y','V','1','2'), PIX_FMT_YUV420P, 0, 0, 0 },
+ {VLC_CODEC_I420, PIX_FMT_YUV420P, 0, 0, 0 },
+ {VLC_CODEC_YV12, PIX_FMT_YUV420P, 0, 0, 0 },
{VLC_FOURCC('I','Y','U','V'), PIX_FMT_YUV420P, 0, 0, 0 },
- {VLC_FOURCC('J','4','2','0'), PIX_FMT_YUVJ420P, 0, 0, 0 },
- {VLC_FOURCC('I','4','1','1'), PIX_FMT_YUV411P, 0, 0, 0 },
- {VLC_FOURCC('I','4','1','0'), PIX_FMT_YUV410P, 0, 0, 0 },
+ {VLC_CODEC_J420, PIX_FMT_YUVJ420P, 0, 0, 0 },
+ {VLC_CODEC_I411, PIX_FMT_YUV411P, 0, 0, 0 },
+ {VLC_CODEC_I410, PIX_FMT_YUV410P, 0, 0, 0 },
{VLC_FOURCC('Y','V','U','9'), PIX_FMT_YUV410P, 0, 0, 0 },
{VLC_FOURCC('N','V','1','2'), PIX_FMT_NV12, 0, 0, 0 },
{VLC_FOURCC('N','V','2','1'), PIX_FMT_NV21, 0, 0, 0 },
/* Packed YUV formats */
- {VLC_FOURCC('Y','U','Y','2'), PIX_FMT_YUYV422, 0, 0, 0 },
+ {VLC_CODEC_YUYV, PIX_FMT_YUYV422, 0, 0, 0 },
{VLC_FOURCC('Y','U','Y','V'), PIX_FMT_YUYV422, 0, 0, 0 },
- {VLC_FOURCC('U','Y','V','Y'), PIX_FMT_UYVY422, 0, 0, 0 },
+ {VLC_CODEC_UYVY, PIX_FMT_UYVY422, 0, 0, 0 },
{VLC_FOURCC('Y','4','1','1'), PIX_FMT_UYYVYY411, 0, 0, 0 },
/* Packed RGB formats */
VLC_RGB( VLC_FOURCC('R','G','B','4'), PIX_FMT_RGB4, PIX_FMT_BGR4, 0x10, 0x06, 0x01 )
VLC_RGB( VLC_FOURCC('R','G','B','8'), PIX_FMT_RGB8, PIX_FMT_BGR8, 0xC0, 0x38, 0x07 )
- VLC_RGB( VLC_FOURCC('R','V','1','5'), PIX_FMT_BGR555, PIX_FMT_RGB555, 0x7c00, 0x03e0, 0x001f )
- VLC_RGB( VLC_FOURCC('R','V','1','6'), PIX_FMT_BGR565, PIX_FMT_RGB565, 0xf800, 0x07e0, 0x001f )
- VLC_RGB( VLC_FOURCC('R','V','2','4'), PIX_FMT_BGR24, PIX_FMT_RGB24, 0xff0000, 0x00ff00, 0x0000ff )
+ VLC_RGB( VLC_CODEC_RGB15, PIX_FMT_BGR555, PIX_FMT_RGB555, 0x7c00, 0x03e0, 0x001f )
+ VLC_RGB( VLC_CODEC_RGB16, PIX_FMT_BGR565, PIX_FMT_RGB565, 0xf800, 0x07e0, 0x001f )
+ VLC_RGB( VLC_CODEC_RGB24, PIX_FMT_BGR24, PIX_FMT_RGB24, 0xff0000, 0x00ff00, 0x0000ff )
- VLC_RGB( VLC_FOURCC('R','V','3','2'), PIX_FMT_RGB32, PIX_FMT_BGR32, 0x00ff0000, 0x0000ff00, 0x000000ff )
- VLC_RGB( VLC_FOURCC('R','V','3','2'), PIX_FMT_RGB32_1, PIX_FMT_BGR32_1, 0xff000000, 0x00ff0000, 0x0000ff00 )
+ VLC_RGB( VLC_CODEC_RGB32, PIX_FMT_RGB32, PIX_FMT_BGR32, 0x00ff0000, 0x0000ff00, 0x000000ff )
+ VLC_RGB( VLC_CODEC_RGB32, PIX_FMT_RGB32_1, PIX_FMT_BGR32_1, 0xff000000, 0x00ff0000, 0x0000ff00 )
#if defined(PIX_FMT_RGBA)
- {VLC_FOURCC('R','G','B','A'), PIX_FMT_RGBA, 0xff000000, 0x00ff0000, 0x0000ff00},
+ {VLC_CODEC_RGBA, PIX_FMT_RGBA, 0xff000000, 0x00ff0000, 0x0000ff00},
#endif
- {VLC_FOURCC('G','R','E','Y'), PIX_FMT_GRAY8, 0, 0, 0},
+ {VLC_CODEC_GREY, PIX_FMT_GRAY8, 0, 0, 0},
/* Paletized RGB */
- {VLC_FOURCC('R','G','B','P'), PIX_FMT_PAL8, 0, 0, 0},
+ {VLC_CODEC_RGBP, PIX_FMT_PAL8, 0, 0, 0},
{ 0, 0, 0, 0, 0 }
#include <vlc_common.h>
#include <vlc_codec.h>
-#include <vlc_vout.h>
#include <vlc_filter.h>
/* ffmpeg header */
#endif
#include <vlc_common.h>
-#include <vlc_vout.h>
#include <vlc_aout.h>
#include <vlc_sout.h>
#include <vlc_codec.h>
__MAX( __MIN( p_sys->i_b_frames, FF_MAX_B_FRAMES ), 0 );
p_context->b_frame_strategy = 0;
if( !p_context->max_b_frames &&
- ( p_enc->fmt_out.i_codec == VLC_FOURCC('m', 'p', '2', 'v') ||
- p_enc->fmt_out.i_codec == VLC_FOURCC('m', 'p', '1', 'v') ) )
+ ( p_enc->fmt_out.i_codec == VLC_CODEC_MPGV ||
+ p_enc->fmt_out.i_codec == VLC_CODEC_MP2V ||
+ p_enc->fmt_out.i_codec == VLC_CODEC_MP1V ) )
p_context->flags |= CODEC_FLAG_LOW_DELAY;
av_reduce( &i_aspect_num, &i_aspect_den,
p_sys->i_buffer_out = FF_MIN_BUFFER_SIZE;
p_sys->p_buffer_out = malloc( p_sys->i_buffer_out );
- p_enc->fmt_in.i_codec = VLC_FOURCC('I','4','2','0');
+ p_enc->fmt_in.i_codec = VLC_CODEC_I420;
p_enc->fmt_in.video.i_chroma = p_enc->fmt_in.i_codec;
GetFfmpegChroma( &p_context->pix_fmt, p_enc->fmt_in.video );
if( i_codec_id == CODEC_ID_MP3 && p_enc->fmt_in.audio.i_channels > 2 )
p_enc->fmt_in.audio.i_channels = 2;
- p_enc->fmt_in.i_codec = AOUT_FMT_S16_NE;
+ p_enc->fmt_in.i_codec = VLC_CODEC_S16N;
p_context->sample_rate = p_enc->fmt_out.audio.i_rate;
p_context->channels = p_enc->fmt_out.audio.i_channels;
- if ( p_enc->fmt_out.i_codec == VLC_FOURCC('m','p','4','a') )
+ if ( p_enc->fmt_out.i_codec == VLC_CODEC_MP4A )
{
/* XXX: FAAC does resample only when setting the INPUT samplerate
* to the desired value (-R option of the faac frontend)
frame.top_field_first = !!p_pict->b_top_field_first;
/* Set the pts of the frame being encoded (segfaults with mpeg4!)*/
- if( p_enc->fmt_out.i_codec != VLC_FOURCC( 'm', 'p', '4', 'v' ) )
+ if( p_enc->fmt_out.i_codec != VLC_CODEC_MP4V )
{
frame.pts = p_pict->date ? p_pict->date : (int64_t)AV_NOPTS_VALUE;
vlc_fourcc_t i_fourcc;
int i_codec;
int i_cat;
- const char psz_name[36];
} codecs_table[] =
{
/*
* Video Codecs
*/
- /* MPEG-1 Video */
- { VLC_FOURCC('m','p','1','v'), CODEC_ID_MPEG1VIDEO,
- VIDEO_ES, "MPEG-1 Video" },
- { VLC_FOURCC('m','p','e','g'), CODEC_ID_MPEG1VIDEO,
- VIDEO_ES, "MPEG-1 Video" },
- { VLC_FOURCC('m','p','g','1'), CODEC_ID_MPEG1VIDEO,
- VIDEO_ES, "MPEG-1 Video" },
- { VLC_FOURCC('P','I','M','1'), CODEC_ID_MPEG1VIDEO,
- VIDEO_ES, "Pinnacle DC1000 (MPEG-1 Video)" },
-
- /* MPEG-2 Video */
- { VLC_FOURCC('m','p','2','v'), CODEC_ID_MPEG2VIDEO,
- VIDEO_ES, "MPEG-2 Video" },
- { VLC_FOURCC('M','P','E','G'), CODEC_ID_MPEG2VIDEO,
- VIDEO_ES, "MPEG-2 Video" },
- { VLC_FOURCC('m','p','g','v'), CODEC_ID_MPEG2VIDEO,
- VIDEO_ES, "MPEG-2 Video" },
- { VLC_FOURCC('m','p','g','2'), CODEC_ID_MPEG2VIDEO,
- VIDEO_ES, "MPEG-2 Video" },
- { VLC_FOURCC('h','d','v','1'), CODEC_ID_MPEG2VIDEO,
- VIDEO_ES, "HDV 720p30 (MPEG-2 Video)" },
- { VLC_FOURCC('h','d','v','2'), CODEC_ID_MPEG2VIDEO,
- VIDEO_ES, "Sony HDV (MPEG-2 Video)" },
- { VLC_FOURCC('h','d','v','3'), CODEC_ID_MPEG2VIDEO,
- VIDEO_ES, "FCP HDV (MPEG-2 Video)" },
- { VLC_FOURCC('h','d','v','5'), CODEC_ID_MPEG2VIDEO,
- VIDEO_ES, "HDV 720p25 (MPEG-2 Video)" },
- { VLC_FOURCC('h','d','v','6'), CODEC_ID_MPEG2VIDEO,
- VIDEO_ES, "HDV 1080p24 (MPEG-2 Video)" },
- { VLC_FOURCC('h','d','v','7'), CODEC_ID_MPEG2VIDEO,
- VIDEO_ES, "HDV 1080p25 (MPEG-2 Video)" },
- { VLC_FOURCC('h','d','v','8'), CODEC_ID_MPEG2VIDEO,
- VIDEO_ES, "HDV 1080p30 (MPEG-2 Video)" },
-
- { VLC_FOURCC('m','x','5','n'), CODEC_ID_MPEG2VIDEO,
- VIDEO_ES, "MPEG2 IMX NTSC 525/60 50mb/s (FCP)" },
- { VLC_FOURCC('m','x','5','p'), CODEC_ID_MPEG2VIDEO,
- VIDEO_ES, "MPEG2 IMX PAL 625/60 50mb/s (FCP)" },
- { VLC_FOURCC('m','x','4','n'), CODEC_ID_MPEG2VIDEO,
- VIDEO_ES, "MPEG2 IMX NTSC 525/60 40mb/s (FCP)" },
- { VLC_FOURCC('m','x','4','p'), CODEC_ID_MPEG2VIDEO,
- VIDEO_ES, "MPEG2 IMX PAL 625/50 40mb/s (FCP)" },
- { VLC_FOURCC('m','x','3','n'), CODEC_ID_MPEG2VIDEO,
- VIDEO_ES, "MPEG2 IMX NTSC 525/60 30mb/s (FCP)" },
- { VLC_FOURCC('m','x','3','p'), CODEC_ID_MPEG2VIDEO,
- VIDEO_ES, "MPEG2 IMX NTSC 625/50 30mb/s (FCP)" },
- { VLC_FOURCC('x','d','v','2'), CODEC_ID_MPEG2VIDEO,
- VIDEO_ES, "XDCAM HD 1080i60" },
- { VLC_FOURCC('A','V','m','p'), CODEC_ID_MPEG2VIDEO,
- VIDEO_ES, "AVID IMX PAL" },
- /* ATI VCR2 */
- { VLC_FOURCC('V','C','R','2'), CODEC_ID_MPEG2VIDEO,
- VIDEO_ES, "ATI VCR2 Video" },
- { VLC_FOURCC('M','M','E','S'), CODEC_ID_MPEG2VIDEO,
- VIDEO_ES, "Matrox MPEG-2" },
- { VLC_FOURCC('m','m','e','s'), CODEC_ID_MPEG2VIDEO,
- VIDEO_ES, "Matrox MPEG-2" },
- { VLC_FOURCC('P','I','M','2'), CODEC_ID_MPEG2VIDEO,
- VIDEO_ES, "Pinnacle DC1000 (MPEG-2 Video)" },
-
- /* MPEG-4 Video */
- { VLC_FOURCC('D','I','V','X'), CODEC_ID_MPEG4,
- VIDEO_ES, "MPEG-4 Video" },
- { VLC_FOURCC('d','i','v','x'), CODEC_ID_MPEG4,
- VIDEO_ES, "MPEG-4 Video" },
- { VLC_FOURCC('M','P','4','S'), CODEC_ID_MPEG4,
- VIDEO_ES, "MPEG-4 Video" },
- { VLC_FOURCC('m','p','4','s'), CODEC_ID_MPEG4,
- VIDEO_ES, "MPEG-4 Video" },
- { VLC_FOURCC('M','4','S','2'), CODEC_ID_MPEG4,
- VIDEO_ES, "MPEG-4 Video" },
- { VLC_FOURCC('m','4','s','2'), CODEC_ID_MPEG4,
- VIDEO_ES, "MPEG-4 Video" },
- /* XVID flavours */
- { VLC_FOURCC('x','v','i','d'), CODEC_ID_MPEG4,
- VIDEO_ES, "MPEG-4 Video" },
- { VLC_FOURCC('X','V','I','D'), CODEC_ID_MPEG4,
- VIDEO_ES, "MPEG-4 Video" },
- { VLC_FOURCC('X','v','i','D'), CODEC_ID_MPEG4,
- VIDEO_ES, "MPEG-4 Video" },
- { VLC_FOURCC('X','V','I','X'), CODEC_ID_MPEG4,
- VIDEO_ES, "MPEG-4 Video" },
- { VLC_FOURCC('x','v','i','x'), CODEC_ID_MPEG4,
- VIDEO_ES, "MPEG-4 Video" },
- /* DX50 */
- { VLC_FOURCC('D','X','5','0'), CODEC_ID_MPEG4,
- VIDEO_ES, "MPEG-4 Video" },
- { VLC_FOURCC('d','x','5','0'), CODEC_ID_MPEG4,
- VIDEO_ES, "MPEG-4 Video" },
- { VLC_FOURCC('B','L','Z','0'), CODEC_ID_MPEG4,
- VIDEO_ES, "Blizzard MPEG-4 Video" },
- { VLC_FOURCC('D','X','G','M'), CODEC_ID_MPEG4,
- VIDEO_ES, "Electronic Arts Game MPEG-4 Video" },
- { VLC_FOURCC('m','p','4','v'), CODEC_ID_MPEG4,
- VIDEO_ES, "MPEG-4 Video" },
- { VLC_FOURCC('M','P','4','V'), CODEC_ID_MPEG4,
- VIDEO_ES, "MPEG-4 Video" },
- { VLC_FOURCC( 4, 0, 0, 0 ), CODEC_ID_MPEG4,
- VIDEO_ES, "MPEG-4 Video" },
- { VLC_FOURCC('m','4','c','c'), CODEC_ID_MPEG4,
- VIDEO_ES, "MPEG-4 Video" },
- { VLC_FOURCC('M','4','C','C'), CODEC_ID_MPEG4,
- VIDEO_ES, "MPEG-4 Video" },
- { VLC_FOURCC('F','M','P','4'), CODEC_ID_MPEG4,
- VIDEO_ES, "MPEG-4 Video" },
- { VLC_FOURCC('f','m','p','4'), CODEC_ID_MPEG4,
- VIDEO_ES, "MPEG-4 Video" },
+ { VLC_CODEC_MPGV, CODEC_ID_MPEG2VIDEO, VIDEO_ES },
+
+ { VLC_CODEC_MP4V, CODEC_ID_MPEG4, VIDEO_ES },
/* 3ivx delta 3.5 Unsupported
* putting it here gives extreme distorted images
- { VLC_FOURCC('3','I','V','1'), CODEC_ID_MPEG4,
- VIDEO_ES, "MPEG-4 Video" },
- { VLC_FOURCC('3','i','v','1'), CODEC_ID_MPEG4,
- VIDEO_ES, "MPEG-4 Video" }, */
- /* 3ivx delta 4 */
- { VLC_FOURCC('3','I','V','2'), CODEC_ID_MPEG4,
- VIDEO_ES, "MPEG-4 Video" },
- { VLC_FOURCC('3','i','v','2'), CODEC_ID_MPEG4,
- VIDEO_ES, "MPEG-4 Video" },
- { VLC_FOURCC('U','M','P','4'), CODEC_ID_MPEG4,
- VIDEO_ES, "UB MPEG-4 Video" },
- { VLC_FOURCC('W','V','1','F'), CODEC_ID_MPEG4,
- VIDEO_ES, "MPEG-4 Video" },
- { VLC_FOURCC('S','E','D','G'), CODEC_ID_MPEG4,
- VIDEO_ES, "Samsung MPEG-4 Video" },
- { VLC_FOURCC('R','M','P','4'), CODEC_ID_MPEG4,
- VIDEO_ES, "REALmagic MPEG-4 Video" },
- { VLC_FOURCC('H','D','X','4'), CODEC_ID_MPEG4,
- VIDEO_ES, "Jomigo HDX4 (MPEG-4 Video)" },
- { VLC_FOURCC('h','d','x','4'), CODEC_ID_MPEG4,
- VIDEO_ES, "Jomigo HDX4 (MPEG-4 Video)" },
- { VLC_FOURCC('S','M','P','4'), CODEC_ID_MPEG4,
- VIDEO_ES, "Samsung SMP4 (MPEG-4 Video)" },
- { VLC_FOURCC('s','m','p','4'), CODEC_ID_MPEG4,
- VIDEO_ES, "Samsung SMP4 (MPEG-4 Video)" },
- { VLC_FOURCC('f','v','f','w'), CODEC_ID_MPEG4,
- VIDEO_ES, "FFmpeg MPEG-4" },
- { VLC_FOURCC('F','V','F','W'), CODEC_ID_MPEG4,
- VIDEO_ES, "FFmpeg MPEG-4" },
- { VLC_FOURCC('F','F','D','S'), CODEC_ID_MPEG4,
- VIDEO_ES, "FFDShow MPEG-4" },
- { VLC_FOURCC('V','I','D','M'), CODEC_ID_MPEG4,
- VIDEO_ES, "vidm 4.01 codec" },
- { VLC_FOURCC('D','C','O','D'), CODEC_ID_MPEG4,
- VIDEO_ES, "MPEG-4 Video" },
- { VLC_FOURCC('f','m','p','4'), CODEC_ID_MPEG4,
- VIDEO_ES, "MPEG-4 Video" },
- { VLC_FOURCC('M','V','X','M'), CODEC_ID_MPEG4,
- VIDEO_ES, "MPEG-4 Video" },
- { VLC_FOURCC('P','M','4','V'), CODEC_ID_MPEG4,
- VIDEO_ES, "MPEG-4 Video" },
- { VLC_FOURCC('f','m','p','4'), CODEC_ID_MPEG4,
- VIDEO_ES, "MPEG-4 Video" },
- { VLC_FOURCC('M','4','T','3'), CODEC_ID_MPEG4,
- VIDEO_ES, "MPEG-4 Video" },
- { VLC_FOURCC('G','E','O','X'), CODEC_ID_MPEG4,
- VIDEO_ES, "MPEG-4 Video" },
- { VLC_FOURCC('D','M','K','2'), CODEC_ID_MPEG4,
- VIDEO_ES, "MPEG-4 Video" },
- { VLC_FOURCC('D','I','G','I'), CODEC_ID_MPEG4,
- VIDEO_ES, "MPEG-4 Video" },
- { VLC_FOURCC('I','N','M','C'), CODEC_ID_MPEG4,
- VIDEO_ES, "MPEG-4 Video" },
- { VLC_FOURCC('S','N','4','0'), CODEC_ID_MPEG4,
- VIDEO_ES, "MPEG-4 Video" },
- { VLC_FOURCC('E','P','H','V'), CODEC_ID_MPEG4,
- VIDEO_ES, "MPEG-4 Video" },
-
- /* MSMPEG4 v1 */
- { VLC_FOURCC('D','I','V','1'), CODEC_ID_MSMPEG4V1,
- VIDEO_ES, "MS MPEG-4 Video v1" },
- { VLC_FOURCC('d','i','v','1'), CODEC_ID_MSMPEG4V1,
- VIDEO_ES, "MS MPEG-4 Video v1" },
- { VLC_FOURCC('M','P','G','4'), CODEC_ID_MSMPEG4V1,
- VIDEO_ES, "MS MPEG-4 Video v1" },
- { VLC_FOURCC('m','p','g','4'), CODEC_ID_MSMPEG4V1,
- VIDEO_ES, "MS MPEG-4 Video v1" },
- { VLC_FOURCC('m','p','4','1'), CODEC_ID_MSMPEG4V1,
- VIDEO_ES, "MS MPEG-4 Video v1" },
-
- /* MSMPEG4 v2 */
- { VLC_FOURCC('D','I','V','2'), CODEC_ID_MSMPEG4V2,
- VIDEO_ES, "MS MPEG-4 Video v2" },
- { VLC_FOURCC('d','i','v','2'), CODEC_ID_MSMPEG4V2,
- VIDEO_ES, "MS MPEG-4 Video v2" },
- { VLC_FOURCC('M','P','4','2'), CODEC_ID_MSMPEG4V2,
- VIDEO_ES, "MS MPEG-4 Video v2" },
- { VLC_FOURCC('m','p','4','2'), CODEC_ID_MSMPEG4V2,
- VIDEO_ES, "MS MPEG-4 Video v2" },
-
- /* MSMPEG4 v3 / M$ mpeg4 v3 */
- { VLC_FOURCC('M','P','G','3'), CODEC_ID_MSMPEG4V3,
- VIDEO_ES, "MS MPEG-4 Video v3" },
- { VLC_FOURCC('m','p','g','3'), CODEC_ID_MSMPEG4V3,
- VIDEO_ES, "MS MPEG-4 Video v3" },
- { VLC_FOURCC('d','i','v','3'), CODEC_ID_MSMPEG4V3,
- VIDEO_ES, "MS MPEG-4 Video v3" },
- { VLC_FOURCC('M','P','4','3'), CODEC_ID_MSMPEG4V3,
- VIDEO_ES, "MS MPEG-4 Video v3" },
- { VLC_FOURCC('m','p','4','3'), CODEC_ID_MSMPEG4V3,
- VIDEO_ES, "MS MPEG-4 Video v3" },
- /* DivX 3.20 */
- { VLC_FOURCC('D','I','V','3'), CODEC_ID_MSMPEG4V3,
- VIDEO_ES, "MS MPEG-4 Video v3" },
- { VLC_FOURCC('D','I','V','4'), CODEC_ID_MSMPEG4V3,
- VIDEO_ES, "MS MPEG-4 Video v3" },
- { VLC_FOURCC('d','i','v','4'), CODEC_ID_MSMPEG4V3,
- VIDEO_ES, "MS MPEG-4 Video v3" },
- { VLC_FOURCC('D','I','V','5'), CODEC_ID_MSMPEG4V3,
- VIDEO_ES, "MS MPEG-4 Video v3" },
- { VLC_FOURCC('d','i','v','5'), CODEC_ID_MSMPEG4V3,
- VIDEO_ES, "MS MPEG-4 Video v3" },
- { VLC_FOURCC('D','I','V','6'), CODEC_ID_MSMPEG4V3,
- VIDEO_ES, "MS MPEG-4 Video v3" },
- { VLC_FOURCC('d','i','v','6'), CODEC_ID_MSMPEG4V3,
- VIDEO_ES, "MS MPEG-4 Video v3" },
- /* Cool Codec */
- { VLC_FOURCC('C','O','L','1'), CODEC_ID_MSMPEG4V3,
- VIDEO_ES, "MS MPEG-4 Video v3" },
- { VLC_FOURCC('c','o','l','1'), CODEC_ID_MSMPEG4V3,
- VIDEO_ES, "MS MPEG-4 Video v3" },
- { VLC_FOURCC('C','O','L','0'), CODEC_ID_MSMPEG4V3,
- VIDEO_ES, "MS MPEG-4 Video v3" },
- { VLC_FOURCC('c','o','l','0'), CODEC_ID_MSMPEG4V3,
- VIDEO_ES, "MS MPEG-4 Video v3" },
- /* AngelPotion stuff */
- { VLC_FOURCC('A','P','4','1'), CODEC_ID_MSMPEG4V3,
- VIDEO_ES, "MS MPEG-4 Video v3" },
- /* 3ivx doctered divx files */
- { VLC_FOURCC('3','I','V','D'), CODEC_ID_MSMPEG4V3,
- VIDEO_ES, "MS MPEG-4 Video v3" },
- { VLC_FOURCC('3','i','v','d'), CODEC_ID_MSMPEG4V3,
- VIDEO_ES, "MS MPEG-4 Video v3" },
- /* who knows? */
- { VLC_FOURCC('3','V','I','D'), CODEC_ID_MSMPEG4V3,
- VIDEO_ES, "MS MPEG-4 Video v3" },
- { VLC_FOURCC('3','v','i','d'), CODEC_ID_MSMPEG4V3,
- VIDEO_ES, "MS MPEG-4 Video v3" },
-
- /* Sorenson v1 */
- { VLC_FOURCC('S','V','Q','1'), CODEC_ID_SVQ1,
- VIDEO_ES, "SVQ-1 (Sorenson Video v1)" },
- { VLC_FOURCC('s','v','q','1'), CODEC_ID_SVQ1,
- VIDEO_ES, "SVQ-1 (Sorenson Video v1)" },
- { VLC_FOURCC('s','v','q','i'), CODEC_ID_SVQ1,
- VIDEO_ES, "SVQ-1 (Sorenson Video v1)" },
-
- /* Sorenson v3 */
- { VLC_FOURCC('S','V','Q','3'), CODEC_ID_SVQ3,
- VIDEO_ES, "SVQ-3 (Sorenson Video v3)" },
-
- /* h264 */
- { VLC_FOURCC('h','2','6','4'), CODEC_ID_H264,
- VIDEO_ES, "H264 - MPEG-4 AVC (part 10)" },
- { VLC_FOURCC('H','2','6','4'), CODEC_ID_H264,
- VIDEO_ES, "H264 - MPEG-4 AVC (part 10)" },
- { VLC_FOURCC('x','2','6','4'), CODEC_ID_H264,
- VIDEO_ES, "H264 - MPEG-4 AVC (part 10)" },
- { VLC_FOURCC('X','2','6','4'), CODEC_ID_H264,
- VIDEO_ES, "H264 - MPEG-4 AVC (part 10)" },
- /* avc1: special case h264 */
- { VLC_FOURCC('a','v','c','1'), CODEC_ID_H264,
- VIDEO_ES, "H264 - MPEG-4 AVC (part 10)" },
- { VLC_FOURCC('A','V','C','1'), CODEC_ID_H264,
- VIDEO_ES, "H264 - MPEG-4 AVC (part 10)" },
- { VLC_FOURCC('V','S','S','H'), CODEC_ID_H264,
- VIDEO_ES, "Vanguard VSS H264" },
- { VLC_FOURCC('V','S','S','W'), CODEC_ID_H264,
- VIDEO_ES, "Vanguard VSS H264" },
- { VLC_FOURCC('v','s','s','h'), CODEC_ID_H264,
- VIDEO_ES, "Vanguard VSS H264" },
- { VLC_FOURCC('D','A','V','C'), CODEC_ID_H264,
- VIDEO_ES, "Dicas MPEGable H.264/MPEG-4 AVC" },
- { VLC_FOURCC('d','a','v','c'), CODEC_ID_H264,
- VIDEO_ES, "Dicas MPEGable H.264/MPEG-4 AVC" },
-
-/* H263 and H263i */
-/* H263(+) is also known as Real Video 1.0 */
-
- /* H263 */
- { VLC_FOURCC('D','2','6','3'), CODEC_ID_H263,
- VIDEO_ES, "DEC H263" },
- { VLC_FOURCC('H','2','6','3'), CODEC_ID_H263,
- VIDEO_ES, "H263" },
- { VLC_FOURCC('h','2','6','3'), CODEC_ID_H263,
- VIDEO_ES, "H263" },
- { VLC_FOURCC('L','2','6','3'), CODEC_ID_H263,
- VIDEO_ES, "LEAD H263" },
- { VLC_FOURCC('s','2','6','3'), CODEC_ID_H263,
- VIDEO_ES, "H263" },
- { VLC_FOURCC('S','2','6','3'), CODEC_ID_H263,
- VIDEO_ES, "H263" },
- { VLC_FOURCC('M','2','6','3'), CODEC_ID_H263,
- VIDEO_ES, "Microsoft H263" },
- { VLC_FOURCC('X','2','6','3'), CODEC_ID_H263,
- VIDEO_ES, "Xirlink H263" },
- { VLC_FOURCC('V','X','1','K'), CODEC_ID_H263,
- VIDEO_ES, "H263" },
-
- /* Zygo (partial) */
- { VLC_FOURCC('Z','y','G','o'), CODEC_ID_H263,
- VIDEO_ES, "ITU H263+" },
-
- /* H263i */
- { VLC_FOURCC('I','2','6','3'), CODEC_ID_H263I,
- VIDEO_ES, "I263.I" },
- { VLC_FOURCC('i','2','6','3'), CODEC_ID_H263I,
- VIDEO_ES, "I263.I" },
-
- /* H263P */
- { VLC_FOURCC('v','i','v','1'), CODEC_ID_H263P,
- VIDEO_ES, "H263+" },
- { VLC_FOURCC('v','i','v','O'), CODEC_ID_H263P,
- VIDEO_ES, "H263+" },
- { VLC_FOURCC('v','i','v','2'), CODEC_ID_H263P,
- VIDEO_ES, "H263+" },
- { VLC_FOURCC('U','2','6','3'), CODEC_ID_H263P,
- VIDEO_ES, "UB H263+" },
- { VLC_FOURCC('I','L','V','R'), CODEC_ID_H263P,
- VIDEO_ES, "ITU H263+" },
-
- /* Flash (H263) variant */
- { VLC_FOURCC('F','L','V','1'), CODEC_ID_FLV1,
- VIDEO_ES, "Flash Video" },
-
- /* H261 */
- { VLC_FOURCC('H','2','6','1'), CODEC_ID_H261,
- VIDEO_ES, "H.261" },
- { VLC_FOURCC('h','2','6','1'), CODEC_ID_H261,
- VIDEO_ES, "H.261" },
-
- { VLC_FOURCC('F','L','I','C'), CODEC_ID_FLIC,
- VIDEO_ES, "Flic Video" },
-
- /* MJPEG */
- { VLC_FOURCC( 'M','J','P','G' ), CODEC_ID_MJPEG,
- VIDEO_ES, "Motion JPEG Video" },
- { VLC_FOURCC( 'm','j','p','g' ), CODEC_ID_MJPEG,
- VIDEO_ES, "Motion JPEG Video" },
- { VLC_FOURCC( 'm','j','p','a' ), CODEC_ID_MJPEG, /* for mov file */
- VIDEO_ES, "Motion JPEG Video" },
- { VLC_FOURCC( 'j','p','e','g' ), CODEC_ID_MJPEG,
- VIDEO_ES, "Motion JPEG Video" },
- { VLC_FOURCC( 'J','P','E','G' ), CODEC_ID_MJPEG,
- VIDEO_ES, "Motion JPEG Video" },
- { VLC_FOURCC( 'J','F','I','F' ), CODEC_ID_MJPEG,
- VIDEO_ES, "Motion JPEG Video" },
- { VLC_FOURCC( 'J','P','G','L' ), CODEC_ID_MJPEG,
- VIDEO_ES, "Motion JPEG Video" },
- { VLC_FOURCC( 'A','V','D','J' ), CODEC_ID_MJPEG,
- VIDEO_ES, "Motion JPEG Video" },
- { VLC_FOURCC( 'm','j','p','b' ), CODEC_ID_MJPEGB, /* for mov file */
- VIDEO_ES, "Motion JPEG B Video" },
- { VLC_FOURCC( 'L','J','P','G' ), CODEC_ID_LJPEG,
- VIDEO_ES, "Lead Motion JPEG Video" },
- { VLC_FOURCC( 'L','J','P','G' ), CODEC_ID_MJPEG,
- VIDEO_ES, "Lead Motion JPEG Video" },
- /* AVID MJPEG */
- { VLC_FOURCC( 'A','V','R','n' ), CODEC_ID_MJPEG,
- VIDEO_ES, "Avid Motion JPEG" },
- { VLC_FOURCC( 'A','D','J','V' ), CODEC_ID_MJPEG,
- VIDEO_ES, "Avid Motion JPEG" },
- { VLC_FOURCC( 'd','m','b','1' ), CODEC_ID_MJPEG,
- VIDEO_ES, "Motion JPEG OpenDML Video" },
- { VLC_FOURCC( 'I','J','P','G' ), CODEC_ID_MJPEG,
- VIDEO_ES, "Intergraph JPEG Video" },
- { VLC_FOURCC( 'A','C','D','V' ), CODEC_ID_MJPEG,
- VIDEO_ES, "ACD Systems Digital" },
-
- /* SP5x */
- { VLC_FOURCC( 'S','P','5','X' ), CODEC_ID_SP5X,
- VIDEO_ES, "Sunplus Motion JPEG Video" },
- { VLC_FOURCC( 'S','P','5','3' ), CODEC_ID_SP5X,
- VIDEO_ES, "Sunplus Motion JPEG Video" },
- { VLC_FOURCC( 'S','P','5','4' ), CODEC_ID_SP5X,
- VIDEO_ES, "Sunplus Motion JPEG Video" },
- { VLC_FOURCC( 'S','P','5','5' ), CODEC_ID_SP5X,
- VIDEO_ES, "Sunplus Motion JPEG Video" },
- { VLC_FOURCC( 'S','P','5','6' ), CODEC_ID_SP5X,
- VIDEO_ES, "Sunplus Motion JPEG Video" },
- { VLC_FOURCC( 'S','P','5','7' ), CODEC_ID_SP5X,
- VIDEO_ES, "Sunplus Motion JPEG Video" },
- { VLC_FOURCC( 'S','P','5','8' ), CODEC_ID_SP5X,
- VIDEO_ES, "Sunplus Motion JPEG Video" },
-
- /* DV */
- { VLC_FOURCC('d','v','s','l'), CODEC_ID_DVVIDEO,
- VIDEO_ES, "DV Video" },
- { VLC_FOURCC('d','v','s','d'), CODEC_ID_DVVIDEO,
- VIDEO_ES, "DV Video" },
- { VLC_FOURCC('D','V','S','D'), CODEC_ID_DVVIDEO,
- VIDEO_ES, "DV Video" },
- { VLC_FOURCC('d','v','h','d'), CODEC_ID_DVVIDEO,
- VIDEO_ES, "DV Video" },
- { VLC_FOURCC('d','v','h','p'), CODEC_ID_DVVIDEO,
- VIDEO_ES, "DV Video" },
- { VLC_FOURCC('d','v','h','q'), CODEC_ID_DVVIDEO,
- VIDEO_ES, "DV Video" },
- { VLC_FOURCC('d','v','h','1'), CODEC_ID_DVVIDEO,
- VIDEO_ES, "DV Video" },
- { VLC_FOURCC('d','v','h','3'), CODEC_ID_DVVIDEO,
- VIDEO_ES, "DV Video" },
- { VLC_FOURCC('d','v','h','5'), CODEC_ID_DVVIDEO,
- VIDEO_ES, "DV Video" },
- { VLC_FOURCC('d','v','h','6'), CODEC_ID_DVVIDEO,
- VIDEO_ES, "DV Video" },
- { VLC_FOURCC('d','v','c',' '), CODEC_ID_DVVIDEO,
- VIDEO_ES, "DV Video" },
- { VLC_FOURCC('d','v','2','5'), CODEC_ID_DVVIDEO,
- VIDEO_ES, "DV Video" },
- { VLC_FOURCC('d','v','c','p'), CODEC_ID_DVVIDEO,
- VIDEO_ES, "DV Video PAL" },
- { VLC_FOURCC('d','v','p',' '), CODEC_ID_DVVIDEO,
- VIDEO_ES, "DV Video Pro" },
- { VLC_FOURCC('d','v','p','p'), CODEC_ID_DVVIDEO,
- VIDEO_ES, "DV Video Pro PAL" },
- { VLC_FOURCC('C','D','V','C'), CODEC_ID_DVVIDEO,
- VIDEO_ES, "Canopus DV Video" },
- { VLC_FOURCC('c','d','v','c'), CODEC_ID_DVVIDEO,
- VIDEO_ES, "Canopus DV Video" },
- { VLC_FOURCC('C','D','V','H'), CODEC_ID_DVVIDEO,
- VIDEO_ES, "Canopus DV Video" },
- { VLC_FOURCC('d','v','5','p'), CODEC_ID_DVVIDEO,
- VIDEO_ES, "DV Video C Pro 50 PAL" },
- { VLC_FOURCC('d','v','5','n'), CODEC_ID_DVVIDEO,
- VIDEO_ES, "DV Video C Pro 50 NTSC" },
- { VLC_FOURCC('A','V','d','v'), CODEC_ID_DVVIDEO,
- VIDEO_ES, "AVID DV" },
- { VLC_FOURCC('A','V','d','1'), CODEC_ID_DVVIDEO,
- VIDEO_ES, "AVID DV" },
-
-
- /* Windows Media Video */
- { VLC_FOURCC('W','M','V','1'), CODEC_ID_WMV1,
- VIDEO_ES, "Windows Media Video 1" },
- { VLC_FOURCC('w','m','v','1'), CODEC_ID_WMV1,
- VIDEO_ES, "Windows Media Video 1" },
- { VLC_FOURCC('W','M','V','2'), CODEC_ID_WMV2,
- VIDEO_ES, "Windows Media Video 2" },
- { VLC_FOURCC('w','m','v','2'), CODEC_ID_WMV2,
- VIDEO_ES, "Windows Media Video 2" },
+ { VLC_FOURCC('3','I','V','1'), CODEC_ID_MPEG4, VIDEO_ES },
+ { VLC_FOURCC('3','i','v','1'), CODEC_ID_MPEG4, VIDEO_ES }, */
+
+ { VLC_CODEC_DIV1, CODEC_ID_MSMPEG4V1, VIDEO_ES },
+ { VLC_CODEC_DIV2, CODEC_ID_MSMPEG4V2, VIDEO_ES },
+ { VLC_CODEC_DIV3, CODEC_ID_MSMPEG4V3, VIDEO_ES },
+
+ { VLC_CODEC_SVQ1, CODEC_ID_SVQ1, VIDEO_ES },
+ { VLC_CODEC_SVQ3, CODEC_ID_SVQ3, VIDEO_ES },
+
+ { VLC_CODEC_H264, CODEC_ID_H264, VIDEO_ES },
+ { VLC_CODEC_H263, CODEC_ID_H263, VIDEO_ES },
+ { VLC_CODEC_H263I,CODEC_ID_H263I,VIDEO_ES },
+ { VLC_CODEC_H263P,CODEC_ID_H263P,VIDEO_ES },
+
+ { VLC_CODEC_FLV1, CODEC_ID_FLV1, VIDEO_ES },
+
+ { VLC_CODEC_H261, CODEC_ID_H261, VIDEO_ES },
+ { VLC_CODEC_FLIC, CODEC_ID_FLIC, VIDEO_ES },
+
+ { VLC_CODEC_MJPG, CODEC_ID_MJPEG, VIDEO_ES },
+ { VLC_CODEC_MJPGB,CODEC_ID_MJPEGB,VIDEO_ES },
+ { VLC_CODEC_LJPG, CODEC_ID_LJPEG, VIDEO_ES },
+
+ { VLC_CODEC_SP5X, CODEC_ID_SP5X, VIDEO_ES },
+
+ { VLC_CODEC_DV, CODEC_ID_DVVIDEO, VIDEO_ES },
+
+ { VLC_CODEC_WMV1, CODEC_ID_WMV1, VIDEO_ES },
+ { VLC_CODEC_WMV2, CODEC_ID_WMV2, VIDEO_ES },
+ { VLC_CODEC_WMV3, CODEC_ID_WMV3, VIDEO_ES },
+
#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT( 51, 10, 1 )
- { VLC_FOURCC('W','M','V','3'), CODEC_ID_WMV3,
- VIDEO_ES, "Windows Media Video 3" },
- { VLC_FOURCC('w','m','v','3'), CODEC_ID_WMV3,
- VIDEO_ES, "Windows Media Video 3" },
- { VLC_FOURCC('W','V','C','1'), CODEC_ID_VC1,
- VIDEO_ES, "Windows Media Video VC1" },
- { VLC_FOURCC('w','v','c','1'), CODEC_ID_VC1,
- VIDEO_ES, "Windows Media Video VC1" },
- { VLC_FOURCC('v','c','-','1'), CODEC_ID_VC1,
- VIDEO_ES, "Windows Media Video VC1" },
- { VLC_FOURCC('V','C','-','1'), CODEC_ID_VC1,
- VIDEO_ES, "Windows Media Video VC1" },
- /* WMVA is the VC-1 codec before the standardization proces,
- it is not bitstream compatible and deprecated */
- { VLC_FOURCC('W','M','V','A'), CODEC_ID_VC1,
- VIDEO_ES, "Windows Media Video Advanced Profile" },
+ { VLC_CODEC_VC1, CODEC_ID_VC1, VIDEO_ES },
#endif
- /* Microsoft Video 1 */
- { VLC_FOURCC('M','S','V','C'), CODEC_ID_MSVIDEO1,
- VIDEO_ES, "Microsoft Video 1" },
- { VLC_FOURCC('m','s','v','c'), CODEC_ID_MSVIDEO1,
- VIDEO_ES, "Microsoft Video 1" },
- { VLC_FOURCC('C','R','A','M'), CODEC_ID_MSVIDEO1,
- VIDEO_ES, "Microsoft Video 1" },
- { VLC_FOURCC('c','r','a','m'), CODEC_ID_MSVIDEO1,
- VIDEO_ES, "Microsoft Video 1" },
- { VLC_FOURCC('W','H','A','M'), CODEC_ID_MSVIDEO1,
- VIDEO_ES, "Microsoft Video 1" },
- { VLC_FOURCC('w','h','a','m'), CODEC_ID_MSVIDEO1,
- VIDEO_ES, "Microsoft Video 1" },
-
- /* Microsoft RLE */
- { VLC_FOURCC('m','r','l','e'), CODEC_ID_MSRLE,
- VIDEO_ES, "Microsoft RLE Video" },
- { VLC_FOURCC('W','R','L','E'), CODEC_ID_MSRLE,
- VIDEO_ES, "Microsoft RLE Video" },
- { VLC_FOURCC(0x1,0x0,0x0,0x0), CODEC_ID_MSRLE,
- VIDEO_ES, "Microsoft RLE Video" },
- { VLC_FOURCC(0x2,0x0,0x0,0x0), CODEC_ID_MSRLE,
- VIDEO_ES, "Microsoft RLE Video" },
+ { VLC_CODEC_MSVIDEO1, CODEC_ID_MSVIDEO1, VIDEO_ES },
+ { VLC_CODEC_MSRLE, CODEC_ID_MSRLE, VIDEO_ES },
+ { VLC_CODEC_INDEO2, CODEC_ID_INDEO2, VIDEO_ES },
/* Indeo Video Codecs (Quality of this decoder on ppc is not good) */
- { VLC_FOURCC('I','V','3','1'), CODEC_ID_INDEO3,
- VIDEO_ES, "Indeo Video v3" },
- { VLC_FOURCC('i','v','3','1'), CODEC_ID_INDEO3,
- VIDEO_ES, "Indeo Video v3" },
- { VLC_FOURCC('I','V','3','2'), CODEC_ID_INDEO3,
- VIDEO_ES, "Indeo Video v3" },
- { VLC_FOURCC('i','v','3','2'), CODEC_ID_INDEO3,
- VIDEO_ES, "Indeo Video v3" },
-
- /* Huff YUV */
- { VLC_FOURCC('H','F','Y','U'), CODEC_ID_HUFFYUV,
- VIDEO_ES, "Huff YUV Video" },
- { VLC_FOURCC('F','F','V','H'), CODEC_ID_FFVHUFF,
- VIDEO_ES, "Huff YUV Video" },
-
- /* Creative YUV */
- { VLC_FOURCC('C','Y','U','V'), CODEC_ID_CYUV,
- VIDEO_ES, "Creative YUV Video" },
- { VLC_FOURCC('c','y','u','v'), CODEC_ID_CYUV,
- VIDEO_ES, "Creative YUV Video" },
-
- /* On2 VP3 Video Codecs */
- { VLC_FOURCC('V','P','3',' '), CODEC_ID_VP3,
- VIDEO_ES, "On2's VP3 Video" },
- { VLC_FOURCC('V','P','3','0'), CODEC_ID_VP3,
- VIDEO_ES, "On2's VP3 Video" },
- { VLC_FOURCC('V','P','3','1'), CODEC_ID_VP3,
- VIDEO_ES, "On2's VP3 Video" },
- { VLC_FOURCC('v','p','3','1'), CODEC_ID_VP3,
- VIDEO_ES, "On2's VP3 Video" },
-
- /* On2 VP5, VP6 codecs */
+ { VLC_CODEC_INDEO3, CODEC_ID_INDEO3, VIDEO_ES },
+
+ { VLC_CODEC_HUFFYUV, CODEC_ID_HUFFYUV, VIDEO_ES },
+ { VLC_CODEC_FFVHUFF, CODEC_ID_FFVHUFF, VIDEO_ES },
+ { VLC_CODEC_CYUV, CODEC_ID_CYUV, VIDEO_ES },
+
+ { VLC_CODEC_VP3, CODEC_ID_VP3, VIDEO_ES },
#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT( 51, 14, 0 )
- { VLC_FOURCC('V','P','5',' '), CODEC_ID_VP5,
- VIDEO_ES, "On2's VP5 Video" },
- { VLC_FOURCC('V','P','5','0'), CODEC_ID_VP5,
- VIDEO_ES, "On2's VP5 Video" },
- { VLC_FOURCC('V','P','6','2'), CODEC_ID_VP6,
- VIDEO_ES, "On2's VP6.2 Video" },
- { VLC_FOURCC('v','p','6','2'), CODEC_ID_VP6,
- VIDEO_ES, "On2's VP6.2 Video" },
- { VLC_FOURCC('V','P','6','F'), CODEC_ID_VP6F,
- VIDEO_ES, "On2's VP6.2 Video (Flash)" },
+ { VLC_CODEC_VP5, CODEC_ID_VP5, VIDEO_ES },
#endif
-
#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT( 51, 27, 0 )
- { VLC_FOURCC('V','P','6','0'), CODEC_ID_VP6,
- VIDEO_ES, "On2's VP6.0 Video" },
- { VLC_FOURCC('V','P','6','1'), CODEC_ID_VP6,
- VIDEO_ES, "On2's VP6.1 Video" },
+ { VLC_CODEC_VP6, CODEC_ID_VP6, VIDEO_ES },
+ { VLC_CODEC_VP6F, CODEC_ID_VP6F, VIDEO_ES },
#endif
-
#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT( 51, 47, 0 )
- { VLC_FOURCC('V','P','6','A'), CODEC_ID_VP6A,
- VIDEO_ES, "On2's VP6 A Video" },
+ { VLC_CODEC_VP6A, CODEC_ID_VP6A, VIDEO_ES },
#endif
- /* Xiph.org theora */
- { VLC_FOURCC('t','h','e','o'), CODEC_ID_THEORA,
- VIDEO_ES, "Xiph.org's Theora Video" },
- { VLC_FOURCC('T','h','r','a'), CODEC_ID_THEORA,
- VIDEO_ES, "Xiph.org's Theora Video" },
+ { VLC_CODEC_THEORA, CODEC_ID_THEORA, VIDEO_ES },
#if ( !defined( WORDS_BIGENDIAN ) )
/* Asus Video (Another thing that doesn't work on PPC) */
- { VLC_FOURCC('A','S','V','1'), CODEC_ID_ASV1,
- VIDEO_ES, "Asus V1 Video" },
- { VLC_FOURCC('A','S','V','2'), CODEC_ID_ASV2,
- VIDEO_ES, "Asus V2 Video" },
+ { VLC_CODEC_ASV1, CODEC_ID_ASV1, VIDEO_ES },
+ { VLC_CODEC_ASV2, CODEC_ID_ASV2, VIDEO_ES },
#endif
- /* FFMPEG Video 1 (lossless codec) */
- { VLC_FOURCC('F','F','V','1'), CODEC_ID_FFV1,
- VIDEO_ES, "FFMpeg Video 1" },
+ { VLC_CODEC_FFV1, CODEC_ID_FFV1, VIDEO_ES },
- /* ATI VCR1 */
- { VLC_FOURCC('V','C','R','1'), CODEC_ID_VCR1,
- VIDEO_ES, "ATI VCR1 Video" },
+ { VLC_CODEC_VCR1, CODEC_ID_VCR1, VIDEO_ES },
- /* Cirrus Logic AccuPak */
- { VLC_FOURCC('C','L','J','R'), CODEC_ID_CLJR,
- VIDEO_ES, "Creative Logic AccuPak" },
+ { VLC_CODEC_CLJR, CODEC_ID_CLJR, VIDEO_ES },
/* Real Video */
- { VLC_FOURCC('R','V','1','0'), CODEC_ID_RV10,
- VIDEO_ES, "Real Video 1.0" },
- { VLC_FOURCC('r','v','1','0'), CODEC_ID_RV10,
- VIDEO_ES, "Real Video 1.0" },
- { VLC_FOURCC('R','V','1','3'), CODEC_ID_RV10,
- VIDEO_ES, "Real Video 1.3" },
- { VLC_FOURCC('r','v','1','3'), CODEC_ID_RV10,
- VIDEO_ES, "Real Video 1.3" },
+ { VLC_CODEC_RV10, CODEC_ID_RV10, VIDEO_ES },
#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT( 51, 15, 1 )
- { VLC_FOURCC('R','V','2','0'), CODEC_ID_RV20,
- VIDEO_ES, "Real Video 2.0" },
- { VLC_FOURCC('r','v','2','0'), CODEC_ID_RV20,
- VIDEO_ES, "Real Video 2.0" },
+ { VLC_CODEC_RV20, CODEC_ID_RV20, VIDEO_ES },
#endif
#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT( 52, 8, 0 )
- { VLC_FOURCC('R','V','3','0'), CODEC_ID_RV30,
- VIDEO_ES, "Real Video 3.0" },
- { VLC_FOURCC('r','v','3','0'), CODEC_ID_RV30,
- VIDEO_ES, "Real Video 3.0" },
+ { VLC_CODEC_RV30, CODEC_ID_RV30, VIDEO_ES },
#endif
#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT( 52, 5, 0 )
- { VLC_FOURCC('R','V','4','0'), CODEC_ID_RV40,
- VIDEO_ES, "Real Video 4.0" },
- { VLC_FOURCC('r','v','4','0'), CODEC_ID_RV40,
- VIDEO_ES, "Real Video 4.0" },
+ { VLC_CODEC_RV40, CODEC_ID_RV40, VIDEO_ES },
#endif
+ { VLC_CODEC_RPZA, CODEC_ID_RPZA, VIDEO_ES },
- /* Apple Video */
- { VLC_FOURCC('r','p','z','a'), CODEC_ID_RPZA,
- VIDEO_ES, "Apple Video" },
- { VLC_FOURCC('a','z','p','r'), CODEC_ID_RPZA,
- VIDEO_ES, "Apple Video" },
-
- { VLC_FOURCC('s','m','c',' '), CODEC_ID_SMC,
- VIDEO_ES, "Apple graphics" },
+ { VLC_CODEC_SMC, CODEC_ID_SMC, VIDEO_ES },
- /* CINEPAK. We have our own decoder with an higher priority,
- but this can't harm */
- { VLC_FOURCC('C','V','I','D'), CODEC_ID_CINEPAK,
- VIDEO_ES, "Cinepak Video" },
- { VLC_FOURCC('c','v','i','d'), CODEC_ID_CINEPAK,
- VIDEO_ES, "Cinepak Video" },
+ { VLC_CODEC_CINEPAK, CODEC_ID_CINEPAK, VIDEO_ES },
- /* Screen Capture Video Codecs */
- { VLC_FOURCC('t','s','c','c'), CODEC_ID_TSCC,
- VIDEO_ES, "TechSmith Camtasia Screen Capture" },
- { VLC_FOURCC('T','S','C','C'), CODEC_ID_TSCC,
- VIDEO_ES, "TechSmith Camtasia Screen Capture" },
+ { VLC_CODEC_TSCC, CODEC_ID_TSCC, VIDEO_ES },
- { VLC_FOURCC('C','S','C','D'), CODEC_ID_CSCD,
- VIDEO_ES, "CamStudio Screen Codec" },
- { VLC_FOURCC('c','s','c','d'), CODEC_ID_CSCD,
- VIDEO_ES, "CamStudio Screen Codec" },
+ { VLC_CODEC_CSCD, CODEC_ID_CSCD, VIDEO_ES },
- { VLC_FOURCC('Z','M','B','V'), CODEC_ID_ZMBV,
- VIDEO_ES, "DosBox Capture Codec" },
+ { VLC_CODEC_ZMBV, CODEC_ID_ZMBV, VIDEO_ES },
#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT( 51, 13, 0 )
- { VLC_FOURCC('V','M','n','c'), CODEC_ID_VMNC,
- VIDEO_ES, "VMware Video" },
+ { VLC_CODEC_VMNC, CODEC_ID_VMNC, VIDEO_ES },
#endif
- { VLC_FOURCC('F','P','S','1'), CODEC_ID_FRAPS,
- VIDEO_ES, "FRAPS: Realtime Video Capture" },
- { VLC_FOURCC('f','p','s','1'), CODEC_ID_FRAPS,
- VIDEO_ES, "FRAPS: Realtime Video Capture" },
-
- /* Duck TrueMotion */
- { VLC_FOURCC('D','U','C','K'), CODEC_ID_TRUEMOTION1,
- VIDEO_ES, "Duck TrueMotion v1 Video" },
- { VLC_FOURCC('T','M','2','0'), CODEC_ID_TRUEMOTION2,
- VIDEO_ES, "Duck TrueMotion v2.0 Video" },
-
- /* FFMPEG's SNOW wavelet codec */
- { VLC_FOURCC('S','N','O','W'), CODEC_ID_SNOW,
- VIDEO_ES, "FFMpeg SNOW wavelet Video" },
- { VLC_FOURCC('s','n','o','w'), CODEC_ID_SNOW,
- VIDEO_ES, "FFMpeg SNOW wavelet Video" },
-
- { VLC_FOURCC('r','l','e',' '), CODEC_ID_QTRLE,
- VIDEO_ES, "Apple QuickTime RLE Video" },
-
- { VLC_FOURCC('q','d','r','w'), CODEC_ID_QDRAW,
- VIDEO_ES, "Apple QuickDraw Video" },
-
- { VLC_FOURCC('Q','P','E','G'), CODEC_ID_QPEG,
- VIDEO_ES, "QPEG Video" },
- { VLC_FOURCC('Q','1','.','0'), CODEC_ID_QPEG,
- VIDEO_ES, "QPEG Video" },
- { VLC_FOURCC('Q','1','.','1'), CODEC_ID_QPEG,
- VIDEO_ES, "QPEG Video" },
-
- { VLC_FOURCC('U','L','T','I'), CODEC_ID_ULTI,
- VIDEO_ES, "IBM Ultimotion Video" },
-
- { VLC_FOURCC('V','I','X','L'), CODEC_ID_VIXL,
- VIDEO_ES, "Miro/Pinnacle VideoXL Video" },
- { VLC_FOURCC('P','I','X','L'), CODEC_ID_VIXL,
- VIDEO_ES, "Pinnacle VideoXL Video" },
-
- { VLC_FOURCC('L','O','C','O'), CODEC_ID_LOCO,
- VIDEO_ES, "LOCO Video" },
-
- { VLC_FOURCC('W','N','V','1'), CODEC_ID_WNV1,
- VIDEO_ES, "Winnov WNV1 Video" },
-
- { VLC_FOURCC('A','A','S','C'), CODEC_ID_AASC,
- VIDEO_ES, "Autodesc RLE Video" },
-
- { VLC_FOURCC('I','V','2','0'), CODEC_ID_INDEO2,
- VIDEO_ES, "Indeo Video v2" },
- { VLC_FOURCC('R','T','2','1'), CODEC_ID_INDEO2,
- VIDEO_ES, "Indeo Video v2" },
-
- /* Flash Screen Video */
+ { VLC_CODEC_FRAPS, CODEC_ID_FRAPS, VIDEO_ES },
+
+ { VLC_CODEC_TRUEMOTION1, CODEC_ID_TRUEMOTION1, VIDEO_ES },
+ { VLC_CODEC_TRUEMOTION2, CODEC_ID_TRUEMOTION2, VIDEO_ES },
+
+ { VLC_CODEC_SNOW, CODEC_ID_SNOW, VIDEO_ES },
+
+ { VLC_CODEC_QTRLE, CODEC_ID_QTRLE, VIDEO_ES },
+
+ { VLC_CODEC_QDRAW, CODEC_ID_QDRAW, VIDEO_ES },
+
+ { VLC_CODEC_QPEG, CODEC_ID_QPEG, VIDEO_ES },
+
+ { VLC_CODEC_ULTI, CODEC_ID_ULTI, VIDEO_ES },
+
+ { VLC_CODEC_VIXL, CODEC_ID_VIXL, VIDEO_ES },
+
+ { VLC_CODEC_LOCO, CODEC_ID_LOCO, VIDEO_ES },
+
+ { VLC_CODEC_WNV1, CODEC_ID_WNV1, VIDEO_ES },
+
+ { VLC_CODEC_AASC, CODEC_ID_AASC, VIDEO_ES },
+
#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT( 51, 11, 0 )
- { VLC_FOURCC('F','S','V','1'), CODEC_ID_FLASHSV,
- VIDEO_ES, "Flash Screen Video" },
+ { VLC_CODEC_FLASHSV, CODEC_ID_FLASHSV, VIDEO_ES },
#endif
- { VLC_FOURCC('K','M','V','C'), CODEC_ID_KMVC,
- VIDEO_ES, "Karl Morton's Video Codec (Worms)" },
+ { VLC_CODEC_KMVC, CODEC_ID_KMVC, VIDEO_ES },
#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT( 51, 13, 0 )
- { VLC_FOURCC('N','U','V','1'), CODEC_ID_NUV,
- VIDEO_ES, "Nuppel Video" },
- { VLC_FOURCC('R','J','P','G'), CODEC_ID_NUV,
- VIDEO_ES, "Nuppel Video" },
+ { VLC_CODEC_NUV, CODEC_ID_NUV, VIDEO_ES },
#endif
#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT( 51, 8, 0 )
- /* CODEC_ID_SMACKVIDEO */
- { VLC_FOURCC('S','M','K','2'), CODEC_ID_SMACKVIDEO,
- VIDEO_ES, "Smacker Video" },
- { VLC_FOURCC('S','M','K','4'), CODEC_ID_SMACKVIDEO,
- VIDEO_ES, "Smacker Video" },
+ { VLC_CODEC_SMACKVIDEO, CODEC_ID_SMACKVIDEO, VIDEO_ES },
#endif
/* Chinese AVS - Untested */
#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT( 51, 8, 0 )
- { VLC_FOURCC('C','A','V','S'), CODEC_ID_CAVS,
- VIDEO_ES, "Chinese AVS" },
- { VLC_FOURCC('A','V','s','2'), CODEC_ID_CAVS,
- VIDEO_ES, "Chinese AVS" },
+ { VLC_CODEC_CAVS, CODEC_ID_CAVS, VIDEO_ES },
#endif
#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT( 51, 40, 0 )
/* Untested yet */
- { VLC_FOURCC('A','V','d','n'), CODEC_ID_DNXHD,
- VIDEO_ES, "DNxHD" },
+ { VLC_CODEC_DNXHD, CODEC_ID_DNXHD, VIDEO_ES },
#endif
- { VLC_FOURCC('8','B','P','S'), CODEC_ID_8BPS,
- VIDEO_ES, "8BPS" },
+ { VLC_CODEC_8BPS, CODEC_ID_8BPS, VIDEO_ES },
#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT( 51, 52, 0 )
- { VLC_FOURCC('M','L','2','O'), CODEC_ID_MIMIC,
- VIDEO_ES, "Mimic" },
+ { VLC_CODEC_MIMIC, CODEC_ID_MIMIC, VIDEO_ES },
+#endif
+
+#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT( 52, 29, 0 )
+ { VLC_CODEC_V210, CODEC_ID_V210, VIDEO_ES },
#endif
/* Videogames Codecs */
- /* Interplay MVE */
- { VLC_FOURCC('i','m','v','e'), CODEC_ID_INTERPLAY_VIDEO,
- VIDEO_ES, "Interplay MVE Video" },
- { VLC_FOURCC('I','N','P','V'), CODEC_ID_INTERPLAY_VIDEO,
- VIDEO_ES, "Interplay MVE Video" },
+ { VLC_CODEC_INTERPLAY, CODEC_ID_INTERPLAY_VIDEO, VIDEO_ES },
- /* Id Quake II CIN */
- { VLC_FOURCC('I','D','C','I'), CODEC_ID_IDCIN,
- VIDEO_ES, "Id Quake II CIN Video" },
+ { VLC_CODEC_IDCIN, CODEC_ID_IDCIN, VIDEO_ES },
- /* 4X Technologies */
- { VLC_FOURCC('4','x','m','v'), CODEC_ID_4XM,
- VIDEO_ES, "4X Technologies Video" },
- { VLC_FOURCC('4','X','M','V'), CODEC_ID_4XM,
- VIDEO_ES, "4X Technologies Video" },
+ { VLC_CODEC_4XM, CODEC_ID_4XM, VIDEO_ES },
- /* Id RoQ */
- { VLC_FOURCC('R','o','Q','v'), CODEC_ID_ROQ,
- VIDEO_ES, "Id RoQ Video" },
+ { VLC_CODEC_ROQ, CODEC_ID_ROQ, VIDEO_ES },
- /* Sony Playstation MDEC */
- { VLC_FOURCC('M','D','E','C'), CODEC_ID_MDEC,
- VIDEO_ES, "PSX MDEC Video" },
+ { VLC_CODEC_MDEC, CODEC_ID_MDEC, VIDEO_ES },
- /* Sierra VMD */
- { VLC_FOURCC('v','m','d','v'), CODEC_ID_VMDVIDEO,
- VIDEO_ES, "Sierra VMD Video" },
- { VLC_FOURCC('V','M','D','V'), CODEC_ID_VMDVIDEO,
- VIDEO_ES, "Sierra VMD Video" },
+ { VLC_CODEC_VMDVIDEO, CODEC_ID_VMDVIDEO, VIDEO_ES },
#if 0
/* UNTESTED VideoGames*/
/*
* Image codecs
*/
- { VLC_FOURCC('p','n','g',' '), CODEC_ID_PNG,
- VIDEO_ES, "PNG Image" },
- { VLC_FOURCC('p','p','m',' '), CODEC_ID_PPM,
- VIDEO_ES, "PPM Image" },
- { VLC_FOURCC('p','g','m',' '), CODEC_ID_PGM,
- VIDEO_ES, "PGM Image" },
- { VLC_FOURCC('p','g','m','y'), CODEC_ID_PGMYUV,
- VIDEO_ES, "PGM YUV Image" },
- { VLC_FOURCC('p','a','m',' '), CODEC_ID_PAM,
- VIDEO_ES, "PAM Image" },
- { VLC_FOURCC('M','J','L','S'), CODEC_ID_JPEGLS,
- VIDEO_ES, "PAM Image" },
+ { VLC_CODEC_PNG, CODEC_ID_PNG, VIDEO_ES },
+ { VLC_CODEC_PPM, CODEC_ID_PPM, VIDEO_ES },
+ { VLC_CODEC_PGM, CODEC_ID_PGM, VIDEO_ES },
+ { VLC_CODEC_PGMYUV, CODEC_ID_PGMYUV, VIDEO_ES },
+ { VLC_CODEC_PAM, CODEC_ID_PAM, VIDEO_ES },
+ { VLC_CODEC_JPEGLS, CODEC_ID_JPEGLS, VIDEO_ES },
#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT( 51, 0, 0 )
- { VLC_FOURCC('b','m','p',' '), CODEC_ID_BMP,
- VIDEO_ES, "BMP Image" },
+ { VLC_CODEC_BMP, CODEC_ID_BMP, VIDEO_ES },
#endif
#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT( 51, 40, 1 )
- { VLC_FOURCC('t','i','f','f'), CODEC_ID_TIFF,
- VIDEO_ES, "TIFF Image" },
- { VLC_FOURCC('g','i','f',' '), CODEC_ID_GIF,
- VIDEO_ES, "GIF Image" },
- { VLC_FOURCC('t','g','a',' '), CODEC_ID_TARGA,
- VIDEO_ES, "Truevision Targa Image" },
- { VLC_FOURCC('m','t','g','a'), CODEC_ID_TARGA,
- VIDEO_ES, "Truevision Targa Image" },
- { VLC_FOURCC('M','T','G','A'), CODEC_ID_TARGA,
- VIDEO_ES, "Truevision Targa Image" },
+ { VLC_CODEC_TIFF, CODEC_ID_TIFF, VIDEO_ES },
+ { VLC_CODEC_GIF, CODEC_ID_GIF, VIDEO_ES },
+ { VLC_CODEC_TARGA, CODEC_ID_TARGA, VIDEO_ES },
#endif
#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT( 51, 40, 3 )
- { VLC_FOURCC('s','g','i',' '), CODEC_ID_SGI,
- VIDEO_ES, "SGI Image" },
+ { VLC_CODEC_SGI, CODEC_ID_SGI, VIDEO_ES },
#endif
#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT( 51, 55, 0 )
- { VLC_FOURCC('d','r','a','c'), CODEC_ID_DIRAC,
- VIDEO_ES, "Dirac" },
+ { VLC_CODEC_DIRAC, CODEC_ID_DIRAC, VIDEO_ES },
#endif
/*
* Audio Codecs
*/
- /* Windows Media Audio 1 */
- { VLC_FOURCC('W','M','A','1'), CODEC_ID_WMAV1,
- AUDIO_ES, "Windows Media Audio 1" },
- { VLC_FOURCC('w','m','a','1'), CODEC_ID_WMAV1,
- AUDIO_ES, "Windows Media Audio 1" },
-
- /* Windows Media Audio 2 */
- { VLC_FOURCC('W','M','A','2'), CODEC_ID_WMAV2,
- AUDIO_ES, "Windows Media Audio 2" },
- { VLC_FOURCC('w','m','a','2'), CODEC_ID_WMAV2,
- AUDIO_ES, "Windows Media Audio 2" },
-
- /* DV Audio */
- { VLC_FOURCC('d','v','a','u'), CODEC_ID_DVAUDIO,
- AUDIO_ES, "DV Audio" },
- { VLC_FOURCC('v','d','v','a'), CODEC_ID_DVAUDIO,
- AUDIO_ES, "DV Audio" },
- { VLC_FOURCC('d','v','c','a'), CODEC_ID_DVAUDIO,
- AUDIO_ES, "DV Audio" },
- { VLC_FOURCC('R','A','D','V'), CODEC_ID_DVAUDIO,
- AUDIO_ES, "DV Audio" },
-
- /* MACE-3 Audio */
- { VLC_FOURCC('M','A','C','3'), CODEC_ID_MACE3,
- AUDIO_ES, "MACE-3 Audio" },
-
- /* MACE-6 Audio */
- { VLC_FOURCC('M','A','C','6'), CODEC_ID_MACE6,
- AUDIO_ES, "MACE-6 Audio" },
+ { VLC_CODEC_WMA1, CODEC_ID_WMAV1, AUDIO_ES },
+ { VLC_CODEC_WMA2, CODEC_ID_WMAV2, AUDIO_ES },
+
+ { VLC_CODEC_DVAUDIO, CODEC_ID_DVAUDIO, AUDIO_ES },
+
+ { VLC_CODEC_MACE3, CODEC_ID_MACE3, AUDIO_ES },
+ { VLC_CODEC_MACE6, CODEC_ID_MACE6, AUDIO_ES },
#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT( 51, 41, 1 )
- /* MUSEPACK7 Audio */
- { VLC_FOURCC('M','P','C',' '), CODEC_ID_MUSEPACK7,
- AUDIO_ES, "MUSEPACK7 Audio" },
+ { VLC_CODEC_MUSEPACK7, CODEC_ID_MUSEPACK7, AUDIO_ES },
#endif
#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT( 51, 48, 0 )
- /* MUSEPACK8 Audio */
- { VLC_FOURCC('M','P','C','K'), CODEC_ID_MUSEPACK8,
- AUDIO_ES, "MUSEPACK8 Audio" },
- { VLC_FOURCC('M','P','C','8'), CODEC_ID_MUSEPACK8,
- AUDIO_ES, "MUSEPACK8 Audio" },
+ { VLC_CODEC_MUSEPACK8, CODEC_ID_MUSEPACK8, AUDIO_ES },
#endif
- /* RealAudio 1.0 */
- { VLC_FOURCC('1','4','_','4'), CODEC_ID_RA_144,
- AUDIO_ES, "RealAudio 1.0" },
- { VLC_FOURCC('l','p','c','J'), CODEC_ID_RA_144,
- AUDIO_ES, "RealAudio 1.0" },
-
- /* RealAudio 2.0 */
- { VLC_FOURCC('2','8','_','8'), CODEC_ID_RA_288,
- AUDIO_ES, "RealAudio 2.0" },
-
- /* MPEG Audio layer 1/2/3 */
- { VLC_FOURCC('m','p','g','a'), CODEC_ID_MP2,
- AUDIO_ES, "MPEG Audio layer 1/2" },
- { VLC_FOURCC('m','p','3',' '), CODEC_ID_MP3,
- AUDIO_ES, "MPEG Audio layer 1/2/3" },
- { VLC_FOURCC('.','m','p','3'), CODEC_ID_MP3,
- AUDIO_ES, "MPEG Audio layer 1/2/3" },
- { VLC_FOURCC('M','P','3',' '), CODEC_ID_MP3,
- AUDIO_ES, "MPEG Audio layer 1/2/3" },
- { VLC_FOURCC('L','A','M','E'), CODEC_ID_MP3,
- AUDIO_ES, "MPEG Audio layer 1/2/3" },
-
- /* A52 Audio (aka AC3) */
- { VLC_FOURCC('a','5','2',' '), CODEC_ID_AC3,
- AUDIO_ES, "A52 Audio (aka AC3)" },
- { VLC_FOURCC('a','5','2','b'), CODEC_ID_AC3, /* VLC specific hack */
- AUDIO_ES, "A52 Audio (aka AC3)" },
+ { VLC_CODEC_RA_144, CODEC_ID_RA_144, AUDIO_ES },
+ { VLC_CODEC_RA_288, CODEC_ID_RA_288, AUDIO_ES },
+
+ { VLC_CODEC_MPGA, CODEC_ID_MP3, AUDIO_ES },
+
+ { VLC_CODEC_A52, CODEC_ID_AC3, AUDIO_ES },
#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT( 52, 0, 0 )
- { VLC_FOURCC('e','a','c','3'), CODEC_ID_EAC3,
- AUDIO_ES, "A/52 B Audio (aka E-AC3)" },
+ { VLC_CODEC_EAC3, CODEC_ID_EAC3, AUDIO_ES },
#endif
- /* DTS Audio */
- { VLC_FOURCC('d','t','s',' '), CODEC_ID_DTS,
- AUDIO_ES, "DTS Audio" },
-
- /* AAC audio */
- { VLC_FOURCC('m','p','4','a'), CODEC_ID_AAC,
- AUDIO_ES, "MPEG AAC Audio" },
- { VLC_FOURCC('a','a','c',' '), CODEC_ID_AAC,
- AUDIO_ES, "MPEG AAC Audio" },
+ { VLC_CODEC_DTS, CODEC_ID_DTS, AUDIO_ES },
- /* AC-3 Audio (Dolby Digital) */
- { VLC_FOURCC('a','c','-','3'), CODEC_ID_AC3,
- AUDIO_ES, "AC-3 Audio (Dolby Digital)" },
+ { VLC_CODEC_MP4A, CODEC_ID_AAC, AUDIO_ES },
- /* 4X Technologies */
- { VLC_FOURCC('4','x','m','a'), CODEC_ID_ADPCM_4XM,
- AUDIO_ES, "4X Technologies Audio" },
+ { VLC_CODEC_ADPCM_4XM, CODEC_ID_ADPCM_4XM, AUDIO_ES },
- /* EA ADPCM */
- { VLC_FOURCC('A','D','E','A'), CODEC_ID_ADPCM_EA,
- AUDIO_ES, "EA ADPCM Audio" },
+ { VLC_CODEC_ADPCM_EA, CODEC_ID_ADPCM_EA, AUDIO_ES },
- /* Interplay DPCM */
- { VLC_FOURCC('i','d','p','c'), CODEC_ID_INTERPLAY_DPCM,
- AUDIO_ES, "Interplay DPCM Audio" },
+ { VLC_CODEC_INTERPLAY_DPCM, CODEC_ID_INTERPLAY_DPCM, AUDIO_ES },
- /* Id RoQ */
- { VLC_FOURCC('R','o','Q','a'), CODEC_ID_ROQ_DPCM,
- AUDIO_ES, "Id RoQ DPCM Audio" },
+ { VLC_CODEC_ROQ_DPCM, CODEC_ID_ROQ_DPCM, AUDIO_ES },
#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT( 51, 27, 0 )
- /* DCIN Audio */
- { VLC_FOURCC('D','C','I','A'), CODEC_ID_DSICINAUDIO,
- AUDIO_ES, "Delphine CIN Audio" },
+ { VLC_CODEC_DSICINAUDIO, CODEC_ID_DSICINAUDIO, AUDIO_ES },
#endif
- /* Sony Playstation XA ADPCM */
- { VLC_FOURCC('x','a',' ',' '), CODEC_ID_ADPCM_XA,
- AUDIO_ES, "PSX XA ADPCM Audio" },
-
- /* ADX ADPCM */
- { VLC_FOURCC('a','d','x',' '), CODEC_ID_ADPCM_ADX,
- AUDIO_ES, "ADX ADPCM Audio" },
-
- /* Westwood ADPCM */
- { VLC_FOURCC('A','I','W','S'), CODEC_ID_ADPCM_IMA_WS,
- AUDIO_ES, "Westwood IMA ADPCM audio" },
+ { VLC_CODEC_ADPCM_XA, CODEC_ID_ADPCM_XA, AUDIO_ES },
+ { VLC_CODEC_ADPCM_ADX, CODEC_ID_ADPCM_ADX, AUDIO_ES },
+ { VLC_CODEC_ADPCM_IMA_WS, CODEC_ID_ADPCM_IMA_WS, AUDIO_ES },
- /* Sierra VMD */
- { VLC_FOURCC('v','m','d','a'), CODEC_ID_VMDAUDIO,
- AUDIO_ES, "Sierra VMD Audio" },
+ { VLC_CODEC_VMDAUDIO, CODEC_ID_VMDAUDIO, AUDIO_ES },
- /* G.726 ADPCM */
- { VLC_FOURCC('g','7','2','6'), CODEC_ID_ADPCM_G726,
- AUDIO_ES, "G.726 ADPCM Audio" },
+ { VLC_CODEC_ADPCM_G726, CODEC_ID_ADPCM_G726, AUDIO_ES },
- /* AMR */
- { VLC_FOURCC('s','a','m','r'), CODEC_ID_AMR_NB,
- AUDIO_ES, "AMR narrow band" },
- { VLC_FOURCC('s','a','w','b'), CODEC_ID_AMR_WB,
- AUDIO_ES, "AMR wide band" },
+ { VLC_CODEC_AMR_NB, CODEC_ID_AMR_NB, AUDIO_ES },
+ { VLC_CODEC_AMR_WB, CODEC_ID_AMR_WB, AUDIO_ES },
- /* FLAC */
- { VLC_FOURCC('f','l','a','c'), CODEC_ID_FLAC,
- AUDIO_ES, "FLAC (Free Lossless Audio Codec)" },
+ { VLC_CODEC_FLAC, CODEC_ID_FLAC, AUDIO_ES },
- /* ALAC */
- { VLC_FOURCC('a','l','a','c'), CODEC_ID_ALAC,
- AUDIO_ES, "Apple Lossless Audio Codec" },
+ { VLC_CODEC_ALAC, CODEC_ID_ALAC, AUDIO_ES },
#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT( 50, 0, 1 )
- /* QDM2 */
- { VLC_FOURCC('Q','D','M','2'), CODEC_ID_QDM2,
- AUDIO_ES, "QDM2 Audio" },
+ { VLC_CODEC_QDM2, CODEC_ID_QDM2, AUDIO_ES },
#endif
#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT( 51, 0, 0 )
- /* COOK */
- { VLC_FOURCC('c','o','o','k'), CODEC_ID_COOK,
- AUDIO_ES, "Cook Audio" },
+ { VLC_CODEC_COOK, CODEC_ID_COOK, AUDIO_ES },
#endif
#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT( 51, 4, 0 )
- /* TTA: The Lossless True Audio */
- { VLC_FOURCC('T','T','A','1'), CODEC_ID_TTA,
- AUDIO_ES, "The Lossless True Audio" },
+ { VLC_CODEC_TTA, CODEC_ID_TTA, AUDIO_ES },
#endif
#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT( 51, 8, 0 )
- /* Shorten */
- { VLC_FOURCC('s','h','n',' '), CODEC_ID_SHORTEN,
- AUDIO_ES, "Shorten Lossless Audio" },
- { VLC_FOURCC('s','h','r','n'), CODEC_ID_SHORTEN,
- AUDIO_ES, "Shorten Lossless Audio" },
+ { VLC_CODEC_SHORTEN, CODEC_ID_SHORTEN, AUDIO_ES },
#endif
#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT( 51, 16, 0 )
- { VLC_FOURCC('w','v','p','k'), CODEC_ID_WAVPACK,
- AUDIO_ES, "WavPack" },
- { VLC_FOURCC('W','V','P','K'), CODEC_ID_WAVPACK,
- AUDIO_ES, "WavPack" },
+ { VLC_CODEC_WAVPACK, CODEC_ID_WAVPACK, AUDIO_ES },
#endif
#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT( 51, 34, 0 )
- { VLC_FOURCC('g','s','m',' '), CODEC_ID_GSM,
- AUDIO_ES, "GSM Audio" },
- { VLC_FOURCC('a','g','s','m'), CODEC_ID_GSM_MS, /* According to http://wiki.multimedia.cx/index.php?title=GSM */
- AUDIO_ES, "Microsoft GSM Audio" },
+ { VLC_CODEC_GSM, CODEC_ID_GSM, AUDIO_ES },
+ { VLC_CODEC_GSM_MS, CODEC_ID_GSM_MS, AUDIO_ES },
#endif
#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT( 51, 40, 4 )
- { VLC_FOURCC('a','t','r','c'), CODEC_ID_ATRAC3,
- AUDIO_ES, "atrac 3" },
- { VLC_FOURCC(0x70,0x2,0x0,0x0), CODEC_ID_ATRAC3,
- AUDIO_ES, "atrac 3" },
+ { VLC_CODEC_ATRAC3, CODEC_ID_ATRAC3, AUDIO_ES },
#endif
- { VLC_FOURCC('S','O','N','C'), CODEC_ID_SONIC,
- AUDIO_ES, "Sonic" },
+ { VLC_CODEC_SONIC, CODEC_ID_SONIC, AUDIO_ES },
#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT( 51, 34, 0 )
- { VLC_FOURCC(0x1,0x4,0x0,0x0), CODEC_ID_IMC,
- AUDIO_ES, "IMC" },
+ { VLC_CODEC_IMC, CODEC_ID_IMC, AUDIO_ES },
#endif
- { VLC_FOURCC(0x22,0x0,0x0,0x0), CODEC_ID_TRUESPEECH,
- AUDIO_ES, "TrueSpeech" },
+ { VLC_CODEC_TRUESPEECH, CODEC_ID_TRUESPEECH, AUDIO_ES },
#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT( 51, 46, 0 )
- { VLC_FOURCC('N','E','L','L'), CODEC_ID_NELLYMOSER,
- AUDIO_ES, "NellyMoser ASAO" },
+ { VLC_CODEC_NELLYMOSER, CODEC_ID_NELLYMOSER, AUDIO_ES },
#endif
#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT( 51, 44, 0 )
- { VLC_FOURCC('A','P','E',' '), CODEC_ID_APE,
- AUDIO_ES, "Monkey's Audio" },
+ { VLC_CODEC_APE, CODEC_ID_APE, AUDIO_ES },
#endif
#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT( 51, 58, 0 )
- { VLC_FOURCC('m','l','p',' '), CODEC_ID_MLP,
- AUDIO_ES, "MLP/TrueHD Audio" },
+ { VLC_CODEC_MLP, CODEC_ID_MLP, AUDIO_ES },
#endif
#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT( 52, 22, 0 )
- { VLC_FOURCC('t','r','h','d'), CODEC_ID_TRUEHD,
- AUDIO_ES, "TrueHD Audio" },
+ { VLC_CODEC_TRUEHD, CODEC_ID_TRUEHD, AUDIO_ES },
#endif
#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT( 52, 6, 0 )
- { VLC_FOURCC('Q','c','l','p'), CODEC_ID_QCELP,
- AUDIO_ES, "QCELP Audio" },
+ { VLC_CODEC_QCELP, CODEC_ID_QCELP, AUDIO_ES },
#endif
/* PCM */
- { VLC_FOURCC('s','8',' ',' '), CODEC_ID_PCM_S8,
- AUDIO_ES, "PCM S8" },
- { VLC_FOURCC('u','8',' ',' '), CODEC_ID_PCM_U8,
- AUDIO_ES, "PCM U8" },
- { VLC_FOURCC('s','1','6','l'), CODEC_ID_PCM_S16LE,
- AUDIO_ES, "PCM S16 LE" },
- { VLC_FOURCC('s','1','6','b'), CODEC_ID_PCM_S16BE,
- AUDIO_ES, "PCM S16 BE" },
- { VLC_FOURCC('u','1','6','l'), CODEC_ID_PCM_U16LE,
- AUDIO_ES, "PCM U16 LE" },
- { VLC_FOURCC('u','1','6','b'), CODEC_ID_PCM_U16BE,
- AUDIO_ES, "PCM U16 BE" },
- { VLC_FOURCC('s','2','4','l'), CODEC_ID_PCM_S24LE,
- AUDIO_ES, "PCM S24 LE" },
- { VLC_FOURCC('s','2','4','b'), CODEC_ID_PCM_S24BE,
- AUDIO_ES, "PCM S24 BE" },
- { VLC_FOURCC('u','2','4','l'), CODEC_ID_PCM_U24LE,
- AUDIO_ES, "PCM U24 LE" },
- { VLC_FOURCC('u','2','4','b'), CODEC_ID_PCM_U24BE,
- AUDIO_ES, "PCM U24 BE" },
- { VLC_FOURCC('s','3','2','l'), CODEC_ID_PCM_S32LE,
- AUDIO_ES, "PCM S32 LE" },
- { VLC_FOURCC('s','3','2','b'), CODEC_ID_PCM_S32BE,
- AUDIO_ES, "PCM S32 BE" },
- { VLC_FOURCC('u','3','2','l'), CODEC_ID_PCM_U32LE,
- AUDIO_ES, "PCM U32 LE" },
- { VLC_FOURCC('u','3','2','b'), CODEC_ID_PCM_U32BE,
- AUDIO_ES, "PCM U32 BE" },
- { VLC_FOURCC('a','l','a','w'), CODEC_ID_PCM_ALAW,
- AUDIO_ES, "PCM ALAW" },
- { VLC_FOURCC('u','l','a','w'), CODEC_ID_PCM_MULAW,
- AUDIO_ES, "PCM ULAW" },
- { VLC_FOURCC('d','a','u','d'), CODEC_ID_PCM_S24DAUD,
- AUDIO_ES, "PCM ULAW" },
+ { VLC_CODEC_S8, CODEC_ID_PCM_S8, AUDIO_ES },
+ { VLC_CODEC_U8, CODEC_ID_PCM_U8, AUDIO_ES },
+ { VLC_CODEC_S16L, CODEC_ID_PCM_S16LE, AUDIO_ES },
+ { VLC_CODEC_S16B, CODEC_ID_PCM_S16BE, AUDIO_ES },
+ { VLC_CODEC_U16L, CODEC_ID_PCM_U16LE, AUDIO_ES },
+ { VLC_CODEC_U16B, CODEC_ID_PCM_U16BE, AUDIO_ES },
+ { VLC_CODEC_S24L, CODEC_ID_PCM_S24LE, AUDIO_ES },
+ { VLC_CODEC_S24B, CODEC_ID_PCM_S24BE, AUDIO_ES },
+ { VLC_CODEC_U24L, CODEC_ID_PCM_U24LE, AUDIO_ES },
+ { VLC_CODEC_U24B, CODEC_ID_PCM_U24BE, AUDIO_ES },
+ { VLC_CODEC_S32L, CODEC_ID_PCM_S32LE, AUDIO_ES },
+ { VLC_CODEC_S32B, CODEC_ID_PCM_S32BE, AUDIO_ES },
+ { VLC_CODEC_U32L, CODEC_ID_PCM_U32LE, AUDIO_ES },
+ { VLC_CODEC_U32B, CODEC_ID_PCM_U32BE, AUDIO_ES },
+ { VLC_CODEC_ALAW, CODEC_ID_PCM_ALAW, AUDIO_ES },
+ { VLC_CODEC_MULAW, CODEC_ID_PCM_MULAW, AUDIO_ES },
+ { VLC_CODEC_S24DAUD, CODEC_ID_PCM_S24DAUD, AUDIO_ES },
/* Subtitle streams */
#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT( 51, 41, 0 )
/* Before this version, subs were too experimental */
- { VLC_FOURCC('s','p','u',' '), CODEC_ID_DVD_SUBTITLE,
- SPU_ES, "DVD Subtitles" },
- { VLC_FOURCC('d','v','b','s'), CODEC_ID_DVB_SUBTITLE,
- SPU_ES, "DVB Subtitles" },
- { VLC_FOURCC('s','u','b','t'), CODEC_ID_TEXT,
- SPU_ES, "Plain text subtitles" },
- { VLC_FOURCC('D','X','S','B'), CODEC_ID_XSUB,
- SPU_ES, "DivX XSUB subtitles" },
+ { VLC_CODEC_SPU, CODEC_ID_DVD_SUBTITLE, SPU_ES },
+ { VLC_CODEC_DVBS, CODEC_ID_DVB_SUBTITLE, SPU_ES },
+ { VLC_CODEC_SUBT, CODEC_ID_TEXT, SPU_ES },
+ { VLC_CODEC_XSUB, CODEC_ID_XSUB, SPU_ES },
#endif
#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT( 51, 50, 0 )
- { VLC_FOURCC('s','s','a',' '), CODEC_ID_SSA,
- SPU_ES, "SubStation Alpha subtitles" },
+ { VLC_CODEC_SSA, CODEC_ID_SSA, SPU_ES },
#endif
- { 0, 0, 0, "" }
+ { 0, 0, UNKNOWN_ES }
};
int GetFfmpegCodec( vlc_fourcc_t i_fourcc, int *pi_cat,
int *pi_ffmpeg_codec, const char **ppsz_name )
{
+ i_fourcc = vlc_fourcc_GetCodec( UNKNOWN_ES, i_fourcc );
for( unsigned i = 0; codecs_table[i].i_fourcc != 0; i++ )
{
if( codecs_table[i].i_fourcc == i_fourcc )
{
if( pi_cat ) *pi_cat = codecs_table[i].i_cat;
if( pi_ffmpeg_codec ) *pi_ffmpeg_codec = codecs_table[i].i_codec;
- if( ppsz_name ) *ppsz_name = (char *)codecs_table[i].psz_name;
+ if( ppsz_name ) *ppsz_name = vlc_fourcc_GetDescription( UNKNOWN_ES, i_fourcc );//char *)codecs_table[i].psz_name;
return true;
}
{
if( pi_cat ) *pi_cat = codecs_table[i].i_cat;
if( pi_fourcc ) *pi_fourcc = codecs_table[i].i_fourcc;
- if( ppsz_name ) *ppsz_name = codecs_table[i].psz_name;
+ if( ppsz_name ) *ppsz_name = vlc_fourcc_GetDescription( codecs_table[i].i_cat, codecs_table[i].i_fourcc );
return true;
}
#include <vlc_common.h>
#include <vlc_codec.h>
-#include <vlc_vout.h>
#include <vlc_codecs.h> /* BITMAPINFOHEADER */
#include <vlc_avcodec.h>
if( GetVlcChroma( &p_dec->fmt_out.video, p_context->pix_fmt ) != VLC_SUCCESS )
{
/* we are doomed, but not really, because most codecs set their pix_fmt much later */
- p_dec->fmt_out.i_codec = VLC_FOURCC('I','4','2','0');
+ p_dec->fmt_out.i_codec = VLC_CODEC_I420;
}
p_dec->fmt_out.i_codec = p_dec->fmt_out.video.i_chroma;
p_sys->b_delayed_open = true;
/* ***** Fill p_context with init values ***** */
- p_sys->p_context->codec_tag = ffmpeg_CodecTag( p_dec->fmt_in.i_codec );
+ p_sys->p_context->codec_tag = ffmpeg_CodecTag( p_dec->fmt_in.i_original_fourcc ?: p_dec->fmt_in.i_codec );
/* ***** Get configuration of ffmpeg plugin ***** */
p_sys->p_context->workaround_bugs =
if( GetVlcChroma( &p_dec->fmt_out.video, p_context->pix_fmt ) != VLC_SUCCESS )
{
/* we are doomed. but not really, because most codecs set their pix_fmt later on */
- p_dec->fmt_out.i_codec = VLC_FOURCC('I','4','2','0');
+ p_dec->fmt_out.i_codec = VLC_CODEC_I420;
}
p_dec->fmt_out.i_codec = p_dec->fmt_out.video.i_chroma;
#include <vlc_common.h>
#include <vlc_plugin.h>
-#include <vlc_vout.h>
#include <vlc_codec.h>
#include <vlc_input.h>
Eia608Init( &p_sys->eia608 );
p_dec->fmt_out.i_cat = SPU_ES;
- p_dec->fmt_out.i_codec = VLC_FOURCC('T','E','X','T');
+ p_dec->fmt_out.i_codec = VLC_CODEC_TEXT;
return VLC_SUCCESS;
}
/* Create a new subpicture region */
memset( &fmt, 0, sizeof(video_format_t) );
- fmt.i_chroma = VLC_FOURCC('T','E','X','T');
+ fmt.i_chroma = VLC_CODEC_TEXT;
fmt.i_aspect = 0;
fmt.i_width = fmt.i_height = 0;
fmt.i_x_offset = fmt.i_y_offset = 0;
#include <vlc_common.h>
#include <vlc_plugin.h>
#include <vlc_codec.h>
-#include <vlc_vout.h>
/*****************************************************************************
* decoder_sys_t : decoder descriptor
decoder_t *p_dec = (decoder_t*)p_this;
decoder_sys_t *p_sys;
- if( p_dec->fmt_in.i_codec != VLC_FOURCC('C','D','G',' ') )
+ if( p_dec->fmt_in.i_codec != VLC_CODEC_CDG )
return VLC_EGENERIC;
/* Allocate the memory needed to store the decoder's structure */
/* Set output properties
* TODO maybe it would be better to use RV16 or RV24 ? */
p_dec->fmt_out.i_cat = VIDEO_ES;
- p_dec->fmt_out.i_codec = VLC_FOURCC('R','V','3','2');
+ p_dec->fmt_out.i_codec = VLC_CODEC_RGB32;
p_dec->fmt_out.video.i_width = CDG_DISPLAY_WIDTH;
p_dec->fmt_out.video.i_height = CDG_DISPLAY_HEIGHT;
p_dec->fmt_out.video.i_aspect =
#undef CMML_DEBUG
-/*****************************************************************************
- * decoder_sys_t : decoder descriptor
- *****************************************************************************/
-struct decoder_sys_t
-{
- intf_thread_t * p_intf;
-};
-
/*****************************************************************************
* Local prototypes
*****************************************************************************/
/*****************************************************************************
* Exported prototypes
*****************************************************************************/
-int OpenIntf ( vlc_object_t * );
-void CloseIntf ( vlc_object_t * );
+decoder_sys_t *OpenIntf( vlc_object_t * );
+void CloseIntf( decoder_sys_t * );
/*****************************************************************************
* Module descriptor.
{
decoder_t *p_dec = (decoder_t*)p_this;
input_thread_t * p_input;
- decoder_sys_t *p_sys;
- if( p_dec->fmt_in.i_codec != VLC_FOURCC('c','m','m','l') )
+ if( p_dec->fmt_in.i_codec != VLC_CODEC_CMML )
return VLC_EGENERIC;
p_dec->pf_decode_sub = DecodeBlock;
- /* Allocate the memory needed to store the decoder's structure */
- if( ( p_dec->p_sys = p_sys = malloc( sizeof(*p_sys) ) ) == NULL )
- return VLC_ENOMEM;
-
/* Let other interested modules know that we're a CMML decoder
* We have to set this variable on the input thread, because there's
* typically more than one decoder running so we can't find the CMML
}
/* initialise the CMML responder interface */
- p_sys->p_intf = intf_Create( p_dec, "cmml" );
- if( p_sys->p_intf )
- intf_RunThread( p_sys->p_intf );
-
+ p_dec->p_sys = OpenIntf( p_dec );
p_dec->fmt_out.i_cat = SPU_ES;
p_dec->fmt_out.i_codec = 0;
static void CloseDecoder( vlc_object_t *p_this )
{
decoder_t *p_dec = (decoder_t *)p_this;
- decoder_sys_t *p_sys = p_dec->p_sys;
-
- /* Destroy the interface object/thread */
- if( p_sys->p_intf != NULL )
- {
- intf_thread_t *p_intf = p_sys->p_intf;
- intf_StopThread( p_intf );
- vlc_object_detach( p_intf );
- vlc_object_release( p_intf );
- }
- free( p_sys );
+ CloseIntf( p_dec->p_sys );
}
/*****************************************************************************
#endif
#include <vlc_codec.h>
-#include <vlc_interface.h>
#include <vlc_playlist.h>
#include <vlc_osd.h>
/*****************************************************************************
* intf_sys_t: description and status of interface
*****************************************************************************/
-struct intf_sys_t
+typedef struct decoder_sys_t
{
+ VLC_COMMON_MEMBERS
+
vlc_mutex_t lock;
decoder_t * p_cmml_decoder;
input_thread_t * p_input;
int i_key_action;
-};
+} intf_thread_t;
struct navigation_history_t
{
* Local prototypes.
*****************************************************************************/
-int OpenIntf ( vlc_object_t * );
-void CloseIntf ( vlc_object_t * );
+decoder_sys_t *OpenIntf ( vlc_object_t * );
+void CloseIntf ( decoder_sys_t * );
static int InitThread ( intf_thread_t * );
static int MouseEvent ( vlc_object_t *, char const *,
static history_t * GetHistory ( playlist_t * );
static void ReplacePlaylistItem ( playlist_t *, char * );
-/* Exported functions */
-static void RunIntf ( intf_thread_t *p_intf );
+static void *RunIntf ( vlc_object_t * );
/*****************************************************************************
* OpenIntf: initialize CMML interface
*****************************************************************************/
-int OpenIntf ( vlc_object_t *p_this )
+decoder_sys_t *OpenIntf ( vlc_object_t *p_this )
{
- intf_thread_t *p_intf = (intf_thread_t *)p_this;
-
- p_intf->p_sys = malloc( sizeof( intf_sys_t ) );
- if( p_intf->p_sys == NULL )
- return VLC_ENOMEM;
+ decoder_sys_t *p_intf = vlc_object_create( p_this, sizeof( *p_intf ) );
+ if( p_intf == NULL )
+ return NULL;
- p_intf->pf_run = RunIntf;
- vlc_mutex_init( &p_intf->p_sys->lock );
+ vlc_mutex_init( &p_intf->lock );
var_AddCallback( p_intf->p_libvlc, "key-action", KeyEvent, p_intf );
/* we also need to add the callback for "mouse-clicked", but do that later
var_AddCallback( p_intf->p_libvlc, "browse-follow-anchor",
FollowAnchorCallback, p_intf );
- return VLC_SUCCESS;
+ vlc_thread_create( p_intf, "cmml", RunIntf, VLC_THREAD_PRIORITY_LOW );
+ return p_intf;
}
/*****************************************************************************
* CloseIntf: destroy dummy interface
*****************************************************************************/
-void CloseIntf ( vlc_object_t *p_this )
+void CloseIntf ( decoder_sys_t *p_intf )
{
- intf_thread_t * p_intf = (intf_thread_t *)p_this;
vout_thread_t * p_vout;
#ifdef CMML_INTF_DEBUG
}
var_DelCallback( p_intf->p_libvlc, "key-action", KeyEvent, p_intf );
+ vlc_object_kill( p_intf );
+ vlc_thread_join( p_intf );
- vlc_object_release( p_intf->p_sys->p_cmml_decoder );
+ vlc_object_release( p_intf->p_cmml_decoder );
- vlc_mutex_destroy( &p_intf->p_sys->lock );
- free( p_intf->p_sys );
+ vlc_mutex_destroy( &p_intf->lock );
+ vlc_object_release( p_intf );
}
/*****************************************************************************
* RunIntf: main loop
*****************************************************************************/
-static void RunIntf( intf_thread_t *p_intf )
+static void *RunIntf( vlc_object_t *p_obj )
{
+ decoder_sys_t *p_intf = (decoder_sys_t *)p_obj;
int canc = vlc_savecancel();
vout_thread_t * p_vout = NULL;
if( InitThread( p_intf ) < 0 )
{
msg_Err( p_intf, "can't initialize CMML interface" );
- return;
+ return NULL;
}
#ifdef CMML_INTF_DEBUG
msg_Dbg( p_intf, "CMML intf initialized" );
/* find a video output if we currently don't have one */
if( p_vout == NULL )
{
- p_vout = vlc_object_find( p_intf->p_sys->p_input,
+ p_vout = vlc_object_find( p_intf->p_input,
VLC_OBJECT_VOUT, FIND_CHILD );
if( p_vout )
{
}
}
- vlc_mutex_lock( &p_intf->p_sys->lock );
+ vlc_mutex_lock( &p_intf->lock );
/*
* keyboard event
*/
- switch( p_intf->p_sys->i_key_action )
+ switch( p_intf->i_key_action )
{
case ACTIONID_NAV_ACTIVATE:
FollowAnchor( p_intf );
default:
break;
}
- p_intf->p_sys->i_key_action = 0;
- vlc_mutex_unlock( &p_intf->p_sys->lock );
+ p_intf->i_key_action = 0;
+ vlc_mutex_unlock( &p_intf->lock );
(void) DisplayPendingAnchor( p_intf, p_vout );
vlc_object_release( p_vout );
}
- vlc_object_release( p_intf->p_sys->p_input );
+ vlc_object_release( p_intf->p_input );
vlc_restorecancel( canc );
+ return NULL;
}
/*****************************************************************************
char *psz_description = NULL;
char *psz_url = NULL;
- intf_thread_t *p_primary_intf;
vlc_value_t val;
- p_cmml_decoder = p_intf->p_sys->p_cmml_decoder;
+ p_cmml_decoder = p_intf->p_cmml_decoder;
if( var_Get( p_cmml_decoder, "psz-current-anchor-description", &val )
!= VLC_SUCCESS )
{
return VLC_EGENERIC;
}
- vlc_mutex_lock( &p_intf->p_sys->lock );
+ vlc_mutex_lock( &p_intf->lock );
- p_intf->p_sys->p_input = p_input;
- p_intf->p_sys->p_cmml_decoder = p_cmml_decoder;
+ p_intf->p_input = p_input;
+ p_intf->p_cmml_decoder = p_cmml_decoder;
- p_intf->p_sys->i_key_action = 0;
+ p_intf->i_key_action = 0;
- vlc_mutex_unlock( &p_intf->p_sys->lock );
+ vlc_mutex_unlock( &p_intf->lock );
return VLC_SUCCESS;
}
intf_thread_t *p_intf = (intf_thread_t *)p_data;
- vlc_mutex_lock( &p_intf->p_sys->lock );
+ vlc_mutex_lock( &p_intf->lock );
/* FIXME: key presses might get lost here... */
- p_intf->p_sys->i_key_action = newval.i_int;
+ p_intf->i_key_action = newval.i_int;
- vlc_mutex_unlock( &p_intf->p_sys->lock );
+ vlc_mutex_unlock( &p_intf->lock );
return VLC_SUCCESS;
}
*****************************************************************************/
static void FollowAnchor ( intf_thread_t *p_intf )
{
- intf_sys_t *p_sys;
decoder_t *p_cmml_decoder;
char *psz_url = NULL;
vlc_value_t val;
msg_Dbg( p_intf, "User followed anchor" );
- p_sys = p_intf->p_sys;
- p_cmml_decoder = p_sys->p_cmml_decoder;
+ p_cmml_decoder = p_intf->p_cmml_decoder;
if( var_Get( p_cmml_decoder, "psz-current-anchor-url", &val ) ==
VLC_SUCCESS )
msg_Dbg( p_intf, "URL to load is \"%s\"", psz_uri_to_load );
#endif
- if( var_Get( p_intf->p_sys->p_input, "time", &time ) )
+ if( var_Get( p_intf->p_input, "time", &time ) )
{
msg_Dbg( p_intf, "couldn't get time from current clip" );
time.i_time = 0;
psz_url = xstrcat( psz_url, "?" );
/* jump back to 2 seconds before where we are now */
- i_seconds = GetCurrentTimeInSeconds( p_intf->p_sys->p_input ) - 2;
+ i_seconds = GetCurrentTimeInSeconds( p_intf->p_input ) - 2;
psz_seconds = GetTimedURIFragmentForTime( i_seconds < 0 ? 0 : i_seconds );
if( psz_seconds )
{
#include <vlc_common.h>
#include <vlc_plugin.h>
-#include <vlc_vout.h>
#include <vlc_codec.h>
#include <vlc_osd.h>
#include <vlc_input.h>
csri_rend *p_render;
struct csri_stream_ext *p_stream_ext;
- if( p_dec->fmt_in.i_codec != VLC_FOURCC('s','s','a',' ') )
+ if( p_dec->fmt_in.i_codec != VLC_CODEC_SSA )
return VLC_EGENERIC;
p_render = csri_renderer_default();
p_dec->fmt_in.p_extra ? strnlen( p_dec->fmt_in.p_extra, p_dec->fmt_in.i_extra ) : 0,
NULL);
p_dec->fmt_out.i_cat = SPU_ES;
- p_dec->fmt_out.i_codec = VLC_FOURCC('R','G','B','A');
+ p_dec->fmt_out.i_codec = VLC_CODEC_RGBA;
return VLC_SUCCESS;
}
/* XXX On x86 at least our RGBA is mapped to their BGRA
* TODO confirm that is the same on big endian cpu */
fmt = *p_fmt;
- fmt.i_chroma = VLC_FOURCC('R','G','B','A');
+ fmt.i_chroma = VLC_CODEC_RGBA;
fmt.i_width = fmt.i_visible_width;
fmt.i_height = fmt.i_visible_height;
fmt.i_bits_per_pixel = 0;
#include <vlc_common.h>
#include <vlc_plugin.h>
-#include <vlc_vout.h>
#include <vlc_codec.h>
#include "vlc_bits.h"
decoder_t *p_dec = (decoder_t*)p_this;
decoder_sys_t *p_sys;
- if( p_dec->fmt_in.i_codec != VLC_FOURCC( 'c','v','d',' ' ) )
- {
+ if( p_dec->fmt_in.i_codec != VLC_CODEC_CVD )
return VLC_EGENERIC;
- }
p_dec->p_sys = p_sys = malloc( sizeof( decoder_sys_t ) );
if( !p_sys )
p_dec->pf_packetize = Packetize;
p_dec->fmt_out.i_cat = SPU_ES;
- p_dec->fmt_out.i_codec = VLC_FOURCC('Y','U','V','P');
+ p_dec->fmt_out.i_codec = VLC_CODEC_YUVP;
return VLC_SUCCESS;
}
/* Create new SPU region */
memset( &fmt, 0, sizeof(video_format_t) );
- fmt.i_chroma = VLC_FOURCC('Y','U','V','P');
+ fmt.i_chroma = VLC_CODEC_YUVP;
fmt.i_aspect = VOUT_ASPECT_FACTOR;
fmt.i_width = fmt.i_visible_width = p_sys->i_width;
fmt.i_height = fmt.i_visible_height = p_sys->i_height;
#include <vlc_plugin.h>
#include <vlc_codec.h>
#include <vlc_sout.h>
-#include <vlc_vout.h>
#include <libdirac_encoder/dirac_encoder.h>
float f_tmp;
char *psz_tmp;
- if( p_enc->fmt_out.i_codec != VLC_FOURCC('d','r','a','c') &&
+ if( p_enc->fmt_out.i_codec != VLC_CODEC_DIRAC &&
!p_enc->b_force )
{
return VLC_EGENERIC;
p_enc->p_sys = p_sys;
p_enc->pf_encode_video = Encode;
- p_enc->fmt_out.i_codec = VLC_FOURCC('d','r','a','c');
+ p_enc->fmt_out.i_codec = VLC_CODEC_DIRAC;
p_enc->fmt_out.i_cat = VIDEO_ES;
if( ( p_sys->p_dts_fifo = block_FifoNew() ) == NULL )
if( !psz_tmp )
goto error;
else if( !strcmp( psz_tmp, "420" ) ) {
- p_enc->fmt_in.i_codec = VLC_FOURCC('I','4','2','0');
+ p_enc->fmt_in.i_codec = VLC_CODEC_I420;
p_enc->fmt_in.video.i_bits_per_pixel = 12;
p_sys->ctx.src_params.chroma = format420;
p_sys->i_buffer_in = p_enc->fmt_in.video.i_width * p_enc->fmt_in.video.i_height * 3 / 2;
}
else if( !strcmp( psz_tmp, "422" ) ) {
- p_enc->fmt_in.i_codec = VLC_FOURCC('I','4','2','2');
+ p_enc->fmt_in.i_codec = VLC_CODEC_I422;
p_enc->fmt_in.video.i_bits_per_pixel = 16;
p_sys->ctx.src_params.chroma = format422;
p_sys->i_buffer_in = p_enc->fmt_in.video.i_width * p_enc->fmt_in.video.i_height * 2;
}
else if( !strcmp( psz_tmp, "444" ) ) {
- p_enc->fmt_in.i_codec = VLC_FOURCC('I','4','4','4');
+ p_enc->fmt_in.i_codec = VLC_CODEC_I444;
p_enc->fmt_in.video.i_bits_per_pixel = 24;
p_sys->ctx.src_params.chroma = format444;
p_sys->i_buffer_in = p_enc->fmt_in.video.i_width * p_enc->fmt_in.video.i_height * 3;
#include <vlc_common.h>
#include <vlc_codec.h>
-#include <vlc_vout.h>
#ifndef WIN32
# define LOADER
#include <vlc_common.h>
#include <vlc_plugin.h>
#include <vlc_codec.h>
-#include <vlc_vout.h>
#include <vlc_aout.h>
#ifndef WIN32
static const codec_dll decoders_table[] =
{
/* WVC1 */
- { VLC_FOURCC('W','V','C','1'), "wvc1dmod.dll", &guid_wvc1 },
- { VLC_FOURCC('w','v','c','1'), "wvc1dmod.dll", &guid_wvc1 },
+ { VLC_CODEC_VC1, "wvc1dmod.dll", &guid_wvc1 },
/* WMV3 */
- { VLC_FOURCC('W','M','V','3'), "wmv9dmod.dll", &guid_wmv9 },
- { VLC_FOURCC('w','m','v','3'), "wmv9dmod.dll", &guid_wmv9 },
- { VLC_FOURCC('W','M','V','P'), "wmv9dmod.dll", &guid_wmv9 },
- { VLC_FOURCC('w','m','v','p'), "wmv9dmod.dll", &guid_wmv9 },
+ { VLC_CODEC_WMV3, "wmv9dmod.dll", &guid_wmv9 },
/* WMV2 */
- { VLC_FOURCC('W','M','V','2'), "wmvdmod.dll", &guid_wmv },
- { VLC_FOURCC('w','m','v','2'), "wmvdmod.dll", &guid_wmv },
+ { VLC_CODEC_WMV2, "wmvdmod.dll", &guid_wmv },
/* WMV1 */
- { VLC_FOURCC('W','M','V','1'), "wmvdmod.dll", &guid_wmv },
- { VLC_FOURCC('w','m','v','1'), "wmvdmod.dll", &guid_wmv },
+ { VLC_CODEC_WMV1, "wmvdmod.dll", &guid_wmv },
/* Screen codecs */
{ VLC_FOURCC('M','S','S','2'), "wmsdmod.dll", &guid_wms },
{ VLC_FOURCC('m','s','s','2'), "wmsdmod.dll", &guid_wms },
{ VLC_FOURCC('M','S','S','1'), "wmsdmod.dll", &guid_wms },
{ VLC_FOURCC('m','s','s','1'), "wmsdmod.dll", &guid_wms },
/* Windows Media Video Adv */
- { VLC_FOURCC('W','M','V','A'), "wmvadvd.dll", &guid_wmva },
- { VLC_FOURCC('w','m','v','a'), "wmvadvd.dll", &guid_wmva },
- { VLC_FOURCC('W','V','P','2'), "wmvadvd.dll", &guid_wmva },
- { VLC_FOURCC('w','v','p','2'), "wmvadvd.dll", &guid_wmva },
+ { VLC_CODEC_WMVA, "wmvadvd.dll", &guid_wmva },
/* WMA 3 */
- { VLC_FOURCC('W','M','A','3'), "wma9dmod.dll", &guid_wma9 },
- { VLC_FOURCC('w','m','a','3'), "wma9dmod.dll", &guid_wma9 },
- { VLC_FOURCC('W','M','A','P'), "wma9dmod.dll", &guid_wma9 },
- { VLC_FOURCC('w','m','a','p'), "wma9dmod.dll", &guid_wma9 },
- { VLC_FOURCC('W','M','A','L'), "wma9dmod.dll", &guid_wma9 },
- { VLC_FOURCC('w','m','a','l'), "wma9dmod.dll", &guid_wma9 },
+ { VLC_CODEC_WMAP, "wma9dmod.dll", &guid_wma9 },
+ { VLC_CODEC_WMAL, "wma9dmod.dll", &guid_wma9 },
+
/* WMA 2 */
- { VLC_FOURCC('W','M','A','2'), "wma9dmod.dll", &guid_wma9 },
- { VLC_FOURCC('w','m','a','2'), "wma9dmod.dll", &guid_wma9 },
+ { VLC_CODEC_WMA2, "wma9dmod.dll", &guid_wma9 },
/* WMA Speech */
- { VLC_FOURCC('W','M','A','S'), "wmspdmod.dll", &guid_wma },
- { VLC_FOURCC('w','m','a','s'), "wmspdmod.dll", &guid_wma },
+ { VLC_CODEC_WMAS, "wmspdmod.dll", &guid_wma },
/* */
{ 0, NULL, NULL }
static const codec_dll encoders_table[] =
{
/* WMV3 */
- { VLC_FOURCC('W','M','V','3'), "wmvdmoe2.dll", &guid_wmv_enc2 },
- { VLC_FOURCC('w','m','v','3'), "wmvdmoe2.dll", &guid_wmv_enc2 },
+ { VLC_CODEC_WMV3, "wmvdmoe2.dll", &guid_wmv_enc2 },
/* WMV2 */
- { VLC_FOURCC('W','M','V','2'), "wmvdmoe2.dll", &guid_wmv_enc2 },
- { VLC_FOURCC('w','m','v','2'), "wmvdmoe2.dll", &guid_wmv_enc2 },
+ { VLC_CODEC_WMV2, "wmvdmoe2.dll", &guid_wmv_enc2 },
/* WMV1 */
- { VLC_FOURCC('W','M','V','1'), "wmvdmoe2.dll", &guid_wmv_enc2 },
- { VLC_FOURCC('w','m','v','1'), "wmvdmoe2.dll", &guid_wmv_enc2 },
+ { VLC_CODEC_WMV1, "wmvdmoe2.dll", &guid_wmv_enc2 },
/* WMA 3 */
- { VLC_FOURCC('W','M','A','3'), "wmadmoe.dll", &guid_wma_enc },
- { VLC_FOURCC('w','m','a','3'), "wmadmoe.dll", &guid_wma_enc },
+ { VLC_CODEC_WMAP, "wmadmoe.dll", &guid_wma_enc },
/* WMA 2 */
- { VLC_FOURCC('W','M','A','2'), "wmadmoe.dll", &guid_wma_enc },
- { VLC_FOURCC('w','m','a','2'), "wmadmoe.dll", &guid_wma_enc },
+ { VLC_CODEC_WMA2, "wmadmoe.dll", &guid_wma_enc },
/* */
{ 0, NULL, NULL }
dmo_input_type.majortype = MEDIATYPE_Audio;
dmo_input_type.subtype = dmo_input_type.majortype;
- dmo_input_type.subtype.Data1 = p_dec->fmt_in.i_codec;
+ dmo_input_type.subtype.Data1 = p_dec->fmt_in.i_original_fourcc ?: p_dec->fmt_in.i_codec;
fourcc_to_wf_tag( p_dec->fmt_in.i_codec, &i_tag );
if( i_tag ) dmo_input_type.subtype.Data1 = i_tag;
memcpy( &p_vih[1], p_dec->fmt_in.p_extra, p_dec->fmt_in.i_extra );
p_bih = &p_vih->bmiHeader;
- p_bih->biCompression = p_dec->fmt_in.i_codec;
+ p_bih->biCompression = p_dec->fmt_in.i_original_fourcc ?: p_dec->fmt_in.i_codec;
p_bih->biWidth = p_dec->fmt_in.video.i_width;
p_bih->biHeight = p_dec->fmt_in.video.i_height;
p_bih->biBitCount = p_dec->fmt_in.video.i_bits_per_pixel;
dmo_input_type.majortype = MEDIATYPE_Video;
dmo_input_type.subtype = dmo_input_type.majortype;
- dmo_input_type.subtype.Data1 = p_dec->fmt_in.i_codec;
+ dmo_input_type.subtype.Data1 = p_dec->fmt_in.i_original_fourcc ?: p_dec->fmt_in.i_codec;
dmo_input_type.formattype = FORMAT_VideoInfo;
dmo_input_type.bFixedSizeSamples = 0;
dmo_input_type.bTemporalCompression = 1;
if( p_dec->fmt_in.i_cat == AUDIO_ES )
{
/* Setup the format */
- p_dec->fmt_out.i_codec = AOUT_FMT_S16_NE;
+ p_dec->fmt_out.i_codec = VLC_CODEC_S16N;
p_dec->fmt_out.audio.i_rate = p_dec->fmt_in.audio.i_rate;
p_dec->fmt_out.audio.i_channels = p_dec->fmt_in.audio.i_channels;
p_dec->fmt_out.audio.i_bitspersample = 16;//p_dec->fmt_in.audio.i_bitspersample; We request 16
{
BITMAPINFOHEADER *p_bih;
DMO_MEDIA_TYPE mt;
- unsigned i_chroma = VLC_FOURCC('Y','U','Y','2');
+ unsigned i_chroma = VLC_CODEC_YUYV;
int i_planes = 1, i_bpp = 16;
int i = 0;
/* Find out which chroma to use */
while( !p_dmo->vt->GetOutputType( p_dmo, 0, i++, &mt ) )
{
- if( mt.subtype.Data1 == VLC_FOURCC('Y','V','1','2') )
+ if( mt.subtype.Data1 == VLC_CODEC_YV12 )
{
i_chroma = mt.subtype.Data1;
i_planes = 3; i_bpp = 12;
DMOFreeMediaType( &mt );
}
- p_dec->fmt_out.i_codec = i_chroma == VLC_FOURCC('Y','V','1','2') ?
- VLC_FOURCC('I','4','2','0') : i_chroma;
+ p_dec->fmt_out.i_codec = i_chroma == VLC_CODEC_YV12 ?
+ VLC_CODEC_I420 : i_chroma;
p_dec->fmt_out.video.i_width = p_dec->fmt_in.video.i_width;
p_dec->fmt_out.video.i_height = p_dec->fmt_in.video.i_height;
p_dec->fmt_out.video.i_bits_per_pixel = i_bpp;
uint16_t i_tag;
dmo_partial_type.type = MEDIATYPE_Audio;
dmo_partial_type.subtype = dmo_partial_type.type;
- dmo_partial_type.subtype.Data1 = p_fmt->i_codec;
+ dmo_partial_type.subtype.Data1 = p_fmt->i_original_fourcc ?: p_fmt->i_codec;
fourcc_to_wf_tag( p_fmt->i_codec, &i_tag );
if( i_tag ) dmo_partial_type.subtype.Data1 = i_tag;
}
{
dmo_partial_type.type = MEDIATYPE_Video;
dmo_partial_type.subtype = dmo_partial_type.type;
- dmo_partial_type.subtype.Data1 = p_fmt->i_codec;
+ dmo_partial_type.subtype.Data1 = p_fmt->i_original_fourcc ?: p_fmt->i_codec;
}
#ifndef LOADER
memset( &vih, 0, sizeof(VIDEOINFOHEADER) );
p_bih = &vih.bmiHeader;
- p_bih->biCompression = VLC_FOURCC('I','4','2','0');
+ p_bih->biCompression = VLC_CODEC_I420;
p_bih->biWidth = p_enc->fmt_in.video.i_width;
p_bih->biHeight = p_enc->fmt_in.video.i_height;
p_bih->biBitCount = p_enc->fmt_in.video.i_bits_per_pixel;
i_err = p_dmo->vt->SetOutputType( p_dmo, 0, &dmo_type, 0 );
p_vih = (VIDEOINFOHEADER *)dmo_type.pbFormat;
- p_enc->fmt_in.i_codec = VLC_FOURCC('I','4','2','0');
+ p_enc->fmt_in.i_codec = VLC_CODEC_I420;
DMOFreeMediaType( &dmo_type );
if( i_err )
fourcc_to_wf_tag( p_enc->fmt_out.i_codec, &i_tag );
if( i_tag == 0 ) return VLC_EGENERIC;
- p_enc->fmt_in.i_codec = AOUT_FMT_S16_NE;
+ p_enc->fmt_in.i_codec = VLC_CODEC_S16N;
p_enc->fmt_in.audio.i_bitspersample = 16;
/* We first need to choose an output type from the predefined
decoder_t *p_dec = (decoder_t*)p_this;
decoder_sys_t *p_sys;
- if( p_dec->fmt_in.i_codec != VLC_FOURCC('d','t','s',' ') &&
- p_dec->fmt_in.i_codec != VLC_FOURCC('d','t','s','b') )
- {
+ if( p_dec->fmt_in.i_codec != VLC_CODEC_DTS )
return VLC_EGENERIC;
- }
/* Allocate the memory needed to store the decoder's structure */
if( ( p_dec->p_sys = p_sys = malloc(sizeof(*p_sys)) ) == NULL )
/* Set output properties */
p_dec->fmt_out.i_cat = AUDIO_ES;
- p_dec->fmt_out.i_codec = VLC_FOURCC('d','t','s',' ');
+ p_dec->fmt_out.i_codec = VLC_CODEC_DTS;
p_dec->fmt_out.audio.i_rate = 0; /* So end_date gets initialized */
/* Set callback */
#include <vlc_common.h>
#include <vlc_plugin.h>
-#include <vlc_vout.h>
#include <vlc_codec.h>
#include <vlc_sout.h>
vlc_value_t val;
int i_posx, i_posy;
- if( p_dec->fmt_in.i_codec != VLC_FOURCC('d','v','b','s') )
+ if( p_dec->fmt_in.i_codec != VLC_CODEC_DVBS )
{
return VLC_EGENERIC;
}
continue;
}
- /* FIXME: don't create a subpicture region with VLC_FOURCC YUVP
+ /* FIXME: don't create a subpicture region with VLC CODEC YUVP
* when it actually is a TEXT region */
/* Create new SPU region */
memset( &fmt, 0, sizeof(video_format_t) );
- fmt.i_chroma = VLC_FOURCC('Y','U','V','P');
+ fmt.i_chroma = VLC_CODEC_YUVP;
fmt.i_aspect = 0; /* 0 means use aspect ratio of background video */
fmt.i_width = fmt.i_visible_width = p_region->i_width;
fmt.i_height = fmt.i_visible_height = p_region->i_height;
/* Create new SPU region */
memset( &fmt, 0, sizeof(video_format_t) );
- fmt.i_chroma = VLC_FOURCC('T','E','X','T');
+ fmt.i_chroma = VLC_CODEC_TEXT;
fmt.i_aspect = VOUT_ASPECT_FACTOR;
fmt.i_width = fmt.i_visible_width = p_region->i_width;
fmt.i_height = fmt.i_visible_height = p_region->i_height;
encoder_sys_t *p_sys;
vlc_value_t val;
- if( ( p_enc->fmt_out.i_codec != VLC_FOURCC('d','v','b','s') ) &&
+ if( ( p_enc->fmt_out.i_codec != VLC_CODEC_DVBS ) &&
!p_enc->b_force )
{
return VLC_EGENERIC;
p_enc->p_sys = p_sys;
p_enc->pf_encode_sub = Encode;
- p_enc->fmt_out.i_codec = VLC_FOURCC('d','v','b','s');
+ p_enc->fmt_out.i_codec = VLC_CODEC_DVBS;
p_enc->fmt_out.subs.dvb.i_id = 1 << 16 | 1;
config_ChainParse( p_enc, ENC_CFG_PREFIX, ppsz_enc_options, p_enc->p_cfg );
return VLC_SUCCESS;
}
-/* FIXME: this routine is a hack to convert VLC_FOURCC('Y','U','V','A')
- * into VLC_FOURCC('Y','U','V','P')
+/* FIXME: this routine is a hack to convert VLC_CODEC_YUVA
+ * into VLC_CODEC_YUVP
*/
static subpicture_t *YuvaYuvp( subpicture_t *p_subpic )
{
#ifdef DEBUG_DVBSUB
msg_Dbg( p_enc, "YuvaYuvp: i_pixels=%d, i_iterator=%d", i_pixels, i_iterator );
#endif
- p_fmt->i_chroma = VLC_FOURCC('Y','U','V','P');
+ p_fmt->i_chroma = VLC_CODEC_YUVP;
p_fmt->p_palette = (video_palette_t *) malloc( sizeof( video_palette_t ) );
if( !p_fmt->p_palette ) break;
p_fmt->p_palette->i_entries = 0;
if( !p_subpic || !p_subpic->p_region ) return NULL;
- /* FIXME: this is a hack to convert VLC_FOURCC('Y','U','V','A') into
- * VLC_FOURCC('Y','U','V','P')
+ /* FIXME: this is a hack to convert VLC_CODEC_YUVA into
+ * VLC_CODEC_YUVP
*/
p_region = p_subpic->p_region;
- if( p_region->fmt.i_chroma == VLC_FOURCC('Y','U','V','A') )
+ if( p_region->fmt.i_chroma == VLC_CODEC_YUVA )
{
p_temp = YuvaYuvp( p_subpic );
if( !p_temp )
/* Sanity check */
if( !p_region ) return NULL;
- if( ( p_region->fmt.i_chroma != VLC_FOURCC('T','E','X','T') ) &&
- ( p_region->fmt.i_chroma != VLC_FOURCC('Y','U','V','P') ) )
+ if( ( p_region->fmt.i_chroma != VLC_CODEC_TEXT ) &&
+ ( p_region->fmt.i_chroma != VLC_CODEC_YUVP ) )
{
char psz_fourcc[5];
memset( &psz_fourcc, 0, sizeof( psz_fourcc ) );
/* Sanity check */
if( !p_region ) return;
- if( p_region->fmt.i_chroma == VLC_FOURCC('Y','U','V','P') )
+ if( p_region->fmt.i_chroma == VLC_CODEC_YUVP )
{
p_pal = p_region->fmt.p_palette;
}
{
int i_entries = 4, i_depth = 0x1, i_bg = 0;
bool b_text =
- ( p_region->fmt.i_chroma == VLC_FOURCC('T','E','X','T') );
+ ( p_region->fmt.i_chroma == VLC_CODEC_TEXT );
if( !b_text )
{
/* object coding method */
switch( p_region->fmt.i_chroma )
{
- case VLC_FOURCC( 'Y','U','V','P' ):
+ case VLC_CODEC_YUVP:
bs_write( s, 2, 0 );
break;
- case VLC_FOURCC( 'T','E','X','T' ):
+ case VLC_CODEC_TEXT:
bs_write( s, 2, 1 );
break;
default:
bs_write( s, 1, 0 ); /* non modifying color flag */
bs_write( s, 1, 0 ); /* Reserved */
- if( p_region->fmt.i_chroma == VLC_FOURCC( 'T','E','X','T' ) )
+ if( p_region->fmt.i_chroma == VLC_CODEC_TEXT )
{
int i_size, i;
unsigned int i_line;
/* Sanity check */
- if( p_region->fmt.i_chroma != VLC_FOURCC('Y','U','V','P') ) return;
+ if( p_region->fmt.i_chroma != VLC_CODEC_YUVP ) return;
/* Encode line by line */
for( i_line = !b_top; i_line < p_region->fmt.i_visible_height;
decoder_sys_t *p_sys = p_dec->p_sys;
faacDecConfiguration *cfg;
- if( p_dec->fmt_in.i_codec != VLC_FOURCC('m','p','4','a') )
+ if( p_dec->fmt_in.i_codec != VLC_CODEC_MP4A )
{
return VLC_EGENERIC;
}
p_dec->fmt_out.i_cat = AUDIO_ES;
if (vlc_CPU() & CPU_CAPABILITY_FPU)
- p_dec->fmt_out.i_codec = VLC_FOURCC('f','l','3','2');
+ p_dec->fmt_out.i_codec = VLC_CODEC_FL32;
else
- p_dec->fmt_out.i_codec = AOUT_FMT_S16_NE;
+ p_dec->fmt_out.i_codec = VLC_CODEC_S16N;
p_dec->pf_decode_audio = DecodeBlock;
p_dec->fmt_out.audio.i_physical_channels =
var_AddCallback( p_dec, "fake-file-reload", FakeCallback , p_dec );
psz_chroma = var_CreateGetString( p_dec, "fake-chroma" );
- if( strlen( psz_chroma ) != 4 )
+ fmt_out.i_chroma = vlc_fourcc_GetCodecFromString( VIDEO_ES, psz_chroma );
+ if( !fmt_out.i_chroma )
{
msg_Warn( p_dec, "Invalid chroma (%s). Using I420.", psz_chroma );
- fmt_out.i_chroma = VLC_FOURCC('I','4','2','0');
- }
- else
- {
- fmt_out.i_chroma = VLC_FOURCC( psz_chroma[0],
- psz_chroma[1],
- psz_chroma[2],
- psz_chroma[3] );
+ fmt_out.i_chroma = VLC_CODEC_I420;
}
free( psz_chroma );
decoder_t *p_dec = (decoder_t*)p_this;
decoder_sys_t *p_sys;
- if( p_dec->fmt_in.i_codec != VLC_FOURCC('f','l','a','c') )
+ if( p_dec->fmt_in.i_codec != VLC_CODEC_FLAC )
{
return VLC_EGENERIC;
}
/* Set output properties */
p_dec->fmt_out.i_cat = AUDIO_ES;
- p_dec->fmt_out.i_codec = VLC_FOURCC('f','l','3','2');
+ p_dec->fmt_out.i_codec = VLC_CODEC_FL32;
/* Set callbacks */
#ifdef USE_LIBFLAC
p_dec->pf_packetize = PacketizeBlock;
/* Set output properties */
- p_dec->fmt_out.i_codec = VLC_FOURCC('f','l','a','c');
+ p_dec->fmt_out.i_codec = VLC_CODEC_FLAC;
if( i_ret != VLC_SUCCESS )
{
if( !p_sys->b_stream_info ) return;
- if( p_dec->fmt_out.i_codec == VLC_FOURCC('f','l','a','c') )
+ if( p_dec->fmt_out.i_codec == VLC_CODEC_FLAC )
{
p_dec->fmt_out.i_extra = p_dec->fmt_in.i_extra;
p_dec->fmt_out.p_extra =
switch( metadata->data.stream_info.bits_per_sample )
{
case 8:
- p_dec->fmt_out.i_codec = VLC_FOURCC('s','8',' ',' ');
+ p_dec->fmt_out.i_codec = VLC_CODEC_S8;
break;
case 16:
- p_dec->fmt_out.i_codec = AOUT_FMT_S16_NE;
+ p_dec->fmt_out.i_codec = VLC_CODEC_S16N;
break;
case 24:
- p_dec->fmt_out.i_codec = AOUT_FMT_S24_NE;
+ p_dec->fmt_out.i_codec = VLC_CODEC_S24N;
break;
default:
msg_Dbg( p_dec, "strange bit/sample value: %d",
metadata->data.stream_info.bits_per_sample );
- p_dec->fmt_out.i_codec = VLC_FOURCC('f','i','3','2');
+ p_dec->fmt_out.i_codec = VLC_CODEC_FI32;
break;
}
}
encoder_t *p_enc = (encoder_t *)p_this;
encoder_sys_t *p_sys;
- if( p_enc->fmt_out.i_codec != VLC_FOURCC('f','l','a','c') &&
+ if( p_enc->fmt_out.i_codec != VLC_CODEC_FLAC &&
!p_enc->b_force )
{
return VLC_EGENERIC;
return VLC_ENOMEM;
p_enc->p_sys = p_sys;
p_enc->pf_encode_audio = Encode;
- p_enc->fmt_out.i_codec = VLC_FOURCC('f','l','a','c');
+ p_enc->fmt_out.i_codec = VLC_CODEC_FLAC;
p_sys->i_headers = 0;
p_sys->p_buffer = 0;
FLAC__stream_encoder_set_sample_rate( p_sys->p_flac,
p_enc->fmt_in.audio.i_rate );
FLAC__stream_encoder_set_bits_per_sample( p_sys->p_flac, 16 );
- p_enc->fmt_in.i_codec = AOUT_FMT_S16_NE;
+ p_enc->fmt_in.i_codec = VLC_CODEC_S16N;
/* Get and store the STREAMINFO metadata block as a p_extra */
p_sys->p_chain = 0;
decoder_t *p_dec = (decoder_t *)p_this;
decoder_sys_t *p_sys;
- if (p_dec->fmt_in.i_codec != VLC_FOURCC ('M', 'I', 'D', 'I'))
+ if (p_dec->fmt_in.i_codec != VLC_CODEC_MIDI)
return VLC_EGENERIC;
char *font_path = var_CreateGetNonEmptyString (p_this, "soundfont");
p_dec->fmt_out.audio.i_original_channels =
p_dec->fmt_out.audio.i_physical_channels =
AOUT_CHAN_LEFT | AOUT_CHAN_RIGHT;
- p_dec->fmt_out.i_codec = VLC_FOURCC('f', 'l', '3', '2');
+ p_dec->fmt_out.i_codec = VLC_CODEC_FL32;
p_dec->fmt_out.audio.i_bitspersample = 32;
p_dec->pf_decode_audio = DecodeBlock;
}
/* Set output properties */
- //p_dec->fmt_out.i_codec = VLC_FOURCC('R','G','B','A');
- p_dec->fmt_out.i_codec = VLC_FOURCC('R','V','2','4');
+ //p_dec->fmt_out.i_codec = VLC_CODEC_RGBA;
+ p_dec->fmt_out.i_codec = VLC_CODEC_RGB24;
p_dec->fmt_out.video.i_width = p_dec->p_sys->i_width;
p_dec->fmt_out.video.i_height = p_dec->p_sys->i_height;
p_dec->fmt_out.video.i_aspect = VOUT_ASPECT_FACTOR * p_dec->p_sys->i_width / p_dec->p_sys->i_height;
if( p_sys->p_pic != NULL )
picture_Release( p_sys->p_pic );
p_sys->p_pic = decoder_NewPicture( p_dec );
- p_sys->p_pic = p_dec->pf_vout_buffer_new( p_dec );
p_sys->p_pic->b_force = true;
p_sys->p_pic->p->i_pitch = p_dec->p_sys->i_pitch;
p_sys->p_pic->date = p_block->i_pts > 0 ? p_block->i_pts : p_block->i_dts;
decoder_sys_t *p_sys;
int i_ret;
- if( p_dec->fmt_in.i_codec != VLC_FOURCC('k','a','t','e') )
+ if( p_dec->fmt_in.i_codec != VLC_CODEC_KATE )
{
return VLC_EGENERIC;
}
if( i_ret == VLC_SUCCESS )
{
p_dec->p_sys->b_packetizer = true;
- p_dec->fmt_out.i_codec = VLC_FOURCC( 'k', 'a', 't', 'e' );
+ p_dec->fmt_out.i_codec = VLC_CODEC_KATE;
}
return i_ret;
/* create a full frame region - this will also tell Tiger the size of the frame */
fmt = *p_fmt;
- fmt.i_chroma = VLC_FOURCC('R','G','B','A');
+ fmt.i_chroma = VLC_CODEC_RGBA;
fmt.i_width = fmt.i_visible_width;
fmt.i_height = fmt.i_visible_height;
fmt.i_bits_per_pixel = 0;
/* create a separate region for the bitmap */
memset( &fmt, 0, sizeof(video_format_t) );
- fmt.i_chroma = VLC_FOURCC('Y','U','V','P');
+ fmt.i_chroma = VLC_CODEC_YUVP;
fmt.i_aspect = 0;
fmt.i_width = fmt.i_visible_width = ev->bitmap->width;
fmt.i_height = fmt.i_visible_height = ev->bitmap->height;
}
/* text region */
- fmt.i_chroma = VLC_FOURCC('T','E','X','T');
+ fmt.i_chroma = VLC_CODEC_TEXT;
fmt.i_aspect = 0;
fmt.i_width = fmt.i_height = 0;
fmt.i_x_offset = fmt.i_y_offset = 0;
#include <vlc_common.h>
#include <vlc_plugin.h>
-#include <vlc_vout.h>
#include <vlc_codec.h>
#include <vlc_osd.h>
#include <vlc_input.h>
decoder_sys_t *p_sys;
ass_track_t *p_track;
- if( p_dec->fmt_in.i_codec != VLC_FOURCC('s','s','a',' ') )
+ if( p_dec->fmt_in.i_codec != VLC_CODEC_SSA )
return VLC_EGENERIC;
p_dec->pf_decode_sub = DecodeBlock;
vlc_mutex_unlock( &libass_lock );
p_dec->fmt_out.i_cat = SPU_ES;
- p_dec->fmt_out.i_codec = VLC_FOURCC('R','G','B','A');
+ p_dec->fmt_out.i_codec = VLC_CODEC_RGBA;
return VLC_SUCCESS;
}
/* */
fmt = *p_fmt;
- fmt.i_chroma = VLC_FOURCC('R','G','B','A');
+ fmt.i_chroma = VLC_CODEC_RGBA;
fmt.i_width = fmt.i_visible_width;
fmt.i_height = fmt.i_visible_height;
fmt.i_bits_per_pixel = 0;
#include <vlc_common.h>
#include <vlc_plugin.h>
-#include <vlc_vout.h>
#include <vlc_codec.h>
#include <vlc_block_helper.h>
#include "../codec/cc.h"
decoder_sys_t *p_sys;
uint32_t i_accel = 0;
- if( p_dec->fmt_in.i_codec != VLC_FOURCC('m','p','g','v') &&
- p_dec->fmt_in.i_codec != VLC_FOURCC('m','p','g','1') &&
- /* Pinnacle hardware-mpeg1 */
- p_dec->fmt_in.i_codec != VLC_FOURCC('P','I','M','1') &&
- p_dec->fmt_in.i_codec != VLC_FOURCC('m','p','2','v') &&
- p_dec->fmt_in.i_codec != VLC_FOURCC('m','p','g','2') &&
- p_dec->fmt_in.i_codec != VLC_FOURCC('h','d','v','2') )
- {
+ if( p_dec->fmt_in.i_codec != VLC_CODEC_MPGV )
return VLC_EGENERIC;
+
+ /* Select onl recognized original format (standard mpeg video) */
+ switch( p_dec->fmt_in.i_original_fourcc )
+ {
+ case VLC_FOURCC('m','p','g','1'):
+ case VLC_FOURCC('m','p','g','2'):
+ case VLC_FOURCC('m','p','g','v'):
+ case VLC_FOURCC('P','I','M','1'):
+ case VLC_FOURCC('h','d','v','2'):
+ break;
+ default:
+ if( p_dec->fmt_in.i_original_fourcc )
+ return VLC_EGENERIC;
+ break;
}
/* Allocate the memory needed to store the decoder's structure */
p_dec->fmt_out.i_codec =
( p_sys->p_info->sequence->chroma_height <
p_sys->p_info->sequence->height ) ?
- VLC_FOURCC('I','4','2','0') : VLC_FOURCC('I','4','2','2');
+ VLC_CODEC_I420 : VLC_CODEC_I422;
/* Get a new picture */
p_pic = decoder_NewPicture( p_dec );
switch( p_dec->fmt_in.i_codec )
{
/* DVD LPCM */
- case VLC_FOURCC('l','p','c','m'):
- case VLC_FOURCC('l','p','c','b'):
+ case VLC_CODEC_DVD_LPCM:
b_dvd = true;
break;
/* BD LPCM */
- case VLC_FOURCC('b','p','c','m'):
+ case VLC_CODEC_BD_LPCM:
b_dvd = false;
break;
default:
if( b_packetizer )
{
- p_dec->fmt_out.i_codec = b_dvd ? VLC_FOURCC('l','p','c','m') : VLC_FOURCC('b','p','c','m');
+ p_dec->fmt_out.i_codec = b_dvd ? VLC_CODEC_DVD_LPCM : VLC_CODEC_BD_LPCM;
}
else
{
{
case 24:
case 20:
- p_dec->fmt_out.i_codec = VLC_FOURCC('s','2','4','b');
+ p_dec->fmt_out.i_codec = VLC_CODEC_S24B;
p_dec->fmt_out.audio.i_bitspersample = 24;
break;
default:
- p_dec->fmt_out.i_codec = VLC_FOURCC('s','1','6','b');
+ p_dec->fmt_out.i_codec = VLC_CODEC_S16B;
p_dec->fmt_out.audio.i_bitspersample = 16;
break;
}
/* */
if( i_bits == 16 )
{
- p_dec->fmt_out.i_codec = VLC_FOURCC('s','1','6','b');
+ p_dec->fmt_out.i_codec = VLC_CODEC_S16B;
p_dec->fmt_out.audio.i_bitspersample = 16;
}
else
{
- p_dec->fmt_out.i_codec = VLC_FOURCC('s','2','4','b');
+ p_dec->fmt_out.i_codec = VLC_CODEC_S24B;
p_dec->fmt_out.audio.i_bitspersample = 24;
}
#include <vlc_common.h>
#include <vlc_plugin.h>
#include <vlc_codec.h>
-#include <vlc_vout.h>
#include <vlc_block.h>
#include <p64/p64.h>
switch( p_dec->fmt_in.i_codec )
{
/* Planar YUV */
- case VLC_FOURCC('h','2','6','1'):
- case VLC_FOURCC('H','2','6','1'):
+ case VLC_CODEC_H261:
break;
default:
/* Set output properties */
p_dec->fmt_out.i_cat = VIDEO_ES;
- p_dec->fmt_out.i_codec = VLC_FOURCC('I','4','2','0');
+ p_dec->fmt_out.i_codec = VLC_CODEC_I420;
/* Set callbacks */
p_dec->pf_decode_video = (picture_t *(*)(decoder_t *, block_t **))
{
msg_Dbg( p_dec, "video size is perhaps %dx%d", i_width,
i_height);
- vout_InitFormat( &p_dec->fmt_out.video, VLC_FOURCC('I','4','2','0'),
- i_width, i_height,
- VOUT_ASPECT_FACTOR * i_width / i_height );
+ video_format_Setup( &p_dec->fmt_out.video, VLC_CODEC_I420,
+ i_width, i_height,
+ VOUT_ASPECT_FACTOR * i_width / i_height );
p_sys->b_inited = true;
}
p_pic = NULL;
decoder_t *p_dec = (decoder_t*)p_this;
decoder_sys_t *p_sys;
- if( p_dec->fmt_in.i_codec != VLC_FOURCC('m','p','g','a') )
+ if( p_dec->fmt_in.i_codec != VLC_CODEC_MPGA )
{
return VLC_EGENERIC;
}
/* Set output properties */
p_dec->fmt_out.i_cat = AUDIO_ES;
- p_dec->fmt_out.i_codec = VLC_FOURCC('m','p','g','a');
+ p_dec->fmt_out.i_codec = VLC_CODEC_MPGA;
p_dec->fmt_out.audio.i_rate = 0; /* So end_date gets initialized */
/* Set callback */
#include <vlc_common.h>
#include <vlc_plugin.h>
#include <vlc_codec.h>
-#include <vlc_vout.h>
#include <png.h>
/*****************************************************************************
decoder_t *p_dec = (decoder_t*)p_this;
decoder_sys_t *p_sys;
- if( p_dec->fmt_in.i_codec != VLC_FOURCC('p','n','g',' ') &&
+ if( p_dec->fmt_in.i_codec != VLC_CODEC_PNG &&
p_dec->fmt_in.i_codec != VLC_FOURCC('M','P','N','G') )
{
return VLC_EGENERIC;
/* Set output properties */
p_dec->fmt_out.i_cat = VIDEO_ES;
- p_dec->fmt_out.i_codec = VLC_FOURCC('R','G','B','A');
+ p_dec->fmt_out.i_codec = VLC_CODEC_RGBA;
/* Set callbacks */
p_dec->pf_decode_video = DecodeBlock;
if( p_sys->b_error ) goto error;
/* Set output properties */
- p_dec->fmt_out.i_codec = VLC_FOURCC('R','G','B','A');
+ p_dec->fmt_out.i_codec = VLC_CODEC_RGBA;
p_dec->fmt_out.video.i_width = i_width;
p_dec->fmt_out.video.i_height = i_height;
p_dec->fmt_out.video.i_aspect = VOUT_ASPECT_FACTOR * i_width / i_height;
}
else if( !(i_color_type & PNG_COLOR_MASK_ALPHA) )
{
- p_dec->fmt_out.i_codec = VLC_FOURCC('R','V','2','4');
+ p_dec->fmt_out.i_codec = VLC_CODEC_RGB24;
}
/* Get a new picture */
#include <vlc_common.h>
#include <vlc_plugin.h>
#include <vlc_aout.h>
-#include <vlc_vout.h>
#include <vlc_codec.h>
#if !defined (__APPLE__) && !defined(WIN32)
switch( p_dec->fmt_in.i_codec )
{
- case VLC_FOURCC('h','2','6','4'): /* H.264 */
- case VLC_FOURCC('c','v','i','d'): /* Cinepak */
+ case VLC_CODEC_H264:
+ case VLC_CODEC_CINEPAK:
case VLC_FOURCC('I','V','4','1'): /* Indeo Video IV */
case VLC_FOURCC('i','v','4','1'): /* dto. */
#ifdef __APPLE__
case VLC_FOURCC('p','x','l','t'): /* Pixlet */
#endif
- case VLC_FOURCC('d','v','1','n'): /* DVC Pro 100 NTSC */
- case VLC_FOURCC('d','v','1','p'): /* DVC Pro 100 PAL */
- case VLC_FOURCC('d','v','h','p'): /* DVC PRO HD 720p */
- case VLC_FOURCC('d','v','h','6'): /* DVC PRO HD 1080i 60 */
- case VLC_FOURCC('d','v','h','5'): /* DVC PRO HD 1080i 50 */
-
- case VLC_FOURCC('S','V','Q','3'): /* Sorenson v3 */
- /* case VLC_FOURCC('S','V','Q','1'): Sorenson v1
+ case VLC_CODEC_DV:
+ case VLC_CODEC_SVQ3: /* Sorenson v3 */
+ /* case VLC_CODEC_SVQ1: Sorenson v1
case VLC_FOURCC('Z','y','G','o'):
case VLC_FOURCC('V','P','3','1'):
case VLC_FOURCC('3','I','V','1'): */
- case VLC_FOURCC('r','l','e',' '): /* QuickTime animation (RLE) */
- case VLC_FOURCC('r','p','z','a'): /* QuickTime Apple Video */
- case VLC_FOURCC('a','z','p','r'): /* QuickTime animation (RLE) */
+ case VLC_CODEC_QTRLE:
+ case VLC_CODEC_RPZA:
#ifdef LOADER
p_dec->p_sys = NULL;
p_dec->pf_decode_video = DecodeVideo;
if ((err != noErr) || (qtVersion < 0x07500000))
return VLC_EGENERIC;
#endif
- case VLC_FOURCC('s','a','m','r'): /* 3GPP AMR audio */
+ case VLC_CODEC_AMR_NB: /* 3GPP AMR audio */
case VLC_FOURCC('s','a','m','b'): /* 3GPP AMR-WB audio */
- case VLC_FOURCC('m','p','4','a'): /* MPEG-4 audio */
+ case VLC_CODEC_MP4A: /* MPEG-4 audio */
case VLC_FOURCC('Q','D','M','C'): /* QDesign */
- case VLC_FOURCC('Q','D','M','2'): /* QDesign* 2 */
- case VLC_FOURCC('Q','c','l','p'): /* Qualcomm Purevoice Codec */
+ case VLC_CODEC_QDM2: /* QDesign* 2 */
+ case VLC_CODEC_QCELP: /* Qualcomm Purevoice Codec */
case VLC_FOURCC('Q','C','L','P'): /* Qualcomm Purevoice Codec */
- case VLC_FOURCC('M','A','C','3'): /* MACE3 audio decoder */
- case VLC_FOURCC('M','A','C','6'): /* MACE6 audio decoder */
+ case VLC_CODEC_MACE3: /* MACE3 audio decoder */
+ case VLC_CODEC_MACE6: /* MACE6 audio decoder */
case VLC_FOURCC('d','v','c','a'): /* DV Audio */
case VLC_FOURCC('s','o','w','t'): /* 16-bit Little Endian */
case VLC_FOURCC('t','w','o','s'): /* 16-bit Big Endian */
- case VLC_FOURCC('a','l','a','w'): /* ALaw 2:1 */
+ case VLC_CODEC_ALAW: /* ALaw 2:1 */
case VLC_FOURCC('u','l','a','w'): /* mu-Law 2:1 */
case VLC_FOURCC('r','a','w',' '): /* 8-bit offset binaries */
- case VLC_FOURCC('f','l','3','2'): /* 32-bit Floating Point */
- case VLC_FOURCC('f','l','6','4'): /* 64-bit Floating Point */
+ case VLC_CODEC_FL32: /* 32-bit Floating Point */
+ case VLC_CODEC_FL64: /* 64-bit Floating Point */
case VLC_FOURCC('i','n','2','4'): /* 24-bit Interger */
case VLC_FOURCC('i','n','3','2'): /* 32-bit Integer */
case 0x0011: /* DVI IMA */
p_dec->p_sys = p_sys;
p_dec->pf_decode_audio = DecodeAudio;
- memcpy( fcc, &p_dec->fmt_in.i_codec, 4 );
+ if( p_dec->fmt_in.i_original_fourcc )
+ memcpy( fcc, &p_dec->fmt_in.i_original_fourcc, 4 );
+ else
+ memcpy( fcc, &p_dec->fmt_in.i_codec, 4 );
#ifdef __APPLE__
EnterMovies();
}
- es_format_Init( &p_dec->fmt_out, AUDIO_ES, AOUT_FMT_S16_NE );
+ es_format_Init( &p_dec->fmt_out, AUDIO_ES, VLC_CODEC_S16N );
p_dec->fmt_out.audio.i_rate = p_sys->OutputFormatInfo.sampleRate;
p_dec->fmt_out.audio.i_channels = p_sys->OutputFormatInfo.numChannels;
p_dec->fmt_out.audio.i_physical_channels =
return VLC_EGENERIC;
}
- memcpy( fcc, &p_dec->fmt_in.i_codec, 4 );
+ if( p_dec->fmt_in.i_original_fourcc )
+ memcpy( fcc, &p_dec->fmt_in.i_original_fourcc, 4 );
+ else
+ memcpy( fcc, &p_dec->fmt_in.i_codec, 4 );
+
msg_Dbg( p_dec, "quicktime_video %4.4s %dx%d",
fcc, p_dec->fmt_in.video.i_width, p_dec->fmt_in.video.i_height );
msg_Dbg( p_dec, "quicktime_video: ImageCodecPreDecompress cres=0x%X",
(int)cres );
- es_format_Init( &p_dec->fmt_out, VIDEO_ES, VLC_FOURCC( 'Y', 'U', 'Y', '2' ));
+ es_format_Init( &p_dec->fmt_out, VIDEO_ES, VLC_CODEC_YUYV);
p_dec->fmt_out.video.i_width = p_dec->fmt_in.video.i_width;
p_dec->fmt_out.video.i_height= p_dec->fmt_in.video.i_height;
p_dec->fmt_out.video.i_aspect = VOUT_ASPECT_FACTOR * p_dec->fmt_in.video.i_width / p_dec->fmt_in.video.i_height;
#include <vlc_common.h>
#include <vlc_plugin.h>
#include <vlc_codec.h>
-#include <vlc_vout.h>
/*****************************************************************************
* decoder_sys_t : raw video decoder descriptor
switch( p_dec->fmt_in.i_codec )
{
/* Planar YUV */
- case VLC_FOURCC('I','4','4','4'):
- case VLC_FOURCC('I','4','2','2'):
- case VLC_FOURCC('I','4','2','0'):
- case VLC_FOURCC('Y','V','1','2'):
- case VLC_FOURCC('I','Y','U','V'):
- case VLC_FOURCC('I','4','1','1'):
- case VLC_FOURCC('I','4','1','0'):
- case VLC_FOURCC('Y','V','U','9'):
- case VLC_FOURCC('Y','4','2','B'):
- case VLC_FOURCC('Y','4','1','B'):
+ case VLC_CODEC_I444:
+ case VLC_CODEC_I422:
+ case VLC_CODEC_I420:
+ case VLC_CODEC_YV12:
+ case VLC_CODEC_I411:
+ case VLC_CODEC_I410:
+ case VLC_CODEC_GREY:
+ case VLC_CODEC_YUVP:
/* Packed YUV */
- case VLC_FOURCC('Y','U','Y','2'):
- case VLC_FOURCC('Y','8','0','0'):
- case VLC_FOURCC('U','Y','V','Y'):
- case VLC_FOURCC('H','D','Y','C'):
+ case VLC_CODEC_YUYV:
+ case VLC_CODEC_YVYU:
+ case VLC_CODEC_UYVY:
+ case VLC_CODEC_VYUY:
/* RGB */
- case VLC_FOURCC('R','V','3','2'):
- case VLC_FOURCC('R','V','2','4'):
- case VLC_FOURCC('R','V','1','6'):
- case VLC_FOURCC('R','V','1','5'):
- break;
- case VLC_FOURCC('2','V','u','y'):
- case VLC_FOURCC('2','v','u','y'):
- case VLC_FOURCC('A','V','U','I'):
- p_dec->fmt_in.i_codec = VLC_FOURCC('U','Y','V','Y');
- break;
- case VLC_FOURCC('y','v','1','2'):
- p_dec->fmt_in.i_codec = VLC_FOURCC('Y','V','1','2');
+ case VLC_CODEC_RGB32:
+ case VLC_CODEC_RGB24:
+ case VLC_CODEC_RGB16:
+ case VLC_CODEC_RGB15:
+ case VLC_CODEC_RGB8:
+ case VLC_CODEC_RGBP:
break;
default:
}
/* Find out p_vdec->i_raw_size */
- vout_InitFormat( &p_dec->fmt_out.video, p_dec->fmt_in.i_codec,
- p_dec->fmt_in.video.i_width,
- p_dec->fmt_in.video.i_height,
- p_dec->fmt_in.video.i_aspect );
+ video_format_Setup( &p_dec->fmt_out.video, p_dec->fmt_in.i_codec,
+ p_dec->fmt_in.video.i_width,
+ p_dec->fmt_in.video.i_height,
+ p_dec->fmt_in.video.i_aspect );
p_sys->i_raw_size = p_dec->fmt_out.video.i_bits_per_pixel *
p_dec->fmt_out.video.i_width * p_dec->fmt_out.video.i_height / 8;
int i, j;
/* Fill in picture_t fields */
- vout_InitPicture( VLC_OBJECT(p_dec), &pic, p_dec->fmt_out.i_codec,
- p_dec->fmt_out.video.i_width,
- p_dec->fmt_out.video.i_height, VOUT_ASPECT_FACTOR );
+ picture_Setup( &pic, p_dec->fmt_out.i_codec,
+ p_dec->fmt_out.video.i_width,
+ p_dec->fmt_out.video.i_height, VOUT_ASPECT_FACTOR );
if( !pic.i_planes )
{
switch( p_dec->fmt_in.i_codec )
{
- case VLC_FOURCC('c','o','o','k'):
- case VLC_FOURCC('a','t','r','c'):
+ case VLC_CODEC_COOK:
+ case VLC_CODEC_ATRAC3:
case VLC_FOURCC('s','i','p','r'):
break;
if( p_sys->win32_dll ) Close( p_this );
#endif
- es_format_Init( &p_dec->fmt_out, AUDIO_ES, AOUT_FMT_S16_NE );
+ es_format_Init( &p_dec->fmt_out, AUDIO_ES, VLC_CODEC_S16N );
p_dec->fmt_out.audio.i_rate = p_dec->fmt_in.audio.i_rate;
p_dec->fmt_out.audio.i_channels = p_dec->fmt_in.audio.i_channels;
p_dec->fmt_out.audio.i_bitspersample =
#include <vlc_common.h>
#include <vlc_plugin.h>
-#include <vlc_vout.h>
#include <vlc_codec.h>
#ifdef LOADER
}
/* setup rv30 codec (codec sub-type and image dimensions): */
- /*if ( p_dec->fmt_in.i_codec == VLC_FOURCC('R','V','3','0') )*/
+ /*if ( p_dec->fmt_in.i_codec == VLC_CODEC_RV30 )*/
if (p_vide[1]>=0x20200002)
{
int i, cmsg_cnt;
(*rvyuv_custom_message)(&cmsg_data,p_sys->handle);
}
/*
- es_format_Init( &p_dec->fmt_out, VIDEO_ES, VLC_FOURCC( 'Y','V','1','2' ));
- es_format_Init( &p_dec->fmt_out, VIDEO_ES, VLC_FOURCC( 'Y','U','Y','2' ));
+ es_format_Init( &p_dec->fmt_out, VIDEO_ES, VLC_CODEC_YV12);
+ es_format_Init( &p_dec->fmt_out, VIDEO_ES, VLC_CODEC_YUYV);
*/
- es_format_Init( &p_dec->fmt_out, VIDEO_ES, VLC_FOURCC( 'I', '4', '2', '0'));
+ es_format_Init( &p_dec->fmt_out, VIDEO_ES, VLC_CODEC_I420);
p_dec->fmt_out.video.i_width = p_dec->fmt_in.video.i_width;
p_dec->fmt_out.video.i_height= p_dec->fmt_in.video.i_height;
switch ( p_dec->fmt_in.i_codec )
{
- case VLC_FOURCC('R','V','1','0'):
- case VLC_FOURCC('R','V','2','0'):
- case VLC_FOURCC('R','V','3','0'):
- case VLC_FOURCC('R','V','4','0'):
+ case VLC_CODEC_RV10:
+ case VLC_CODEC_RV20:
+ case VLC_CODEC_RV30:
+ case VLC_CODEC_RV40:
p_dec->p_sys = NULL;
p_dec->pf_decode_video = DecodeVideo;
return InitVideo(p_dec);
#include <vlc_plugin.h>
#include <vlc_codec.h>
#include <vlc_sout.h>
-#include <vlc_vout.h>
#include <schroedinger/schro.h>
decoder_sys_t *p_sys;
SchroDecoder *p_schro;
- if( p_dec->fmt_in.i_codec != VLC_FOURCC('d','r','a','c') )
+ if( p_dec->fmt_in.i_codec != VLC_CODEC_DIRAC )
{
return VLC_EGENERIC;
}
/* Set output properties */
p_dec->fmt_out.i_cat = VIDEO_ES;
- p_dec->fmt_out.i_codec = VLC_FOURCC('I','4','2','0');
+ p_dec->fmt_out.i_codec = VLC_CODEC_I420;
/* Set callbacks */
p_dec->pf_decode_video = DecodeBlock;
switch( p_sys->p_format->chroma_format )
{
- case SCHRO_CHROMA_420: p_dec->fmt_out.i_codec = VLC_FOURCC('I','4','2','0'); break;
- case SCHRO_CHROMA_422: p_dec->fmt_out.i_codec = VLC_FOURCC('I','4','2','2'); break;
- case SCHRO_CHROMA_444: p_dec->fmt_out.i_codec = VLC_FOURCC('I','4','4','4'); break;
+ case SCHRO_CHROMA_420: p_dec->fmt_out.i_codec = VLC_CODEC_I420; break;
+ case SCHRO_CHROMA_422: p_dec->fmt_out.i_codec = VLC_CODEC_I422; break;
+ case SCHRO_CHROMA_444: p_dec->fmt_out.i_codec = VLC_CODEC_I444; break;
default:
p_dec->fmt_out.i_codec = 0;
break;
#include <vlc_common.h>
#include <vlc_plugin.h>
#include <vlc_codec.h>
-#include <vlc_vout.h>
#include SDL_IMAGE_INCLUDE_FILE
const char *psz_sdl_type;
} p_supported_fmt[] =
{
- { VLC_FOURCC('t','g','a',' '), "TGA" },
- { VLC_FOURCC('b','m','p',' '), "BMP" },
- { VLC_FOURCC('p','n','m',' '), "PNM" },
+ { VLC_CODEC_TARGA, "TGA" },
+ { VLC_CODEC_BMP, "BMP" },
+ { VLC_CODEC_PNM, "PNM" },
{ VLC_FOURCC('x','p','m',' '), "XPM" },
{ VLC_FOURCC('x','c','f',' '), "XCF" },
- { VLC_FOURCC('p','c','x',' '), "PCX" },
- { VLC_FOURCC('g','i','f',' '), "GIF" },
- { VLC_FOURCC('j','p','e','g'), "JPG" },
- { VLC_FOURCC('t','i','f','f'), "TIF" },
+ { VLC_CODEC_PCX, "PCX" },
+ { VLC_CODEC_GIF, "GIF" },
+ { VLC_CODEC_JPEG, "JPG" },
+ { VLC_CODEC_TIFF, "TIF" },
{ VLC_FOURCC('l','b','m',' '), "LBM" },
- { VLC_FOURCC('p','n','g',' '), "PNG" }
+ { VLC_CODEC_PNG, "PNG" }
};
/*****************************************************************************
/* Set output properties - this is a decoy and isn't used anywhere */
p_dec->fmt_out.i_cat = VIDEO_ES;
- p_dec->fmt_out.i_codec = VLC_FOURCC('R','V','3','2');
+ p_dec->fmt_out.i_codec = VLC_CODEC_RGB32;
/* Set callbacks */
p_dec->pf_decode_video = DecodeBlock;
switch ( p_surface->format->BitsPerPixel )
{
case 16:
- p_dec->fmt_out.i_codec = VLC_FOURCC('R','V','1','6');
+ p_dec->fmt_out.i_codec = VLC_CODEC_RGB16;
break;
case 8:
case 24:
- p_dec->fmt_out.i_codec = VLC_FOURCC('R','V','2','4');
+ p_dec->fmt_out.i_codec = VLC_CODEC_RGB24;
break;
case 32:
- p_dec->fmt_out.i_codec = VLC_FOURCC('R','V','3','2');
+ p_dec->fmt_out.i_codec = VLC_CODEC_RGB32;
break;
default:
msg_Warn( p_dec, "unknown bits/pixel format (%d)",
encoder_sys_t *p_sys;
/* FIXME: what about layers 1 and 2 ? shine is an 'MP3' encoder */
- if( p_enc->fmt_out.i_codec != VLC_FOURCC('m','p','3',' ') ||
+ if( p_enc->fmt_out.i_codec != VLC_CODEC_MP3 ||
p_enc->fmt_out.audio.i_channels > 2 )
return VLC_EGENERIC;
decoder_t *p_dec = (decoder_t*)p_this;
decoder_sys_t *p_sys = p_dec->p_sys;
- if( p_dec->fmt_in.i_codec != VLC_FOURCC('s','p','x',' ')
- && p_dec->fmt_in.i_codec != VLC_FOURCC('s', 'p', 'x', 'r') )
- {
+ if( p_dec->fmt_in.i_codec != VLC_CODEC_SPEEX )
return VLC_EGENERIC;
- }
/* Allocate the memory needed to store the decoder's structure */
if( ( p_dec->p_sys = p_sys =
/* Set output properties */
p_dec->fmt_out.i_cat = AUDIO_ES;
- p_dec->fmt_out.i_codec = AOUT_FMT_S16_NE;
+ p_dec->fmt_out.i_codec = VLC_CODEC_S16N;
/*
Set callbacks
being invoked on a Speex stream arriving via RTP.
A special decoder callback is used.
*/
- if (p_dec->fmt_in.i_codec == VLC_FOURCC('s', 'p', 'x', 'r'))
+ if (p_dec->fmt_in.i_original_fourcc == VLC_FOURCC('s', 'p', 'x', 'r'))
{
msg_Dbg( p_dec, "Using RTP version of Speex decoder @ rate %d.",
p_dec->fmt_in.audio.i_rate );
if( i_ret == VLC_SUCCESS )
{
p_dec->p_sys->b_packetizer = true;
- p_dec->fmt_out.i_codec = VLC_FOURCC('s','p','x',' ');
+ p_dec->fmt_out.i_codec = VLC_CODEC_SPEEX;
}
return i_ret;
int pi_header[2];
uint8_t *p_extra;
- if( p_enc->fmt_out.i_codec != VLC_FOURCC('s','p','x',' ') &&
+ if( p_enc->fmt_out.i_codec != VLC_CODEC_SPEEX &&
!p_enc->b_force )
{
return VLC_EGENERIC;
return VLC_ENOMEM;
p_enc->p_sys = p_sys;
p_enc->pf_encode_audio = Encode;
- p_enc->fmt_in.i_codec = AOUT_FMT_S16_NE;
- p_enc->fmt_out.i_codec = VLC_FOURCC('s','p','x',' ');
+ p_enc->fmt_in.i_codec = VLC_CODEC_S16N;
+ p_enc->fmt_out.i_codec = VLC_CODEC_SPEEX;
speex_init_header( &p_sys->header, p_enc->fmt_in.audio.i_rate,
1, p_speex_mode );
#endif
#include <vlc_common.h>
-#include <vlc_vout.h>
#include <vlc_codec.h>
#include <vlc_input.h>
/* Create a new subpicture region */
memset( &fmt, 0, sizeof(video_format_t) );
- fmt.i_chroma = VLC_FOURCC('Y','U','V','P');
+ fmt.i_chroma = VLC_CODEC_YUVP;
fmt.i_aspect = 0; /* 0 means use aspect ratio of background video */
fmt.i_width = fmt.i_visible_width = p_spu_properties->i_width;
fmt.i_height = fmt.i_visible_height = p_spu_properties->i_height -
decoder_t *p_dec = (decoder_t*)p_this;
decoder_sys_t *p_sys;
- if( p_dec->fmt_in.i_codec != VLC_FOURCC( 's','p','u',' ' ) &&
- p_dec->fmt_in.i_codec != VLC_FOURCC( 's','p','u','b' ) )
- {
+ if( p_dec->fmt_in.i_codec != VLC_CODEC_SPU )
return VLC_EGENERIC;
- }
p_dec->p_sys = p_sys = malloc( sizeof( decoder_sys_t ) );
p_sys->i_spu = 0;
p_sys->p_block = NULL;
- es_format_Init( &p_dec->fmt_out, SPU_ES, VLC_FOURCC( 's','p','u',' ' ) );
+ es_format_Init( &p_dec->fmt_out, SPU_ES, VLC_CODEC_SPU );
p_dec->pf_decode_sub = Decode;
p_dec->pf_packetize = NULL;
p_dec->pf_packetize = Packetize;
p_dec->p_sys->b_packetizer = true;
es_format_Copy( &p_dec->fmt_out, &p_dec->fmt_in );
- p_dec->fmt_out.i_codec = VLC_FOURCC( 's','p','u',' ' );
+ p_dec->fmt_out.i_codec = VLC_CODEC_SPU;
return VLC_SUCCESS;
}
* MarginV, Effect, Text */
decoder_sys_t *p_sys = p_dec->p_sys;
subpicture_t *p_spu = p_spu_in;
- ssa_style_t *p_style = NULL;
+ ssa_style_t *p_ssa_style = NULL;
char *psz_new_subtitle = NULL;
char *psz_buffer_sub = NULL;
char *psz_style = NULL;
for( i = 0; i < p_sys->i_ssa_styles; i++ )
{
if( !strcmp( p_sys->pp_ssa_styles[i]->psz_stylename, psz_style ) )
- p_style = p_sys->pp_ssa_styles[i];
+ p_ssa_style = p_sys->pp_ssa_styles[i];
}
free( psz_style );
p_spu->p_region->psz_text = psz_new_subtitle;
- if( p_style == NULL )
+ if( p_ssa_style == NULL )
{
p_spu->p_region->i_align = SUBPICTURE_ALIGN_BOTTOM | p_sys->i_align;
p_spu->p_region->i_x = p_sys->i_align ? 20 : 0;
}
else
{
- msg_Dbg( p_dec, "style is: %s", p_style->psz_stylename);
- p_spu->p_region->p_style = &p_style->font_style;
- p_spu->p_region->i_align = p_style->i_align;
- if( p_style->i_align & SUBPICTURE_ALIGN_LEFT )
+ msg_Dbg( p_dec, "style is: %s", p_ssa_style->psz_stylename );
+ p_spu->p_region->p_style = text_style_Duplicate( &p_ssa_style->font_style );
+ p_spu->p_region->i_align = p_ssa_style->i_align;
+ if( p_ssa_style->i_align & SUBPICTURE_ALIGN_LEFT )
{
- p_spu->p_region->i_x = (i_margin_l) ? i_margin_l : p_style->i_margin_h;
+ p_spu->p_region->i_x = (i_margin_l) ? i_margin_l : p_ssa_style->i_margin_h;
}
- else if( p_style->i_align & SUBPICTURE_ALIGN_RIGHT )
+ else if( p_ssa_style->i_align & SUBPICTURE_ALIGN_RIGHT )
{
- p_spu->p_region->i_x = (i_margin_r) ? i_margin_r : p_style->i_margin_h;
+ p_spu->p_region->i_x = (i_margin_r) ? i_margin_r : p_ssa_style->i_margin_h;
}
- p_spu->p_region->i_y = (i_margin_v) ? i_margin_v : p_style->i_margin_v;
+ p_spu->p_region->i_y = (i_margin_v) ? i_margin_v : p_ssa_style->i_margin_v;
}
}
&i_border, &i_outline, &i_shadow, &i_align, &i_margin_l,
&i_margin_r, &i_margin_v ) == 16 )
{
- ssa_style_t *p_style = malloc( sizeof(ssa_style_t) );
+ ssa_style_t *p_ssa_style = malloc( sizeof(ssa_style_t) );
- p_style->psz_stylename = strdup( psz_temp_stylename );
- p_style->font_style.psz_fontname = strdup( psz_temp_fontname );
- p_style->font_style.i_font_size = i_font_size;
+ p_ssa_style->psz_stylename = strdup( psz_temp_stylename );
+ p_ssa_style->font_style.psz_fontname = strdup( psz_temp_fontname );
+ p_ssa_style->font_style.i_font_size = i_font_size;
- ParseColor( psz_temp_color1, &p_style->font_style.i_font_color, NULL );
- ParseColor( psz_temp_color4, &p_style->font_style.i_shadow_color, NULL );
- p_style->font_style.i_outline_color = p_style->font_style.i_shadow_color;
- p_style->font_style.i_font_alpha = p_style->font_style.i_outline_alpha
- = p_style->font_style.i_shadow_alpha = 0x00;
- p_style->font_style.i_style_flags = 0;
- if( i_bold ) p_style->font_style.i_style_flags |= STYLE_BOLD;
- if( i_italic ) p_style->font_style.i_style_flags |= STYLE_ITALIC;
+ ParseColor( psz_temp_color1, &p_ssa_style->font_style.i_font_color, NULL );
+ ParseColor( psz_temp_color4, &p_ssa_style->font_style.i_shadow_color, NULL );
+ p_ssa_style->font_style.i_outline_color = p_ssa_style->font_style.i_shadow_color;
+ p_ssa_style->font_style.i_font_alpha = p_ssa_style->font_style.i_outline_alpha
+ = p_ssa_style->font_style.i_shadow_alpha = 0x00;
+ p_ssa_style->font_style.i_style_flags = 0;
+ if( i_bold ) p_ssa_style->font_style.i_style_flags |= STYLE_BOLD;
+ if( i_italic ) p_ssa_style->font_style.i_style_flags |= STYLE_ITALIC;
if( i_border == 1 )
- p_style->font_style.i_style_flags |= (STYLE_ITALIC | STYLE_OUTLINE);
+ p_ssa_style->font_style.i_style_flags |= (STYLE_ITALIC | STYLE_OUTLINE);
else if( i_border == 3 )
{
- p_style->font_style.i_style_flags |= STYLE_BACKGROUND;
- p_style->font_style.i_background_color = p_style->font_style.i_shadow_color;
- p_style->font_style.i_background_alpha = p_style->font_style.i_shadow_alpha;
+ p_ssa_style->font_style.i_style_flags |= STYLE_BACKGROUND;
+ p_ssa_style->font_style.i_background_color = p_ssa_style->font_style.i_shadow_color;
+ p_ssa_style->font_style.i_background_alpha = p_ssa_style->font_style.i_shadow_alpha;
}
- p_style->font_style.i_shadow_width = i_shadow;
- p_style->font_style.i_outline_width = i_outline;
+ p_ssa_style->font_style.i_shadow_width = i_shadow;
+ p_ssa_style->font_style.i_outline_width = i_outline;
- p_style->i_align = 0;
+ p_ssa_style->i_align = 0;
if( i_align == 1 || i_align == 5 || i_align == 9 )
- p_style->i_align |= SUBPICTURE_ALIGN_LEFT;
+ p_ssa_style->i_align |= SUBPICTURE_ALIGN_LEFT;
if( i_align == 3 || i_align == 7 || i_align == 11 )
- p_style->i_align |= SUBPICTURE_ALIGN_RIGHT;
+ p_ssa_style->i_align |= SUBPICTURE_ALIGN_RIGHT;
if( i_align < 4 )
- p_style->i_align |= SUBPICTURE_ALIGN_BOTTOM;
+ p_ssa_style->i_align |= SUBPICTURE_ALIGN_BOTTOM;
else if( i_align < 8 )
- p_style->i_align |= SUBPICTURE_ALIGN_TOP;
+ p_ssa_style->i_align |= SUBPICTURE_ALIGN_TOP;
- p_style->i_margin_h = ( p_style->i_align & SUBPICTURE_ALIGN_RIGHT ) ?
+ p_ssa_style->i_margin_h = ( p_ssa_style->i_align & SUBPICTURE_ALIGN_RIGHT ) ?
i_margin_r : i_margin_l;
- p_style->i_margin_v = i_margin_v;
- p_style->i_margin_percent_h = 0;
- p_style->i_margin_percent_v = 0;
+ p_ssa_style->i_margin_v = i_margin_v;
+ p_ssa_style->i_margin_percent_h = 0;
+ p_ssa_style->i_margin_percent_v = 0;
- p_style->font_style.i_karaoke_background_color = 0xffffff;
- p_style->font_style.i_karaoke_background_alpha = 0xff;
+ p_ssa_style->font_style.i_karaoke_background_color = 0xffffff;
+ p_ssa_style->font_style.i_karaoke_background_alpha = 0xff;
- TAB_APPEND( p_sys->i_ssa_styles, p_sys->pp_ssa_styles, p_style );
+ TAB_APPEND( p_sys->i_ssa_styles, p_sys->pp_ssa_styles, p_ssa_style );
}
else msg_Warn( p_dec, "SSA v4 styleline parsing failed" );
}
&i_underline, &i_strikeout, &i_scale_x, &i_scale_y, &i_spacing, &i_border, &i_outline,
&i_shadow, &i_align, &i_margin_l, &i_margin_r, &i_margin_v ) == 21 )
{
- ssa_style_t *p_style = malloc( sizeof(ssa_style_t) );
-
- p_style->psz_stylename = strdup( psz_temp_stylename );
- p_style->font_style.psz_fontname = strdup( psz_temp_fontname );
- p_style->font_style.i_font_size = i_font_size;
- ParseColor( psz_temp_color1, &p_style->font_style.i_font_color,
- &p_style->font_style.i_font_alpha );
- ParseColor( psz_temp_color3, &p_style->font_style.i_outline_color,
- &p_style->font_style.i_outline_alpha );
- ParseColor( psz_temp_color4, &p_style->font_style.i_shadow_color,
- &p_style->font_style.i_shadow_alpha );
-
- p_style->font_style.i_style_flags = 0;
- if( i_bold ) p_style->font_style.i_style_flags |= STYLE_BOLD;
- if( i_italic ) p_style->font_style.i_style_flags |= STYLE_ITALIC;
- if( i_underline ) p_style->font_style.i_style_flags |= STYLE_UNDERLINE;
- if( i_strikeout ) p_style->font_style.i_style_flags |= STYLE_STRIKEOUT;
- if( i_border == 1 ) p_style->font_style.i_style_flags |= (STYLE_ITALIC | STYLE_OUTLINE);
+ ssa_style_t *p_ssa_style = malloc( sizeof(ssa_style_t) );
+
+ p_ssa_style->psz_stylename = strdup( psz_temp_stylename );
+ p_ssa_style->font_style.psz_fontname = strdup( psz_temp_fontname );
+ p_ssa_style->font_style.i_font_size = i_font_size;
+ ParseColor( psz_temp_color1, &p_ssa_style->font_style.i_font_color,
+ &p_ssa_style->font_style.i_font_alpha );
+ ParseColor( psz_temp_color3, &p_ssa_style->font_style.i_outline_color,
+ &p_ssa_style->font_style.i_outline_alpha );
+ ParseColor( psz_temp_color4, &p_ssa_style->font_style.i_shadow_color,
+ &p_ssa_style->font_style.i_shadow_alpha );
+
+ p_ssa_style->font_style.i_style_flags = 0;
+ if( i_bold ) p_ssa_style->font_style.i_style_flags |= STYLE_BOLD;
+ if( i_italic ) p_ssa_style->font_style.i_style_flags |= STYLE_ITALIC;
+ if( i_underline ) p_ssa_style->font_style.i_style_flags |= STYLE_UNDERLINE;
+ if( i_strikeout ) p_ssa_style->font_style.i_style_flags |= STYLE_STRIKEOUT;
+ if( i_border == 1 ) p_ssa_style->font_style.i_style_flags |= (STYLE_ITALIC | STYLE_OUTLINE);
else if( i_border == 3 )
{
- p_style->font_style.i_style_flags |= STYLE_BACKGROUND;
- p_style->font_style.i_background_color = p_style->font_style.i_shadow_color;
- p_style->font_style.i_background_alpha = p_style->font_style.i_shadow_alpha;
+ p_ssa_style->font_style.i_style_flags |= STYLE_BACKGROUND;
+ p_ssa_style->font_style.i_background_color = p_ssa_style->font_style.i_shadow_color;
+ p_ssa_style->font_style.i_background_alpha = p_ssa_style->font_style.i_shadow_alpha;
}
- p_style->font_style.i_shadow_width = ( i_border == 1 ) ? i_shadow : 0;
- p_style->font_style.i_outline_width = ( i_border == 1 ) ? i_outline : 0;
- p_style->font_style.i_spacing = i_spacing;
- //p_style->font_style.f_angle = f_angle;
+ p_ssa_style->font_style.i_shadow_width = ( i_border == 1 ) ? i_shadow : 0;
+ p_ssa_style->font_style.i_outline_width = ( i_border == 1 ) ? i_outline : 0;
+ p_ssa_style->font_style.i_spacing = i_spacing;
+ //p_ssa_style->font_style.f_angle = f_angle;
- p_style->i_align = 0;
+ p_ssa_style->i_align = 0;
if( i_align == 0x1 || i_align == 0x4 || i_align == 0x7 )
- p_style->i_align |= SUBPICTURE_ALIGN_LEFT;
+ p_ssa_style->i_align |= SUBPICTURE_ALIGN_LEFT;
if( i_align == 0x3 || i_align == 0x6 || i_align == 0x9 )
- p_style->i_align |= SUBPICTURE_ALIGN_RIGHT;
+ p_ssa_style->i_align |= SUBPICTURE_ALIGN_RIGHT;
if( i_align == 0x7 || i_align == 0x8 || i_align == 0x9 )
- p_style->i_align |= SUBPICTURE_ALIGN_TOP;
+ p_ssa_style->i_align |= SUBPICTURE_ALIGN_TOP;
if( i_align == 0x1 || i_align == 0x2 || i_align == 0x3 )
- p_style->i_align |= SUBPICTURE_ALIGN_BOTTOM;
- p_style->i_margin_h = ( p_style->i_align & SUBPICTURE_ALIGN_RIGHT ) ?
+ p_ssa_style->i_align |= SUBPICTURE_ALIGN_BOTTOM;
+ p_ssa_style->i_margin_h = ( p_ssa_style->i_align & SUBPICTURE_ALIGN_RIGHT ) ?
i_margin_r : i_margin_l;
- p_style->i_margin_v = i_margin_v;
- p_style->i_margin_percent_h = 0;
- p_style->i_margin_percent_v = 0;
+ p_ssa_style->i_margin_v = i_margin_v;
+ p_ssa_style->i_margin_percent_h = 0;
+ p_ssa_style->i_margin_percent_v = 0;
- p_style->font_style.i_karaoke_background_color = 0xffffff;
- p_style->font_style.i_karaoke_background_alpha = 0xff;
+ p_ssa_style->font_style.i_karaoke_background_color = 0xffffff;
+ p_ssa_style->font_style.i_karaoke_background_alpha = 0xff;
/*TODO: Ignored: angle i_scale_x|y (fontscaling), i_encoding */
- TAB_APPEND( p_sys->i_ssa_styles, p_sys->pp_ssa_styles, p_style );
+ TAB_APPEND( p_sys->i_ssa_styles, p_sys->pp_ssa_styles, p_ssa_style );
}
else msg_Dbg( p_dec, "SSA V4+ styleline parsing failed" );
}
switch( p_dec->fmt_in.i_codec )
{
- case VLC_FOURCC('s','u','b','t'):
- case VLC_FOURCC('s','s','a',' '):
- case VLC_FOURCC('t','1','4','0'):
+ case VLC_CODEC_SUBT:
+ case VLC_CODEC_SSA:
+ case VLC_CODEC_ITU_T140:
break;
default:
return VLC_EGENERIC;
char *psz_charset = NULL;
/* First try demux-specified encoding */
- if( p_dec->fmt_in.i_codec == VLC_FOURCC('t','1','4','0') )
+ if( p_dec->fmt_in.i_codec == VLC_CODEC_ITU_T140 )
psz_charset = strdup( "UTF-8" ); /* IUT T.140 is always using UTF-8 */
else
if( p_dec->fmt_in.subs.psz_encoding && *p_dec->fmt_in.subs.psz_encoding )
var_Get( p_dec, "subsdec-align", &val );
p_sys->i_align = val.i_int;
- if( p_dec->fmt_in.i_codec == VLC_FOURCC('s','s','a',' ')
+ if( p_dec->fmt_in.i_codec == VLC_CODEC_SSA
&& var_CreateGetBool( p_dec, "subsdec-formatted" ) )
{
if( p_dec->fmt_in.i_extra > 0 )
/* Create a new subpicture region */
memset( &fmt, 0, sizeof(video_format_t) );
- fmt.i_chroma = VLC_FOURCC('T','E','X','T');
+ fmt.i_chroma = VLC_CODEC_TEXT;
fmt.i_aspect = 0;
fmt.i_width = fmt.i_height = 0;
fmt.i_x_offset = fmt.i_y_offset = 0;
}
/* Decode and format the subpicture unit */
- if( p_dec->fmt_in.i_codec != VLC_FOURCC('s','s','a',' ') )
+ if( p_dec->fmt_in.i_codec != VLC_CODEC_SSA )
{
/* Normal text subs, easy markup */
p_spu->p_region->i_align = SUBPICTURE_ALIGN_BOTTOM | p_sys->i_align;
#define SUBSDEC_HEADER_H
#include <vlc_common.h>
-#include <vlc_vout.h>
#include <vlc_codec.h>
#include <vlc_input.h>
decoder_t *p_dec = (decoder_t*)p_this;
decoder_sys_t *p_sys;
- if( p_dec->fmt_in.i_codec != VLC_FOURCC('u','s','f',' ') )
+ if( p_dec->fmt_in.i_codec != VLC_CODEC_USF )
return VLC_EGENERIC;
/* Allocate the memory needed to store the decoder's structure */
continue;
free( p_sys->pp_ssa_styles[i]->psz_stylename );
+ //FIXME: Make font_style a pointer and use text_style_* functions
free( p_sys->pp_ssa_styles[i]->font_style.psz_fontname );
free( p_sys->pp_ssa_styles[i] );
}
static ssa_style_t *ParseStyle( decoder_sys_t *p_sys, char *psz_subtitle )
{
- ssa_style_t *p_style = NULL;
+ ssa_style_t *p_ssa_style = NULL;
char *psz_style = GrabAttributeValue( "style", psz_subtitle );
if( psz_style )
for( i = 0; i < p_sys->i_ssa_styles; i++ )
{
if( !strcmp( p_sys->pp_ssa_styles[i]->psz_stylename, psz_style ) )
- p_style = p_sys->pp_ssa_styles[i];
+ p_ssa_style = p_sys->pp_ssa_styles[i];
}
free( psz_style );
}
- return p_style;
+ return p_ssa_style;
}
static int ParsePositionAttributeList( char *psz_subtitle, int *i_align,
/* Create a new subpicture region */
memset( &fmt, 0, sizeof(video_format_t) );
- fmt.i_chroma = VLC_FOURCC('T','E','X','T');
+ fmt.i_chroma = VLC_CODEC_TEXT;
fmt.i_aspect = 0;
fmt.i_width = fmt.i_height = 0;
fmt.i_x_offset = fmt.i_y_offset = 0;
if( p_text_region != NULL )
{
- ssa_style_t *p_style = NULL;
+ ssa_style_t *p_ssa_style = NULL;
p_text_region->psz_text = NULL;
p_text_region->psz_html = strndup( psz_subtitle, i_len );
return NULL;
}
- p_style = ParseStyle( p_sys, p_text_region->psz_html );
- if( !p_style )
+ p_ssa_style = ParseStyle( p_sys, p_text_region->psz_html );
+ if( !p_ssa_style )
{
int i;
for( i = 0; i < p_sys->i_ssa_styles; i++ )
{
if( !strcasecmp( p_sys->pp_ssa_styles[i]->psz_stylename, "Default" ) )
- p_style = p_sys->pp_ssa_styles[i];
+ p_ssa_style = p_sys->pp_ssa_styles[i];
}
}
- if( p_style )
+ if( p_ssa_style )
{
- msg_Dbg( p_dec, "style is: %s", p_style->psz_stylename );
+ msg_Dbg( p_dec, "style is: %s", p_ssa_style->psz_stylename );
- p_text_region->p_style = &p_style->font_style;
- p_text_region->i_align = p_style->i_align;
+ p_text_region->p_style = text_style_Duplicate( &p_ssa_style->font_style );
+ p_text_region->i_align = p_ssa_style->i_align;
/* TODO: Setup % based offsets properly, without adversely affecting
* everything else in vlc. Will address with separate patch,
* to prevent this one being any more complicated.
- * p_style->i_margin_percent_h;
- * p_style->i_margin_percent_v;
+ * p_ssa_style->i_margin_percent_h;
+ * p_ssa_style->i_margin_percent_v;
*/
- p_text_region->i_x = p_style->i_margin_h;
- p_text_region->i_y = p_style->i_margin_v;
+ p_text_region->i_x = p_ssa_style->i_margin_h;
+ p_text_region->i_y = p_ssa_style->i_margin_v;
}
else
memset( &fmt_out, 0, sizeof( video_format_t));
fmt_in.i_chroma = type;
- fmt_out.i_chroma = VLC_FOURCC('Y','U','V','A');
+ fmt_out.i_chroma = VLC_CODEC_YUVA;
/* Find a suitable decoder module */
if( module_exists( "sdl_image" ) )
{
decoder_sys_t *p_sys = p_dec->p_sys;
char *psz_node;
- ssa_style_t *p_style = NULL;
+ ssa_style_t *p_ssa_style = NULL;
int i_style_level = 0;
int i_metadata_level = 0;
case 2:
if( !strcasecmp( "style", psz_node ) )
{
- TAB_APPEND( p_sys->i_ssa_styles, p_sys->pp_ssa_styles, p_style );
+ TAB_APPEND( p_sys->i_ssa_styles, p_sys->pp_ssa_styles, p_ssa_style );
- p_style = NULL;
+ p_ssa_style = NULL;
i_style_level--;
}
break;
{
i_style_level++;
- p_style = calloc( 1, sizeof(ssa_style_t) );
- if( ! p_style )
+ p_ssa_style = calloc( 1, sizeof(ssa_style_t) );
+ if( !p_ssa_style )
{
free( psz_node );
return;
{
ssa_style_t *p_default_style = p_sys->pp_ssa_styles[i];
- memcpy( p_style, p_default_style, sizeof( ssa_style_t ) );
- p_style->font_style.psz_fontname = strdup( p_style->font_style.psz_fontname );
- p_style->psz_stylename = NULL;
+ memcpy( p_ssa_style, p_default_style, sizeof( ssa_style_t ) );
+ //FIXME: Make font_style a pointer. Actually we double copy some data here,
+ // we use text_style_Copy to avoid copying psz_fontname, though .
+ text_style_Copy( &p_ssa_style->font_style, &p_default_style->font_style );
+ p_ssa_style->psz_stylename = NULL;
}
}
if( psz_name && psz_value )
{
if( !strcasecmp( "name", psz_name ) )
- p_style->psz_stylename = strdup( psz_value);
+ p_ssa_style->psz_stylename = strdup( psz_value );
}
free( psz_name );
free( psz_value );
{
if( !strcasecmp( "face", psz_name ) )
{
- free( p_style->font_style.psz_fontname );
- p_style->font_style.psz_fontname = strdup( psz_value );
+ free( p_ssa_style->font_style.psz_fontname );
+ p_ssa_style->font_style.psz_fontname = strdup( psz_value );
}
else if( !strcasecmp( "size", psz_name ) )
{
int i_value = atoi( psz_value );
if( ( i_value >= -5 ) && ( i_value <= 5 ) )
- p_style->font_style.i_font_size +=
- ( i_value * p_style->font_style.i_font_size ) / 10;
+ p_ssa_style->font_style.i_font_size +=
+ ( i_value * p_ssa_style->font_style.i_font_size ) / 10;
else if( i_value < -5 )
- p_style->font_style.i_font_size = - i_value;
+ p_ssa_style->font_style.i_font_size = - i_value;
else if( i_value > 5 )
- p_style->font_style.i_font_size = i_value;
+ p_ssa_style->font_style.i_font_size = i_value;
}
else
- p_style->font_style.i_font_size = atoi( psz_value );
+ p_ssa_style->font_style.i_font_size = atoi( psz_value );
}
else if( !strcasecmp( "italic", psz_name ) )
{
if( !strcasecmp( "yes", psz_value ))
- p_style->font_style.i_style_flags |= STYLE_ITALIC;
+ p_ssa_style->font_style.i_style_flags |= STYLE_ITALIC;
else
- p_style->font_style.i_style_flags &= ~STYLE_ITALIC;
+ p_ssa_style->font_style.i_style_flags &= ~STYLE_ITALIC;
}
else if( !strcasecmp( "weight", psz_name ) )
{
if( !strcasecmp( "bold", psz_value ))
- p_style->font_style.i_style_flags |= STYLE_BOLD;
+ p_ssa_style->font_style.i_style_flags |= STYLE_BOLD;
else
- p_style->font_style.i_style_flags &= ~STYLE_BOLD;
+ p_ssa_style->font_style.i_style_flags &= ~STYLE_BOLD;
}
else if( !strcasecmp( "underline", psz_name ) )
{
if( !strcasecmp( "yes", psz_value ))
- p_style->font_style.i_style_flags |= STYLE_UNDERLINE;
+ p_ssa_style->font_style.i_style_flags |= STYLE_UNDERLINE;
else
- p_style->font_style.i_style_flags &= ~STYLE_UNDERLINE;
+ p_ssa_style->font_style.i_style_flags &= ~STYLE_UNDERLINE;
}
else if( !strcasecmp( "color", psz_name ) )
{
if( *psz_value == '#' )
{
unsigned long col = strtol(psz_value+1, NULL, 16);
- p_style->font_style.i_font_color = (col & 0x00ffffff);
- p_style->font_style.i_font_alpha = (col >> 24) & 0xff;
+ p_ssa_style->font_style.i_font_color = (col & 0x00ffffff);
+ p_ssa_style->font_style.i_font_alpha = (col >> 24) & 0xff;
}
}
else if( !strcasecmp( "outline-color", psz_name ) )
if( *psz_value == '#' )
{
unsigned long col = strtol(psz_value+1, NULL, 16);
- p_style->font_style.i_outline_color = (col & 0x00ffffff);
- p_style->font_style.i_outline_alpha = (col >> 24) & 0xff;
+ p_ssa_style->font_style.i_outline_color = (col & 0x00ffffff);
+ p_ssa_style->font_style.i_outline_alpha = (col >> 24) & 0xff;
}
}
else if( !strcasecmp( "outline-level", psz_name ) )
{
- p_style->font_style.i_outline_width = atoi( psz_value );
+ p_ssa_style->font_style.i_outline_width = atoi( psz_value );
}
else if( !strcasecmp( "shadow-color", psz_name ) )
{
if( *psz_value == '#' )
{
unsigned long col = strtol(psz_value+1, NULL, 16);
- p_style->font_style.i_shadow_color = (col & 0x00ffffff);
- p_style->font_style.i_shadow_alpha = (col >> 24) & 0xff;
+ p_ssa_style->font_style.i_shadow_color = (col & 0x00ffffff);
+ p_ssa_style->font_style.i_shadow_alpha = (col >> 24) & 0xff;
}
}
else if( !strcasecmp( "shadow-level", psz_name ) )
{
- p_style->font_style.i_shadow_width = atoi( psz_value );
+ p_ssa_style->font_style.i_shadow_width = atoi( psz_value );
}
else if( !strcasecmp( "back-color", psz_name ) )
{
if( *psz_value == '#' )
{
unsigned long col = strtol(psz_value+1, NULL, 16);
- p_style->font_style.i_karaoke_background_color = (col & 0x00ffffff);
- p_style->font_style.i_karaoke_background_alpha = (col >> 24) & 0xff;
+ p_ssa_style->font_style.i_karaoke_background_color = (col & 0x00ffffff);
+ p_ssa_style->font_style.i_karaoke_background_alpha = (col >> 24) & 0xff;
}
}
else if( !strcasecmp( "spacing", psz_name ) )
{
- p_style->font_style.i_spacing = atoi( psz_value );
+ p_ssa_style->font_style.i_spacing = atoi( psz_value );
}
}
free( psz_name );
if( !strcasecmp( "alignment", psz_name ) )
{
if( !strcasecmp( "TopLeft", psz_value ) )
- p_style->i_align = SUBPICTURE_ALIGN_TOP | SUBPICTURE_ALIGN_LEFT;
+ p_ssa_style->i_align = SUBPICTURE_ALIGN_TOP | SUBPICTURE_ALIGN_LEFT;
else if( !strcasecmp( "TopCenter", psz_value ) )
- p_style->i_align = SUBPICTURE_ALIGN_TOP;
+ p_ssa_style->i_align = SUBPICTURE_ALIGN_TOP;
else if( !strcasecmp( "TopRight", psz_value ) )
- p_style->i_align = SUBPICTURE_ALIGN_TOP | SUBPICTURE_ALIGN_RIGHT;
+ p_ssa_style->i_align = SUBPICTURE_ALIGN_TOP | SUBPICTURE_ALIGN_RIGHT;
else if( !strcasecmp( "MiddleLeft", psz_value ) )
- p_style->i_align = SUBPICTURE_ALIGN_LEFT;
+ p_ssa_style->i_align = SUBPICTURE_ALIGN_LEFT;
else if( !strcasecmp( "MiddleCenter", psz_value ) )
- p_style->i_align = 0;
+ p_ssa_style->i_align = 0;
else if( !strcasecmp( "MiddleRight", psz_value ) )
- p_style->i_align = SUBPICTURE_ALIGN_RIGHT;
+ p_ssa_style->i_align = SUBPICTURE_ALIGN_RIGHT;
else if( !strcasecmp( "BottomLeft", psz_value ) )
- p_style->i_align = SUBPICTURE_ALIGN_BOTTOM | SUBPICTURE_ALIGN_LEFT;
+ p_ssa_style->i_align = SUBPICTURE_ALIGN_BOTTOM | SUBPICTURE_ALIGN_LEFT;
else if( !strcasecmp( "BottomCenter", psz_value ) )
- p_style->i_align = SUBPICTURE_ALIGN_BOTTOM;
+ p_ssa_style->i_align = SUBPICTURE_ALIGN_BOTTOM;
else if( !strcasecmp( "BottomRight", psz_value ) )
- p_style->i_align = SUBPICTURE_ALIGN_BOTTOM | SUBPICTURE_ALIGN_RIGHT;
+ p_ssa_style->i_align = SUBPICTURE_ALIGN_BOTTOM | SUBPICTURE_ALIGN_RIGHT;
}
else if( !strcasecmp( "horizontal-margin", psz_name ) )
{
if( strchr( psz_value, '%' ) )
{
- p_style->i_margin_h = 0;
- p_style->i_margin_percent_h = atoi( psz_value );
+ p_ssa_style->i_margin_h = 0;
+ p_ssa_style->i_margin_percent_h = atoi( psz_value );
}
else
{
- p_style->i_margin_h = atoi( psz_value );
- p_style->i_margin_percent_h = 0;
+ p_ssa_style->i_margin_h = atoi( psz_value );
+ p_ssa_style->i_margin_percent_h = 0;
}
}
else if( !strcasecmp( "vertical-margin", psz_name ) )
{
if( strchr( psz_value, '%' ) )
{
- p_style->i_margin_v = 0;
- p_style->i_margin_percent_v = atoi( psz_value );
+ p_ssa_style->i_margin_v = 0;
+ p_ssa_style->i_margin_percent_v = atoi( psz_value );
}
else
{
- p_style->i_margin_v = atoi( psz_value );
- p_style->i_margin_percent_v = 0;
+ p_ssa_style->i_margin_v = atoi( psz_value );
+ p_ssa_style->i_margin_percent_v = 0;
}
}
}
break;
}
}
- free( p_style );
+ free( p_ssa_style );
}
/* Display the feed's image */
memset( &fmt_out, 0, sizeof( video_format_t));
- fmt_out.i_chroma = VLC_FOURCC('Y','U','V','A');
+ fmt_out.i_chroma = VLC_CODEC_YUVA;
fmt_out.i_aspect = VOUT_ASPECT_FACTOR;
fmt_out.i_sar_num = fmt_out.i_sar_den = 1;
fmt_out.i_width =
msg_Err( p_dec, "cannot allocate SPU region" );
return NULL;
}
- assert( p_pic->format.i_chroma == VLC_FOURCC('Y','U','V','A') );
+ assert( p_pic->format.i_chroma == VLC_CODEC_YUVA );
/* FIXME the copy is probably not needed anymore */
picture_CopyPixels( p_region->p_picture, p_pic );
int i_u = ( ( -38 * i_r - 74 * i_g + 112 * i_b + 128 ) >> 8 ) + 128 ;
int i_v = ( ( 112 * i_r - 94 * i_g - 18 * i_b + 128 ) >> 8 ) + 128 ;
- assert( p_region->fmt.i_chroma == VLC_FOURCC('Y','U','V','A') );
+ assert( p_region->fmt.i_chroma == VLC_CODEC_YUVA );
for( unsigned int y = 0; y < p_region->fmt.i_height; y++ )
{
for( unsigned int x = 0; x < p_region->fmt.i_width; x++ )
#include <vlc_common.h>
#include <vlc_plugin.h>
-#include <vlc_vout.h>
#include <vlc_codec.h>
#include <vlc_sout.h>
switch( p_enc->fmt_out.i_codec )
{
- case VLC_FOURCC('s','u','b','t'):
+ case VLC_CODEC_SUBT:
if( ( p_enc->fmt_out.subs.psz_encoding != NULL )
&& strcasecmp( p_enc->fmt_out.subs.psz_encoding, "utf8" )
&& strcasecmp( p_enc->fmt_out.subs.psz_encoding, "UTF-8" ) )
msg_Err( p_this, "Only UTF-8 encoding supported" );
return VLC_EGENERIC;
}
- case VLC_FOURCC('t','1','4','0'):
+ case VLC_CODEC_ITU_T140:
break;
default:
if( !p_enc->b_force )
return VLC_EGENERIC;
- p_enc->fmt_out.i_codec = VLC_FOURCC('t','1','4','0');
+ p_enc->fmt_out.i_codec = VLC_CODEC_ITU_T140;
}
p_enc->p_sys = NULL;
p_region = p_spu->p_region;
if( ( p_region == NULL )
- || ( p_region->fmt.i_chroma != VLC_FOURCC('T','E','X','T') )
+ || ( p_region->fmt.i_chroma != VLC_CODEC_TEXT )
|| ( p_region->psz_text == NULL ) )
return NULL;
decoder_t *p_dec = (decoder_t*)p_this;
decoder_sys_t *p_sys;
- if( p_dec->fmt_in.i_codec != VLC_FOURCC( 'o','g','t',' ' ) )
- {
+ if( p_dec->fmt_in.i_codec != VLC_CODEC_OGT )
return VLC_EGENERIC;
- }
p_dec->p_sys = p_sys = calloc( 1, sizeof( decoder_sys_t ) );
if( p_sys == NULL )
p_sys->i_state = SUBTITLE_BLOCK_EMPTY;
p_sys->p_spu = NULL;
- es_format_Init( &p_dec->fmt_out, SPU_ES, VLC_FOURCC( 'o','g','t',' ' ) );
+ es_format_Init( &p_dec->fmt_out, SPU_ES, VLC_CODEC_OGT );
p_dec->pf_decode_sub = Decode;
p_dec->pf_packetize = Packetize;
/* Create new subtitle region */
memset( &fmt, 0, sizeof(video_format_t) );
- fmt.i_chroma = VLC_FOURCC('Y','U','V','P');
+ fmt.i_chroma = VLC_CODEC_YUVP;
/**
The video on which the subtitle sits, is scaled, probably
#include <vlc_common.h>
#include <vlc_plugin.h>
#include <vlc_codec.h>
-#include <vlc_vout.h>
#include <ogg/ogg.h>
/* FIXME */
decoder_t *p_dec = (decoder_t*)p_this;
decoder_sys_t *p_sys;
- if( p_dec->fmt_in.i_codec != VLC_FOURCC('t','a','r','k') )
+ if( p_dec->fmt_in.i_codec != VLC_CODEC_TARKIN )
{
return VLC_EGENERIC;
}
switch( p_sys->tarkin_stream->layer->desc.format )
{
case TARKIN_RGB24:
- i_chroma = VLC_FOURCC('R','V','2','4');
+ i_chroma = VLC_CODEC_RGB24;
i_stride = i_width * 3;
break;
case TARKIN_RGB32:
- i_chroma = VLC_FOURCC('R','V','3','2');
+ i_chroma = VLC_CODEC_RGB32;
i_stride = i_width * 4;
break;
case TARKIN_RGBA:
- i_chroma = VLC_FOURCC('R','G','B','A');
+ i_chroma = VLC_CODEC_RGBA;
i_stride = i_width * 4;
break;
default:
- i_chroma = VLC_FOURCC('I','4','2','0');
+ i_chroma = VLC_CODEC_I420;
i_stride = i_width;
break;
}
#include <vlc_common.h>
#include <vlc_plugin.h>
-#include "vlc_vout.h"
#include "vlc_bits.h"
#include "vlc_codec.h"
vlc_value_t val;
int i;
- if( p_dec->fmt_in.i_codec != VLC_FOURCC('t','e','l','x'))
+ if( p_dec->fmt_in.i_codec != VLC_CODEC_TELETEXT)
{
return VLC_EGENERIC;
}
/* Create a new subpicture region */
memset( &fmt, 0, sizeof(video_format_t) );
- fmt.i_chroma = VLC_FOURCC('T','E','X','T');
+ fmt.i_chroma = VLC_CODEC_TEXT;
fmt.i_aspect = 0;
fmt.i_width = fmt.i_height = 0;
fmt.i_x_offset = fmt.i_y_offset = 0;
#include <vlc_common.h>
#include <vlc_plugin.h>
#include <vlc_codec.h>
-#include <vlc_vout.h>
#include <vlc_sout.h>
#include <vlc_input.h>
#include <ogg/ogg.h>
decoder_t *p_dec = (decoder_t*)p_this;
decoder_sys_t *p_sys;
- if( p_dec->fmt_in.i_codec != VLC_FOURCC('t','h','e','o') )
+ if( p_dec->fmt_in.i_codec != VLC_CODEC_THEORA )
{
return VLC_EGENERIC;
}
/* Set output properties */
p_dec->fmt_out.i_cat = VIDEO_ES;
- p_dec->fmt_out.i_codec = VLC_FOURCC('I','4','2','0');
+ p_dec->fmt_out.i_codec = VLC_CODEC_I420;
/* Set callbacks */
p_dec->pf_decode_video = (picture_t *(*)(decoder_t *, block_t **))
if( i_ret == VLC_SUCCESS )
{
p_dec->p_sys->b_packetizer = true;
- p_dec->fmt_out.i_codec = VLC_FOURCC( 't', 'h', 'e', 'o' );
+ p_dec->fmt_out.i_codec = VLC_CODEC_THEORA;
}
return i_ret;
switch( p_sys->ti.pixelformat )
{
case OC_PF_420:
- p_dec->fmt_out.i_codec = VLC_FOURCC( 'I','4','2','0' );
+ p_dec->fmt_out.i_codec = VLC_CODEC_I420;
break;
case OC_PF_422:
- p_dec->fmt_out.i_codec = VLC_FOURCC( 'I','4','2','2' );
+ p_dec->fmt_out.i_codec = VLC_CODEC_I422;
break;
case OC_PF_444:
- p_dec->fmt_out.i_codec = VLC_FOURCC( 'I','4','4','4' );
+ p_dec->fmt_out.i_codec = VLC_CODEC_I444;
break;
case OC_PF_RSVD:
default:
vlc_value_t val;
int i_quality, i;
- if( p_enc->fmt_out.i_codec != VLC_FOURCC('t','h','e','o') &&
+ if( p_enc->fmt_out.i_codec != VLC_CODEC_THEORA &&
!p_enc->b_force )
{
return VLC_EGENERIC;
p_enc->p_sys = p_sys;
p_enc->pf_encode_video = Encode;
- p_enc->fmt_in.i_codec = VLC_FOURCC('I','4','2','0');
- p_enc->fmt_out.i_codec = VLC_FOURCC('t','h','e','o');
+ p_enc->fmt_in.i_codec = VLC_CODEC_I420;
+ p_enc->fmt_out.i_codec = VLC_CODEC_THEORA;
config_ChainParse( p_enc, ENC_CFG_PREFIX, ppsz_enc_options, p_enc->p_cfg );
vlc_value_t val;
int i_frequency;
- if( p_enc->fmt_out.i_codec != VLC_FOURCC('m','p','g','a') &&
+ if( p_enc->fmt_out.i_codec != VLC_CODEC_MPGA &&
p_enc->fmt_out.i_codec != VLC_FOURCC('m','p','2','a') &&
p_enc->fmt_out.i_codec != VLC_FOURCC('m','p','2',' ') &&
!p_enc->b_force )
p_enc->p_sys = p_sys;
p_enc->pf_encode_audio = Encode;
- p_enc->fmt_in.i_codec = AOUT_FMT_S16_NE;
+ p_enc->fmt_in.i_codec = VLC_CODEC_S16N;
p_enc->fmt_out.i_cat = AUDIO_ES;
- p_enc->fmt_out.i_codec = VLC_FOURCC('m','p','g','a');
+ p_enc->fmt_out.i_codec = VLC_CODEC_MPGA;
config_ChainParse( p_enc, ENC_CFG_PREFIX, ppsz_enc_options, p_enc->p_cfg );
decoder_t *p_dec = (decoder_t*)p_this;
decoder_sys_t *p_sys;
- if( p_dec->fmt_in.i_codec != VLC_FOURCC('v','o','r','b') )
+ if( p_dec->fmt_in.i_codec != VLC_CODEC_VORBIS )
{
return VLC_EGENERIC;
}
/* Set output properties */
p_dec->fmt_out.i_cat = AUDIO_ES;
#ifdef MODULE_NAME_IS_tremor
- p_dec->fmt_out.i_codec = VLC_FOURCC('f','i','3','2');
+ p_dec->fmt_out.i_codec = VLC_CODEC_FI32;
#else
- p_dec->fmt_out.i_codec = VLC_FOURCC('f','l','3','2');
+ p_dec->fmt_out.i_codec = VLC_CODEC_FL32;
#endif
/* Set callbacks */
if( i_ret == VLC_SUCCESS )
{
p_dec->p_sys->b_packetizer = true;
- p_dec->fmt_out.i_codec = VLC_FOURCC('v','o','r','b');
+ p_dec->fmt_out.i_codec = VLC_CODEC_VORBIS;
}
return i_ret;
vlc_value_t val;
uint8_t *p_extra;
- if( p_enc->fmt_out.i_codec != VLC_FOURCC('v','o','r','b') &&
+ if( p_enc->fmt_out.i_codec != VLC_CODEC_VORBIS &&
!p_enc->b_force )
{
return VLC_EGENERIC;
p_enc->p_sys = p_sys;
p_enc->pf_encode_audio = Encode;
- p_enc->fmt_in.i_codec = VLC_FOURCC('f','l','3','2');
- p_enc->fmt_out.i_codec = VLC_FOURCC('v','o','r','b');
+ p_enc->fmt_in.i_codec = VLC_CODEC_FL32;
+ p_enc->fmt_out.i_codec = VLC_CODEC_VORBIS;
config_ChainParse( p_enc, ENC_CFG_PREFIX, ppsz_enc_options, p_enc->p_cfg );
decoder_t *p_dec = (decoder_t*)p_this;
decoder_sys_t *p_sys;
- if( p_dec->fmt_in.i_codec != VLC_FOURCC('w','m','a','1') &&
- p_dec->fmt_in.i_codec != VLC_FOURCC('W','M','A','1') &&
- p_dec->fmt_in.i_codec != VLC_FOURCC('w','m','a','2') &&
- p_dec->fmt_in.i_codec != VLC_FOURCC('W','M','A','2') )
+ if( p_dec->fmt_in.i_codec != VLC_CODEC_WMA1 &&
+ p_dec->fmt_in.i_codec != VLC_CODEC_WMA2 )
{
return VLC_EGENERIC;
}
/* Set output properties */
p_dec->fmt_out.i_cat = AUDIO_ES;
- p_dec->fmt_out.i_codec = VLC_FOURCC('f','i','3','2');
+ p_dec->fmt_out.i_codec = VLC_CODEC_FI32;
p_dec->fmt_out.audio.i_bitspersample = p_dec->fmt_in.audio.i_bitspersample;
p_dec->fmt_out.audio.i_rate = p_dec->fmt_in.audio.i_rate;
wfx.rate, wfx.bitrate, wfx.channels, wfx.blockalign,
wfx.bitspersample );
- if( p_dec->fmt_in.i_codec == VLC_FOURCC('w','m','a','1')
- || p_dec->fmt_in.i_codec == VLC_FOURCC('W','M','A','1') )
+ if( p_dec->fmt_in.i_codec == VLC_CODEC_WMA1 )
wfx.codec_id = ASF_CODEC_ID_WMAV1;
- else if( p_dec->fmt_in.i_codec == VLC_FOURCC('W','M','A','2')
- || p_dec->fmt_in.i_codec == VLC_FOURCC('w','m','a','2') )
+ else if( p_dec->fmt_in.i_codec == VLC_CODEC_WMA2 )
wfx.codec_id = ASF_CODEC_ID_WMAV2;
wfx.datalen = p_dec->fmt_in.i_extra;
#include <vlc_common.h>
#include <vlc_plugin.h>
-#include <vlc_vout.h>
#include <vlc_sout.h>
#include <vlc_codec.h>
x264_nal_t *nal;
int i, i_nal;
- if( p_enc->fmt_out.i_codec != VLC_FOURCC( 'h', '2', '6', '4' ) &&
+ if( p_enc->fmt_out.i_codec != VLC_CODEC_H264 &&
!p_enc->b_force )
{
return VLC_EGENERIC;
config_ChainParse( p_enc, SOUT_CFG_PREFIX, ppsz_sout_options, p_enc->p_cfg );
p_enc->fmt_out.i_cat = VIDEO_ES;
- p_enc->fmt_out.i_codec = VLC_FOURCC( 'h', '2', '6', '4' );
- p_enc->fmt_in.i_codec = VLC_FOURCC('I','4','2','0');
+ p_enc->fmt_out.i_codec = VLC_CODEC_H264;
+ p_enc->fmt_in.i_codec = VLC_CODEC_I420;
p_enc->pf_encode_video = Encode;
p_enc->pf_encode_audio = NULL;
#include <vlc_common.h>
#include <vlc_plugin.h>
-#include <vlc_vout.h>
#include <vlc_codec.h>
#include <vlc_codec_synchro.h>
#ifdef __GLIBC__
mtrace();
#endif
- if( p_dec->fmt_in.i_codec != VLC_FOURCC('m','p','g','v') &&
- p_dec->fmt_in.i_codec != VLC_FOURCC('m','p','g','1') &&
- /* Pinnacle hardware-mpeg1 */
- p_dec->fmt_in.i_codec != VLC_FOURCC('P','I','M','1') &&
- /* VIA hardware-mpeg2 */
- p_dec->fmt_in.i_codec != VLC_FOURCC('X','x','M','C') &&
- /* ATI Video */
- p_dec->fmt_in.i_codec != VLC_FOURCC('V','C','R','2') &&
- p_dec->fmt_in.i_codec != VLC_FOURCC('m','p','g','2') )
- {
+ if( p_dec->fmt_in.i_codec != VLC_CODEC_MPGV )
return VLC_EGENERIC;
+ /* Select onl recognized original format (standard mpeg video) */
+ switch( p_dec->fmt_in.i_original_fourcc )
+ {
+ case VLC_FOURCC('m','p','g','1'):
+ case VLC_FOURCC('m','p','g','2'):
+ case VLC_FOURCC('m','p','g','v'):
+ /* Pinnacle hardware-mpeg1 */
+ case VLC_FOURCC('P','I','M','1'):
+ /* VIA hardware-mpeg2 */
+ case VLC_FOURCC('X','x','M','C'):
+ /* ATI Video */
+ case VLC_FOURCC('V','C','R','2'):
+ break;
+ default:
+ if( p_dec->fmt_in.i_original_fourcc )
+ return VLC_EGENERIC;
+ break;
}
msg_Dbg(p_dec, "OpenDecoder Entering");
p_dec->fmt_out.i_codec =
( p_sys->p_info->sequence->chroma_height <
p_sys->p_info->sequence->height ) ?
- VLC_FOURCC('I','4','2','0') : VLC_FOURCC('I','4','2','2');
+ VLC_CODEC_I420 : VLC_CODEC_I422;
#if 0
p_sys->f_wd_nb = fopen("/vlc/dec_nb", "w");
#include <assert.h>
#include <libzvbi.h>
-#include <vlc_vout.h>
#include <vlc_codec.h>
#include <vlc_osd.h>
decoder_t *p_dec = (decoder_t *) p_this;
decoder_sys_t *p_sys = NULL;
- if( p_dec->fmt_in.i_codec != VLC_FOURCC('t','e','l','x') )
+ if( p_dec->fmt_in.i_codec != VLC_CODEC_TELETEXT )
return VLC_EGENERIC;
p_dec->pf_decode_sub = Decode;
/* Listen for keys */
var_AddCallback( p_dec->p_libvlc, "key-pressed", EventKey, p_dec );
- es_format_Init( &p_dec->fmt_out, SPU_ES, VLC_FOURCC( 's','p','u',' ' ) );
+ es_format_Init( &p_dec->fmt_out, SPU_ES, VLC_CODEC_SPU );
if( p_sys->b_text )
- p_dec->fmt_out.video.i_chroma = VLC_FOURCC('T','E','X','T');
+ p_dec->fmt_out.video.i_chroma = VLC_CODEC_TEXT;
else
- p_dec->fmt_out.video.i_chroma = VLC_FOURCC('R','G','B','A');
+ p_dec->fmt_out.video.i_chroma = VLC_CODEC_RGBA;
return VLC_SUCCESS;
}
}
memset( &fmt, 0, sizeof(video_format_t) );
- fmt.i_chroma = b_text ? VLC_FOURCC('T','E','X','T') :
- VLC_FOURCC('R','G','B','A');
+ fmt.i_chroma = b_text ? VLC_CODEC_TEXT :
+ VLC_CODEC_RGBA;
fmt.i_aspect = b_text ? 0 : VOUT_ASPECT_FACTOR;
if( b_text )
{
{
unsigned int x, y;
- assert( fmt.i_chroma == VLC_FOURCC('R','G','B','A' ) );
+ assert( fmt.i_chroma == VLC_CODEC_RGBA );
/* Kludge since zvbi doesn't provide an option to specify opacity. */
for( y = 0; y < fmt.i_height; y++ )
if( i_position < p_playlist->current.i_size )
{
playlist_DeleteFromInput( p_playlist,
- p_playlist->current.p_elems[i_position]->p_input->i_id,
+ p_playlist->current.p_elems[i_position]->p_input,
pl_Locked );
}
PL_UNLOCK;
_("Aspect ratio: %s"),
text_list.p_list->p_values[i].psz_string );
- var_Change( p_vout, "aspect-ratio", VLC_VAR_FREELIST, &val_list, &text_list );
+ var_FreeList( &val_list, &text_list );
}
free( val.psz_string );
}
_("Crop: %s"),
text_list.p_list->p_values[i].psz_string );
- var_Change( p_vout, "crop", VLC_VAR_FREELIST, &val_list, &text_list );
+ var_FreeList( &val_list, &text_list );
}
free( val.psz_string );
}
_("Deinterlace mode: %s"),
text_list.p_list->p_values[i].psz_string );
- var_Change( p_vout, "deinterlace", VLC_VAR_FREELIST, &val_list, &text_list );
+ var_FreeList( &val_list, &text_list );
}
free( val.psz_string );
}
_("Zoom mode: %s"),
text_list.p_list->p_values[i].var.psz_name );
- var_Change( p_vout, "zoom", VLC_VAR_FREELIST, &val_list, &text_list );
+ var_FreeList( &val_list, &text_list );
}
}
else if( i_action == ACTIONID_CROP_TOP && p_vout )
/* Special action for mouse event */
/* FIXME: rework hotkeys handling to allow more than 1 event
* to trigger one same action */
- switch (newval.i_int & KEY_SPECIAL)
+ switch (newval.i_int & ~KEY_MODIFIER)
{
case KEY_MOUSEWHEELUP:
i_action = (i_mode == MOUSEWHEEL_VOLUME ) ? ACTIONID_VOL_UP
case KEY_MENU:
var_SetBool( libvlc, "intf-popupmenu", true );
break;
- default:
- return VLC_SUCCESS;
}
if( i_mode == NO_MOUSEWHEEL ) return VLC_SUCCESS;
}
case MVLC_DEL:
{
- int i_item, *p_items = NULL, i_nb_items = 0;
+ int *p_items = NULL;
+ size_t i_nb_items = 0;
char item[512];
const char *p_parser = p_request;
{
if( !*item ) continue;
- i_item = atoi( item );
+ int i_item = atoi( item );
p_items = realloc( p_items, (i_nb_items + 1) *
- sizeof(int) );
+ sizeof(*p_items) );
p_items[i_nb_items] = i_item;
i_nb_items++;
}
- if( i_nb_items )
+ for( size_t i = 0; i < i_nb_items; i++ )
{
- int i;
- for( i = 0; i < i_nb_items; i++ )
- {
+ playlist_item_t *p_item;
+
+ msg_Dbg( p_intf, "requested playlist delete: %d",
+ p_items[i] );
+ p_item = playlist_ItemGetById( p_sys->p_playlist,
+ p_items[i] );
+ if( p_item )
playlist_DeleteFromInput( p_sys->p_playlist,
- p_items[i], false );
- msg_Dbg( p_intf, "requested playlist delete: %d",
- p_items[i] );
- p_items[i] = -1;
- }
+ p_item->p_input,
+ false );
}
free( p_items );
}
case MVLC_KEEP:
{
- int i_item, *p_items = NULL, i_nb_items = 0;
+ int *p_items = NULL;
+ size_t i_nb_items = 0, i;
char item[512];
const char *p_parser = p_request;
- int i,j;
/* Get the list of items to keep */
while( (p_parser =
{
if( !*item ) continue;
- i_item = atoi( item );
+ int i_item = atoi( item );
p_items = realloc( p_items, (i_nb_items + 1) *
- sizeof(int) );
+ sizeof(*p_items) );
p_items[i_nb_items] = i_item;
i_nb_items++;
}
- for( i = p_sys->p_playlist->items.i_size - 1 ; i >= 0; i-- )
+ for( i = 0; i < p_sys->p_playlist->items.i_size; i++ )
{
+ size_t j;
+
/* Check if the item is in the keep list */
for( j = 0 ; j < i_nb_items ; j++ )
{
if( p_items[j] ==
- ARRAY_VAL(p_sys->p_playlist->items,i)
- ->i_id)
+ ARRAY_VAL(p_sys->p_playlist->items,i)->i_id)
break;
}
if( j == i_nb_items )
{
+ msg_Dbg( p_intf, "requested playlist delete: %d",
+ p_sys->p_playlist->items.p_elems[i]->i_id );
playlist_DeleteFromInput( p_sys->p_playlist,
- p_sys->p_playlist->items.p_elems[i]->i_id,
+ p_sys->p_playlist->items.p_elems[i]->p_input,
false );
- msg_Dbg( p_intf, "requested playlist delete: %d",
- i );
}
}
}
/* clean up everything */
if( (i_type & VLC_VAR_TYPE) == VLC_VAR_STRING ) free( val.psz_string );
- var_Change( p_sys->p_input, psz_variable, VLC_VAR_FREELIST, &val_list,
- &text_list );
+ var_FreeList( &val_list, &text_list );
return s;
}
if( p_item )
{
playlist_DeleteFromInput( p_sys->p_playlist,
- p_item->p_input->i_id, pl_Locked );
+ p_item->p_input, pl_Locked );
msg_Dbg( p_intf, "requested playlist delete: %d", i_id );
}
else
return;
mvar_t *itm = mvar_New( name, "set" );
- if( p_item->p_input->i_id == p_node->p_input->i_id )
+ if( p_item->p_input == p_node->p_input )
mvar_AppendNewVar( itm, "current", "1" );
else
mvar_AppendNewVar( itm, "current", "0" );
if( asprintf( &psz_temp, "%s,none", psz_module ) != -1 )
{
- intf_thread_t *p_new_intf;
-
/* Try to create the interface */
- p_new_intf = intf_Create( p_intf, psz_temp );
- if( p_new_intf == NULL )
+ if( intf_Create( p_intf, psz_temp ) )
{
msg_Err( p_intf, "interface \"%s\" initialization failed",
psz_temp );
free( psz_temp );
continue;
}
-
- /* Try to run the interface */
- if( intf_RunThread( p_new_intf ) )
- {
- vlc_object_detach( p_new_intf );
- vlc_object_release( p_new_intf );
- msg_Err( p_intf, "interface \"%s\" cannot run", psz_temp );
- }
-
free( psz_temp );
}
}
}
else
{
- vlc_value_t val_list;
-
/* Get. */
var_Get( p_input, "chapter", &val );
- var_Change( p_input, "chapter", VLC_VAR_GETCHOICES,
- &val_list, NULL );
- msg_rc( "Currently playing chapter %d/%d.",
- val.i_int, val_list.p_list->i_count );
- var_Change( p_this, "chapter", VLC_VAR_FREELIST,
- &val_list, NULL );
+ int i_chapter_count = var_CountChoices( p_input, "chapter" );
+ msg_rc( "Currently playing chapter %d/%d.", val.i_int,
+ i_chapter_count );
}
}
else if( !strcmp( psz_cmd, "chapter_n" ) )
}
else
{
- vlc_value_t val_list;
-
/* Get. */
var_Get( p_input, "title", &val );
- var_Change( p_input, "title", VLC_VAR_GETCHOICES,
- &val_list, NULL );
- msg_rc( "Currently playing title %d/%d.",
- val.i_int, val_list.p_list->i_count );
- var_Change( p_this, "title", VLC_VAR_FREELIST,
- &val_list, NULL );
+ int i_title_count = var_CountChoices( p_input, "title" );
+ msg_rc( "Currently playing title %d/%d.", val.i_int,
+ i_title_count );
}
}
else if( !strcmp( psz_cmd, "title_n" ) )
msg_rc( "| %i - %s", val.p_list->p_values[i].i_int,
text.p_list->p_values[i].psz_string );
}
- var_Change( p_input, psz_variable, VLC_VAR_FREELIST,
- &val, &text );
+ var_FreeList( &val, &text );
msg_rc( "+----[ end of %s ]", val_name.psz_string );
free( val_name.psz_string );
vlc_value_t oldval, vlc_value_t newval, void *p_data )
{
VLC_UNUSED(psz_cmd); VLC_UNUSED(oldval); VLC_UNUSED(p_data);
- intf_thread_t *p_newintf = NULL;
-
- p_newintf = intf_Create( p_this->p_libvlc, newval.psz_string );
- if( p_newintf )
- {
- if( intf_RunThread( p_newintf ) )
- {
- vlc_object_detach( p_newintf );
- vlc_object_release( p_newintf );
- }
- }
- return VLC_SUCCESS;
+ return intf_Create( p_this->p_libvlc, newval.psz_string );
}
static int Volume( vlc_object_t *p_this, char const *psz_cmd,
}
free( psz_value );
}
- var_Change( p_vout, psz_variable, VLC_VAR_FREELIST,
- &val, &text );
+ var_FreeList( &val, &text );
msg_rc( "+----[ end of %s ]", val_name.psz_string );
free( val_name.psz_string );
msg_rc( "| %i - %s", val.p_list->p_values[i].i_int,
text.p_list->p_values[i].psz_string );
}
- var_Change( (vlc_object_t *)p_aout, psz_variable, VLC_VAR_FREELIST,
- &val, &text );
+ var_FreeList( &val, &text );
msg_rc( "+----[ end of %s ]", val_name.psz_string );
free( val_name.psz_string );
SOURCES_subtitle = subtitle.c
SOURCES_asademux = subtitle_asa.c asademux.c asademux_defs.h asademux.h
SOURCES_ty = ty.c ../codec/cc.h
-SOURCES_vobsub = vobsub.c
+SOURCES_vobsub = vobsub.c vobsub.h
SOURCES_voc = voc.c
SOURCES_xa = xa.c
SOURCES_nuv = nuv.c
es_format_Init( &fmt, AUDIO_ES, 0 );
i_format = GetWLE( &p_data[0] );
if( i_format == 0 )
- fmt.i_codec = VLC_FOURCC( 'a','5','2',' ');
+ fmt.i_codec = VLC_CODEC_A52;
else
wf_tag_to_fourcc( i_format, &fmt.i_codec, NULL );
fmt.audio.i_channels = GetWLE( &p_data[2] );
switch( GetDWBE( &hdr[8] ) )
{
case AU_ALAW_8: /* 8-bit ISDN A-law */
- p_sys->fmt.i_codec = VLC_FOURCC( 'a','l','a','w' );
+ p_sys->fmt.i_codec = VLC_CODEC_ALAW;
p_sys->fmt.audio.i_bitspersample = 8;
p_sys->fmt.audio.i_blockalign = 1 * p_sys->fmt.audio.i_channels;
i_cat = AU_CAT_PCM;
break;
case AU_MULAW_8: /* 8-bit ISDN u-law */
- p_sys->fmt.i_codec = VLC_FOURCC( 'u','l','a','w' );
+ p_sys->fmt.i_codec = VLC_CODEC_MULAW;
p_sys->fmt.audio.i_bitspersample = 8;
p_sys->fmt.audio.i_blockalign = 1 * p_sys->fmt.audio.i_channels;
i_cat = AU_CAT_PCM;
demux.c \
../../codec/avcodec/fourcc.c \
../../codec/avcodec/chroma.c \
+ ../vobsub.h \
$(NULL)
if ENABLE_SOUT
SOURCES_avformat += mux.c
#include "../../codec/avcodec/avcodec.h"
#include "avformat.h"
+#include "../vobsub.h"
//#define AVFORMAT_DEBUG 1
case CODEC_TYPE_SUBTITLE:
es_format_Init( &fmt, SPU_ES, fcc );
+ if( strncmp( p_sys->ic->iformat->name, "matroska", 8 ) == 0 &&
+ cc->codec_id == CODEC_ID_DVD_SUBTITLE &&
+ cc->extradata != NULL &&
+ cc->extradata_size > 0 )
+ {
+ char *psz_start;
+ char *psz_buf = malloc( cc->extradata_size + 1);
+ if( psz_buf != NULL )
+ {
+ memcpy( psz_buf, cc->extradata , cc->extradata_size );
+ psz_buf[cc->extradata_size] = '\0';
+
+ psz_start = strstr( psz_buf, "size:" );
+ if( psz_start &&
+ vobsub_size_parse( psz_start,
+ &fmt.subs.spu.i_original_frame_width,
+ &fmt.subs.spu.i_original_frame_height ) == VLC_SUCCESS )
+ {
+ msg_Dbg( p_demux, "original frame size: %dx%d",
+ fmt.subs.spu.i_original_frame_width,
+ fmt.subs.spu.i_original_frame_height );
+ }
+ else
+ {
+ msg_Warn( p_demux, "reading original frame size failed" );
+ }
+
+ psz_start = strstr( psz_buf, "palette:" );
+ if( psz_start &&
+ vobsub_palette_parse( psz_start, &fmt.subs.spu.palette[1] ) == VLC_SUCCESS )
+ {
+ fmt.subs.spu.palette[0] = 0xBeef;
+ msg_Dbg( p_demux, "vobsub palette read" );
+ }
+ else
+ {
+ msg_Warn( p_demux, "reading original palette failed" );
+ }
+ free( psz_buf );
+ }
+ }
+
psz_type = "subtitle";
break;
/* This is a hack */
if( i_codec_id == CODEC_ID_MP2 )
i_codec_id = CODEC_ID_MP3;
- codec->codec_tag = p_input->p_fmt->i_codec;
+ codec->codec_tag = p_input->p_fmt->i_original_fourcc ?: p_input->p_fmt->i_codec;
#endif
codec->codec_id = i_codec_id;
tk->i_samplesize = tk->i_blocksize;
}
- if( tk->i_codec == VLC_FOURCC( 'v', 'o', 'r', 'b' ) )
+ if( tk->i_codec == VLC_CODEC_VORBIS )
{
tk->i_blocksize = 0; /* fix vorbis VBR decoding */
}
* - Size of the next packet, and so on ...
*/
- if( tk->i_codec == VLC_FOURCC( 'v', 'o', 'r', 'b' ) )
+ if( tk->i_codec == VLC_CODEC_VORBIS )
{
uint8_t *p_extra = fmt.p_extra;
size_t i_extra = fmt.i_extra;
switch( p_vids->p_bih->biBitCount )
{
case 32:
- tk->i_codec = VLC_FOURCC('R','V','3','2');
+ tk->i_codec = VLC_CODEC_RGB32;
break;
case 24:
- tk->i_codec = VLC_FOURCC('R','V','2','4');
+ tk->i_codec = VLC_CODEC_RGB24;
break;
case 16: /* Yes it is RV15 */
case 15:
- tk->i_codec = VLC_FOURCC('R','V','1','5');
+ tk->i_codec = VLC_CODEC_RGB15;
break;
case 9: /* <- TODO check that */
- tk->i_codec = VLC_FOURCC( 'Y', 'V', 'U', '9' );
+ tk->i_codec = VLC_CODEC_I410;
break;
case 8: /* <- TODO check that */
- tk->i_codec = VLC_FOURCC('Y','8','0','0');
+ tk->i_codec = VLC_CODEC_GREY;
break;
}
es_format_Init( &fmt, VIDEO_ES, tk->i_codec );
switch( tk->i_codec )
{
- case VLC_FOURCC('R','V','2','4'):
- case VLC_FOURCC('R','V','3','2'):
+ case VLC_CODEC_RGB24:
+ case VLC_CODEC_RGB32:
fmt.video.i_rmask = 0x00ff0000;
fmt.video.i_gmask = 0x0000ff00;
fmt.video.i_bmask = 0x000000ff;
break;
- case VLC_FOURCC('R','V','1','5'):
+ case VLC_CODEC_RGB15:
fmt.video.i_rmask = 0x7c00;
fmt.video.i_gmask = 0x03e0;
fmt.video.i_bmask = 0x001f;
else
{
es_format_Init( &fmt, VIDEO_ES, p_vids->p_bih->biCompression );
- if( tk->i_codec == FOURCC_mp4v &&
+ if( tk->i_codec == VLC_CODEC_MP4V &&
!strncasecmp( (char*)&p_strh->i_handler, "XVID", 4 ) )
{
- fmt.i_codec = VLC_FOURCC( 'X', 'V', 'I', 'D' );
+ fmt.i_codec =
+ fmt.i_original_fourcc = VLC_FOURCC( 'X', 'V', 'I', 'D' );
}
}
tk->i_samplesize = 0;
case( AVIFOURCC_txts):
tk->i_cat = SPU_ES;
- tk->i_codec = VLC_FOURCC( 's', 'u', 'b', 't' );
+ tk->i_codec = VLC_CODEC_SUBT;
msg_Dbg( p_demux, "stream[%d] subtitles", i );
es_format_Init( &fmt, SPU_ES, tk->i_codec );
break;
{
switch( i_fourcc )
{
- case FOURCC_DIV1:
+ case VLC_CODEC_DIV1:
/* we have:
* startcode: 0x00000100 32bits
* framenumber ? 5bits
}
return p_byte[4] & 0x06 ? 0 : AVIIF_KEYFRAME;
- case FOURCC_DIV2:
- case FOURCC_DIV3: /* wmv1 also */
+ case VLC_CODEC_DIV2:
+ case VLC_CODEC_DIV3:
+ case VLC_CODEC_WMV1:
/* we have
* picture type 0(I),1(P) 2bits
*/
return p_byte[0] & 0xC0 ? 0 : AVIIF_KEYFRAME;
- case FOURCC_mp4v:
+ case VLC_CODEC_MP4V:
/* we should find first occurrence of 0x000001b6 (32bits)
* startcode: 0x000001b6 32bits
* piture type 0(I),1(P) 2bits
case AUDIO_ES:
wf_tag_to_fourcc( i_codec, &i_codec, NULL );
return i_codec;
-
case VIDEO_ES:
- /* XXX DIV1 <- msmpeg4v1, DIV2 <- msmpeg4v2, DIV3 <- msmpeg4v3, mp4v for mpeg4 */
- switch( i_codec )
- {
- case FOURCC_1:
- return VLC_FOURCC('m','r','l','e');
- case FOURCC_DIV1:
- case FOURCC_div1:
- case FOURCC_MPG4:
- case FOURCC_mpg4:
- return FOURCC_DIV1;
- case FOURCC_DIV2:
- case FOURCC_div2:
- case FOURCC_MP42:
- case FOURCC_mp42:
- case FOURCC_MPG3:
- case FOURCC_mpg3:
- return FOURCC_DIV2;
- case FOURCC_div3:
- case FOURCC_MP43:
- case FOURCC_mp43:
- case FOURCC_DIV3:
- case FOURCC_DIV4:
- case FOURCC_div4:
- case FOURCC_DIV5:
- case FOURCC_div5:
- case FOURCC_DIV6:
- case FOURCC_div6:
- case FOURCC_AP41:
- case FOURCC_3IV1:
- case FOURCC_3iv1:
- case FOURCC_3IVD:
- case FOURCC_3ivd:
- case FOURCC_3VID:
- case FOURCC_3vid:
- return FOURCC_DIV3;
- case FOURCC_DIVX:
- case FOURCC_divx:
- case FOURCC_MP4S:
- case FOURCC_mp4s:
- case FOURCC_M4S2:
- case FOURCC_m4s2:
- case FOURCC_xvid:
- case FOURCC_XVID:
- case FOURCC_XviD:
- case FOURCC_DX50:
- case FOURCC_dx50:
- case FOURCC_mp4v:
- case FOURCC_4:
- case FOURCC_3IV2:
- case FOURCC_3iv2:
- return FOURCC_mp4v;
- }
+ return vlc_fourcc_GetCodec( i_cat, i_codec );
default:
return VLC_FOURCC( 'u', 'n', 'd', 'f' );
}
#define AVITWOCC_AC VLC_TWOCC('A','C')
/* *** codex stuff *** */
- /* Microsoft RLE video */
-#define FOURCC_1 VLC_FOURCC( 1, 0, 0, 0 )
-
- /* MPEG4 video */
-#define FOURCC_DIVX VLC_FOURCC('D','I','V','X')
-#define FOURCC_divx VLC_FOURCC('d','i','v','x')
-#define FOURCC_DIV1 VLC_FOURCC('D','I','V','1')
-#define FOURCC_div1 VLC_FOURCC('d','i','v','1')
-#define FOURCC_MP4S VLC_FOURCC('M','P','4','S')
-#define FOURCC_mp4s VLC_FOURCC('m','p','4','s')
-#define FOURCC_M4S2 VLC_FOURCC('M','4','S','2')
-#define FOURCC_m4s2 VLC_FOURCC('m','4','s','2')
-#define FOURCC_xvid VLC_FOURCC('x','v','i','d')
-#define FOURCC_XVID VLC_FOURCC('X','V','I','D')
-#define FOURCC_XviD VLC_FOURCC('X','v','i','D')
-#define FOURCC_DX50 VLC_FOURCC('D','X','5','0')
-#define FOURCC_dx50 VLC_FOURCC('d','x','5','0')
-#define FOURCC_mp4v VLC_FOURCC('m','p','4','v')
-#define FOURCC_4 VLC_FOURCC( 4, 0, 0, 0 )
-
- /* MSMPEG4 v2 */
-#define FOURCC_MPG4 VLC_FOURCC('M','P','G','4')
-#define FOURCC_mpg4 VLC_FOURCC('m','p','g','4')
-#define FOURCC_DIV2 VLC_FOURCC('D','I','V','2')
-#define FOURCC_div2 VLC_FOURCC('d','i','v','2')
-#define FOURCC_MP42 VLC_FOURCC('M','P','4','2')
-#define FOURCC_mp42 VLC_FOURCC('m','p','4','2')
-
- /* MSMPEG4 v3 / M$ mpeg4 v3 */
-#define FOURCC_MPG3 VLC_FOURCC('M','P','G','3')
-#define FOURCC_mpg3 VLC_FOURCC('m','p','g','3')
-#define FOURCC_div3 VLC_FOURCC('d','i','v','3')
-#define FOURCC_MP43 VLC_FOURCC('M','P','4','3')
-#define FOURCC_mp43 VLC_FOURCC('m','p','4','3')
-
- /* DivX 3.20 */
-#define FOURCC_DIV3 VLC_FOURCC('D','I','V','3')
-#define FOURCC_DIV4 VLC_FOURCC('D','I','V','4')
-#define FOURCC_div4 VLC_FOURCC('d','i','v','4')
-#define FOURCC_DIV5 VLC_FOURCC('D','I','V','5')
-#define FOURCC_div5 VLC_FOURCC('d','i','v','5')
-#define FOURCC_DIV6 VLC_FOURCC('D','I','V','6')
-#define FOURCC_div6 VLC_FOURCC('d','i','v','6')
-
- /* AngelPotion stuff */
-#define FOURCC_AP41 VLC_FOURCC('A','P','4','1')
-
- /* 3IVX */
-#define FOURCC_3IV1 VLC_FOURCC('3','I','V','1')
-#define FOURCC_3iv1 VLC_FOURCC('2','i','v','1')
-#define FOURCC_3IV2 VLC_FOURCC('3','I','V','2')
-#define FOURCC_3iv2 VLC_FOURCC('3','i','v','2')
-#define FOURCC_3IVD VLC_FOURCC('3','I','V','D')
-#define FOURCC_3ivd VLC_FOURCC('3','i','v','d')
-#define FOURCC_3VID VLC_FOURCC('3','V','I','D')
-#define FOURCC_3vid VLC_FOURCC('3','v','i','d')
-
- /* H263 and H263i */
-#define FOURCC_H263 VLC_FOURCC('H','2','6','3')
-#define FOURCC_h263 VLC_FOURCC('h','2','6','3')
-#define FOURCC_U263 VLC_FOURCC('U','2','6','3')
-#define FOURCC_I263 VLC_FOURCC('I','2','6','3')
-#define FOURCC_i263 VLC_FOURCC('i','2','6','3')
-
- /* H264 */
-#define FOURCC_H264 VLC_FOURCC('H','2','6','4')
-#define FOURCC_h264 VLC_FOURCC('h','2','6','4')
-#define FOURCC_VSSH VLC_FOURCC('V','S','S','H')
-
/* DV */
#define FOURCC_dvsd VLC_FOURCC('d','v','s','d')
#define FOURCC_dvhd VLC_FOURCC('d','v','h','d')
p_demux->p_sys = p_sys = malloc( sizeof( demux_sys_t ) );
/* */
- es_format_Init( &p_sys->fmt, VIDEO_ES, VLC_FOURCC('C','D','G', ' ' ) );
+ es_format_Init( &p_sys->fmt, VIDEO_ES, VLC_CODEC_CDG );
p_sys->fmt.video.i_width = 300-2*6;
p_sys->fmt.video.i_height = 216-2*12 ;
p_sys->i_dtsoffset = var_CreateGetInteger( p_demux, DEMUX_CFG_PREFIX DEMUX_DTSOFFSET );
/* Load the packetizer */
- es_format_Init( &fmt, VIDEO_ES, VLC_FOURCC( 'd','r','a','c' ) );
+ es_format_Init( &fmt, VIDEO_ES, VLC_CODEC_DIRAC );
p_sys->p_packetizer = demux_PacketizerNew( p_demux, &fmt, "dirac" );
if( !p_sys->p_packetizer )
{
/* Load the FLAC packetizer */
/* Store STREAMINFO for the decoder and packetizer */
p_streaminfo[4] |= 0x80; /* Fake this as the last metadata block */
- es_format_Init( &fmt, AUDIO_ES, VLC_FOURCC( 'f', 'l', 'a', 'c' ) );
+ es_format_Init( &fmt, AUDIO_ES, VLC_CODEC_FLAC );
fmt.i_extra = i_streaminfo;
fmt.p_extra = p_streaminfo;
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
*****************************************************************************/
/*****************************************************************************
#include <vlc_dialog.h>
#include <vlc_network.h>
#include <vlc_url.h>
+#include <vlc_strings.h>
#include <iostream>
#include <limits.h>
"value should be set in millisecond units." )
#define KASENNA_TEXT N_( "Kasenna RTSP dialect")
-#define KASENNA_LONGTEXT N_( "Kasenna servers use an old and unstandard " \
- "dialect of RTSP. When you set this parameter, VLC will try this dialect "\
- "for communication. In this mode you cannot connect to normal RTSP servers." )
+#define KASENNA_LONGTEXT N_( "Kasenna servers use an old and nonstandard " \
+ "dialect of RTSP. With this parameter VLC will try this dialect, but "\
+ "then it cannot connect to normal RTSP servers." )
#define USER_TEXT N_("RTSP user name")
-#define USER_LONGTEXT N_("Allows you to modify the user name that will " \
- "be used for authenticating the connection.")
+#define USER_LONGTEXT N_("Sets the username for the connection, " \
+ "if no username or password are set in the url.")
#define PASS_TEXT N_("RTSP password")
-#define PASS_LONGTEXT N_("Allows you to modify the password that will be " \
- "used for the connection.")
+#define PASS_LONGTEXT N_("Sets the password for the connection, " \
+ "if no username or password are set in the url.")
vlc_module_begin ()
set_description( N_("RTP/RTSP/SDP demuxer (using Live555)" ) )
!strcmp( sub->codecName(), "MPA-ROBUST" ) ||
!strcmp( sub->codecName(), "X-MP3-DRAFT-00" ) )
{
- tk->fmt.i_codec = VLC_FOURCC( 'm', 'p', 'g', 'a' );
+ tk->fmt.i_codec = VLC_CODEC_MPGA;
tk->fmt.audio.i_rate = 0;
}
else if( !strcmp( sub->codecName(), "AC3" ) )
{
- tk->fmt.i_codec = VLC_FOURCC( 'a', '5', '2', ' ' );
+ tk->fmt.i_codec = VLC_CODEC_A52;
tk->fmt.audio.i_rate = 0;
}
else if( !strcmp( sub->codecName(), "L16" ) )
}
else if( !strcmp( sub->codecName(), "PCMU" ) )
{
- tk->fmt.i_codec = VLC_FOURCC( 'u', 'l', 'a', 'w' );
+ tk->fmt.i_codec = VLC_CODEC_MULAW;
}
else if( !strcmp( sub->codecName(), "PCMA" ) )
{
- tk->fmt.i_codec = VLC_FOURCC( 'a', 'l', 'a', 'w' );
+ tk->fmt.i_codec = VLC_CODEC_ALAW;
}
else if( !strncmp( sub->codecName(), "G726", 4 ) )
{
- tk->fmt.i_codec = VLC_FOURCC( 'g', '7', '2', '6' );
+ tk->fmt.i_codec = VLC_CODEC_ADPCM_G726;
tk->fmt.audio.i_rate = 8000;
tk->fmt.audio.i_channels = 1;
if( !strcmp( sub->codecName()+5, "40" ) )
}
else if( !strcmp( sub->codecName(), "AMR" ) )
{
- tk->fmt.i_codec = VLC_FOURCC( 's', 'a', 'm', 'r' );
+ tk->fmt.i_codec = VLC_CODEC_AMR_NB;
}
else if( !strcmp( sub->codecName(), "AMR-WB" ) )
{
- tk->fmt.i_codec = VLC_FOURCC( 's', 'a', 'w', 'b' );
+ tk->fmt.i_codec = VLC_CODEC_AMR_WB;
}
else if( !strcmp( sub->codecName(), "MP4A-LATM" ) )
{
unsigned int i_extra;
uint8_t *p_extra;
- tk->fmt.i_codec = VLC_FOURCC( 'm', 'p', '4', 'a' );
+ tk->fmt.i_codec = VLC_CODEC_MP4A;
if( ( p_extra = parseStreamMuxConfigStr( sub->fmtp_config(),
i_extra ) ) )
unsigned int i_extra;
uint8_t *p_extra;
- tk->fmt.i_codec = VLC_FOURCC( 'm', 'p', '4', 'a' );
+ tk->fmt.i_codec = VLC_CODEC_MP4A;
if( ( p_extra = parseGeneralConfigStr( sub->fmtp_config(),
i_extra ) ) )
es_format_Init( &tk->fmt, VIDEO_ES, VLC_FOURCC('u','n','d','f') );
if( !strcmp( sub->codecName(), "MPV" ) )
{
- tk->fmt.i_codec = VLC_FOURCC( 'm', 'p', 'g', 'v' );
+ tk->fmt.i_codec = VLC_CODEC_MPGV;
}
else if( !strcmp( sub->codecName(), "H263" ) ||
!strcmp( sub->codecName(), "H263-1998" ) ||
!strcmp( sub->codecName(), "H263-2000" ) )
{
- tk->fmt.i_codec = VLC_FOURCC( 'H', '2', '6', '3' );
+ tk->fmt.i_codec = VLC_CODEC_H263;
}
else if( !strcmp( sub->codecName(), "H261" ) )
{
- tk->fmt.i_codec = VLC_FOURCC( 'H', '2', '6', '1' );
+ tk->fmt.i_codec = VLC_CODEC_H261;
}
else if( !strcmp( sub->codecName(), "H264" ) )
{
unsigned int i_extra = 0;
uint8_t *p_extra = NULL;
- tk->fmt.i_codec = VLC_FOURCC( 'h', '2', '6', '4' );
+ tk->fmt.i_codec = VLC_CODEC_H264;
tk->fmt.b_packetized = false;
if((p_extra=parseH264ConfigStr( sub->fmtp_spropparametersets(),
}
else if( !strcmp( sub->codecName(), "JPEG" ) )
{
- tk->fmt.i_codec = VLC_FOURCC( 'M', 'J', 'P', 'G' );
+ tk->fmt.i_codec = VLC_CODEC_MJPG;
}
else if( !strcmp( sub->codecName(), "MP4V-ES" ) )
{
unsigned int i_extra;
uint8_t *p_extra;
- tk->fmt.i_codec = VLC_FOURCC( 'm', 'p', '4', 'v' );
+ tk->fmt.i_codec = VLC_CODEC_MP4V;
if( ( p_extra = parseGeneralConfigStr( sub->fmtp_config(),
i_extra ) ) )
return VLC_EGENERIC;
/* According to RFC 2326 p56 chapter 12.35 a RTSP server that
- * supports Scale should:
+ * supports Scale:
*
- * "The server should try to approximate the viewing rate, but may
- * restrict the range of scale values that it supports. The response
- * MUST contain the actual scale value chosen by the server."
+ * "[...] should try to approximate the viewing rate, but
+ * may restrict the range of scale values that it supports.
+ * The response MUST contain the actual scale value chosen
+ * by the server."
*
* Scale = 1 indicates normal play
* Scale > 1 indicates fast forward
msg_Warn( p_demux, "buffer overflow" );
}
/* FIXME could i_size be > buffer size ? */
- if( tk->fmt.i_codec == VLC_FOURCC('s','a','m','r') ||
- tk->fmt.i_codec == VLC_FOURCC('s','a','w','b') )
+ if( tk->fmt.i_codec == VLC_CODEC_AMR_NB ||
+ tk->fmt.i_codec == VLC_CODEC_AMR_WB )
{
AMRAudioSource *amrSource = (AMRAudioSource*)tk->sub->readSource();
p_block->p_buffer[0] = amrSource->lastFrameHeader();
memcpy( p_block->p_buffer + 1, tk->p_buffer, i_size );
}
- else if( tk->fmt.i_codec == VLC_FOURCC('H','2','6','1') )
+ else if( tk->fmt.i_codec == VLC_CODEC_H261 )
{
H261VideoRTPSource *h261Source = (H261VideoRTPSource*)tk->sub->rtpSource();
uint32_t header = h261Source->lastSpecialHeader();
if( tk->sub->rtpSource()->curPacketMarkerBit() )
p_block->i_flags |= BLOCK_FLAG_END_OF_FRAME;
}
- else if( tk->fmt.i_codec == VLC_FOURCC('h','2','6','4') )
+ else if( tk->fmt.i_codec == VLC_CODEC_H264 )
{
if( (tk->p_buffer[0] & 0x1f) >= 24 )
msg_Warn( p_demux, "unsupported NAL type for H264" );
if( !tk->b_muxed )
{
/*FIXME: for h264 you should check that packetization-mode=1 in sdp-file */
- p_block->i_dts = ( tk->fmt.i_codec == VLC_FOURCC( 'm', 'p', 'g', 'v' ) ) ? 0 : i_pts;
+ p_block->i_dts = ( tk->fmt.i_codec == VLC_CODEC_MPGV ) ? 0 : i_pts;
}
if( tk->b_muxed )
/*****************************************************************************
*
*****************************************************************************/
-static int b64_decode( char *dest, char *src );
-
static int ParseASF( demux_t *p_demux )
{
demux_sys_t *p_sys = p_demux->p_sys;
/* Always smaller */
p_header = block_New( p_demux, psz_end - psz_asf );
- p_header->i_buffer = b64_decode( (char*)p_header->p_buffer, psz_asf );
+ p_header->i_buffer = vlc_b64_decode_binary_to_buffer( p_header->p_buffer,
+ p_header->i_buffer, psz_asf );
//msg_Dbg( p_demux, "Size=%d Hdrb64=%s", p_header->i_buffer, psz_asf );
if( p_header->i_buffer <= 0 )
{
unsigned int& configSize )
{
char *dup, *psz;
- int i, i_records = 1;
+ size_t i_records = 1;
- if( configSize )
configSize = 0;
if( configStr == NULL || *configStr == '\0' )
psz = dup = strdup( configStr );
- /* Count the number of comma's */
+ /* Count the number of commas */
for( psz = dup; *psz != '\0'; ++psz )
{
if( *psz == ',')
}
}
- unsigned char *cfg = new unsigned char[5 * strlen(dup)];
+ size_t configMax = 5*strlen(dup);
+ unsigned char *cfg = new unsigned char[configMax];
psz = dup;
- for( i = 0; i < i_records; i++ )
+ for( size_t i = 0; i < i_records; ++i )
{
cfg[configSize++] = 0x00;
cfg[configSize++] = 0x00;
cfg[configSize++] = 0x00;
cfg[configSize++] = 0x01;
- configSize += b64_decode( (char*)&cfg[configSize], psz );
+ configSize += vlc_b64_decode_binary_to_buffer( cfg+configSize,
+ configMax-configSize, psz );
psz += strlen(psz)+1;
}
free( dup );
return cfg;
}
-
-/*char b64[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";*/
-static int b64_decode( char *dest, char *src )
-{
- const char *dest_start = dest;
- int i_level;
- int last = 0;
- int b64[256] = {
- -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, /* 00-0F */
- -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, /* 10-1F */
- -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,62,-1,-1,-1,63, /* 20-2F */
- 52,53,54,55,56,57,58,59,60,61,-1,-1,-1,-1,-1,-1, /* 30-3F */
- -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12,13,14, /* 40-4F */
- 15,16,17,18,19,20,21,22,23,24,25,-1,-1,-1,-1,-1, /* 50-5F */
- -1,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40, /* 60-6F */
- 41,42,43,44,45,46,47,48,49,50,51,-1,-1,-1,-1,-1, /* 70-7F */
- -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, /* 80-8F */
- -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, /* 90-9F */
- -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, /* A0-AF */
- -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, /* B0-BF */
- -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, /* C0-CF */
- -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, /* D0-DF */
- -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, /* E0-EF */
- -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 /* F0-FF */
- };
-
- for( i_level = 0; *src != '\0'; src++ )
- {
- int c;
-
- c = b64[(unsigned int)*src];
- if( c == -1 )
- {
- continue;
- }
-
- switch( i_level )
- {
- case 0:
- i_level++;
- break;
- case 1:
- *dest++ = ( last << 2 ) | ( ( c >> 4)&0x03 );
- i_level++;
- break;
- case 2:
- *dest++ = ( ( last << 4 )&0xf0 ) | ( ( c >> 2 )&0x0f );
- i_level++;
- break;
- case 3:
- *dest++ = ( ( last &0x03 ) << 6 ) | c;
- i_level = 0;
- }
- last = c;
- }
-
- *dest = '\0';
-
- return dest - dest_start;
-}
}
es_format_Init( &p_sys->fmt, VIDEO_ES, 0 );
- p_sys->fmt.i_codec = VLC_FOURCC('m','j','p','g');
+ p_sys->fmt.i_codec = VLC_CODEC_MJPG;
p_sys->p_es = es_out_Add( p_demux->out, &p_sys->fmt );
return VLC_SUCCESS;
chapters.hpp chapters.cpp \
chapter_command.hpp chapter_command.cpp \
stream_io_callback.hpp stream_io_callback.cpp \
- ../mp4/libmp4.c ../mp4/drms.c
+ ../mp4/libmp4.c ../mp4/drms.c \
+ ../vobsub.h
#include "demux.hpp"
+extern "C" {
+#include "../vobsub.h"
+}
+
/* GetFourCC helper */
#define GetFOURCC( p ) __GetFOURCC( (uint8_t*)p )
static vlc_fourcc_t __GetFOURCC( uint8_t *p )
else if( !strcmp( tracks[i_track]->psz_codec, "V_MPEG1" ) ||
!strcmp( tracks[i_track]->psz_codec, "V_MPEG2" ) )
{
- tracks[i_track]->fmt.i_codec = VLC_FOURCC( 'm', 'p', 'g', 'v' );
+ tracks[i_track]->fmt.i_codec = VLC_CODEC_MPGV;
}
else if( !strncmp( tracks[i_track]->psz_codec, "V_THEORA", 8 ) )
{
uint8_t *p_data = tracks[i_track]->p_extra_data;
- tracks[i_track]->fmt.i_codec = VLC_FOURCC( 't', 'h', 'e', 'o' );
+ tracks[i_track]->fmt.i_codec = VLC_CODEC_THEORA;
if( tracks[i_track]->i_extra_data >= 4 ) {
if( p_data[0] == 2 ) {
int i = 1;
else if( !strncmp( tracks[i_track]->psz_codec, "V_REAL/RV", 9 ) )
{
if( !strcmp( p_tk->psz_codec, "V_REAL/RV10" ) )
- p_fmt->i_codec = VLC_FOURCC( 'R', 'V', '1', '0' );
+ p_fmt->i_codec = VLC_CODEC_RV10;
else if( !strcmp( p_tk->psz_codec, "V_REAL/RV20" ) )
- p_fmt->i_codec = VLC_FOURCC( 'R', 'V', '2', '0' );
+ p_fmt->i_codec = VLC_CODEC_RV20;
else if( !strcmp( p_tk->psz_codec, "V_REAL/RV30" ) )
- p_fmt->i_codec = VLC_FOURCC( 'R', 'V', '3', '0' );
+ p_fmt->i_codec = VLC_CODEC_RV30;
else if( !strcmp( p_tk->psz_codec, "V_REAL/RV40" ) )
- p_fmt->i_codec = VLC_FOURCC( 'R', 'V', '4', '0' );
+ p_fmt->i_codec = VLC_CODEC_RV40;
if( p_tk->i_extra_data > 26 )
{
}
else if( !strncmp( tracks[i_track]->psz_codec, "V_DIRAC", 7 ) )
{
- tracks[i_track]->fmt.i_codec = VLC_FOURCC('d', 'r', 'a', 'c' );
+ tracks[i_track]->fmt.i_codec = VLC_CODEC_DIRAC;
}
else if( !strncmp( tracks[i_track]->psz_codec, "V_MPEG4", 7 ) )
{
if( !strcmp( tracks[i_track]->psz_codec, "V_MPEG4/MS/V3" ) )
{
- tracks[i_track]->fmt.i_codec = VLC_FOURCC( 'D', 'I', 'V', '3' );
+ tracks[i_track]->fmt.i_codec = VLC_CODEC_DIV3;
}
else if( !strncmp( tracks[i_track]->psz_codec, "V_MPEG4/ISO", 11 ) )
{
if( !strcmp( tracks[i_track]->psz_codec, "V_MPEG4/ISO/AVC" ) )
tracks[i_track]->fmt.i_codec = VLC_FOURCC( 'a', 'v', 'c', '1' );
else
- tracks[i_track]->fmt.i_codec = VLC_FOURCC( 'm', 'p', '4', 'v' );
+ tracks[i_track]->fmt.i_codec = VLC_CODEC_MP4V;
tracks[i_track]->fmt.i_extra = tracks[i_track]->i_extra_data;
tracks[i_track]->fmt.p_extra = malloc( tracks[i_track]->i_extra_data );
memcpy( tracks[i_track]->fmt.p_extra,tracks[i_track]->p_extra_data, tracks[i_track]->i_extra_data );
!strcmp( tracks[i_track]->psz_codec, "A_MPEG/L2" ) ||
!strcmp( tracks[i_track]->psz_codec, "A_MPEG/L1" ) )
{
- tracks[i_track]->fmt.i_codec = VLC_FOURCC( 'm', 'p', 'g', 'a' );
+ tracks[i_track]->fmt.i_codec = VLC_CODEC_MPGA;
}
else if( !strcmp( tracks[i_track]->psz_codec, "A_AC3" ) )
{
- tracks[i_track]->fmt.i_codec = VLC_FOURCC( 'a', '5', '2', ' ' );
+ tracks[i_track]->fmt.i_codec = VLC_CODEC_A52;
}
else if( !strcmp( tracks[i_track]->psz_codec, "A_EAC3" ) )
{
- tracks[i_track]->fmt.i_codec = VLC_FOURCC( 'e', 'a', 'c', '3' );
+ tracks[i_track]->fmt.i_codec = VLC_CODEC_EAC3;
}
else if( !strcmp( tracks[i_track]->psz_codec, "A_DTS" ) )
{
- tracks[i_track]->fmt.i_codec = VLC_FOURCC( 'd', 't', 's', ' ' );
+ tracks[i_track]->fmt.i_codec = VLC_CODEC_DTS;
}
else if( !strcmp( tracks[i_track]->psz_codec, "A_MLP" ) )
{
- tracks[i_track]->fmt.i_codec = VLC_FOURCC('m', 'l', 'p', ' ' );
+ tracks[i_track]->fmt.i_codec = VLC_CODEC_MLP;
}
else if( !strcmp( tracks[i_track]->psz_codec, "A_TRUEHD" ) )
{
/* FIXME when more samples arrive */
- tracks[i_track]->fmt.i_codec = VLC_FOURCC('t', 'r', 'h', 'd' );
+ tracks[i_track]->fmt.i_codec = VLC_CODEC_TRUEHD;
p_fmt->b_packetized = false;
}
else if( !strcmp( tracks[i_track]->psz_codec, "A_FLAC" ) )
{
- tracks[i_track]->fmt.i_codec = VLC_FOURCC( 'f', 'l', 'a', 'c' );
+ tracks[i_track]->fmt.i_codec = VLC_CODEC_FLAC;
tracks[i_track]->fmt.i_extra = tracks[i_track]->i_extra_data;
tracks[i_track]->fmt.p_extra = malloc( tracks[i_track]->i_extra_data );
memcpy( tracks[i_track]->fmt.p_extra,tracks[i_track]->p_extra_data, tracks[i_track]->i_extra_data );
int i, i_offset = 1, i_size[3], i_extra;
uint8_t *p_extra;
- tracks[i_track]->fmt.i_codec = VLC_FOURCC( 'v', 'o', 'r', 'b' );
+ tracks[i_track]->fmt.i_codec = VLC_CODEC_VORBIS;
/* Split the 3 headers */
if( tracks[i_track]->p_extra_data[0] != 0x02 )
16000, 12000, 11025, 8000, 7350, 0, 0, 0
};
- tracks[i_track]->fmt.i_codec = VLC_FOURCC( 'm', 'p', '4', 'a' );
+ tracks[i_track]->fmt.i_codec = VLC_CODEC_MP4A;
/* create data for faad (MP4DecSpecificDescrTag)*/
if( !strcmp( &tracks[i_track]->psz_codec[12], "MAIN" ) )
}
else if( !strcmp( tracks[i_track]->psz_codec, "A_AAC" ) )
{
- tracks[i_track]->fmt.i_codec = VLC_FOURCC( 'm', 'p', '4', 'a' );
+ tracks[i_track]->fmt.i_codec = VLC_CODEC_MP4A;
tracks[i_track]->fmt.i_extra = tracks[i_track]->i_extra_data;
tracks[i_track]->fmt.p_extra = malloc( tracks[i_track]->i_extra_data );
memcpy( tracks[i_track]->fmt.p_extra, tracks[i_track]->p_extra_data, tracks[i_track]->i_extra_data );
}
else if( !strcmp( tracks[i_track]->psz_codec, "A_WAVPACK4" ) )
{
- tracks[i_track]->fmt.i_codec = VLC_FOURCC( 'W', 'V', 'P', 'K' );
+ tracks[i_track]->fmt.i_codec = VLC_CODEC_WAVPACK;
tracks[i_track]->fmt.i_extra = tracks[i_track]->i_extra_data;
tracks[i_track]->fmt.p_extra = malloc( tracks[i_track]->i_extra_data );
memcpy( tracks[i_track]->fmt.p_extra, tracks[i_track]->p_extra_data, tracks[i_track]->i_extra_data );
}
else if( !strcmp( tracks[i_track]->psz_codec, "A_TTA1" ) )
{
- tracks[i_track]->fmt.i_codec = VLC_FOURCC( 'T', 'T', 'A', '1' );
+ tracks[i_track]->fmt.i_codec = VLC_CODEC_TTA;
tracks[i_track]->fmt.i_extra = tracks[i_track]->i_extra_data;
tracks[i_track]->fmt.p_extra = malloc( tracks[i_track]->i_extra_data );
memcpy( tracks[i_track]->fmt.p_extra, tracks[i_track]->p_extra_data, tracks[i_track]->i_extra_data );
int i, i_offset = 1, i_extra, num_headers, size_so_far;
uint8_t *p_extra;
- tracks[i_track]->fmt.i_codec = VLC_FOURCC( 'k', 'a', 't', 'e' );
+ tracks[i_track]->fmt.i_codec = VLC_CODEC_KATE;
tracks[i_track]->fmt.subs.psz_encoding = strdup( "UTF-8" );
/* Recover the number of headers to expect */
}
else if( !strcmp( tracks[i_track]->psz_codec, "S_TEXT/ASCII" ) )
{
- p_fmt->i_codec = VLC_FOURCC( 's', 'u', 'b', 't' );
+ p_fmt->i_codec = VLC_CODEC_SUBT;
p_fmt->subs.psz_encoding = NULL; /* Is there a place where it is stored ? */
}
else if( !strcmp( tracks[i_track]->psz_codec, "S_TEXT/UTF8" ) )
{
- tracks[i_track]->fmt.i_codec = VLC_FOURCC( 's', 'u', 'b', 't' );
+ tracks[i_track]->fmt.i_codec = VLC_CODEC_SUBT;
tracks[i_track]->fmt.subs.psz_encoding = strdup( "UTF-8" );
}
else if( !strcmp( tracks[i_track]->psz_codec, "S_TEXT/USF" ) )
!strcmp( tracks[i_track]->psz_codec, "S_SSA" ) ||
!strcmp( tracks[i_track]->psz_codec, "S_ASS" ))
{
- tracks[i_track]->fmt.i_codec = VLC_FOURCC( 's', 's', 'a', ' ' );
+ tracks[i_track]->fmt.i_codec = VLC_CODEC_SSA;
tracks[i_track]->fmt.subs.psz_encoding = strdup( "UTF-8" );
if( tracks[i_track]->i_extra_data )
{
}
else if( !strcmp( tracks[i_track]->psz_codec, "S_VOBSUB" ) )
{
- tracks[i_track]->fmt.i_codec = VLC_FOURCC( 's','p','u',' ' );
+ tracks[i_track]->fmt.i_codec = VLC_CODEC_SPU;
if( tracks[i_track]->i_extra_data )
{
- char *p_start;
- char *p_buf = (char *)malloc( tracks[i_track]->i_extra_data + 1);
- memcpy( p_buf, tracks[i_track]->p_extra_data , tracks[i_track]->i_extra_data );
- p_buf[tracks[i_track]->i_extra_data] = '\0';
-
- p_start = strstr( p_buf, "size:" );
- if( sscanf( p_start, "size: %dx%d",
- &tracks[i_track]->fmt.subs.spu.i_original_frame_width, &tracks[i_track]->fmt.subs.spu.i_original_frame_height ) == 2 )
+ char *psz_start;
+ char *psz_buf = (char *)malloc( tracks[i_track]->i_extra_data + 1);
+ if( psz_buf != NULL )
{
- msg_Dbg( &sys.demuxer, "original frame size vobsubs: %dx%d", tracks[i_track]->fmt.subs.spu.i_original_frame_width, tracks[i_track]->fmt.subs.spu.i_original_frame_height );
- }
- else
- {
- msg_Warn( &sys.demuxer, "reading original frame size for vobsub failed" );
+ memcpy( psz_buf, tracks[i_track]->p_extra_data , tracks[i_track]->i_extra_data );
+ psz_buf[tracks[i_track]->i_extra_data] = '\0';
+
+ psz_start = strstr( psz_buf, "size:" );
+ if( psz_start &&
+ vobsub_size_parse( psz_start,
+ &tracks[i_track]->fmt.subs.spu.i_original_frame_width,
+ &tracks[i_track]->fmt.subs.spu.i_original_frame_height ) == VLC_SUCCESS )
+ {
+ msg_Dbg( &sys.demuxer, "original frame size vobsubs: %dx%d",
+ tracks[i_track]->fmt.subs.spu.i_original_frame_width,
+ tracks[i_track]->fmt.subs.spu.i_original_frame_height );
+ }
+ else
+ {
+ msg_Warn( &sys.demuxer, "reading original frame size for vobsub failed" );
+ }
+
+ psz_start = strstr( psz_buf, "palette:" );
+ if( psz_start &&
+ vobsub_palette_parse( psz_start, &tracks[i_track]->fmt.subs.spu.palette[1] ) == VLC_SUCCESS )
+ {
+ tracks[i_track]->fmt.subs.spu.palette[0] = 0xBeef;
+ msg_Dbg( &sys.demuxer, "vobsub palette read" );
+ }
+ else
+ {
+ msg_Warn( &sys.demuxer, "reading original palette failed" );
+ }
+ free( psz_buf );
}
- free( p_buf );
}
}
else if( !strcmp( tracks[i_track]->psz_codec, "B_VOBBTN" ) )
}
else if( !strcmp( p_tk->psz_codec, "A_REAL/14_4" ) )
{
- p_fmt->i_codec = VLC_FOURCC( '1', '4', '_', '4');
+ p_fmt->i_codec = VLC_CODEC_RA_144;
p_fmt->audio.i_channels = 1;
p_fmt->audio.i_rate = 8000;
p_fmt->audio.i_blockalign = 0x14;
/* */
#ifndef MPC_FIXED_POINT
- es_format_Init( &fmt, AUDIO_ES, VLC_FOURCC( 'f', 'l', '3', '2' ) );
+ es_format_Init( &fmt, AUDIO_ES, VLC_CODEC_FL32 );
#else
# ifdef WORDS_BIGENDIAN
- es_format_Init( &fmt, AUDIO_ES, VLC_FOURCC( 's', '3', '2', 'b' ) );
+ es_format_Init( &fmt, AUDIO_ES, VLC_CODEC_S32B );
# else
- es_format_Init( &fmt, AUDIO_ES, VLC_FOURCC( 's', '3', '2', 'l' ) );
+ es_format_Init( &fmt, AUDIO_ES, VLC_CODEC_S32L );
# endif
#endif
fmt.audio.i_channels = p_sys->info.channels;
static int MlpInit( demux_t *p_demux );
static const codec_t p_codec[] = {
- { VLC_FOURCC( 'm', 'p', '4', 'a' ), false, "mp4 audio", AacProbe, AacInit },
- { VLC_FOURCC( 'm', 'p', 'g', 'a' ), false, "mpeg audio", MpgaProbe, MpgaInit },
- { VLC_FOURCC( 'a', '5', '2', ' ' ), true, "a52 audio", A52Probe, A52Init },
- { VLC_FOURCC( 'e', 'a', 'c', '3' ), true, "eac3 audio", EA52Probe, A52Init },
- { VLC_FOURCC( 'd', 't', 's', ' ' ), false, "dts audio", DtsProbe, DtsInit },
- { VLC_FOURCC( 'm', 'l', 'p', ' ' ), false, "mlp audio", MlpProbe, MlpInit },
+ { VLC_CODEC_MP4A, false, "mp4 audio", AacProbe, AacInit },
+ { VLC_CODEC_MPGA, false, "mpeg audio", MpgaProbe, MpgaInit },
+ { VLC_CODEC_A52, true, "a52 audio", A52Probe, A52Init },
+ { VLC_CODEC_EAC3, true, "eac3 audio", EA52Probe, A52Init },
+ { VLC_CODEC_DTS, false, "dts audio", DtsProbe, DtsInit },
+ { VLC_CODEC_MLP, false, "mlp audio", MlpProbe, MlpInit },
{ 0, false, NULL, NULL, NULL }
};
msg_Dbg( p_demux, "using %.2f fps", p_sys->f_fps );
/* Load the mpegvideo packetizer */
- es_format_Init( &fmt, VIDEO_ES, VLC_FOURCC( 'h', '2', '6', '4' ) );
+ es_format_Init( &fmt, VIDEO_ES, VLC_CODEC_H264 );
p_sys->p_packetizer = demux_PacketizerNew( p_demux, &fmt, "h264" );
if( !p_sys->p_packetizer )
{
p_sys->p_es = NULL;
/* Load the mpegvideo packetizer */
- es_format_Init( &fmt, VIDEO_ES, VLC_FOURCC( 'm', 'p', 'g', 'v' ) );
+ es_format_Init( &fmt, VIDEO_ES, VLC_CODEC_MPGV );
p_sys->p_packetizer = demux_PacketizerNew( p_demux, &fmt, "mpeg video" );
if( !p_sys->p_packetizer )
{
}
/* create the output */
- es_format_Init( &fmt, VIDEO_ES, VLC_FOURCC( 'm', 'p', 'g', 'v' ) );
+ es_format_Init( &fmt, VIDEO_ES, VLC_CODEC_MPGV );
p_sys->p_es = es_out_Add( p_demux->out, &fmt );
return VLC_SUCCESS;
{
es_format_t fmt;
- es_format_Init( &fmt, AUDIO_ES, VLC_FOURCC('m','p','g','a') );
+ es_format_Init( &fmt, AUDIO_ES, VLC_CODEC_MPGA );
fmt.audio.i_rate = p_sys->exh.i_audio_sample_rate;
fmt.audio.i_bitspersample = p_sys->exh.i_audio_bits_per_sample;
/* Read info from any secondary header packets, if there are any */
if( p_stream->i_secondary_header_packets > 0 )
{
- if( p_stream->fmt.i_codec == VLC_FOURCC('t','h','e','o') &&
+ if( p_stream->fmt.i_codec == VLC_CODEC_THEORA &&
oggpacket.bytes >= 7 &&
! memcmp( oggpacket.packet, "\x80theora", 7 ) )
{
Ogg_ReadTheoraHeader( p_stream, &oggpacket );
p_stream->i_secondary_header_packets = 0;
}
- else if( p_stream->fmt.i_codec == VLC_FOURCC('v','o','r','b') &&
+ else if( p_stream->fmt.i_codec == VLC_CODEC_VORBIS &&
oggpacket.bytes >= 7 &&
! memcmp( oggpacket.packet, "\x01vorbis", 7 ) )
{
Ogg_ReadVorbisHeader( p_stream, &oggpacket );
p_stream->i_secondary_header_packets = 0;
}
- else if( p_stream->fmt.i_codec == VLC_FOURCC('c','m','m','l') )
+ else if( p_stream->fmt.i_codec == VLC_CODEC_CMML )
{
p_stream->i_secondary_header_packets = 0;
}
}
/* An Ogg/vorbis packet contains an end date granulepos */
- if( p_stream->fmt.i_codec == VLC_FOURCC( 'v','o','r','b' ) ||
- p_stream->fmt.i_codec == VLC_FOURCC( 's','p','x',' ' ) ||
- p_stream->fmt.i_codec == VLC_FOURCC( 'f','l','a','c' ) )
+ if( p_stream->fmt.i_codec == VLC_CODEC_VORBIS ||
+ p_stream->fmt.i_codec == VLC_CODEC_SPEEX ||
+ p_stream->fmt.i_codec == VLC_CODEC_FLAC )
{
if( ogg_stream_packetout( &p_stream->os, &oggpacket ) > 0 )
{
/* Convert the granulepos into a pcr */
if( p_oggpacket->granulepos >= 0 )
{
- if( p_stream->fmt.i_codec == VLC_FOURCC( 't','h','e','o' ) ||
- p_stream->fmt.i_codec == VLC_FOURCC( 'k','a','t','e' ) )
+ if( p_stream->fmt.i_codec == VLC_CODEC_THEORA ||
+ p_stream->fmt.i_codec == VLC_CODEC_KATE )
{
ogg_int64_t iframe = p_oggpacket->granulepos >>
p_stream->i_granule_shift;
p_stream->i_pcr = ( iframe + pframe ) * INT64_C(1000000)
/ p_stream->f_rate;
}
- else if( p_stream->fmt.i_codec == VLC_FOURCC( 'd','r','a','c' ) )
+ else if( p_stream->fmt.i_codec == VLC_CODEC_DIRAC )
{
ogg_int64_t i_dts = p_oggpacket->granulepos >> 31;
/* NB, OggDirac granulepos values are in units of 2*picturerate */
return;
}
- if( p_stream->fmt.i_codec == VLC_FOURCC( 's','u','b','t' ) &&
+ if( p_stream->fmt.i_codec == VLC_CODEC_SUBT &&
p_oggpacket->packet[0] & PACKET_TYPE_BITS ) return;
/* Check the ES is selected */
p_stream->i_packets_backup++;
switch( p_stream->fmt.i_codec )
{
- case VLC_FOURCC( 'v','o','r','b' ):
- case VLC_FOURCC( 's','p','x',' ' ):
- case VLC_FOURCC( 't','h','e','o' ):
+ case VLC_CODEC_VORBIS:
+ case VLC_CODEC_SPEEX:
+ case VLC_CODEC_THEORA:
if( p_stream->i_packets_backup == 3 ) p_stream->b_force_backup = 0;
break;
- case VLC_FOURCC( 'f','l','a','c' ):
+ case VLC_CODEC_FLAC:
if( !p_stream->fmt.audio.i_rate && p_stream->i_packets_backup == 2 )
{
Ogg_ReadFlacHeader( p_demux, p_stream, p_oggpacket );
b_store_size = false;
break;
- case VLC_FOURCC( 'k','a','t','e' ):
+ case VLC_CODEC_KATE:
if( p_stream->i_packets_backup == 1)
b_store_num_headers = true;
if( p_stream->i_packets_backup == p_stream->i_kate_num_headers ) p_stream->b_force_backup = 0;
}
/* Convert the pcr into a pts */
- if( p_stream->fmt.i_codec == VLC_FOURCC( 'v','o','r','b' ) ||
- p_stream->fmt.i_codec == VLC_FOURCC( 's','p','x',' ' ) ||
- p_stream->fmt.i_codec == VLC_FOURCC( 'f','l','a','c' ) )
+ if( p_stream->fmt.i_codec == VLC_CODEC_VORBIS ||
+ p_stream->fmt.i_codec == VLC_CODEC_SPEEX ||
+ p_stream->fmt.i_codec == VLC_CODEC_FLAC )
{
if( p_stream->i_pcr >= 0 )
{
}
}
- if( p_stream->fmt.i_codec != VLC_FOURCC( 'v','o','r','b' ) &&
- p_stream->fmt.i_codec != VLC_FOURCC( 's','p','x',' ' ) &&
- p_stream->fmt.i_codec != VLC_FOURCC( 'f','l','a','c' ) &&
+ if( p_stream->fmt.i_codec != VLC_CODEC_VORBIS &&
+ p_stream->fmt.i_codec != VLC_CODEC_SPEEX &&
+ p_stream->fmt.i_codec != VLC_CODEC_FLAC &&
p_stream->i_pcr >= 0 )
{
p_stream->i_previous_pcr = p_stream->i_pcr;
p_block->i_dts = p_block->i_pts = i_pts;
p_block->i_length = 0;
}
- else if( p_stream->fmt.i_codec == VLC_FOURCC( 't','h','e','o' ) )
+ else if( p_stream->fmt.i_codec == VLC_CODEC_THEORA )
p_block->i_dts = p_block->i_pts = i_pts;
- else if( p_stream->fmt.i_codec == VLC_FOURCC( 'd','r','a','c' ) )
+ else if( p_stream->fmt.i_codec == VLC_CODEC_DIRAC )
{
ogg_int64_t dts = p_oggpacket->granulepos >> 31;
ogg_int64_t delay = (p_oggpacket->granulepos >> 9) & 0x1fff;
p_block->i_pts = 0;
}
- if( p_stream->fmt.i_codec != VLC_FOURCC( 'v','o','r','b' ) &&
- p_stream->fmt.i_codec != VLC_FOURCC( 's','p','x',' ' ) &&
- p_stream->fmt.i_codec != VLC_FOURCC( 'f','l','a','c' ) &&
- p_stream->fmt.i_codec != VLC_FOURCC( 't','a','r','k' ) &&
- p_stream->fmt.i_codec != VLC_FOURCC( 't','h','e','o' ) &&
- p_stream->fmt.i_codec != VLC_FOURCC( 'c','m','m','l' ) &&
- p_stream->fmt.i_codec != VLC_FOURCC( 'd','r','a','c' ) &&
- p_stream->fmt.i_codec != VLC_FOURCC( 'k','a','t','e' ) )
+ if( p_stream->fmt.i_codec != VLC_CODEC_VORBIS &&
+ p_stream->fmt.i_codec != VLC_CODEC_SPEEX &&
+ p_stream->fmt.i_codec != VLC_CODEC_FLAC &&
+ p_stream->fmt.i_codec != VLC_CODEC_TARKIN &&
+ p_stream->fmt.i_codec != VLC_CODEC_THEORA &&
+ p_stream->fmt.i_codec != VLC_CODEC_CMML &&
+ p_stream->fmt.i_codec != VLC_CODEC_DIRAC &&
+ p_stream->fmt.i_codec != VLC_CODEC_KATE )
{
/* We remove the header from the packet */
i_header_len = (*p_oggpacket->packet & PACKET_LEN_BITS01) >> 6;
i_header_len |= (*p_oggpacket->packet & PACKET_LEN_BITS2) << 1;
- if( p_stream->fmt.i_codec == VLC_FOURCC( 's','u','b','t' ))
+ if( p_stream->fmt.i_codec == VLC_CODEC_SUBT)
{
/* But with subtitles we need to retrieve the duration first */
int i, lenbytes = 0;
p_block->i_buffer = 0;
}
- if( p_stream->fmt.i_codec == VLC_FOURCC( 't','a','r','k' ) )
+ if( p_stream->fmt.i_codec == VLC_CODEC_TARKIN )
{
/* FIXME: the biggest hack I've ever done */
msg_Warn( p_demux, "tarkin pts: %"PRId64", granule: %"PRId64,
p_stream->b_force_backup = 1;
p_stream->fmt.i_cat = AUDIO_ES;
- p_stream->fmt.i_codec = VLC_FOURCC( 'f','l','a','c' );
+ p_stream->fmt.i_codec = VLC_CODEC_FLAC;
}
/* Check for Flac header (>= version 1.1.1) */
else if( oggpacket.bytes >= 13 && oggpacket.packet[0] ==0x7F &&
p_stream->b_force_backup = 1;
p_stream->fmt.i_cat = AUDIO_ES;
- p_stream->fmt.i_codec = VLC_FOURCC( 'f','l','a','c' );
+ p_stream->fmt.i_codec = VLC_CODEC_FLAC;
oggpacket.packet += 13; oggpacket.bytes -= 13;
Ogg_ReadFlacHeader( p_demux, p_stream, &oggpacket );
}
msg_Dbg( p_demux, "found tarkin header" );
p_stream->fmt.i_cat = VIDEO_ES;
- p_stream->fmt.i_codec = VLC_FOURCC( 't','a','r','k' );
+ p_stream->fmt.i_codec = VLC_CODEC_TARKIN;
/* Cheat and get additionnal info ;) */
oggpack_readinit( &opb, oggpacket.packet, oggpacket.bytes);
msg_Dbg( p_demux, "found text subtitles header" );
p_stream->fmt.i_cat = SPU_ES;
- p_stream->fmt.i_codec = VLC_FOURCC('s','u','b','t');
+ p_stream->fmt.i_codec = VLC_CODEC_SUBT;
p_stream->f_rate = 1000; /* granulepos is in millisec */
}
else
if( !p_stream->p_es )
{
/* Better be safe than sorry when possible with ogm */
- if( p_stream->fmt.i_codec == VLC_FOURCC( 'm', 'p', 'g', 'a' ) ||
- p_stream->fmt.i_codec == VLC_FOURCC( 'a', '5', '2', ' ' ) )
+ if( p_stream->fmt.i_codec == VLC_CODEC_MPGA ||
+ p_stream->fmt.i_codec == VLC_CODEC_A52 )
p_stream->fmt.b_packetized = false;
p_stream->p_es = es_out_Add( p_demux->out, &p_stream->fmt );
}
// TODO: something to do here ?
- if( p_stream->fmt.i_codec == VLC_FOURCC('c','m','m','l') )
+ if( p_stream->fmt.i_codec == VLC_CODEC_CMML )
{
/* Set the CMML stream active */
es_out_Control( p_demux->out, ES_OUT_SET_ES, p_stream->p_es );
return true;
/* Only vorbis is supported */
- if( p_stream->fmt.i_codec == VLC_FOURCC( 'v','o','r','b' ) )
+ if( p_stream->fmt.i_codec == VLC_CODEC_VORBIS )
b_compatible = Ogg_IsVorbisFormatCompatible( &p_stream->fmt, &p_stream->fmt_old );
if( !b_compatible )
switch( i_codec )
{
/* 3 headers with the 2° one being the comments */
- case VLC_FOURCC( 'v','o','r','b' ):
+ case VLC_CODEC_VORBIS:
Ogg_ExtractXiphMeta( p_demux, p_headers, i_headers, 1+6, false );
break;
- case VLC_FOURCC( 't','h','e','o' ):
+ case VLC_CODEC_THEORA:
Ogg_ExtractXiphMeta( p_demux, p_headers, i_headers, 1+6, false );
break;
- case VLC_FOURCC( 's','p','x',' ' ):
+ case VLC_CODEC_SPEEX:
Ogg_ExtractXiphMeta( p_demux, p_headers, i_headers, 0, false );
break;
/* N headers with the 2° one being the comments */
- case VLC_FOURCC( 'k','a','t','e' ):
+ case VLC_CODEC_KATE:
/* 1 byte for header type, 7 bit for magic, 1 reserved zero byte */
Ogg_ExtractXiphMeta( p_demux, p_headers, i_headers, 1+7+1, true );
break;
/* TODO */
- case VLC_FOURCC( 'f','l','a','c' ):
+ case VLC_CODEC_FLAC:
msg_Warn( p_demux, "Ogg_ExtractMeta does not support %4.4s", (const char*)&i_codec );
break;
/* No meta data */
- case VLC_FOURCC( 'c','m','m','l' ): /* CMML is XML text, doesn't have Vorbis comments */
- case VLC_FOURCC( 'd','r','a','c' ):
+ case VLC_CODEC_CMML: /* CMML is XML text, doesn't have Vorbis comments */
+ case VLC_CODEC_DIRAC:
default:
break;
}
int i_keyframe_frequency_force;
p_stream->fmt.i_cat = VIDEO_ES;
- p_stream->fmt.i_codec = VLC_FOURCC( 't','h','e','o' );
+ p_stream->fmt.i_codec = VLC_CODEC_THEORA;
/* Signal that we want to keep a backup of the theora
* stream headers. They will be used when switching between
oggpack_buffer opb;
p_stream->fmt.i_cat = AUDIO_ES;
- p_stream->fmt.i_codec = VLC_FOURCC( 'v','o','r','b' );
+ p_stream->fmt.i_codec = VLC_CODEC_VORBIS;
/* Signal that we want to keep a backup of the vorbis
* stream headers. They will be used when switching between
oggpack_buffer opb;
p_stream->fmt.i_cat = AUDIO_ES;
- p_stream->fmt.i_codec = VLC_FOURCC( 's','p','x',' ' );
+ p_stream->fmt.i_codec = VLC_CODEC_SPEEX;
/* Signal that we want to keep a backup of the speex
* stream headers. They will be used when switching between
char *psz_desc;
p_stream->fmt.i_cat = SPU_ES;
- p_stream->fmt.i_codec = VLC_FOURCC( 'k','a','t','e' );
+ p_stream->fmt.i_codec = VLC_CODEC_KATE;
/* Signal that we want to keep a backup of the kate
* stream headers. They will be used when switching between
else if( !strncmp(content_type_string, "audio/x-vorbis", 14) )
{
p_stream->fmt.i_cat = AUDIO_ES;
- p_stream->fmt.i_codec = VLC_FOURCC( 'v','o','r','b' );
+ p_stream->fmt.i_codec = VLC_CODEC_VORBIS;
p_stream->b_force_backup = 1;
}
else if( !strncmp(content_type_string, "audio/x-speex", 14) )
{
p_stream->fmt.i_cat = AUDIO_ES;
- p_stream->fmt.i_codec = VLC_FOURCC( 's','p','x',' ' );
+ p_stream->fmt.i_codec = VLC_CODEC_SPEEX;
p_stream->b_force_backup = 1;
}
else if( !strncmp(content_type_string, "video/x-theora", 14) )
{
p_stream->fmt.i_cat = VIDEO_ES;
- p_stream->fmt.i_codec = VLC_FOURCC( 't','h','e','o' );
+ p_stream->fmt.i_codec = VLC_CODEC_THEORA;
p_stream->b_force_backup = 1;
}
{
/* n.b. MPEG streams are unsupported right now */
p_stream->fmt.i_cat = VIDEO_ES;
- p_stream->fmt.i_codec = VLC_FOURCC( 'm','p','g','v' );
+ p_stream->fmt.i_codec = VLC_CODEC_MPGV;
}
else if( !strncmp(content_type_string, "text/x-cmml", 11) )
{
ogg_stream_packetout( &p_stream->os, p_oggpacket );
p_stream->fmt.i_cat = SPU_ES;
- p_stream->fmt.i_codec = VLC_FOURCC( 'c','m','m','l' );
+ p_stream->fmt.i_codec = VLC_CODEC_CMML;
}
}
}
/* probably is an ogg dirac es */
p_stream->fmt.i_cat = VIDEO_ES;
- p_stream->fmt.i_codec = VLC_FOURCC( 'd','r','a','c' );
+ p_stream->fmt.i_codec = VLC_CODEC_DIRAC;
return true;
}
if( tk->b_seen && tk->es &&
(
#ifdef ZVBI_COMPILED /* FIXME!! */
- tk->fmt.i_codec == VLC_FOURCC('t','e','l','x') ||
+ tk->fmt.i_codec == VLC_CODEC_TELETEXT ||
#endif
!ps_pkt_parse_pes( p_pkt, tk->i_skip ) ) )
{
{
if( ( i_id&0xf8 ) == 0x88 || (i_id&0xf8) == 0x98 )
{
- es_format_Init( &tk->fmt, AUDIO_ES, VLC_FOURCC('d','t','s',' ') );
+ es_format_Init( &tk->fmt, AUDIO_ES, VLC_CODEC_DTS );
tk->i_skip = 4;
}
else if( ( i_id&0xf0 ) == 0x80
|| (i_id&0xf0) == 0xc0 ) /* AC-3, Can also be used for DD+/E-AC-3 */
{
- es_format_Init( &tk->fmt, AUDIO_ES, VLC_FOURCC('a','5','2',' ') );
+ es_format_Init( &tk->fmt, AUDIO_ES, VLC_CODEC_A52 );
tk->i_skip = 4;
}
else if( (i_id&0xf0) == 0xb0 )
{
- es_format_Init( &tk->fmt, AUDIO_ES, VLC_FOURCC('m','l','p',' ') );
+ es_format_Init( &tk->fmt, AUDIO_ES, VLC_CODEC_MLP );
/* FIXME / untested ... no known decoder (at least not in VLC/ffmpeg) */
}
else if( ( i_id&0xe0 ) == 0x20 )
{
- es_format_Init( &tk->fmt, SPU_ES, VLC_FOURCC('s','p','u',' ') );
+ es_format_Init( &tk->fmt, SPU_ES, VLC_CODEC_SPU );
tk->i_skip = 1;
}
else if( ( i_id&0xf0 ) == 0xa0 )
{
- es_format_Init( &tk->fmt, AUDIO_ES, VLC_FOURCC('l','p','c','m') );
+ es_format_Init( &tk->fmt, AUDIO_ES, VLC_CODEC_DVD_LPCM );
tk->i_skip = 1;
}
else if( ( i_id&0xff ) == 0x70 )
}
else if( ( i_id&0xff ) == 0x10 )
{
- es_format_Init( &tk->fmt, SPU_ES, VLC_FOURCC('t','e','l','x') );
+ es_format_Init( &tk->fmt, SPU_ES, VLC_CODEC_TELETEXT );
}
else
{
uint8_t i_sub_id = i_id & 0xff;
if( i_sub_id >= 0x55 && i_sub_id <= 0x5f )
{
- es_format_Init( &tk->fmt, VIDEO_ES, VLC_FOURCC('W','V','C','1') );
+ es_format_Init( &tk->fmt, VIDEO_ES, VLC_CODEC_VC1 );
}
else
{
if( (i_id&0xf0) == 0xe0 && i_type == 0x1b )
{
- es_format_Init( &tk->fmt, VIDEO_ES, VLC_FOURCC('h','2','6','4') );
+ es_format_Init( &tk->fmt, VIDEO_ES, VLC_CODEC_H264 );
}
else if( (i_id&0xf0) == 0xe0 && i_type == 0x10 )
{
- es_format_Init( &tk->fmt, VIDEO_ES, VLC_FOURCC('m','p','4','v') );
+ es_format_Init( &tk->fmt, VIDEO_ES, VLC_CODEC_MP4V );
}
else if( (i_id&0xf0) == 0xe0 && i_type == 0x02 )
{
- es_format_Init( &tk->fmt, VIDEO_ES, VLC_FOURCC('m','p','g','v') );
+ es_format_Init( &tk->fmt, VIDEO_ES, VLC_CODEC_MPGV );
}
else if( ( i_id&0xe0 ) == 0xc0 && i_type == 0x0f )
{
- es_format_Init( &tk->fmt, AUDIO_ES, VLC_FOURCC('m','p','4','a') );
+ es_format_Init( &tk->fmt, AUDIO_ES, VLC_CODEC_MP4A );
}
else if( ( i_id&0xe0 ) == 0xc0 && i_type == 0x11 )
{
- es_format_Init( &tk->fmt, AUDIO_ES, VLC_FOURCC('m','p','4','a') );
+ es_format_Init( &tk->fmt, AUDIO_ES, VLC_CODEC_MP4A );
}
else if( ( i_id&0xe0 ) == 0xc0 && i_type == 0x03 )
{
- es_format_Init( &tk->fmt, AUDIO_ES, VLC_FOURCC('m','p','g','a') );
+ es_format_Init( &tk->fmt, AUDIO_ES, VLC_CODEC_MPGA );
}
if( tk->fmt.i_cat == UNKNOWN_ES && ( i_id&0xf0 ) == 0xe0 )
{
- es_format_Init( &tk->fmt, VIDEO_ES, VLC_FOURCC('m','p','g','v') );
+ es_format_Init( &tk->fmt, VIDEO_ES, VLC_CODEC_MPGV );
}
else if( tk->fmt.i_cat == UNKNOWN_ES && ( i_id&0xe0 ) == 0xc0 )
{
- es_format_Init( &tk->fmt, AUDIO_ES, VLC_FOURCC('m','p','g','a') );
+ es_format_Init( &tk->fmt, AUDIO_ES, VLC_CODEC_MPGA );
}
else if( tk->fmt.i_cat == UNKNOWN_ES ) return VLC_EGENERIC;
}
p_demux->p_sys = p_sys = malloc( sizeof( demux_sys_t ) );
/* Register one audio and one video stream */
- es_format_Init( &fmt, AUDIO_ES, VLC_FOURCC( 'm', 'p', 'g', 'a' ) );
+ es_format_Init( &fmt, AUDIO_ES, VLC_CODEC_MPGA );
p_sys->p_audio = es_out_Add( p_demux->out, &fmt );
- es_format_Init( &fmt, VIDEO_ES, VLC_FOURCC( 'm', 'p', 'g', 'v' ) );
+ es_format_Init( &fmt, VIDEO_ES, VLC_CODEC_MPGV );
p_sys->p_video = es_out_Add( p_demux->out, &fmt );
p_sys->i_vc = -1;
es_format_Init( &p_sys->fmt, AUDIO_ES, 0 );
char *psz_fourcc = var_CreateGetString( p_demux, "rawaud-fourcc" );
+ p_sys->fmt.i_codec = vlc_fourcc_GetCodecFromString( AUDIO_ES, psz_fourcc );
+ free( psz_fourcc );
- if( ( psz_fourcc == NULL ? 0 : strlen( psz_fourcc ) ) != 4 )
+ if( !p_sys->fmt.i_codec )
{
msg_Err( p_demux, "rawaud-fourcc must be a 4 character string");
- free( psz_fourcc );
es_format_Clean( &p_sys->fmt );
free( p_sys );
return VLC_EGENERIC;
}
- p_sys->fmt.i_codec = VLC_FOURCC( psz_fourcc[0], psz_fourcc[1],
- psz_fourcc[2], psz_fourcc[3] );
-
- free( psz_fourcc );
// get the bits per sample ratio based on codec
switch( p_sys->fmt.i_codec )
{
- case VLC_FOURCC( 'f', 'l', '6', '4' ):
+ case VLC_CODEC_FL64:
p_sys->fmt.audio.i_bitspersample = 64;
break;
- case VLC_FOURCC( 'f', 'l', '3', '2' ):
- case VLC_FOURCC( 's', '3', '2', 'l' ):
- case VLC_FOURCC( 's', '3', '2', 'b' ):
- case VLC_FOURCC( 'i', 'n', '3', '2' ):
+ case VLC_CODEC_FL32:
+ case VLC_CODEC_S32L:
+ case VLC_CODEC_S32B:
p_sys->fmt.audio.i_bitspersample = 32;
break;
- case VLC_FOURCC( 's', '2', '4', 'l' ):
- case VLC_FOURCC( 's', '2', '4', 'b' ):
- case VLC_FOURCC( 'i', 'n', '2', '4' ):
- case VLC_FOURCC( '4', '2', 'n', 'i' ):
+ case VLC_CODEC_S24L:
+ case VLC_CODEC_S24B:
p_sys->fmt.audio.i_bitspersample = 24;
break;
- case VLC_FOURCC( 's', '1', '6', 'l' ):
- case VLC_FOURCC( 's', '1', '6', 'b' ):
+ case VLC_CODEC_S16L:
+ case VLC_CODEC_S16B:
p_sys->fmt.audio.i_bitspersample = 16;
break;
- case VLC_FOURCC( 's', '8', ' ', ' ' ):
- case VLC_FOURCC( 'u', '8', ' ', ' ' ):
+ case VLC_CODEC_S8:
+ case VLC_CODEC_U8:
p_sys->fmt.audio.i_bitspersample = 8;
break;
p_sys->i_bitrate = 0;
- es_format_Init( &p_sys->fmt_video, VIDEO_ES, VLC_FOURCC('d','v','s','d') );
+ es_format_Init( &p_sys->fmt_video, VIDEO_ES, VLC_CODEC_DV );
p_sys->fmt_video.video.i_width = 720;
p_sys->fmt_video.video.i_height= dv_header.dsf ? 576 : 480;;
p_peek = p_peek_backup + 80*6+80*16*3 + 3; /* beginning of AAUX pack */
if( *p_peek == 0x50 )
{
- es_format_Init( &p_sys->fmt_audio, AUDIO_ES,
- VLC_FOURCC('a','r','a','w') );
+ /* 12 bits non-linear will be converted to 16 bits linear */
+ es_format_Init( &p_sys->fmt_audio, AUDIO_ES, VLC_CODEC_S16L );
+ p_sys->fmt_audio.audio.i_bitspersample = 16;
p_sys->fmt_audio.audio.i_channels = 2;
switch( (p_peek[4] >> 3) & 0x07 )
{
break;
}
- /* 12 bits non-linear will be converted to 16 bits linear */
- p_sys->fmt_audio.audio.i_bitspersample = 16;
-
p_sys->p_es_audio = es_out_Add( p_demux->out, &p_sys->fmt_audio );
}
#include <vlc_common.h>
#include <vlc_plugin.h>
#include <vlc_demux.h>
-#include <vlc_vout.h> /* vout_InitFormat */
#include <assert.h>
/*****************************************************************************
static const struct preset_t p_presets[] =
{
- { "sqcif", 128, 96, 30000, 1001, 4,3, VLC_FOURCC('Y','V','1','2') },
- { "qcif", 176, 144, 30000, 1001, 4,3, VLC_FOURCC('Y','V','1','2') },
- { "cif", 352, 288, 30000, 1001, 4,3, VLC_FOURCC('Y','V','1','2') },
- { "4cif", 704, 576, 30000, 1001, 4,3, VLC_FOURCC('Y','V','1','2') },
- { "16cif", 1408, 1152, 30000, 1001, 4,3, VLC_FOURCC('Y','V','1','2') },
- { "yuv", 176, 144, 25, 1, 4,3, VLC_FOURCC('Y','V','1','2') },
+ { "sqcif", 128, 96, 30000, 1001, 4,3, VLC_CODEC_YV12 },
+ { "qcif", 176, 144, 30000, 1001, 4,3, VLC_CODEC_YV12 },
+ { "cif", 352, 288, 30000, 1001, 4,3, VLC_CODEC_YV12 },
+ { "4cif", 704, 576, 30000, 1001, 4,3, VLC_CODEC_YV12 },
+ { "16cif", 1408, 1152, 30000, 1001, 4,3, VLC_CODEC_YV12 },
+ { "yuv", 176, 144, 25, 1, 4,3, VLC_CODEC_YV12 },
{ NULL, 0, 0, 0, 0, 0,0, 0 }
};
{
static const struct { const char *psz_name; vlc_fourcc_t i_fcc; } formats[] =
{
- { "420jpeg", VLC_FOURCC('I','4','2','0') },
- { "420paldv", VLC_FOURCC('I','4','2','0') },
- { "420", VLC_FOURCC('I','4','2','0') },
- { "422", VLC_FOURCC('I','4','2','2') },
- { "444", VLC_FOURCC('I','4','4','4') },
- { "mono", VLC_FOURCC('G','R','E','Y') },
+ { "420jpeg", VLC_CODEC_I420 },
+ { "420paldv", VLC_CODEC_I420 },
+ { "420", VLC_CODEC_I420 },
+ { "422", VLC_CODEC_I422 },
+ { "444", VLC_CODEC_I444 },
+ { "mono", VLC_CODEC_GREY },
{ NULL, 0 }
};
bool b_found = false;
}
es_format_Init( &p_sys->fmt_video, VIDEO_ES, i_chroma );
- vout_InitFormat( &p_sys->fmt_video.video, i_chroma, i_width, i_height,
- i_aspect );
+ video_format_Setup( &p_sys->fmt_video.video,
+ i_chroma, i_width, i_height, i_aspect );
vlc_ureduce( &p_sys->fmt_video.video.i_frame_rate,
&p_sys->fmt_video.video.i_frame_rate_base,
}
es_format_t fmt;
- es_format_Init (&fmt, AUDIO_ES, VLC_FOURCC('M', 'I', 'D', 'I'));
+ es_format_Init (&fmt, AUDIO_ES, VLC_CODEC_MIDI);
fmt.audio.i_channels = 2;
fmt.audio.i_original_channels = fmt.audio.i_physical_channels =
AOUT_CHAN_LEFT | AOUT_CHAN_RIGHT;
p_sys->i_type == SUB_TYPE_SSA2_4 ||
p_sys->i_type == SUB_TYPE_ASS )
{
- es_format_Init( &fmt, SPU_ES, VLC_FOURCC( 's','s','a',' ' ) );
+ es_format_Init( &fmt, SPU_ES, VLC_CODEC_SSA );
}
else
{
- es_format_Init( &fmt, SPU_ES, VLC_FOURCC( 's','u','b','t' ) );
+ es_format_Init( &fmt, SPU_ES, VLC_CODEC_SUBT );
}
if( p_sys->psz_header != NULL )
{
/* *** add subtitle ES *** */
if( p_detect->fmt->target == ASAI_TARGET_SSA )
{
- es_format_Init( &fmt, SPU_ES, VLC_FOURCC( 's','s','a',' ' ) );
+ es_format_Init( &fmt, SPU_ES, VLC_CODEC_SSA );
}
else
{
- es_format_Init( &fmt, SPU_ES, VLC_FOURCC( 's','u','b','t' ) );
+ es_format_Init( &fmt, SPU_ES, VLC_CODEC_SUBT );
}
p_sys->es = es_out_Add( p_demux->out, &fmt );
{
vlc_value_t val;
val.p_list = p_sys->p_programs_list;
- var_Change( p_demux, "programs", VLC_VAR_FREELIST, &val, NULL );
+ var_FreeList( &val, NULL );
}
/* If in dump mode, then close the file */
{
i_skip += 1;
}
- else if( pid->es->fmt.i_codec == VLC_FOURCC( 's', 'u', 'b', 't' ) &&
+ else if( pid->es->fmt.i_codec == VLC_CODEC_SUBT &&
pid->es->p_mpeg4desc )
{
decoder_config_descriptor_t *dcd = &pid->es->p_mpeg4desc->dec_descr;
i_skip += 2;
}
#ifdef ZVBI_COMPILED
- else if( pid->es->fmt.i_codec == VLC_FOURCC( 't', 'e', 'l', 'x' ) )
+ else if( pid->es->fmt.i_codec == VLC_CODEC_TELETEXT )
i_skip = 0; /*hack for zvbi support */
#endif
/* skip header */
p_pes->i_length = i_length * 100 / 9;
p_block = block_ChainGather( p_pes );
- if( pid->es->fmt.i_codec == VLC_FOURCC( 's', 'u', 'b', 't' ) )
+ if( pid->es->fmt.i_codec == VLC_CODEC_SUBT )
{
if( i_pes_size > 0 && p_block->i_buffer > i_pes_size )
{
case 0x01: /* MPEG-1 video */
case 0x02: /* MPEG-2 video */
case 0x80: /* MPEG-2 MOTO video */
- es_format_Init( fmt, VIDEO_ES, VLC_FOURCC( 'm', 'p', 'g', 'v' ) );
+ es_format_Init( fmt, VIDEO_ES, VLC_CODEC_MPGV );
break;
case 0x03: /* MPEG-1 audio */
case 0x04: /* MPEG-2 audio */
- es_format_Init( fmt, AUDIO_ES, VLC_FOURCC( 'm', 'p', 'g', 'a' ) );
+ es_format_Init( fmt, AUDIO_ES, VLC_CODEC_MPGA );
break;
case 0x11: /* MPEG4 (audio) */
case 0x0f: /* ISO/IEC 13818-7 Audio with ADTS transport syntax */
- es_format_Init( fmt, AUDIO_ES, VLC_FOURCC( 'm', 'p', '4', 'a' ) );
+ es_format_Init( fmt, AUDIO_ES, VLC_CODEC_MP4A );
break;
case 0x10: /* MPEG4 (video) */
- es_format_Init( fmt, VIDEO_ES, VLC_FOURCC( 'm', 'p', '4', 'v' ) );
+ es_format_Init( fmt, VIDEO_ES, VLC_CODEC_MP4V );
pid->es->b_gather = true;
break;
case 0x1B: /* H264 <- check transport syntax/needed descriptor */
- es_format_Init( fmt, VIDEO_ES, VLC_FOURCC( 'h', '2', '6', '4' ) );
+ es_format_Init( fmt, VIDEO_ES, VLC_CODEC_H264 );
break;
case 0x81: /* A52 (audio) */
- es_format_Init( fmt, AUDIO_ES, VLC_FOURCC( 'a', '5', '2', ' ' ) );
+ es_format_Init( fmt, AUDIO_ES, VLC_CODEC_A52 );
break;
case 0x82: /* DVD_SPU (sub) */
- es_format_Init( fmt, SPU_ES, VLC_FOURCC( 's', 'p', 'u', ' ' ) );
+ es_format_Init( fmt, SPU_ES, VLC_CODEC_SPU );
break;
case 0x83: /* LPCM (audio) */
- es_format_Init( fmt, AUDIO_ES, VLC_FOURCC( 'l', 'p', 'c', 'm' ) );
+ es_format_Init( fmt, AUDIO_ES, VLC_CODEC_DVD_LPCM );
break;
case 0x84: /* SDDS (audio) */
- es_format_Init( fmt, AUDIO_ES, VLC_FOURCC( 's', 'd', 'd', 's' ) );
+ es_format_Init( fmt, AUDIO_ES, VLC_CODEC_SDDS );
break;
case 0x85: /* DTS (audio) */
- es_format_Init( fmt, AUDIO_ES, VLC_FOURCC( 'd', 't', 's', ' ' ) );
+ es_format_Init( fmt, AUDIO_ES, VLC_CODEC_DTS );
break;
case 0x91: /* A52 vls (audio) */
{
case 0x0B: /* mpeg4 sub */
p_fmt->i_cat = SPU_ES;
- p_fmt->i_codec = VLC_FOURCC('s','u','b','t');
+ p_fmt->i_codec = VLC_CODEC_SUBT;
break;
case 0x20: /* mpeg4 */
- p_fmt->i_codec = VLC_FOURCC('m','p','4','v');
+ p_fmt->i_codec = VLC_CODEC_MP4V;
break;
case 0x21: /* h264 */
- p_fmt->i_codec = VLC_FOURCC('h','2','6','4');
+ p_fmt->i_codec = VLC_CODEC_H264;
break;
case 0x60:
case 0x61:
case 0x63:
case 0x64:
case 0x65: /* mpeg2 */
- p_fmt->i_codec = VLC_FOURCC( 'm','p','g','v' );
+ p_fmt->i_codec = VLC_CODEC_MPGV;
break;
case 0x6a: /* mpeg1 */
- p_fmt->i_codec = VLC_FOURCC( 'm','p','g','v' );
+ p_fmt->i_codec = VLC_CODEC_MPGV;
break;
case 0x6c: /* mpeg1 */
- p_fmt->i_codec = VLC_FOURCC( 'j','p','e','g' );
+ p_fmt->i_codec = VLC_CODEC_JPEG;
break;
default:
p_fmt->i_cat = UNKNOWN_ES;
switch( dcd->i_objectTypeIndication )
{
case 0x40: /* mpeg4 */
- p_fmt->i_codec = VLC_FOURCC('m','p','4','a');
+ p_fmt->i_codec = VLC_CODEC_MP4A;
break;
case 0x66:
case 0x67:
case 0x68: /* mpeg2 aac */
- p_fmt->i_codec = VLC_FOURCC('m','p','4','a');
+ p_fmt->i_codec = VLC_CODEC_MP4A;
break;
case 0x69: /* mpeg2 */
- p_fmt->i_codec = VLC_FOURCC('m','p','g','a');
+ p_fmt->i_codec = VLC_CODEC_MPGA;
break;
case 0x6b: /* mpeg1 */
- p_fmt->i_codec = VLC_FOURCC('m','p','g','a');
+ p_fmt->i_codec = VLC_CODEC_MPGA;
break;
default:
p_fmt->i_cat = UNKNOWN_ES;
#endif
/* */
- es_format_Init( p_fmt, SPU_ES, VLC_FOURCC( 't', 'e', 'l', 'x' ) );
+ es_format_Init( p_fmt, SPU_ES, VLC_CODEC_TELETEXT );
/* In stream output mode, do not separate the stream by page */
if( p_demux->out->b_sout || i_page <= 0 )
{
es_format_t *p_fmt = &pid->es->fmt;
- es_format_Init( p_fmt, SPU_ES, VLC_FOURCC( 'd', 'v', 'b', 's' ) );
+ es_format_Init( p_fmt, SPU_ES, VLC_CODEC_DVBS );
dvbpsi_descriptor_t *p_dr = PMTEsFindDescriptor( p_es, 0x59 );
int i_page = 0;
PMTEsFindDescriptor( p_es, 0x81 ) )
{
p_fmt->i_cat = AUDIO_ES;
- p_fmt->i_codec = VLC_FOURCC('a','5','2',' ');
+ p_fmt->i_codec = VLC_CODEC_A52;
}
else if( PMTEsFindDescriptor( p_es, 0x7a ) )
{
/* DVB with stream_type 0x06 (ETS EN 300 468) */
p_fmt->i_cat = AUDIO_ES;
- p_fmt->i_codec = VLC_FOURCC( 'e', 'a', 'c', '3' );
+ p_fmt->i_codec = VLC_CODEC_EAC3;
}
else if( PMTEsHasRegistration( p_demux, p_es, "DTS1" ) ||
PMTEsHasRegistration( p_demux, p_es, "DTS2" ) ||
{
/*registration descriptor(ETSI TS 101 154 Annex F)*/
p_fmt->i_cat = AUDIO_ES;
- p_fmt->i_codec = VLC_FOURCC('d','t','s',' ');
+ p_fmt->i_codec = VLC_CODEC_DTS;
}
else if( PMTEsHasRegistration( p_demux, p_es, "BSSD" ) )
{
p_fmt->i_cat = AUDIO_ES;
p_fmt->b_packetized = true;
- p_fmt->i_codec = VLC_FOURCC('a','e','s','3');
+ p_fmt->i_codec = VLC_CODEC_302M;
}
else
{
/* registration descriptor for VC-1 (SMPTE rp227) */
p_fmt->i_cat = VIDEO_ES;
- p_fmt->i_codec = VLC_FOURCC('W','V','C','1');
+ p_fmt->i_codec = VLC_CODEC_VC1;
/* XXX With Simple and Main profile the SEQUENCE
* header is modified: video width and height are
/* registration descriptor for Dirac
* (backwards compatable with VC-2 (SMPTE Sxxxx:2008)) */
p_fmt->i_cat = VIDEO_ES;
- p_fmt->i_codec = VLC_FOURCC('d','r','a','c');
+ p_fmt->i_codec = VLC_CODEC_DIRAC;
}
static void PMTSetupEs0xA0( demux_t *p_demux, ts_pid_t *pid,
{
case 0x80:
p_fmt->i_cat = AUDIO_ES;
- p_fmt->i_codec = VLC_FOURCC( 'b', 'p', 'c', 'm' );
+ p_fmt->i_codec = VLC_CODEC_BD_LPCM;
break;
case 0x82:
case 0x85: /* DTS-HD High resolution audio */
case 0x86: /* DTS-HD Master audio */
case 0xA2: /* Secondary DTS audio */
p_fmt->i_cat = AUDIO_ES;
- p_fmt->i_codec = VLC_FOURCC( 'd', 't', 's', ' ' );
+ p_fmt->i_codec = VLC_CODEC_DTS;
break;
case 0x83: /* TrueHD AC3 */
p_fmt->i_cat = AUDIO_ES;
- p_fmt->i_codec = VLC_FOURCC( 'm', 'l', 'p', ' ' );
+ p_fmt->i_codec = VLC_CODEC_MLP;
break;
case 0x84: /* E-AC3 */
case 0x87: /* E-AC3 */
case 0xA1: /* Secondary E-AC3 */
p_fmt->i_cat = AUDIO_ES;
- p_fmt->i_codec = VLC_FOURCC( 'e', 'a', 'c', '3' );
+ p_fmt->i_codec = VLC_CODEC_EAC3;
break;
case 0x90: /* Presentation graphics */
case 0x91: /* Interactive graphics */
if( pid->es->fmt.i_cat == AUDIO_ES ||
( pid->es->fmt.i_cat == SPU_ES &&
- pid->es->fmt.i_codec != VLC_FOURCC('d','v','b','s') &&
- pid->es->fmt.i_codec != VLC_FOURCC('t','e','l','x') ) )
+ pid->es->fmt.i_codec != VLC_CODEC_DVBS &&
+ pid->es->fmt.i_codec != VLC_CODEC_TELETEXT ) )
{
PMTParseEsIso639( p_demux, pid, p_es );
}
p_sys->pi_seektable = NULL;
/* Read the metadata */
- es_format_Init( &fmt, AUDIO_ES, VLC_FOURCC( 'T', 'T', 'A', '1' ) );
+ es_format_Init( &fmt, AUDIO_ES, VLC_CODEC_TTA );
fmt.audio.i_channels = GetWLE( &p_header[6] );
fmt.audio.i_bitspersample = GetWLE( &p_header[8] );
fmt.audio.i_rate = GetDWLE( &p_header[10] );
/* register the proper audio codec */
if (p_sys->audio_type == TIVO_AUDIO_MPEG) {
- es_format_Init( &fmt, AUDIO_ES, VLC_FOURCC( 'm', 'p', 'g', 'a' ) );
+ es_format_Init( &fmt, AUDIO_ES, VLC_CODEC_MPGA );
} else {
- es_format_Init( &fmt, AUDIO_ES, VLC_FOURCC( 'a', '5', '2', ' ' ) );
+ es_format_Init( &fmt, AUDIO_ES, VLC_CODEC_A52 );
}
fmt.i_group = TY_ES_GROUP;
p_sys->p_audio = es_out_Add( p_demux->out, &fmt );
/* register the video stream */
- es_format_Init( &fmt, VIDEO_ES, VLC_FOURCC( 'm', 'p', 'g', 'v' ) );
+ es_format_Init( &fmt, VIDEO_ES, VLC_CODEC_MPGV );
fmt.i_group = TY_ES_GROUP;
p_sys->p_video = es_out_Add( p_demux->out, &fmt );
p_sys->f_fps = 0.0;
/* Load the packetizer */
- es_format_Init( &fmt, VIDEO_ES, VLC_FOURCC( 'W', 'V', 'C', '1' ) );
+ es_format_Init( &fmt, VIDEO_ES, VLC_CODEC_VC1 );
p_sys->p_packetizer = demux_PacketizerNew( p_demux, &fmt, "VC-1" );
if( !p_sys->p_packetizer )
{
#include <vlc_charset.h>
#include "ps.h"
+#include "vobsub.h"
#define MAX_LINE 8192
else if( !strncmp( "size:", line, 5 ) )
{
/* Store the original size of the video */
- if( sscanf( line, "size: %dx%d",
- &p_sys->i_original_frame_width, &p_sys->i_original_frame_height ) == 2 )
+ if( vobsub_size_parse( line, &p_sys->i_original_frame_width,
+ &p_sys->i_original_frame_height ) == VLC_SUCCESS )
{
msg_Dbg( p_demux, "original frame size: %dx%d", p_sys->i_original_frame_width, p_sys->i_original_frame_height );
}
}
else if( !strncmp( "palette:", line, 8 ) )
{
- int i;
-
- /* Store the palette of the subs */
- if( sscanf( line, "palette: %x, %x, %x, %x, %x, %x, %x, %x, %x, %x, %x, %x, %x, %x, %x, %x",
- &p_sys->palette[0], &p_sys->palette[1], &p_sys->palette[2], &p_sys->palette[3],
- &p_sys->palette[4], &p_sys->palette[5], &p_sys->palette[6], &p_sys->palette[7],
- &p_sys->palette[8], &p_sys->palette[9], &p_sys->palette[10], &p_sys->palette[11],
- &p_sys->palette[12], &p_sys->palette[13], &p_sys->palette[14], &p_sys->palette[15] ) == 16 )
+ if( vobsub_palette_parse( line, p_sys->palette ) == VLC_SUCCESS )
{
- for( i = 0; i < 16; i++ )
- {
- uint8_t r = 0, g = 0, b = 0;
- uint8_t y = 0, u = 0, v = 0;
- r = (p_sys->palette[i] >> 16) & 0xff;
- g = (p_sys->palette[i] >> 8) & 0xff;
- b = (p_sys->palette[i] >> 0) & 0xff;
- /* msg_Dbg( p_demux, "palette %d: R=%x, G=%x, B=%x", i, r, g, b ); */
- y = (uint8_t) __MIN(abs(r * 2104 + g * 4130 + b * 802 + 4096 + 131072) >> 13, 235);
- u = (uint8_t) __MIN(abs(r * -1214 + g * -2384 + b * 3598 + 4096 + 1048576) >> 13, 240);
- v = (uint8_t) __MIN(abs(r * 3598 + g * -3013 + b * -585 + 4096 + 1048576) >> 13, 240);
- p_sys->palette[i] = 0;
- p_sys->palette[i] |= (y&0xff)<<16;
- p_sys->palette[i] |= (u&0xff);
- p_sys->palette[i] |= (v&0xff)<<8;
- /* msg_Dbg( p_demux, "palette %d: y=%x, u=%x, v=%x", i, y, u, v ); */
-
- }
p_sys->b_palette = true;
msg_Dbg( p_demux, "vobsub palette read" );
}
current_tk->i_track_id = i_track_id;
current_tk->i_delay = (int64_t)0;
- es_format_Init( &fmt, SPU_ES, VLC_FOURCC( 's','p','u',' ' ) );
+ es_format_Init( &fmt, SPU_ES, VLC_CODEC_SPU );
fmt.subs.spu.i_original_frame_width = p_sys->i_original_frame_width;
fmt.subs.spu.i_original_frame_height = p_sys->i_original_frame_height;
fmt.psz_language = strdup( language );
--- /dev/null
+/*****************************************************************************
+ * vobsub.h: Vobsub support
+ *****************************************************************************
+ * Copyright (C) 2009 the VideoLAN team
+ * $Id$
+ *
+ * Authors: John Stebbins
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
+ *****************************************************************************/
+
+static inline void vobsub_palette_rgb2yuv( uint32_t *pu_palette )
+{
+ int i;
+ for( i = 0; i < 16; i++ )
+ {
+ uint8_t r, g, b, y, u, v;
+ r = (pu_palette[i] >> 16) & 0xff;
+ g = (pu_palette[i] >> 8) & 0xff;
+ b = (pu_palette[i] >> 0) & 0xff;
+ y = (uint8_t) __MIN(abs(r * 2104 + g * 4130 + b * 802 + 4096 + 131072) >> 13, 235);
+ u = (uint8_t) __MIN(abs(r * -1214 + g * -2384 + b * 3598 + 4096 + 1048576) >> 13, 240);
+ v = (uint8_t) __MIN(abs(r * 3598 + g * -3013 + b * -585 + 4096 + 1048576) >> 13, 240);
+ pu_palette[i] = (y&0xff)<<16 | (v&0xff)<<8 | (u&0xff);
+ }
+}
+
+static inline int vobsub_palette_parse( const char *psz_buf, uint32_t *pu_palette )
+{
+ if( sscanf( psz_buf, "palette: "
+ "%"PRIx32", %"PRIx32", %"PRIx32", %"PRIx32", "
+ "%"PRIx32", %"PRIx32", %"PRIx32", %"PRIx32", "
+ "%"PRIx32", %"PRIx32", %"PRIx32", %"PRIx32", "
+ "%"PRIx32", %"PRIx32", %"PRIx32", %"PRIx32"",
+ &pu_palette[0], &pu_palette[1], &pu_palette[2], &pu_palette[3],
+ &pu_palette[4], &pu_palette[5], &pu_palette[6], &pu_palette[7],
+ &pu_palette[8], &pu_palette[9], &pu_palette[10], &pu_palette[11],
+ &pu_palette[12], &pu_palette[13], &pu_palette[14], &pu_palette[15] ) == 16 )
+ {
+ vobsub_palette_rgb2yuv( pu_palette );
+ return VLC_SUCCESS;
+ }
+ else
+ {
+ return VLC_EGENERIC;
+ }
+}
+
+static inline int vobsub_size_parse( const char *psz_buf,
+ int *pi_original_frame_width,
+ int *pi_original_frame_height )
+{
+ if( sscanf( psz_buf, "size: %dx%d",
+ pi_original_frame_width, pi_original_frame_height ) == 2 )
+ {
+ return VLC_SUCCESS;
+ }
+ else
+ {
+ return VLC_EGENERIC;
+ }
+}
+
return VLC_EGENERIC;
}
- new_fmt.i_codec = VLC_FOURCC('u','8',' ',' ');
+ new_fmt.i_codec = VLC_CODEC_U8;
new_fmt.audio.i_rate = fix_voc_sr( 1000000L / (256L - buf[0]) );
new_fmt.audio.i_bytes_per_frame = 1;
new_fmt.audio.i_frame_length = 1;
i_block_size = 0;
p_sys->i_silence_countdown = GetWLE( buf );
- new_fmt.i_codec = VLC_FOURCC('u','8',' ',' ');
+ new_fmt.i_codec = VLC_CODEC_U8;
new_fmt.audio.i_rate = fix_voc_sr( 1000000L / (256L - buf[0]) );
new_fmt.audio.i_bytes_per_frame = 1;
new_fmt.audio.i_frame_length = 1;
return VLC_EGENERIC;
}
- new_fmt.i_codec = VLC_FOURCC('u','8',' ',' ');
+ new_fmt.i_codec = VLC_CODEC_U8;
new_fmt.audio.i_channels = buf[3] + 1; /* can't be nul */
new_fmt.audio.i_rate = 256000000L /
((65536L - GetWLE(buf)) * new_fmt.audio.i_channels);
switch( new_fmt.audio.i_bitspersample )
{
case 8:
- new_fmt.i_codec = VLC_FOURCC('u','8',' ',' ');
+ new_fmt.i_codec = VLC_CODEC_U8;
break;
case 16:
- new_fmt.i_codec = VLC_FOURCC('u','1','6','l');
+ new_fmt.i_codec = VLC_CODEC_U16L;
break;
default:
switch( new_fmt.audio.i_bitspersample )
{
case 8:
- new_fmt.i_codec = VLC_FOURCC('s','8',' ',' ');
+ new_fmt.i_codec = VLC_CODEC_S8;
break;
case 16:
- new_fmt.i_codec = VLC_FOURCC('s','1','6','l');
+ new_fmt.i_codec = VLC_CODEC_S16L;
break;
default:
case VLC_FOURCC( 'a', 'r', 'a', 'w' ):
case VLC_FOURCC( 'a', 'f', 'l', 't' ):
case VLC_FOURCC( 'u', 'l', 'a', 'w' ):
- case VLC_FOURCC( 'a', 'l', 'a', 'w' ):
- case VLC_FOURCC( 'm', 'l', 'a', 'w' ):
+ case VLC_CODEC_ALAW:
+ case VLC_CODEC_MULAW:
case VLC_FOURCC( 'p', 'c', 'm', ' ' ):
if( FrameInfo_PCM( &p_sys->i_frame_size, &p_sys->i_frame_samples,
&p_sys->fmt ) )
&p_sys->fmt ) )
goto error;
break;
- case VLC_FOURCC( 'm', 'p', 'g', 'a' ):
- case VLC_FOURCC( 'a', '5', '2', ' ' ):
+ case VLC_CODEC_MPGA:
+ case VLC_CODEC_A52:
/* FIXME set end of area FIXME */
goto error;
- case VLC_FOURCC( 'a', 'g', 's', 'm' ):
+ case VLC_CODEC_GSM_MS:
if( FrameInfo_MSGSM( &p_sys->i_frame_size, &p_sys->i_frame_samples,
&p_sys->fmt ) )
goto error;
#endif
p_format->buffer_size = 8192;
- p_aout->output.output.i_format = VLC_FOURCC('f','l','3','2');
+ p_aout->output.output.i_format = VLC_CODEC_FL32;
p_aout->output.i_nb_samples = 2048 / i_nb_channels;
p_aout->output.pf_play = DoNothing;
case NAVIGATE_NEXT:
if( p_input )
{
- vlc_value_t val, val_list;
-
/* First try to go to next chapter */
if( !var_Get( p_input, "chapter", &val ) )
{
- var_Change( p_input, "chapter", VLC_VAR_GETCHOICES,
- &val_list, NULL );
- if( val_list.p_list->i_count > val.i_int )
+ int i_chapter_count = var_CountChoices( p_input, "chapter" );
+ if( i_chapter_count > val.i_int )
{
- var_Change( p_input, "chapter", VLC_VAR_FREELIST,
- &val_list, NULL );
var_SetVoid( p_input, "next-chapter" );
break;
}
- var_Change( p_input, "chapter", VLC_VAR_FREELIST,
- &val_list, NULL );
}
/* Try to go to next title */
if( !var_Get( p_input, "title", &val ) )
{
- var_Change( p_input, "title", VLC_VAR_GETCHOICES,
- &val_list, NULL );
- if( val_list.p_list->i_count > val.i_int )
+ int i_title_count = var_CountChoices( p_input, "title" );
+ if( i_title_count > val.i_int )
{
- var_Change( p_input, "title", VLC_VAR_FREELIST,
- &val_list, NULL );
var_SetVoid( p_input, "next-title" );
break;
}
- var_Change( p_input, "title", VLC_VAR_FREELIST,
- &val_list, NULL );
}
/* Try to go to next file */
}
AddItem( item );
}
- var_Change( p_input, psz_variable, VLC_VAR_FREELIST, &val_list, &text_list );
+ var_FreeList( &val_list, &text_list );
vlc_object_release( p_input );
AddItem( item );
}
- var_Change( p_input, "title", VLC_VAR_FREELIST,
- &val_list, &text_list );
+ var_FreeList( &val_list, &text_list );
}
vlc_object_release( p_input );
BMenu::AttachedToWindow();
AddItem( item );
}
- var_Change( p_input, "chapter", VLC_VAR_FREELIST,
- &val_list, &text_list );
+ var_FreeList( &val_list, &text_list );
}
vlc_object_release( p_input );
BMenu::AttachedToWindow();
colorcombo colspace[]=
{
- {B_YCbCr420, "B_YCbCr420", VLC_FOURCC('I','4','2','0'), 3, 2},
+ {B_YCbCr420, "B_YCbCr420", VLC_CODEC_I420, 3, 2},
{B_YUV422, "B_YUV422", VLC_FOURCC('Y','4','2','2'), 3, 2},
- {B_YCbCr422, "B_YCbCr422", VLC_FOURCC('Y','U','Y','2'), 3, 2},
- {B_RGB32, "B_RGB32", VLC_FOURCC('R','V','3','2'), 1, 4},
- {B_RGB16, "B_RGB16", VLC_FOURCC('R','V','1','6'), 1, 2}
+ {B_YCbCr422, "B_YCbCr422", VLC_CODEC_YUYV, 3, 2},
+ {B_RGB32, "B_RGB32", VLC_CODEC_RGB32, 1, 4},
+ {B_RGB16, "B_RGB16", VLC_CODEC_RGB16, 1, 2}
};
#define COLOR_COUNT 5
int i_state;
/* Font style */
- text_style_t text_style; /* font control */
+ text_style_t* p_text_style; /* font control */
char *psz_string;
/* Position */
if( !p_intf->p_sys )
return VLC_ENOMEM;
- p_sys->p_style = malloc( sizeof( text_style_t ) );
+ p_sys->p_style = text_style_New();
if( !p_sys->p_style )
{
free( p_intf->p_sys );
return VLC_ENOMEM;
}
- vlc_memcpy( p_sys->p_style, &default_text_style, sizeof( text_style_t ) );
p_intf->pf_run = Run;
p_sys->p_image = image_HandlerCreate( p_this );
if( !p_sys->p_image )
{
- free( p_sys->p_style );
+ text_style_Delete( p_sys->p_style );
free( p_sys );
return VLC_ENOMEM;
}
var_AddCallback( p_intf, "fbosd-font-opacity", OverlayCallback, NULL );
for( i = 0; i < FBOSD_RENDER_MAX; i++ )
- {
- vlc_memcpy( &p_sys->render[i].text_style, &default_text_style,
- sizeof( text_style_t ) );
- }
+ p_sys->render[i].p_text_style = text_style_New();
p_sys->b_clear = var_CreateGetBoolCommand( p_intf, "fbosd-clear" );
p_sys->b_render = var_CreateGetBoolCommand( p_intf, "fbosd-render" );
{
free( p_sys->render[i].psz_string );
p_sys->render[i].i_state = FBOSD_STATE_FREE;
+ text_style_Delete( p_sys->render[i].p_text_style );
}
#if defined(FBOSD_BLENDING)
if( p_sys->p_overlay )
picture_Release( p_sys->p_overlay );
- free( p_sys->p_style );
+ text_style_Delete( p_sys->p_style );
free( p_sys );
}
p_intf->p_sys->fmt_out.i_chroma;
if( config_GetInt( p_intf, "freetype-yuvp" ) )
p_intf->p_sys->p_blend->fmt_in.video.i_chroma =
- VLC_FOURCC('Y','U','V','P');
+ VLC_CODEC_YUVP;
else
p_intf->p_sys->p_blend->fmt_in.video.i_chroma =
- VLC_FOURCC('Y','U','V','A');
+ VLC_CODEC_YUVA;
p_intf->p_sys->p_blend->p_module =
module_need( p_intf->p_sys->p_blend, "video blending", NULL, false );
return NULL;
if( !p_fmt->p_palette &&
- ( p_fmt->i_chroma == VLC_FOURCC('Y','U','V','P') ) )
+ ( p_fmt->i_chroma == VLC_CODEC_YUVP ) )
{
p_fmt->p_palette = malloc( sizeof(video_palette_t) );
if( !p_fmt->p_palette )
switch( fmt.i_chroma )
{
- case VLC_FOURCC('R','V','2','4'):
+ case VLC_CODEC_RGB24:
p_begin = (uint8_t *)(*p_pic)->p[Y_PLANE].p_pixels;
p_end = (uint8_t *)(*p_pic)->p[Y_PLANE].p_pixels +
( fmt.i_height * (*p_pic)->p[Y_PLANE].i_pitch );
i_skip = 3;
break;
- case VLC_FOURCC('R','V','3','2'):
+ case VLC_CODEC_RGB32:
p_begin = (uint8_t *)(*p_pic)->p[Y_PLANE].p_pixels;
p_end = (uint8_t *)(*p_pic)->p[Y_PLANE].p_pixels +
( fmt.i_height * (*p_pic)->p[Y_PLANE].i_pitch );
video_format_t fmt;
memset( &fmt, 0, sizeof(fmt) );
- fmt.i_chroma = VLC_FOURCC('T','E','X','T');
+ fmt.i_chroma = VLC_CODEC_TEXT;
fmt.i_aspect = 0;
fmt.i_width = fmt.i_visible_width = 0;
fmt.i_height = fmt.i_visible_height = 0;
subpicture_region_Delete( p_region );
return NULL;
}
- p_region->p_style = p_style;
+ p_region->p_style = text_style_Duplicate( p_style );
p_region->i_align = OSD_ALIGN_LEFT | OSD_ALIGN_TOP;
if( p_sys->p_text->pf_render_text )
switch( p_sys->var_info.bits_per_pixel )
{
case 8: /* FIXME: set the palette */
- p_sys->fmt_out.i_chroma = VLC_FOURCC('R','G','B','2'); break;
+ p_sys->fmt_out.i_chroma = VLC_CODEC_RGB8; break;
case 15:
- p_sys->fmt_out.i_chroma = VLC_FOURCC('R','V','1','5'); break;
+ p_sys->fmt_out.i_chroma = VLC_CODEC_RGB15; break;
case 16:
- p_sys->fmt_out.i_chroma = VLC_FOURCC('R','V','1','6'); break;
+ p_sys->fmt_out.i_chroma = VLC_CODEC_RGB16; break;
case 24:
- p_sys->fmt_out.i_chroma = VLC_FOURCC('R','V','2','4'); break;
+ p_sys->fmt_out.i_chroma = VLC_CODEC_RGB24; break;
case 32:
- p_sys->fmt_out.i_chroma = VLC_FOURCC('R','V','3','2'); break;
+ p_sys->fmt_out.i_chroma = VLC_CODEC_RGB32; break;
default:
msg_Err( p_intf, "unknown screen depth %i",
p_sys->var_info.bits_per_pixel );
#if defined(FBOSD_BLENDING)
video_format_t fmt_in;
memset( &fmt_in, 0, sizeof(video_format_t) );
- p_text = RenderText( p_intf, render->psz_string, &render->text_style,
+ p_text = RenderText( p_intf, render->psz_string, render->p_text_style,
&fmt_in );
if( p_text )
{
DeAllocatePicture( p_text, &fmt_in );
}
#else
- p_text = RenderText( p_intf, render->psz_string, &render->text_style,
+ p_text = RenderText( p_intf, render->psz_string, render->p_text_style,
&p_sys->fmt_out );
if( p_text )
{
{
intf_sys_t *p_sys = p_intf->p_sys;
- vlc_memcpy( &render->text_style, &default_text_style,
- sizeof( text_style_t ) );
+ text_style_Delete( render->p_text_style );
+ render->p_text_style = text_style_New();
free( render->psz_string );
render->psz_string = NULL;
}
else if( !strncmp( psz_cmd, "fbosd-font-size", 15 ) )
{
- p_sys->render[i].text_style.i_font_size = newval.i_int;
+ p_sys->render[i].p_text_style->i_font_size = newval.i_int;
}
else if( !strncmp( psz_cmd, "fbosd-font-color", 16 ) )
{
- p_sys->render[i].text_style.i_font_color = newval.i_int;
+ p_sys->render[i].p_text_style->i_font_color = newval.i_int;
}
else if( !strncmp( psz_cmd, "fbosd-font-opacity", 18 ) )
{
- p_sys->render[i].text_style.i_font_alpha = 255 - newval.i_int;
+ p_sys->render[i].p_text_style->i_font_alpha = 255 - newval.i_int;
}
else if( !strncmp( psz_cmd, "fbosd-alpha", 11 ) )
{
bookmarks.m \
embeddedwindow.h \
embeddedwindow.m \
+ sidebarview.h \
+ sidebarview.m \
+ sidestatusview.h \
+ sidestatusview.m \
fspanel.m \
fspanel.h \
eyetv.h \
IBOutlet id o_btn_shuffle;
IBOutlet id o_btn_addNode;
IBOutlet id o_btn_repeat;
+ IBOutlet id o_btn_repeat_embed;
+ IBOutlet id o_btn_shuffle_embed;
NSImage * o_repeat_single;
NSImage * o_repeat_all;
@end
+/*****************************************************************************
+ * VLCAutoGeneratedMenuContent interface
+ *****************************************************************************
+ * This holds our data for autogenerated menus
+ *****************************************************************************/
+@interface VLCAutoGeneratedMenuContent : NSObject
+{
+ char *psz_name;
+ vlc_object_t * _vlc_object;
+ vlc_value_t value;
+ int i_type;
+}
+
+- (id)initWithVariableName: (const char *)name
+ ofObject: (vlc_object_t *)object
+ andValue: (vlc_value_t)value
+ ofType: (int)type;
+- (const char *)name;
+- (vlc_value_t)value;
+- (vlc_object_t *)vlcObject;
+- (int)type;
+
+@end
+
/*****************************************************************************
* VLCTimeField interface
*****************************************************************************
#include <vlc_osd.h>
#include <vlc_keys.h>
-/*****************************************************************************
- * VLCAutoGeneratedMenuContent interface
- *****************************************************************************
- * This holds our data for autogenerated menus
- *****************************************************************************/
-@interface VLCAutoGeneratedMenuContent : NSObject
-{
- char *psz_name;
- vlc_object_t * _vlc_object;
- vlc_value_t value;
- int i_type;
-}
-
-- (id)initWithVariableName: (const char *)name
- ofObject: (vlc_object_t *)object
- andValue: (vlc_value_t)value
- ofType: (int)type;
-- (const char *)name;
-- (vlc_value_t)value;
-- (vlc_object_t *)vlcObject;
-- (int)type;
-
-@end
-
#pragma mark -
/*****************************************************************************
* VLCControls implementation
- (id)voutView
{
- id window;
- id voutView = nil;
- id embeddedViewList = [[VLCMain sharedInstance] embeddedList];
- NSEnumerator *enumerator = [[NSApp orderedWindows] objectEnumerator];
- while( !voutView && ( window = [enumerator nextObject] ) )
+ id o_window;
+ id o_voutView = nil;
+ id o_embeddedViewList = [[VLCMain sharedInstance] embeddedList];
+ NSEnumerator *o_enumerator = [[NSApp orderedWindows] objectEnumerator];
+ while( !o_voutView && ( o_window = [o_enumerator nextObject] ) )
{
/* We have an embedded vout */
- if( [embeddedViewList windowContainsEmbedded: window] )
+ if( [o_embeddedViewList windowContainsEmbedded: o_window] )
{
- voutView = [embeddedViewList viewForWindow: window];
+ o_voutView = [o_embeddedViewList viewForWindow: o_window];
}
/* We have a detached vout */
- else if( [[window className] isEqualToString: @"VLCVoutWindow"] )
+ else if( [[o_window className] isEqualToString: @"VLCVoutWindow"] )
{
- voutView = [window voutView];
+ o_voutView = [o_window voutView];
}
}
- return [[voutView retain] autorelease];
+ return [[o_voutView retain] autorelease];
}
- (BOOL)aspectRatioIsLocked
{
[o_btn_repeat setImage: o_repeat_single];
[o_btn_repeat setAlternateImage: o_repeat_all];
+ [o_btn_repeat_embed setImage: [NSImage imageNamed:@"sidebarRepeatOneOn"]];
}
- (void)repeatAll
{
[o_btn_repeat setImage: o_repeat_all];
[o_btn_repeat setAlternateImage: o_repeat_off];
+ [o_btn_repeat_embed setImage: [NSImage imageNamed:@"sidebarRepeatOn"]];
}
- (void)repeatOff
{
[o_btn_repeat setImage: o_repeat_off];
[o_btn_repeat setAlternateImage: o_repeat_single];
+ [o_btn_repeat_embed setImage: [NSImage imageNamed:@"sidebarRepeat"]];
}
- (void)shuffle
{
playlist_t *p_playlist = pl_Hold( VLCIntf );
var_Get( p_playlist, "random", &val );
[o_btn_shuffle setState: val.b_bool];
+ if(val.b_bool)
+ [o_btn_shuffle_embed setImage: [NSImage imageNamed:@"sidebarShuffleOn"]];
+ else
+ [o_btn_shuffle_embed setImage: [NSImage imageNamed:@"sidebarShuffle"]];
pl_Release( VLCIntf );
}
- (IBAction)showPosition: (id)sender
{
- vout_thread_t *p_vout = vlc_object_find( VLCIntf, VLC_OBJECT_VOUT,
- FIND_ANYWHERE );
- if( p_vout != NULL )
+ input_thread_t * p_input = pl_CurrentInput( VLCIntf );
+ if( p_input != NULL )
{
- intf_thread_t * p_intf = VLCIntf;
- var_SetInteger( p_intf->p_libvlc, "key-action", ACTIONID_POSITION );
- vlc_object_release( (vlc_object_t *)p_vout );
+ vout_thread_t *p_vout = input_GetVout( p_input );
+ if( p_vout != NULL )
+ {
+ var_SetInteger( VLCIntf->p_libvlc, "key-action", ACTIONID_POSITION );
+ vlc_object_release( (vlc_object_t *)p_vout );
+ }
+ vlc_object_release( p_input );
}
}
- (IBAction)windowAction:(id)sender
{
NSString *o_title = [sender title];
+ input_thread_t * p_input = pl_CurrentInput( VLCIntf );
- vout_thread_t *p_vout = vlc_object_find( VLCIntf, VLC_OBJECT_VOUT,
- FIND_ANYWHERE );
- if( p_vout != NULL )
+ if( p_input != NULL )
{
- id o_vout_view = [self voutView];
- if( o_vout_view )
+ vout_thread_t *p_vout = input_GetVout( p_input );
+ if( p_vout != NULL )
{
- if( [o_title isEqualToString: _NS("Half Size") ] )
- [o_vout_view scaleWindowWithFactor: 0.5 animate: YES];
- else if( [o_title isEqualToString: _NS("Normal Size") ] )
- [o_vout_view scaleWindowWithFactor: 1.0 animate: YES];
- else if( [o_title isEqualToString: _NS("Double Size") ] )
- [o_vout_view scaleWindowWithFactor: 2.0 animate: YES];
- else if( [o_title isEqualToString: _NS("Float on Top") ] )
- [o_vout_view toggleFloatOnTop];
- else if( [o_title isEqualToString: _NS("Fit to Screen") ] )
+ id o_vout_view = [self voutView];
+ if( o_vout_view )
{
- id o_window = [o_vout_view voutWindow];
- if( ![o_window isZoomed] )
- [o_window performZoom:self];
- }
- else if( [o_title isEqualToString: _NS("Snapshot") ] )
- {
- [o_vout_view snapshot];
+ if( [o_title isEqualToString: _NS("Half Size") ] )
+ [o_vout_view scaleWindowWithFactor: 0.5 animate: YES];
+ else if( [o_title isEqualToString: _NS("Normal Size") ] )
+ [o_vout_view scaleWindowWithFactor: 1.0 animate: YES];
+ else if( [o_title isEqualToString: _NS("Double Size") ] )
+ [o_vout_view scaleWindowWithFactor: 2.0 animate: YES];
+ else if( [o_title isEqualToString: _NS("Float on Top") ] )
+ [o_vout_view toggleFloatOnTop];
+ else if( [o_title isEqualToString: _NS("Fit to Screen") ] )
+ {
+ id o_window = [o_vout_view voutWindow];
+ if( ![o_window isZoomed] )
+ [o_window performZoom:self];
+ }
+ else if( [o_title isEqualToString: _NS("Snapshot") ] )
+ {
+ [o_vout_view snapshot];
+ }
+ else
+ {
+ /* Fullscreen state for next time will be saved here too */
+ [o_vout_view toggleFullscreen];
+ }
}
- else
+ vlc_object_release( (vlc_object_t *)p_vout );
+ }
+ else
+ {
+ playlist_t * p_playlist = pl_Hold( VLCIntf );
+
+ if( [o_title isEqualToString: _NS("Fullscreen")] ||
+ [sender isKindOfClass:[NSButton class]] )
{
- /* Fullscreen state for next time will be saved here too */
- [o_vout_view toggleFullscreen];
+ vlc_value_t val;
+ var_Get( p_playlist, "fullscreen", &val );
+ var_Set( p_playlist, "fullscreen", (vlc_value_t)!val.b_bool );
}
- }
- vlc_object_release( (vlc_object_t *)p_vout );
- }
- else
- {
- playlist_t * p_playlist = pl_Hold( VLCIntf );
- if( [o_title isEqualToString: _NS("Fullscreen")] ||
- [sender isKindOfClass:[NSButton class]] )
- {
- vlc_value_t val;
- var_Get( p_playlist, "fullscreen", &val );
- var_Set( p_playlist, "fullscreen", (vlc_value_t)!val.b_bool );
+ pl_Release( VLCIntf );
}
-
- pl_Release( VLCIntf );
+ vlc_object_release( p_input );
}
-
}
- (IBAction)telxTransparent:(id)sender
if( key )
{
- vout_thread_t *p_vout = vlc_object_find( VLCIntf, VLC_OBJECT_VOUT,
- FIND_ANYWHERE );
- if( p_vout != NULL )
+ input_thread_t * p_input = pl_CurrentInput( VLCIntf );
+ if( p_input != NULL )
{
- /* Escape */
- if( key == (unichar) 0x1b )
+ vout_thread_t *p_vout = input_GetVout( p_input );
+
+ if( p_vout != NULL )
{
- id o_vout_view = [self voutView];
- if( o_vout_view && [o_vout_view isFullscreen] )
+ /* Escape */
+ if( key == (unichar) 0x1b )
{
- [o_vout_view toggleFullscreen];
+ id o_vout_view = [self voutView];
+ if( o_vout_view && [o_vout_view isFullscreen] )
+ {
+ [o_vout_view toggleFullscreen];
+ eventHandled = YES;
+ }
+ }
+ else if( key == ' ' )
+ {
+ [self play:self];
eventHandled = YES;
}
+ vlc_object_release( (vlc_object_t *)p_vout );
}
- else if( key == ' ' )
- {
- [self play:self];
- eventHandled = YES;
- }
- vlc_object_release( (vlc_object_t *)p_vout );
+ vlc_object_release( p_input );
}
}
return eventHandled;
/* clean up everything */
if( (i_type & VLC_VAR_TYPE) == VLC_VAR_STRING ) free( val.psz_string );
- var_Change( p_object, psz_variable, VLC_VAR_FREELIST, &val_list, &text_list );
+ var_FreeList( &val_list, &text_list );
}
- (IBAction)toggleVar:(id)sender
else if( [[o_mi title] isEqualToString: _NS("Previous")] ||
[[o_mi title] isEqualToString: _NS("Next")] )
{
- /** \todo fix i_size use */
PL_LOCK;
- bEnabled = p_playlist->items.i_size > 1;
+ bEnabled = playlist_CurrentSize( p_playlist ) > 1;
PL_UNLOCK;
}
else if( [[o_mi title] isEqualToString: _NS("Random")] )
NSEnumerator *o_enumerator = [o_windows objectEnumerator];
bEnabled = FALSE;
- vout_thread_t *p_vout = vlc_object_find( p_intf, VLC_OBJECT_VOUT,
- FIND_ANYWHERE );
- if( p_vout != NULL )
+ if( p_input != NULL )
{
- if( [[o_mi title] isEqualToString: _NS("Float on Top")] )
- {
- var_Get( p_vout, "video-on-top", &val );
- [o_mi setState: val.b_bool ? NSOnState : NSOffState];
- }
-
- while( (o_window = [o_enumerator nextObject]))
+ vout_thread_t *p_vout = input_GetVout( p_input );
+ if( p_vout != NULL )
{
- if( [[o_window className] isEqualToString: @"VLCVoutWindow"] ||
- [[[VLCMain sharedInstance] embeddedList]
- windowContainsEmbedded: o_window])
+ if( [[o_mi title] isEqualToString: _NS("Float on Top")] )
{
- bEnabled = TRUE;
- break;
+ var_Get( p_vout, "video-on-top", &val );
+ [o_mi setState: val.b_bool ? NSOnState : NSOffState];
}
+
+ while( (o_window = [o_enumerator nextObject]))
+ {
+ if( [[o_window className] isEqualToString: @"VLCVoutWindow"] ||
+ [[[VLCMain sharedInstance] embeddedList]
+ windowContainsEmbedded: o_window])
+ {
+ bEnabled = TRUE;
+ break;
+ }
+ }
+
+ vlc_object_release( (vlc_object_t *)p_vout );
}
-
- vlc_object_release( (vlc_object_t *)p_vout );
+ vlc_object_release( p_input );
}
if( [[o_mi title] isEqualToString: _NS("Fullscreen")] )
{
IBOutlet id o_btn_backward;
IBOutlet id o_btn_forward;
IBOutlet id o_btn_fullscreen;
+ IBOutlet id o_btn_equalizer;
+ IBOutlet id o_btn_playlist;
IBOutlet id o_btn_play;
- IBOutlet id o_slider;
+ IBOutlet id o_btn_prev;
+ IBOutlet id o_btn_stop;
+ IBOutlet id o_btn_next;
+ IBOutlet id o_btn_volume_down;
+ IBOutlet id o_volumeslider;
+ IBOutlet id o_btn_volume_up;
+ IBOutlet id o_timeslider;
+ IBOutlet id o_main_pgbar;
IBOutlet id o_time;
+ IBOutlet id o_scrollfield;
+ IBOutlet id o_horizontal_split;
+ IBOutlet id o_vertical_split;
+ IBOutlet id o_videosubview;
+ IBOutlet id o_sidebar_list;
IBOutlet id o_view;
+ IBOutlet id o_background_view;
+ IBOutlet id o_searchfield;
+ IBOutlet id o_status;
+ IBOutlet id o_playlist;
+ IBOutlet id o_playlist_view;
+ IBOutlet id o_playlist_table;
+ IBOutlet id o_vlc_main;
NSImage * o_img_play;
NSImage * o_img_play_pressed;
BOOL b_window_is_invisible;
NSSize videoRatio;
- int originalLevel;
+ NSInteger originalLevel;
}
- (void)controlTintChanged;
- (void)setTime: (NSString *)o_arg_ime position: (float)f_position;
+- (id)getPgbar;
- (void)playStatusUpdated: (int)i_status;
- (void)setSeekable: (BOOL)b_seekable;
+- (void)setStop:(BOOL)b_input;
+- (void)setPrev:(BOOL)b_input;
+- (void)setNext:(BOOL)b_input;
+- (void)setVolumeEnabled:(BOOL)b_input;
+
+- (void)setScrollString:(NSString *)o_string;
+
+- (void)setVolumeSlider:(float)f_level;
- (void)setVideoRatio:(NSSize)ratio;
- (NSView *)mainView;
+- (IBAction)togglePlaylist:(id)sender;
+
- (BOOL)isFullscreen;
- (void)lockFullscreenAnimation;
- (void)setFrameOnMainThread:(NSData*)packedargs;
@end
+/*****************************************************************************
+ * embeddedbackground
+ *****************************************************************************/
+
+
+@interface embeddedbackground : NSView
+{
+ IBOutlet id o_window;
+ IBOutlet id o_timeslider;
+ IBOutlet id o_main_pgbar;
+ IBOutlet id o_time;
+ IBOutlet id o_scrollfield;
+ IBOutlet id o_searchfield;
+ IBOutlet id o_btn_backward;
+ IBOutlet id o_btn_forward;
+ IBOutlet id o_btn_fullscreen;
+ IBOutlet id o_btn_equalizer;
+ IBOutlet id o_btn_playlist;
+ IBOutlet id o_btn_play;
+ IBOutlet id o_btn_prev;
+ IBOutlet id o_btn_stop;
+ IBOutlet id o_btn_next;
+ IBOutlet id o_btn_volume_down;
+ IBOutlet id o_volumeslider;
+ IBOutlet id o_btn_volume_up;
+
+ NSPoint dragStart;
+}
+
+@end
+
+/*****************************************************************************
+ * statusbar
+ *****************************************************************************/
+
+
+@interface statusbar : NSView
+{
+ IBOutlet id o_text;
+
+ BOOL mainwindow;
+}
+
+@end
\ No newline at end of file
/*****************************************************************************
* embeddedwindow.m: MacOS X interface module
*****************************************************************************
- * Copyright (C) 2005-2009 the VideoLAN team
+ * Copyright (C) 2005-2008 the VideoLAN team
* $Id$
*
* Authors: Benjamin Pracht <bigben at videolan dot org>
#import "vout.h"
#import "embeddedwindow.h"
#import "fspanel.h"
+#import "playlist.h"
/* SetSystemUIMode, ... */
#import <Carbon/Carbon.h>
+/*****************************************************************************
+ * extension to NSWindow's interface to fix compilation warnings
+ * and let us access this functions properly
+ * this uses a private Apple-API, but works fine on all current OSX releases
+ * keep checking for compatiblity with future releases though
+ *****************************************************************************/
+
+@interface NSWindow (UndocumentedWindowProperties)
+- (void)setBottomCornerRounded: (BOOL)value;
+@end
+
/*****************************************************************************
* VLCEmbeddedWindow Implementation
*****************************************************************************/
@implementation VLCEmbeddedWindow
-- (id)initWithContentRect:(NSRect)contentRect styleMask: (NSUInteger)windowStyle backing:(NSBackingStoreType)bufferingType defer:(BOOL)deferCreation
-{
- BOOL b_useTextured = YES;
- if( [[NSWindow class] instancesRespondToSelector:@selector(setContentBorderThickness:forEdge:)] )
- {
- b_useTextured = NO;
- windowStyle ^= NSTexturedBackgroundWindowMask;
- }
- self = [super initWithContentRect:contentRect styleMask:windowStyle backing:bufferingType defer:deferCreation];
- if(! b_useTextured )
- {
- [self setContentBorderThickness:28.0 forEdge:NSMinYEdge];
- }
- return self;
-}
-
- (void)awakeFromNib
{
[self setDelegate: self];
+ [self setBottomCornerRounded:NO];
+ /* button strings */
[o_btn_backward setToolTip: _NS("Rewind")];
[o_btn_forward setToolTip: _NS("Fast Forward")];
[o_btn_fullscreen setToolTip: _NS("Fullscreen")];
[o_btn_play setToolTip: _NS("Play")];
- [o_slider setToolTip: _NS("Position")];
+ [o_timeslider setToolTip: _NS("Position")];
+ [o_btn_prev setToolTip: _NS("Previous")];
+ [o_btn_stop setToolTip: _NS("Stop")];
+ [o_btn_next setToolTip: _NS("Next")];
+ [o_volumeslider setToolTip: _NS("Volume")];
+ [o_btn_playlist setToolTip: _NS("Playlist")];
+ [self setTitle: _NS("VLC media player")];
+
+ o_img_play = [NSImage imageNamed: @"play_big"];
+ o_img_pause = [NSImage imageNamed: @"pause_big"];
- o_img_play = [NSImage imageNamed: @"play_embedded"];
- o_img_pause = [NSImage imageNamed: @"pause_embedded"];
[self controlTintChanged];
[[NSNotificationCenter defaultCenter] addObserver: self
selector: @selector( controlTintChanged )
name: NSControlTintDidChangeNotification
object: nil];
+ /* Set color of sidebar to Leopard's "Sidebar Blue" */
+ [o_sidebar_list setBackgroundColor: [NSColor colorWithCalibratedRed:0.820
+ green:0.843
+ blue:0.886
+ alpha:1.0]];
+
+ [self setMinSize:NSMakeSize([o_sidebar_list convertRect:[o_sidebar_list bounds]
+ toView: nil].size.width + 551., 114.)];
+
/* Useful to save o_view frame in fullscreen mode */
o_temp_view = [[NSView alloc] init];
[o_temp_view setAutoresizingMask:NSViewHeightSizable | NSViewWidthSizable];
[o_btn_fullscreen setState: NO];
b_fullscreen = NO;
- [self setMovableByWindowBackground:YES];
-
- [self setDelegate:self];
-
/* Make sure setVisible: returns NO */
[self orderOut:self];
- b_window_is_invisible = YES;
+ //b_window_is_invisible = YES;
videoRatio = NSMakeSize( 0., 0. );
}
if( [o_btn_play alternateImage] == o_img_play_pressed )
b_playing = YES;
- if( [NSColor currentControlTint] == NSGraphiteControlTint )
- {
- o_img_play_pressed = [NSImage imageNamed: @"play_embedded_graphite"];
- o_img_pause_pressed = [NSImage imageNamed: @"pause_embedded_graphite"];
- [o_btn_backward setAlternateImage: [NSImage imageNamed: @"skip_previous_embedded_graphite"]];
- [o_btn_forward setAlternateImage: [NSImage imageNamed: @"skip_forward_embedded_graphite"]];
- [o_btn_fullscreen setAlternateImage: [NSImage imageNamed: @"fullscreen_graphite"]];
- }
- else
- {
- o_img_play_pressed = [NSImage imageNamed: @"play_embedded_blue"];
- o_img_pause_pressed = [NSImage imageNamed: @"pause_embedded_blue"];
- [o_btn_backward setAlternateImage: [NSImage imageNamed: @"skip_previous_embedded_blue"]];
- [o_btn_forward setAlternateImage: [NSImage imageNamed: @"skip_forward_embedded_blue"]];
- [o_btn_fullscreen setAlternateImage: [NSImage imageNamed: @"fullscreen_blue"]];
- }
+ o_img_play_pressed = [NSImage imageNamed: @"play_big_down"];
+ o_img_pause_pressed = [NSImage imageNamed: @"pause_big_down"];
if( b_playing )
[o_btn_play setAlternateImage: o_img_play_pressed];
- (void)setTime:(NSString *)o_arg_time position:(float)f_position
{
[o_time setStringValue: o_arg_time];
- [o_slider setFloatValue: f_position];
+ [o_timeslider setFloatValue: f_position];
}
- (void)playStatusUpdated:(int)i_status
{
[o_btn_forward setEnabled: b_seekable];
[o_btn_backward setEnabled: b_seekable];
- [o_slider setEnabled: b_seekable];
+ [o_timeslider setEnabled: b_seekable];
+}
+
+- (void)setScrollString:(NSString *)o_string
+{
+ [o_scrollfield setStringValue: o_string];
+}
+
+- (id)getPgbar
+{
+ if( o_main_pgbar )
+ return o_main_pgbar;
+
+ return nil;
+}
+
+- (void)setStop:(BOOL)b_input
+{
+ [o_btn_stop setEnabled: b_input];
+}
+
+- (void)setNext:(BOOL)b_input
+{
+ [o_btn_next setEnabled: b_input];
+}
+
+- (void)setPrev:(BOOL)b_input
+{
+ [o_btn_prev setEnabled: b_input];
+}
+
+- (void)setVolumeEnabled:(BOOL)b_input
+{
+ [o_volumeslider setEnabled: b_input];
+}
+
+- (void)setVolumeSlider:(float)f_level
+{
+ [o_volumeslider setFloatValue: f_level];
}
- (BOOL)windowShouldZoom:(NSWindow *)sender toFrame:(NSRect)newFrame
{
playlist_t * p_playlist = pl_Hold( VLCIntf );
- playlist_Stop( p_playlist );
+ /* Only want to stop playback if video is playing */
+ if( videoRatio.height != 0. && videoRatio.width != 0. )
+ playlist_Stop( p_playlist );
pl_Release( VLCIntf );
return YES;
}
- (NSSize)windowWillResize:(NSWindow *)window toSize:(NSSize)proposedFrameSize
{
+ NSView *playlist_area = [[o_vertical_split subviews] objectAtIndex:1];
+ NSRect newList = [playlist_area frame];
+ if( newList.size.height < 50 && newList.size.height > 0 ) {
+ [self togglePlaylist:self];
+ }
+
+ /* With no video open or with the playlist open the behavior is odd */
+ if( newList.size.height > 50 )
+ return proposedFrameSize;
+
if( videoRatio.height == 0. || videoRatio.width == 0. )
return proposedFrameSize;
- if( [[[VLCMain sharedInstance] controls] aspectRatioIsLocked] )
- {
- NSRect viewRect = [o_view convertRect:[o_view bounds] toView: nil];
- NSRect contentRect = [self contentRectForFrameRect:[self frame]];
- float marginy = viewRect.origin.y + [self frame].size.height - contentRect.size.height;
- float marginx = contentRect.size.width - viewRect.size.width;
- proposedFrameSize.height = (proposedFrameSize.width - marginx) * videoRatio.height / videoRatio.width + marginy;
- }
+ NSRect viewRect = [o_view convertRect:[o_view bounds] toView: nil];
+ NSRect contentRect = [self contentRectForFrameRect:[self frame]];
+ float marginy = viewRect.origin.y + [self frame].size.height - contentRect.size.height;
+ float marginx = contentRect.size.width - viewRect.size.width;
+
+ proposedFrameSize.height = (proposedFrameSize.width - marginx) * videoRatio.height / videoRatio.width + marginy;
return proposedFrameSize;
}
+- (void)becomeMainWindow
+{
+ [o_sidebar_list setBackgroundColor: [NSColor colorWithCalibratedRed:0.820
+ green:0.843
+ blue:0.886
+ alpha:1.0]];
+ [o_status becomeMainWindow];
+ [super becomeMainWindow];
+}
+
+- (void)resignMainWindow
+{
+ [o_sidebar_list setBackgroundColor: [NSColor colorWithCalibratedWhite:0.91 alpha:1.0]];
+ [o_status resignMainWindow];
+ [super resignMainWindow];
+}
+
+- (float)splitView:(NSSplitView *) splitView constrainSplitPosition:(float) proposedPosition ofSubviewAt:(int) index
+{
+ if([splitView isVertical])
+ return proposedPosition;
+ else {
+ float bottom = [splitView frame].size.height - [splitView dividerThickness];
+ if(proposedPosition > bottom - 50) {
+ [o_btn_playlist setState: NSOffState];
+ [o_searchfield setHidden:YES];
+ [o_playlist_view setHidden:YES];
+ return bottom;
+ }
+ else {
+ [o_btn_playlist setState: NSOnState];
+ [o_searchfield setHidden:NO];
+ [o_playlist_view setHidden:NO];
+ [o_playlist swapPlaylists: o_playlist_table];
+ [o_vlc_main togglePlaylist:self];
+ return proposedPosition;
+ }
+ }
+}
+
+- (void)splitViewWillResizeSubviews:(NSNotification *) notification
+{
+
+}
+
+- (float)splitView:(NSSplitView *) splitView constrainMinCoordinate:(float) proposedMin ofSubviewAt:(int) offset
+{
+ if([splitView isVertical])
+ return 125.;
+ else
+ return 0.;
+}
+
+- (float)splitView:(NSSplitView *) splitView constrainMaxCoordinate:(float) proposedMax ofSubviewAt:(int) offset
+{
+ if([splitView isVertical])
+ return MIN([self frame].size.width - 551, 300);
+ else
+ return [splitView frame].size.height;
+}
+
+- (BOOL)splitView:(NSSplitView *) splitView canCollapseSubview:(NSView *) subview
+{
+ if([splitView isVertical])
+ return NO;
+ else
+ return NO;
+}
+
+- (NSRect)splitView:(NSSplitView *)splitView effectiveRect:(NSRect)proposedEffectiveRect forDrawnRect:(NSRect)drawnRect
+ ofDividerAtIndex:(NSInteger)dividerIndex
+{
+ if([splitView isVertical]) {
+ drawnRect.origin.x -= 3;
+ drawnRect.size.width += 5;
+ return drawnRect;
+ }
+ else
+ return drawnRect;
+}
+
+- (IBAction)togglePlaylist:(id)sender
+{
+ NSView *playback_area = [[o_vertical_split subviews] objectAtIndex:0];
+ NSView *playlist_area = [[o_vertical_split subviews] objectAtIndex:1];
+ NSRect newVid = [playback_area frame];
+ NSRect newList = [playlist_area frame];
+ if(newList.size.height < 50 && sender != self && sender != o_vlc_main) {
+ newList.size.height = newVid.size.height/2;
+ newVid.size.height = newVid.size.height/2;
+ newVid.origin.y = newVid.origin.y + newList.size.height;
+ [o_btn_playlist setState: NSOnState];
+ [o_searchfield setHidden:NO];
+ [o_playlist_view setHidden:NO];
+ [o_playlist swapPlaylists: o_playlist_table];
+ [o_vlc_main togglePlaylist:self];
+ }
+ else {
+ newVid.size.height = newVid.size.height + newList.size.height;
+ newList.size.height = 0;
+ newVid.origin.y = 0;
+ [o_btn_playlist setState: NSOffState];
+ [o_searchfield setHidden:YES];
+ [o_playlist_view setHidden:YES];
+ }
+ [playback_area setFrame: newVid];
+ [playlist_area setFrame: newList];
+}
+
/*****************************************************************************
* Fullscreen support
*/
[o_temp_view setFrame:[o_view frame]];
[o_fullscreen_window setContentView:o_view];
+ [o_fullscreen_window makeKeyAndOrderFront:self];
+
[o_fullscreen_window makeKeyAndOrderFront:self];
[o_fullscreen_window orderFront:self animate:YES];
/* Make sure we don't see the o_view disappearing of the screen during this operation */
NSDisableScreenUpdates();
- [[self contentView] replaceSubview:o_view with:o_temp_view];
+ [[self contentView] replaceSubview:o_view with:o_temp_view];
[o_temp_view setFrame:[o_view frame]];
[o_fullscreen_window setContentView:o_view];
[o_fullscreen_window makeKeyAndOrderFront:self];
}
@end
+
+/*****************************************************************************
+ * embeddedbackground
+ *****************************************************************************/
+
+
+@implementation embeddedbackground
+
+- (void)dealloc
+{
+ [self unregisterDraggedTypes];
+ [super dealloc];
+}
+
+- (void)awakeFromNib
+{
+ [self registerForDraggedTypes:[NSArray arrayWithObjects:NSTIFFPboardType,
+ NSFilenamesPboardType, nil]];
+ [self addSubview: o_timeslider];
+ [self addSubview: o_scrollfield];
+ [self addSubview: o_time];
+ [self addSubview: o_main_pgbar];
+ [self addSubview: o_btn_backward];
+ [self addSubview: o_btn_forward];
+ [self addSubview: o_btn_fullscreen];
+ [self addSubview: o_btn_equalizer];
+ [self addSubview: o_btn_playlist];
+ [self addSubview: o_btn_play];
+ [self addSubview: o_btn_prev];
+ [self addSubview: o_btn_stop];
+ [self addSubview: o_btn_next];
+ [self addSubview: o_btn_volume_down];
+ [self addSubview: o_volumeslider];
+ [self addSubview: o_btn_volume_up];
+ [self addSubview: o_searchfield];
+}
+
+- (NSDragOperation)draggingEntered:(id <NSDraggingInfo>)sender
+{
+ if ((NSDragOperationGeneric & [sender draggingSourceOperationMask])
+ == NSDragOperationGeneric)
+ {
+ return NSDragOperationGeneric;
+ }
+ else
+ {
+ return NSDragOperationNone;
+ }
+}
+
+- (BOOL)prepareForDragOperation:(id <NSDraggingInfo>)sender
+{
+ return YES;
+}
+
+- (BOOL)performDragOperation:(id <NSDraggingInfo>)sender
+{
+ NSPasteboard *o_paste = [sender draggingPasteboard];
+ NSArray *o_types = [NSArray arrayWithObjects: NSFilenamesPboardType, nil];
+ NSString *o_desired_type = [o_paste availableTypeFromArray:o_types];
+ NSData *o_carried_data = [o_paste dataForType:o_desired_type];
+ BOOL b_autoplay = config_GetInt( VLCIntf, "macosx-autoplay" );
+
+ if( o_carried_data )
+ {
+ if ([o_desired_type isEqualToString:NSFilenamesPboardType])
+ {
+ int i;
+ NSArray *o_array = [NSArray array];
+ NSArray *o_values = [[o_paste propertyListForType: NSFilenamesPboardType]
+ sortedArrayUsingSelector:@selector(caseInsensitiveCompare:)];
+
+ for( i = 0; i < (int)[o_values count]; i++)
+ {
+ NSDictionary *o_dic;
+ o_dic = [NSDictionary dictionaryWithObject:[o_values objectAtIndex:i] forKey:@"ITEM_URL"];
+ o_array = [o_array arrayByAddingObject: o_dic];
+ }
+ if( b_autoplay )
+ [[[VLCMain sharedInstance] playlist] appendArray: o_array atPos: -1 enqueue:NO];
+ else
+ [[[VLCMain sharedInstance] playlist] appendArray: o_array atPos: -1 enqueue:YES];
+ return YES;
+ }
+ }
+ [self setNeedsDisplay:YES];
+ return YES;
+}
+
+- (void)concludeDragOperation:(id <NSDraggingInfo>)sender
+{
+ [self setNeedsDisplay:YES];
+}
+
+- (void)drawRect:(NSRect)rect
+{
+ NSImage *leftImage = [NSImage imageNamed:@"display_left"];
+ NSImage *middleImage = [NSImage imageNamed:@"display_middle"];
+ NSImage *rightImage = [NSImage imageNamed:@"display_right"];
+ [middleImage setSize:NSMakeSize(NSWidth( [self bounds] ) - 134 - [leftImage size].width - [rightImage size].width, [middleImage size].height)];
+ [middleImage setScalesWhenResized:YES];
+ [leftImage compositeToPoint:NSMakePoint( 122., 40. ) operation:NSCompositeSourceOver];
+ [middleImage compositeToPoint:NSMakePoint( 122. + [leftImage size].width, 40. ) operation:NSCompositeSourceOver];
+ [rightImage compositeToPoint:NSMakePoint( NSWidth( [self bounds] ) - 12 - [rightImage size].width, 40. ) operation:NSCompositeSourceOver];
+}
+
+- (void)mouseDown:(NSEvent *)event
+{
+ dragStart = [self convertPoint:[event locationInWindow] fromView:nil];
+}
+
+- (void)mouseDragged:(NSEvent *)event
+{
+ NSPoint dragLocation = [self convertPoint:[event locationInWindow] fromView:nil];
+ NSPoint winOrigin = [o_window frame].origin;
+
+ NSPoint newOrigin = NSMakePoint(winOrigin.x + (dragLocation.x - dragStart.x),
+ winOrigin.y + (dragLocation.y - dragStart.y));
+ [o_window setFrameOrigin: newOrigin];
+}
+
+@end
+
+/*****************************************************************************
+ * statusbar
+ *****************************************************************************/
+
+
+@implementation statusbar
+- (void)awakeFromNib
+{
+ [self addSubview: o_text];
+ mainwindow = YES;
+}
+
+- (void)resignMainWindow
+{
+ mainwindow = NO;
+ [self needsDisplay];
+}
+
+- (void)becomeMainWindow
+{
+ mainwindow = YES;
+ [self needsDisplay];
+}
+
+- (void)drawRect:(NSRect)rect
+{
+ if(mainwindow)
+ [[NSColor colorWithCalibratedRed:0.820
+ green:0.843
+ blue:0.886
+ alpha:1.0] set];
+ else
+ [[NSColor colorWithCalibratedWhite:0.91 alpha:1.0] set];
+ NSRectFill(rect);
+ /*NSRect divider = rect;
+ divider.origin.y += divider.size.height - 1;
+ divider.size.height = 1;
+ [[NSColor colorWithCalibratedWhite:0.65 alpha:1.] set];
+ NSRectFill(divider);*/
+}
+@end
@interface VLCEqualizer : NSObject
{
IBOutlet id o_btn_equalizer;
+ IBOutlet id o_btn_equalizer_embedded;
IBOutlet id o_ckb_2pass;
IBOutlet id o_ckb_enable;
IBOutlet id o_fld_preamp;
{
int i;
[o_btn_equalizer setToolTip: _NS("Equalizer")];
+ [o_btn_equalizer_embedded setToolTip: _NS("Equalizer")];
[o_ckb_2pass setTitle: _NS("2 Pass")];
[o_ckb_2pass setToolTip: _NS("Apply the "
"equalizer filter twice. The effect will be sharper.")];
{
[o_window orderOut:sender];
[o_btn_equalizer setState:NSOffState];
+ [o_btn_equalizer_embedded setState:NSOffState];
}
else
{
[o_window makeKeyAndOrderFront:sender];
[o_btn_equalizer setState:NSOnState];
+ [o_btn_equalizer_embedded setState:NSOnState];
}
}
IBOutlet NSMenu * o_mu_window;
IBOutlet NSMenuItem * o_mi_minimize;
IBOutlet NSMenuItem * o_mi_close_window;
+ IBOutlet NSMenuItem * o_mi_player;
IBOutlet NSMenuItem * o_mi_controller;
IBOutlet NSMenuItem * o_mi_equalizer;
IBOutlet NSMenuItem * o_mi_extended;
[o_mu_window setTitle: _NS("Window")];
[o_mi_minimize setTitle: _NS("Minimize Window")];
[o_mi_close_window setTitle: _NS("Close Window")];
+ [o_mi_player setTitle: _NS("Player...")];
[o_mi_controller setTitle: _NS("Controller...")];
[o_mi_equalizer setTitle: _NS("Equalizer...")];
[o_mi_extended setTitle: _NS("Extended Controls...")];
unichar key = 0;
vlc_value_t val;
unsigned int i_pressed_modifiers = 0;
- struct hotkey *p_hotkeys;
+ const struct hotkey *p_hotkeys;
int i;
val.i_int = 0;
}
[o_btn_stop setEnabled: b_input];
+ [o_embedded_window setStop: b_input];
[o_btn_ff setEnabled: b_seekable];
[o_btn_rewind setEnabled: b_seekable];
[o_btn_prev setEnabled: (b_plmul || b_chapters)];
+ [o_embedded_window setPrev: (b_plmul || b_chapters)];
[o_btn_next setEnabled: (b_plmul || b_chapters)];
+ [o_embedded_window setNext: (b_plmul || b_chapters)];
[o_timeslider setFloatValue: 0.0];
[o_timeslider setEnabled: b_seekable];
[[[self controls] fspanel] setSeekable: b_seekable];
[o_embedded_window setSeekable: b_seekable];
+ [o_embedded_window setTime:@"00:00" position:0.0];
p_intf->p_sys->b_current_title_update = true;
i_volume_step = config_GetInt( p_intf->p_libvlc, "volume-step" );
[o_volumeslider setFloatValue: (float)i_lastShownVolume / i_volume_step];
[o_volumeslider setEnabled: TRUE];
+ [o_embedded_window setVolumeSlider: (float)i_lastShownVolume / i_volume_step];
+ [o_embedded_window setVolumeEnabled: TRUE];
[[[self controls] fspanel] setVolumeLevel: (float)i_lastShownVolume / i_volume_step];
p_intf->p_sys->b_mute = ( i_lastShownVolume == 0 );
p_intf->p_sys->b_volume_update = FALSE;
else
i_end_scroll = -1;
[o_scrollfield setStringValue: o_string];
+ [o_embedded_window setScrollString: o_string];
}
- (void)resetScrollField
IBOutlet id o_tc_duration;
IBOutlet id o_outline_view;
+ IBOutlet id o_tc_name_other;
+ IBOutlet id o_tc_author_other;
+ IBOutlet id o_tc_duration_other;
+ IBOutlet id o_outline_view_other;
+
NSMutableDictionary *o_outline_dict;
}
- (void)initStrings;
- (playlist_item_t *)selectedPlaylistItem;
- (NSOutlineView *)outlineView;
-
+- (void)swapPlaylists:(id)newList;
@end
/*****************************************************************************
IBOutlet id o_btn_playlist;
IBOutlet id o_playlist_view;
+ IBOutlet id o_sidebar;
IBOutlet id o_status_field;
+ IBOutlet id o_status_field_embed;
IBOutlet id o_search_field;
+ IBOutlet id o_search_field_other;
IBOutlet id o_mi_save_playlist;
IBOutlet id o_ctx_menu;
- (IBAction)addNode:(id)sender;
+- (void)playSidebarItem:(id)item;
+- (id)playingItem;
+
- (void)appendArray:(NSArray*)o_array atPos:(int)i_position enqueue:(BOOL)b_enqueue;
- (void)appendNodeArray:(NSArray*)o_array inNode:(playlist_item_t *)p_node atPos:(int)i_position enqueue:(BOOL)b_enqueue;
#import "controls.h"
#import "vlc_osd.h"
#import "misc.h"
+#import "sidebarview.h"
#import <vlc_interface.h>
#import <vlc_services_discovery.h>
[o_outline_view setAllowsEmptySelection: NO];
[o_outline_view expandItem: [o_outline_view itemAtRow:0]];
+ [o_outline_view_other setTarget: self];
+ [o_outline_view_other setDelegate: self];
+ [o_outline_view_other setDataSource: self];
+ [o_outline_view_other setAllowsEmptySelection: NO];
+
pl_Release( VLCIntf );
[self initStrings];
}
[[o_tc_name headerCell] setStringValue:_NS("Name")];
[[o_tc_author headerCell] setStringValue:_NS("Author")];
[[o_tc_duration headerCell] setStringValue:_NS("Duration")];
+
+ [[o_tc_name_other headerCell] setStringValue:_NS("Name")];
+ [[o_tc_author_other headerCell] setStringValue:_NS("Author")];
+ [[o_tc_duration_other headerCell] setStringValue:_NS("Duration")];
+}
+
+- (void)swapPlaylists:(id)newList
+{
+ if(newList != o_outline_view)
+ {
+ id o_outline_view_temp = o_outline_view;
+ id o_tc_author_temp = o_tc_author;
+ id o_tc_duration_temp = o_tc_duration;
+ id o_tc_name_temp = o_tc_name;
+ o_outline_view = o_outline_view_other;
+ o_tc_author = o_tc_author_other;
+ o_tc_duration = o_tc_duration_other;
+ o_tc_name = o_tc_name_other;
+ o_outline_view_other = o_outline_view_temp;
+ o_tc_author_other = o_tc_author_temp;
+ o_tc_duration_other = o_tc_duration_temp;
+ o_tc_name_other = o_tc_name_temp;
+ }
}
- (NSOutlineView *)outlineView
int i_return = 0;
playlist_item_t *p_item = NULL;
playlist_t * p_playlist = pl_Hold( VLCIntf );
- assert( outlineView == o_outline_view );
+ //assert( outlineView == o_outline_view );
if( !item )
p_item = p_playlist->p_root_category;
[super awakeFromNib];
[o_outline_view setDoubleAction: @selector(playItem:)];
+ [o_outline_view_other setDoubleAction: @selector(playItem:)];
[o_outline_view registerForDraggedTypes:
[NSArray arrayWithObjects: NSFilenamesPboardType,
@"VLCPlaylistItemPboardType", nil]];
[o_outline_view setIntercellSpacing: NSMakeSize (0.0, 1.0)];
+ [o_outline_view_other registerForDraggedTypes:
+ [NSArray arrayWithObjects: NSFilenamesPboardType,
+ @"VLCPlaylistItemPboardType", nil]];
+ [o_outline_view_other setIntercellSpacing: NSMakeSize (0.0, 1.0)];
+
/* This uses private Apple API which works fine until 10.5.
* We need to keep checking in the future!
* These methods are being added artificially to NSOutlineView's interface above */
[o_mi_services setTitle: _NS("Services discovery")];
[o_mm_mi_services setTitle: _NS("Services discovery")];
[o_status_field setStringValue: _NS("No items in the playlist")];
+ [o_status_field_embed setStringValue: _NS("No items in the playlist")];
[o_search_field setToolTip: _NS("Search in Playlist")];
+ [o_search_field_other setToolTip: _NS("Search in Playlist")];
[o_mi_addNode setTitle: _NS("Add Folder to Playlist")];
[o_save_accessory_text setStringValue: _NS("File Format:")];
[[o_save_accessory_popup itemAtIndex:2] setTitle: _NS("HTML Playlist")];
}
+- (void)swapPlaylists:(id)newList
+{
+ if(newList != o_outline_view)
+ {
+ id o_search_field_temp = o_search_field;
+ o_search_field = o_search_field_other;
+ o_search_field_other = o_search_field_temp;
+ [super swapPlaylists:newList];
+ [self playlistUpdated];
+ }
+}
+
- (void)playlistUpdated
{
/* Clear indications of any existing column sorting */
// TODO Find a way to keep the dict size to a minimum
//[o_outline_dict removeAllObjects];
[o_outline_view reloadData];
+ [o_sidebar updateSidebar:[self playingItem]];
[[[[VLCMain sharedInstance] wizard] playlistWizard] reloadOutlineView];
[[[[VLCMain sharedInstance] bookmarks] dataTable] reloadData];
[o_status_field setStringValue: [NSString stringWithFormat:
_NS("%i items"),
playlist_CurrentSize( p_playlist )]];
+ [o_status_field_embed setStringValue: [NSString stringWithFormat:
+ _NS("%i items"),
+ playlist_CurrentSize( p_playlist )]];
}
else
{
if( playlist_IsEmpty( p_playlist ) )
+ {
[o_status_field setStringValue: _NS("No items in the playlist")];
+ [o_status_field_embed setStringValue: _NS("No items in the playlist")];
+ }
else
+ {
[o_status_field setStringValue: _NS("1 item")];
+ [o_status_field_embed setStringValue: _NS("1 item")];
+ }
}
PL_UNLOCK;
pl_Release( VLCIntf );
pl_Release( p_intf );
}
+- (void)playSidebarItem:(id)item
+{
+ intf_thread_t * p_intf = VLCIntf;
+ playlist_t * p_playlist = pl_Hold( p_intf );
+
+ playlist_item_t *p_item;
+ playlist_item_t *p_node = NULL;
+
+ p_item = [item pointerValue];
+
+ if( p_item )
+ {
+ if( p_item->i_children == -1 )
+ {
+ p_node = p_item->p_parent;
+
+ }
+ else
+ {
+ p_node = p_item;
+ if( p_node->i_children > 0 && p_node->pp_children[0]->i_children == -1 )
+ {
+ p_item = p_node->pp_children[0];
+ }
+ else
+ {
+ p_item = NULL;
+ }
+ }
+ playlist_Control( p_playlist, PLAYLIST_VIEWPLAY, pl_Unlocked, p_node, p_item );
+ }
+ pl_Release( p_intf );
+}
+
- (IBAction)revealItemInFinder:(id)sender
{
playlist_item_t * p_item = [[o_outline_view itemAtRow:[o_outline_view selectedRow]] pointerValue];
playlist_NodeDelete( p_playlist, p_item, true, false );
}
else
- playlist_DeleteFromInput( p_playlist, p_item->p_input->i_id, pl_Locked );
+ playlist_DeleteFromInput( p_playlist, p_item->p_input, pl_Locked );
}
PL_UNLOCK;
pl_Release( VLCIntf );
}
+- (id)playingItem
+{
+ playlist_t *p_playlist = pl_Hold( VLCIntf );
+
+ id o_playing_item;
+
+ PL_LOCK;
+ o_playing_item = [o_outline_dict objectForKey:
+ [NSString stringWithFormat:@"%p", playlist_CurrentPlayingItem( p_playlist )]];
+ PL_UNLOCK;
+
+ pl_Release( VLCIntf );
+
+ return o_playing_item;
+}
+
- (IBAction)addNode:(id)sender
{
playlist_t * p_playlist = pl_Hold( VLCIntf );
[o_status_field setStringValue: [NSString stringWithFormat:
_NS("%i items"),
playlist_CurrentSize( p_playlist )]];
+ [o_status_field_embed setStringValue: [NSString stringWithFormat:
+ _NS("%i items"),
+ playlist_CurrentSize( p_playlist )]];
}
else
{
if( playlist_IsEmpty( p_playlist ) )
{
[o_status_field setStringValue: _NS("No items in the playlist")];
+ [o_status_field_embed setStringValue: _NS("No items in the playlist")];
}
else
{
[o_status_field setStringValue: _NS("1 item")];
+ [o_status_field_embed setStringValue: _NS("1 item")];
}
}
PL_UNLOCK;
/*****************************************************************************
- * intf.h: send info to intf.
+ * sidebarview.h: MacOS X interface module
*****************************************************************************
- * Copyright (C) 2001 the VideoLAN team
+ * Copyright (C) 2005-2008 the VideoLAN team
* $Id$
*
- * Author: Stéphane Borel <stef@via.ecp.fr>
+ * Authors: Eric Dudiak <dudiak at gmail dot com>
+ * Colloquy <http://colloquy.info/>
*
* 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., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
*****************************************************************************/
-#include <vlc_common.h>
-#include <vlc_input.h>
-#include "vcdplayer.h"
+#import <Cocoa/Cocoa.h>
+
+@interface sidebarview : NSSplitView
+{
+ long _mainSubviewIndex;
+}
+@end
/*****************************************************************************
- * intf_sys_t: description and status of interface
+ * VLCSidebar interface
*****************************************************************************/
-struct intf_sys_t
+@interface VLCSidebar : NSObject
{
- input_thread_t *p_input;
- vcdplayer_t *p_vcdplayer;
-
- bool b_still; /* True if we are in a still frame */
- bool b_infinite_still; /* True if still wait time is infinite */
- mtime_t m_still_time; /* Time in microseconds remaining
- to wait in still frame.
- */
-#ifdef FINISHED
- vcdplay_ctrl_t control;
-#else
- int control;
-#endif
- bool b_click, b_move, b_key_pressed;
- vlc_mutex_t lock;
-};
+ IBOutlet id o_outline_view;
+ IBOutlet id o_playlist;
+}
-int vcdIntfStillTime( struct intf_thread_t * p_intf, uint8_t wait_time);
-int vcdIntfResetStillTime( intf_thread_t *p_intf );
+- (NSOutlineView *)outlineView;
+- (void)updateSidebar:(id)item;
+@end
\ No newline at end of file
--- /dev/null
+/*****************************************************************************
+ * sidebarview.m: MacOS X interface module
+ *****************************************************************************
+ * Copyright (C) 2005-2008 the VideoLAN team
+ * $Id$
+ *
+ * Authors: Eric Dudiak <dudiak at gmail dot com>
+ * Colloquy <http://colloquy.info/>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
+ *****************************************************************************/
+
+#import "sidebarview.h"
+#import "intf.h"
+#import "playlist.h"
+
+@implementation sidebarview
+- (void) resetCursorRects
+{
+ if( ! [self isPaneSplitter] )
+ [super resetCursorRects];
+}
+
+- (id) initWithCoder:(NSCoder *) decoder {
+ if( ( self = [super initWithCoder:decoder] ) )
+ _mainSubviewIndex = 1;
+ return self;
+}
+
+- (float) dividerThickness
+{
+ return 1.0;
+}
+
+- (BOOL) isVertical
+{
+ return YES;
+}
+
+- (void) drawDividerInRect:(NSRect) rect
+{
+ [[NSColor colorWithCalibratedWhite:0.65 alpha:1.] set];
+ NSRectFill( rect );
+}
+
+- (void) adjustSubviews
+{
+ if( _mainSubviewIndex == -1 || [[self subviews] count] != 2 ) {
+ [super adjustSubviews];
+ return;
+ }
+
+ float dividerThickness = [self dividerThickness];
+ NSRect newFrame = [self frame];
+
+ NSView *mainView = [[self subviews] objectAtIndex:_mainSubviewIndex];
+ NSView *otherView = ( _mainSubviewIndex ? [[self subviews] objectAtIndex:0] : [[self subviews] objectAtIndex:1] );
+
+ NSRect mainFrame = [mainView frame];
+ NSRect otherFrame = [otherView frame];
+
+
+ mainFrame.size.width = NSWidth( newFrame ) - dividerThickness - NSWidth( otherFrame );
+ mainFrame.size.height = NSHeight( newFrame );
+ mainFrame.origin.x = ( _mainSubviewIndex ? NSWidth( otherFrame ) + dividerThickness : 0. );
+ mainFrame.origin.y = 0.;
+
+ otherFrame.size.width = NSWidth( otherFrame );
+ otherFrame.size.height = NSHeight( newFrame );
+ otherFrame.origin.x = ( _mainSubviewIndex ? 0. : NSWidth( mainFrame ) + dividerThickness );
+ otherFrame.origin.y = 0.;
+
+ [mainView setFrame:mainFrame];
+ [otherView setFrame:otherFrame];
+
+ [self setNeedsDisplay:YES];
+}
+@end
+
+/*****************************************************************************
+ * VLCPlaylist implementation
+ *****************************************************************************/
+@implementation VLCSidebar
+
+- (void)awakeFromNib
+{
+ [o_outline_view setTarget: self];
+ [o_outline_view setDelegate: self];
+ [o_outline_view setDataSource: self];
+ [o_outline_view setAllowsEmptySelection: NO];
+}
+
+- (NSOutlineView *)outlineView
+{
+ return o_outline_view;
+}
+
+- (void)outlineView:(NSOutlineView *)outlineView
+ willDisplayCell:(id)cell
+ forTableColumn:(NSTableColumn *)tableColumn
+ item:(id)item
+{
+ if ( ![outlineView isExpandable:item] )
+ {
+ [cell setFont: [NSFont systemFontOfSize: 12]];
+ [cell setTextColor:[NSColor blackColor]];
+ }
+ else
+ {
+ [cell setFont: [NSFont boldSystemFontOfSize: 10]];
+ [cell setTextColor:[NSColor colorWithCalibratedWhite:0.365 alpha:1.0]];
+ }
+}
+
+- (void)updateSidebar:(id)item
+{
+ int i_row = -1;
+ [o_outline_view reloadData];
+ i_row = [o_outline_view rowForItem:item];
+ if( i_row > -1 )
+ {
+ [o_outline_view selectRow:i_row byExtendingSelection: NO];
+ [o_outline_view scrollRowToVisible: i_row];
+ }
+}
+
+- (CGFloat)outlineView:(NSOutlineView *)outlineView heightOfRowByItem:(id)item
+{
+ if( [outlineView isExpandable:item] )
+ return 12.;
+ else
+ return 20.;
+}
+
+- (BOOL)outlineView:(NSOutlineView *)outlineView shouldSelectItem:(id)item
+{
+ if( [outlineView isExpandable:item] )
+ return NO;
+ else
+ {
+ if( ![[o_playlist playingItem] isEqual: item] )
+ [o_playlist playSidebarItem:item];
+ return YES;
+ }
+}
+
+- (void)outlineViewItemDidExpand:(NSNotification *)notification
+{
+ int i_row = -1;
+ i_row = [o_outline_view rowForItem:[o_playlist playingItem]];
+ if( i_row > -1 )
+ {
+ [o_outline_view selectRow:i_row byExtendingSelection: NO];
+ [o_outline_view scrollRowToVisible: i_row];
+ }
+}
+
+@end
+
+@implementation VLCSidebar (NSOutlineViewDataSource)
+
+/* return the number of children for Obj-C pointer item */ /* DONE */
+- (int)outlineView:(NSOutlineView *)outlineView numberOfChildrenOfItem:(id)item
+{
+ return [o_playlist outlineView:outlineView numberOfChildrenOfItem:item];
+}
+
+/* return the child at index for the Obj-C pointer item */ /* DONE */
+- (id)outlineView:(NSOutlineView *)outlineView child:(int)index ofItem:(id)item
+{
+ return [o_playlist outlineView:outlineView child:index ofItem:item];
+}
+
+/* is the item expandable */
+- (BOOL)outlineView:(NSOutlineView *)outlineView isItemExpandable:(id)item
+{
+ return [o_playlist outlineView:outlineView isItemExpandable:item];
+}
+
+/* retrieve the string values for the cells */
+- (id)outlineView:(NSOutlineView *)outlineView objectValueForTableColumn:(NSTableColumn *)o_tc byItem:(id)item
+{
+ if( [outlineView isExpandable:item] )
+ return [[o_playlist outlineView:outlineView objectValueForTableColumn:o_tc byItem:item] uppercaseString];
+ else
+ return [o_playlist outlineView:outlineView objectValueForTableColumn:o_tc byItem:item];
+}
+
+@end
--- /dev/null
+/*****************************************************************************
+ * sidestatusview.h: MacOS X interface module
+ *****************************************************************************
+ * Copyright (C) 2005-2008 the VideoLAN team
+ * $Id$
+ *
+ * Authors: Eric Dudiak <dudiak at gmail dot com>
+ * Colloquy <http://colloquy.info/>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
+ *****************************************************************************/
+
+#import <Cocoa/Cocoa.h>
+
+@interface sidestatusview : NSView {
+ IBOutlet NSSplitView *splitView;
+ float _clickOffset;
+ BOOL _insideResizeArea;
+}
+
+@end
--- /dev/null
+/*****************************************************************************
+ * sidestatusview.m: MacOS X interface module
+ *****************************************************************************
+ * Copyright (C) 2005-2008 the VideoLAN team
+ * $Id$
+ *
+ * Authors: Eric Dudiak <dudiak at gmail dot com>
+ * Colloquy <http://colloquy.info/>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
+ *****************************************************************************/
+
+#import "sidestatusview.h"
+
+@implementation sidestatusview
+-(void)resetCursorRects
+{
+ [super resetCursorRects];
+ if( ! splitView ) return;
+
+ NSImage *resizeImage = [NSImage imageNamed:@"sidebarResizeWidget"];
+ NSRect location;
+ location.size = [resizeImage size];
+ location.origin = NSMakePoint( NSWidth( [self bounds] ) - [resizeImage size].width, 0. );
+ [self addCursorRect:location cursor:[NSCursor resizeLeftRightCursor]];
+}
+
+- (void)drawRect:(NSRect)rect
+{
+ NSImage *backgroundImage = [NSImage imageNamed:@"sidebarStatusAreaBackground"];
+ [backgroundImage setSize:NSMakeSize(NSWidth( [self bounds] ), [backgroundImage size].height)];
+ [backgroundImage setScalesWhenResized:YES];
+ [backgroundImage compositeToPoint:NSMakePoint( 0., 0. ) operation:NSCompositeCopy];
+
+ if( splitView ) {
+ NSImage *resizeImage = [NSImage imageNamed:@"sidebarResizeWidget"];
+ [resizeImage compositeToPoint:NSMakePoint( NSWidth( [self bounds] ) - [resizeImage size].width, 0. ) operation:NSCompositeCopy];
+ }
+}
+
+- (void)mouseDown:(NSEvent *)event
+{
+ if( ! splitView ) return;
+ NSPoint clickLocation = [self convertPoint:[event locationInWindow] fromView:nil];
+
+ NSImage *resizeImage = [NSImage imageNamed:@"sidebarResizeWidget"];
+ NSRect location;
+ location.size = [resizeImage size];
+ location.origin = NSMakePoint( NSWidth( [self bounds] ) - [resizeImage size].width, 0. );
+
+ _insideResizeArea = ( NSPointInRect( clickLocation, location ) );
+ if( ! _insideResizeArea ) return;
+
+ clickLocation = [self convertPoint:[event locationInWindow] fromView:[self superview]];
+ _clickOffset = NSWidth( [[self superview] frame] ) - clickLocation.x;
+}
+
+- (void)mouseDragged:(NSEvent *)event
+{
+ if( ! splitView || ! _insideResizeArea ) return;
+
+ [[NSNotificationCenter defaultCenter] postNotificationName:NSSplitViewWillResizeSubviewsNotification object:splitView];
+
+ NSPoint clickLocation = [self convertPoint:[event locationInWindow] fromView:[self superview]];
+
+ NSRect newFrame = [[self superview] frame];
+ newFrame.size.width = clickLocation.x + _clickOffset;
+
+ id delegate = [splitView delegate];
+ if( delegate && [delegate respondsToSelector:@selector( splitView:constrainSplitPosition:ofSubviewAt: )] ) {
+ float new = [delegate splitView:splitView constrainSplitPosition:newFrame.size.width ofSubviewAt:0];
+ newFrame.size.width = new;
+ }
+
+ if( delegate && [delegate respondsToSelector:@selector( splitView:constrainMinCoordinate:ofSubviewAt: )] ) {
+ float min = [delegate splitView:splitView constrainMinCoordinate:0. ofSubviewAt:0];
+ newFrame.size.width = MAX( min, newFrame.size.width );
+ }
+
+ if( delegate && [delegate respondsToSelector:@selector( splitView:constrainMaxCoordinate:ofSubviewAt: )] ) {
+ float max = [delegate splitView:splitView constrainMaxCoordinate:0. ofSubviewAt:0];
+ newFrame.size.width = MIN( max, newFrame.size.width );
+ }
+
+ if( delegate ) {
+ [delegate setMinSize:NSMakeSize(newFrame.size.width + 551., 114.)];
+ }
+
+ [[self superview] setFrame:newFrame];
+
+ [splitView adjustSubviews];
+
+ [[NSNotificationCenter defaultCenter] postNotificationName:NSSplitViewDidResizeSubviewsNotification object:splitView];
+}
+@end
msg_Dbg( p_this, "Closing" );
#ifndef __x86_64__
+ /* If the fullscreen window is still open, close it */
+ if( p_vout->b_fullscreen )
+ {
+ p_vout->i_changes |= VOUT_FULLSCREEN_CHANGE;
+ if( p_vout->p_sys->b_embedded )
+ {
+ aglManage( p_vout );
+ var_SetBool( p_vout->p_parent, "fullscreen", false );
+ }
+ else
+ Manage( p_vout );
+ }
+
if( p_vout->p_sys->b_embedded )
{
if( p_vout->p_sys->agl_ctx )
if( p_item->i_children == -1 )
{
playlist_DeleteFromInput( p_playlist,
- p_item->p_input->i_id, pl_Locked );
+ p_item->p_input, pl_Locked );
}
else
{
char buf1[MSTRTIME_MAX_SIZE];
char buf2[MSTRTIME_MAX_SIZE];
vlc_value_t val;
- vlc_value_t val_list;
/* Source */
char *psz_uri = input_item_GetURI( input_GetItem( p_input ) );
/* Title */
if( !var_Get( p_input, "title", &val ) )
{
- var_Change( p_input, "title", VLC_VAR_GETCHOICES, &val_list, NULL );
- if( val_list.p_list->i_count > 0 )
- {
- mvnprintw( y++, 0, COLS, _(" Title : %d/%d"), val.i_int, val_list.p_list->i_count );
- }
- var_Change( p_input, "title", VLC_VAR_FREELIST, &val_list, NULL );
+ int i_title_count = var_CountChoices( p_input, "title" );
+ if( i_title_count > 0 )
+ mvnprintw( y++, 0, COLS, _(" Title : %d/%d"), val.i_int, i_title_count );
}
/* Chapter */
if( !var_Get( p_input, "chapter", &val ) )
{
- var_Change( p_input, "chapter", VLC_VAR_GETCHOICES, &val_list, NULL );
- if( val_list.p_list->i_count > 0 )
- {
- mvnprintw( y++, 0, COLS, _(" Chapter : %d/%d"), val.i_int, val_list.p_list->i_count );
- }
- var_Change( p_input, "chapter", VLC_VAR_FREELIST, &val_list, NULL );
+ int i_chapter_count = var_CountChoices( p_input, "chapter" );
+ if( i_chapter_count > 0 )
+ mvnprintw( y++, 0, COLS, _(" Chapter : %d/%d"), val.i_int, i_chapter_count );
}
}
else
{
intf_thread_t *p_intf = GtkGetIntf( widget );
playlist_t *p_playlist;
- int i_id , i_pos=0;
+ int i_pos=0;
GtkTreeView *p_tvplaylist = NULL;
p_playlist = pl_Hold( p_intf );
else
#endif
{
- i_id = playlist_AddExt( p_playlist, (const char*)name,
+ playlist_AddExt( p_playlist, (const char*)name,
(const char*)name,
PLAYLIST_APPEND, PLAYLIST_END,
(mtime_t) 0,
}
pp.format.voices = i_nb_channels;
- p_aout->output.output.i_format = AOUT_FMT_S16_NE;
+ p_aout->output.output.i_format = VLC_CODEC_S16N;
p_aout->output.i_nb_samples = DEFAULT_FRAME_SIZE;
pp.format.format = SND_PCM_SFMT_S16;
i_bytes_per_sample = 2;
int i_tmp, i_size;
uint8_t * p_bytes;
- if ( p_aout->output.output.i_format != VLC_FOURCC('s','p','d','i') )
+ if ( p_aout->output.output.i_format != VLC_CODEC_SPDIFL )
{
mtime_t next_date = 0;
switch( p_vout->p_sys->i_screen_depth )
{
case 8:
- p_vout->output.i_chroma = VLC_FOURCC('R','G','B','2');
+ p_vout->output.i_chroma = VLC_CODEC_RGB8;
p_vout->p_sys->i_bytes_per_pixel = 1;
p_vout->output.pf_setpalette = SetPalette;
break;
case 15:
- p_vout->output.i_chroma = VLC_FOURCC('R','V','1','5');
+ p_vout->output.i_chroma = VLC_CODEC_RGB15;
p_vout->p_sys->i_bytes_per_pixel = 2;
p_vout->output.i_rmask = 0x7c00;
p_vout->output.i_gmask = 0x03e0;
break;
case 16:
- p_vout->output.i_chroma = VLC_FOURCC('R','V','1','6');
+ p_vout->output.i_chroma = VLC_CODEC_RGB16;
p_vout->p_sys->i_bytes_per_pixel = 2;
p_vout->output.i_rmask = 0xf800;
p_vout->output.i_gmask = 0x07e0;
break;
case 24:
- p_vout->output.i_chroma = VLC_FOURCC('R','V','2','4');
+ p_vout->output.i_chroma = VLC_CODEC_RGB24;
p_vout->p_sys->i_bytes_per_pixel = 3;
p_vout->output.i_rmask = 0xff0000;
p_vout->output.i_gmask = 0x00ff00;
case 32:
default:
- p_vout->output.i_chroma = VLC_FOURCC('R','V','3','2');
+ p_vout->output.i_chroma = VLC_CODEC_RGB32;
p_vout->p_sys->i_bytes_per_pixel = 4;
p_vout->output.i_rmask = 0xff0000;
p_vout->output.i_gmask = 0x00ff00;
switch (p_vout->p_sys->i_vc_format)
{
case Pg_VIDEO_FORMAT_YUV420:
- p_vout->output.i_chroma = VLC_FOURCC('I','4','2','0');
+ p_vout->output.i_chroma = VLC_CODEC_I420;
p_pic->p_sys->p_buf[U_PLANE] = PdGetOffscreenContextPtr( p_pic->p_sys->p_ctx[U_PLANE] );
p_pic->p_sys->p_buf[V_PLANE] = PdGetOffscreenContextPtr( p_pic->p_sys->p_ctx[V_PLANE] );
break;
case Pg_VIDEO_FORMAT_YV12:
- p_vout->output.i_chroma = VLC_FOURCC('Y','V','1','2');
+ p_vout->output.i_chroma = VLC_CODEC_YV12;
p_pic->p_sys->p_buf[U_PLANE] = PdGetOffscreenContextPtr( p_pic->p_sys->p_ctx[U_PLANE] );
p_pic->p_sys->p_buf[V_PLANE] = PdGetOffscreenContextPtr( p_pic->p_sys->p_ctx[V_PLANE] );
case Pg_VIDEO_FORMAT_YUY2:
if (p_vout->p_sys->i_vc_format == Pg_VIDEO_FORMAT_UYVY)
{
- p_vout->output.i_chroma = VLC_FOURCC('U','Y','V','Y');
+ p_vout->output.i_chroma = VLC_CODEC_UYVY;
}
else
{
- p_vout->output.i_chroma = VLC_FOURCC('Y','U','Y','2');
+ p_vout->output.i_chroma = VLC_CODEC_YUYV;
}
p_pic->p->p_pixels = p_pic->p_sys->p_buf[Y_PLANE];
break;
case Pg_VIDEO_FORMAT_RGB555:
- p_vout->output.i_chroma = VLC_FOURCC('R','V','1','5');
+ p_vout->output.i_chroma = VLC_CODEC_RGB15;
p_vout->output.i_rmask = 0x001f;
p_vout->output.i_gmask = 0x03e0;
p_vout->output.i_bmask = 0x7c00;
break;
case Pg_VIDEO_FORMAT_RGB565:
- p_vout->output.i_chroma = VLC_FOURCC('R','V','1','6');
+ p_vout->output.i_chroma = VLC_CODEC_RGB16;
p_vout->output.i_rmask = 0x001f;
p_vout->output.i_gmask = 0x07e0;
p_vout->output.i_bmask = 0xf800;
break;
case Pg_VIDEO_FORMAT_RGB8888:
- p_vout->output.i_chroma = VLC_FOURCC('R','V','3','2');
+ p_vout->output.i_chroma = VLC_CODEC_RGB32;
p_vout->output.i_rmask = 0x000000ff;
p_vout->output.i_gmask = 0x0000ff00;
p_vout->output.i_bmask = 0x00ff0000;
switch( p_vout->output.i_chroma )
{
#ifdef MODULE_NAME_IS_xvideo
- case VLC_FOURCC('Y','2','1','1'):
+ case VLC_CODEC_Y211:
p_pic->p->p_pixels = p_pic->p_sys->p_image->data
+ p_pic->p_sys->p_image->offsets[0];
input_manager.moc.cpp \
actions_manager.moc.cpp \
recents.moc.cpp \
+ variables.moc.cpp \
dialogs/playlist.moc.cpp \
dialogs/bookmarks.moc.cpp \
dialogs/mediainfo.moc.cpp \
input_manager.cpp \
actions_manager.cpp \
recents.cpp \
+ variables.cpp \
dialogs/playlist.cpp \
dialogs/bookmarks.cpp \
dialogs/preferences.cpp \
input_manager.hpp \
actions_manager.hpp \
recents.hpp \
+ variables.hpp \
dialogs/playlist.hpp \
dialogs/bookmarks.hpp \
dialogs/mediainfo.hpp \
if( i_val == val2.p_list->p_values[j].i_int )
combobox->setCurrentIndex( j );
}
- var_Change( p_obj, psz_var, VLC_VAR_FREELIST,
- &val2, &text2 );
+ var_FreeList( &val2, &text2 );
CONNECT( combobox, currentIndexChanged( int ), this,
ValueChange( int ) );
}
free( name.psz_string );
}
- var_Change( p_obj, "controls", VLC_VAR_FREELIST, &val, &text );
+ var_FreeList( &val, &text );
vlc_object_release( p_obj );
}
else
Q_OBJECT
friend class ExtendedDialog;
public:
- ExtVideo( intf_thread_t *, QTabWidget * );
+ ExtVideo( struct intf_thread_t *, QTabWidget * );
virtual ~ExtVideo();
/*void gotoConf( QObject* );*/
private:
{
Q_OBJECT;
public:
- MetaPanel( QWidget *, intf_thread_t * );
+ MetaPanel( QWidget *, struct intf_thread_t * );
void saveMeta();
bool isInEditMode();
private:
input_item_t *p_input;
- intf_thread_t *p_intf;
+ struct intf_thread_t *p_intf;
bool b_inEditMode;
QLineEdit *title_text;
{
Q_OBJECT;
public:
- ExtraMetaPanel( QWidget *, intf_thread_t * );
+ ExtraMetaPanel( QWidget *, struct intf_thread_t * );
private:
- intf_thread_t *p_intf;
+ struct intf_thread_t *p_intf;
QTreeWidget *extraMetaTree;
public slots:
void update( input_item_t * );
{
Q_OBJECT;
public:
- InputStatsPanel( QWidget *, intf_thread_t * );
+ InputStatsPanel( QWidget *, struct intf_thread_t * );
private:
- intf_thread_t *p_intf;
+ struct intf_thread_t *p_intf;
QTreeWidget *StatsTree;
QTreeWidgetItem *input;
{
Q_OBJECT;
public:
- InfoPanel( QWidget *, intf_thread_t * );
+ InfoPanel( QWidget *, struct intf_thread_t * );
private:
- intf_thread_t *p_intf;
+ struct intf_thread_t *p_intf;
QTreeWidget *InfoTree;
public slots:
void update( input_item_t * );
/* Set the Widget to the correct Size */
/* Function has to be called by the parent
- Parent has to care about resizing himself*/
+ Parent has to care about resizing itself */
void VideoWidget::SetSizing( unsigned int w, unsigned int h )
{
msg_Dbg( p_intf, "Video is resizing to: %i %i", w, h );
}
CoverArtLabel::CoverArtLabel( QWidget *parent, intf_thread_t *_p_i )
- : QLabel( parent ), p_intf( _p_i )
+ : QLabel( parent ), p_intf( _p_i )
{
setContextMenuPolicy( Qt::ActionsContextMenu );
- CONNECT( this, updateRequested(), this, doUpdate() );
+ CONNECT( this, updateRequested(), this, askForUpdate() );
CONNECT( THEMIM->getIM(), artChanged( QString ),
- this, doUpdate( const QString& ) );
+ this, showArtUpdate( const QString& ) );
setMinimumHeight( 128 );
setMinimumWidth( 128 );
setMaximumHeight( 128 );
setMaximumWidth( 128 );
setScaledContents( true );
+
QList< QAction* > artActions = actions();
QAction *action = new QAction( qtr( "Download cover art" ), this );
+ CONNECT( action, triggered(), this, askForUpdate() );
addAction( action );
- CONNECT( action, triggered(), this, doUpdate() );
- doUpdate( "" );
+ showArtUpdate( "" );
}
CoverArtLabel::~CoverArtLabel()
removeAction( act );
}
-void CoverArtLabel::doUpdate( const QString& url )
+void CoverArtLabel::showArtUpdate( const QString& url )
{
QPixmap pix;
if( !url.isEmpty() && pix.load( url ) )
}
}
-void CoverArtLabel::doUpdate()
+void CoverArtLabel::askForUpdate()
{
THEMIM->getIM()->requestArtUpdate();
}
}
private slots:
- void doUpdate();
- void doUpdate( const QString& );
+ void askForUpdate();
+ void showArtUpdate( const QString& );
signals:
void updateRequested();
vlc_value_t, vlc_value_t, void * );
static int PlaylistNext( vlc_object_t *, const char *,
vlc_value_t, vlc_value_t, void * );
-static int ItemChanged( vlc_object_t *, const char *,
- vlc_value_t, vlc_value_t, void * );
static int ItemAppended( vlc_object_t *p_this, const char *psz_variable,
vlc_value_t oval, vlc_value_t nval, void *param );
static int ItemDeleted( vlc_object_t *p_this, const char *psz_variable,
void PLModel::delCallbacks()
{
- var_DelCallback( p_playlist, "item-change", ItemChanged, this );
/*
var_DelCallback( p_playlist, "item-current", PlaylistNext, this );
*/
return;
}
if( p_item->i_children == -1 )
- playlist_DeleteFromInput( p_playlist, item->i_input_id, pl_Locked );
+ playlist_DeleteFromInput( p_playlist, p_item->p_input, pl_Locked );
else
playlist_NodeDelete( p_playlist, p_item, true, false );
/* And finally, remove it from the tree */
return VLC_SUCCESS;
}
-static int ItemChanged( vlc_object_t *p_this, const char *psz_variable,
- vlc_value_t oval, vlc_value_t nval, void *param )
-{
- PLModel *p_model = (PLModel *) param;
- PLEvent *event = new PLEvent( ItemUpdate_Type, nval.i_int );
- QApplication::postEvent( p_model, event );
- return VLC_SUCCESS;
-}
-
static int ItemDeleted( vlc_object_t *p_this, const char *psz_variable,
vlc_value_t oval, vlc_value_t nval, void *param )
{
/*****************************************************************************
- * external.hpp : Dialogs from other LibVLC core and other plugins
+ * external.cpp : Dialogs from other LibVLC core and other plugins
****************************************************************************
* Copyright (C) 2009 Rémi Denis-Courmont
* Copyright (C) 2006 the VideoLAN team
#include <QProgressDialog>
#include <QMutex>
-QVLCVariable::QVLCVariable (vlc_object_t *obj, const char *varname, int type)
- : object (obj), name (qfu(varname))
-{
- var_Create (object, qtu(name), type);
- var_AddCallback (object, qtu(name), callback, this);
-}
-
-QVLCVariable::~QVLCVariable (void)
-{
- var_DelCallback (object, qtu(name), callback, this);
- var_Destroy (object, qtu(name));
-}
-
-int QVLCVariable::callback (vlc_object_t *object, const char *,
- vlc_value_t, vlc_value_t cur, void *data)
-{
- QVLCVariable *self = (QVLCVariable *)data;
-
- emit self->pointerChanged (object, cur.p_address);
- return VLC_SUCCESS;
-}
-
-
DialogHandler::DialogHandler (intf_thread_t *intf)
: intf (intf),
message (VLC_OBJECT(intf), "dialog-fatal", VLC_VAR_ADDRESS),
#include <QObject>
#include <vlc_common.h>
-
-class QVLCVariable : public QObject
-{
- Q_OBJECT
-private:
- static int callback (vlc_object_t *, const char *,
- vlc_value_t, vlc_value_t, void *);
- vlc_object_t *object;
- QString name;
-
-public:
- QVLCVariable (vlc_object_t *, const char *, int);
- virtual ~QVLCVariable (void);
-
-signals:
- void pointerChanged (vlc_object_t *, void *);
-};
+#include "variables.hpp"
struct intf_thread_t;
class QProgressDialog;
private:
intf_thread_t *intf;
- QVLCVariable message;
- QVLCVariable login;
- QVLCVariable question;
- QVLCVariable progressBar;
+ QVLCPointer message;
+ QVLCPointer login;
+ QVLCPointer question;
+ QVLCPointer progressBar;
signals:
void progressBarDestroyed (QWidget *);
**/
CONNECT( THEMIM->getIM(), infoChanged( input_item_t* ),
IP, update( input_item_t* ) );
- CONNECT( THEMIM->getIM(), metaChanged( input_item_t* ),
+ CONNECT( THEMIM->getIM(), currentMetaChanged( input_item_t* ),
MP, update( input_item_t* ) );
- CONNECT( THEMIM->getIM(), metaChanged( input_item_t* ),
+ CONNECT( THEMIM->getIM(), currentMetaChanged( input_item_t* ),
EMP, update( input_item_t* ) );
CONNECT( THEMIM->getIM(), statisticsUpdated( input_item_t* ),
ISP, update( input_item_t* ) );
artUrl = "";
p_input = NULL;
i_rate = 0;
- i_input_id = 0;
+ p_item = NULL;
b_video = false;
timeA = 0;
timeB = 0;
UpdateNavigation();
UpdateVout();
addCallbacks();
- i_input_id = input_GetItem( p_input )->i_id;
+ p_item = input_GetItem( p_input );
}
else
{
p_input = NULL;
- i_input_id = 0;
+ p_item = NULL;
emit rateChanged( INPUT_RATE_DEFAULT );
}
}
delCallbacks();
i_old_playing_status = END_S;
- i_input_id = 0;
+ p_item = NULL;
oldName = "";
artUrl = "";
b_video = false;
/* Reset all InfoPanels but stats */
emit artChanged( NULL );
emit infoChanged( NULL );
- emit metaChanged( (input_item_t *)NULL );
+ emit currentMetaChanged( (input_item_t *)NULL );
emit encryptionChanged( false );
emit recordingStateChanged( false );
break;
case ItemChanged_Type:
/* Ignore ItemChanged_Type event that does not apply to our input */
- if( i_input_id == ple->i_id )
+ if( p_item == ple->p_item )
{
UpdateStatus();
// UpdateName();
UpdateArt();
/* Update duration of file */
}
- UpdateMeta( ple->i_id );
+ UpdateMeta( ple->p_item->i_id );
break;
case ItemStateChanged_Type:
// TODO: Fusion with above state
vlc_value_t oldval, vlc_value_t newval, void *param )
{
InputManager *im = (InputManager*)param;
+ input_item_t *p_item = static_cast<input_item_t *>(newval.p_address);
- IMEvent *event = new IMEvent( ItemChanged_Type, newval.i_int );
+ IMEvent *event = new IMEvent( ItemChanged_Type, p_item );
QApplication::postEvent( im, event );
return VLC_SUCCESS;
}
switch( newval.i_int )
{
case INPUT_EVENT_STATE:
- event = new IMEvent( ItemStateChanged_Type, 0 );
+ event = new IMEvent( ItemStateChanged_Type );
break;
case INPUT_EVENT_RATE:
- event = new IMEvent( ItemRateChanged_Type, 0 );
+ event = new IMEvent( ItemRateChanged_Type );
break;
- case INPUT_EVENT_TIMES:
- event = new IMEvent( PositionUpdate_Type, 0 );
+ case INPUT_EVENT_POSITION:
+ //case INPUT_EVENT_LENGTH:
+ event = new IMEvent( PositionUpdate_Type );
break;
case INPUT_EVENT_TITLE:
case INPUT_EVENT_CHAPTER:
- event = new IMEvent( ItemTitleChanged_Type, 0 );
+ event = new IMEvent( ItemTitleChanged_Type );
break;
case INPUT_EVENT_ES:
- event = new IMEvent( ItemEsChanged_Type, 0 );
+ event = new IMEvent( ItemEsChanged_Type );
break;
case INPUT_EVENT_TELETEXT:
- event = new IMEvent( ItemTeletextChanged_Type, 0 );
+ event = new IMEvent( ItemTeletextChanged_Type );
break;
case INPUT_EVENT_STATISTICS:
- event = new IMEvent( StatisticsUpdate_Type, 0 );
+ event = new IMEvent( StatisticsUpdate_Type );
break;
case INPUT_EVENT_VOUT:
- event = new IMEvent( InterfaceVoutUpdate_Type, 0 );
+ event = new IMEvent( InterfaceVoutUpdate_Type );
break;
case INPUT_EVENT_AOUT:
- event = new IMEvent( InterfaceAoutUpdate_Type, 0 );
+ event = new IMEvent( InterfaceAoutUpdate_Type );
break;
case INPUT_EVENT_ITEM_META: /* Codec MetaData + Art */
- event = new IMEvent( MetaChanged_Type, 0 );
+ event = new IMEvent( MetaChanged_Type );
break;
case INPUT_EVENT_ITEM_INFO: /* Codec Info */
- event = new IMEvent( InfoChanged_Type, 0 );
+ event = new IMEvent( InfoChanged_Type );
break;
case INPUT_EVENT_ITEM_NAME:
- event = new IMEvent( NameChanged_Type, 0 );
+ event = new IMEvent( NameChanged_Type );
break;
case INPUT_EVENT_AUDIO_DELAY:
case INPUT_EVENT_SUBTITLE_DELAY:
- event = new IMEvent( SynchroChanged_Type, 0 );
+ event = new IMEvent( SynchroChanged_Type );
break;
case INPUT_EVENT_CACHE:
- event = new IMEvent( CachingEvent_Type, 0 );
+ event = new IMEvent( CachingEvent_Type );
break;
case INPUT_EVENT_BOOKMARK:
- event = new IMEvent( BookmarksChanged_Type, 0 );
+ event = new IMEvent( BookmarksChanged_Type );
break;
case INPUT_EVENT_RECORD:
- event = new IMEvent( RecordingEvent_Type, 0 );
+ event = new IMEvent( RecordingEvent_Type );
break;
case INPUT_EVENT_PROGRAM:
/* This is for PID changes */
- event = new IMEvent( ProgramChanged_Type, 0 );
+ event = new IMEvent( ProgramChanged_Type );
break;
case INPUT_EVENT_SIGNAL:
/* This is for capture-card signals */
- /* event = new IMEvent( SignalChanged_Type, 0 );
+ /* event = new IMEvent( SignalChanged_Type );
break; */
default:
event = NULL;
vlc_value_t, vlc_value_t, void *param )
{
InputManager *im = (InputManager*)param;
- IMEvent *event = new IMEvent( ItemTeletextChanged_Type, 0 );
+ IMEvent *event = new IMEvent( ItemTeletextChanged_Type );
QApplication::postEvent( im, event );
return VLC_SUCCESS;
void InputManager::UpdateStatus()
{
/* Update playing status */
- vlc_value_t val; val.i_int = 0;
- var_Get( p_input, "state", &val );
- if( i_old_playing_status != val.i_int )
+ int state = var_GetInteger( p_input, "state" );
+ if( i_old_playing_status != state )
{
- i_old_playing_status = val.i_int;
- emit statusChanged( val.i_int );
+ i_old_playing_status = state;
+ emit statusChanged( state );
}
}
inline void InputManager::UpdateMeta()
{
- emit metaChanged( input_GetItem( p_input ) );
+ emit currentMetaChanged( input_GetItem( p_input ) );
}
inline void InputManager::UpdateInfo()
if( !strcmp( text.p_list->p_values[i].psz_string, "Title" ) )
root = i;
}
- var_Change( p_input, "title 0", VLC_VAR_FREELIST, &val, &text );
+ var_FreeList( &val, &text );
var_SetInteger( p_input, "title 0", root );
}
i = 0;
var_SetInteger( p_input, "spu-es", b_enable ? list.p_list->p_values[i].i_int : -1 );
}
- var_Change( p_input, "teletext-es", VLC_VAR_FREELIST, &list, &text );
+ var_FreeList( &list, &text );
}
}
im, setInput( input_thread_t * ) );
/* emit check if playlist has already started playing */
- IMEvent *event = new IMEvent( ItemChanged_Type,
- var_GetInteger( THEPL, "item-current" ) );
- customEvent( event );
- delete event;
+ input_thread_t *p_input = playlist_CurrentInput( THEPL );
+ if( p_input )
+ {
+ input_item_t *p_item = input_GetItem( p_input );
+ if( p_item )
+ {
+ IMEvent *event = new IMEvent( ItemChanged_Type, p_item );
+ customEvent( event );
+ delete event;
+ }
+ vlc_object_release( p_input );
+ }
}
MainInputManager::~MainInputManager()
/* Static callbacks for MIM */
static int PLItemChanged( vlc_object_t *p_this, const char *psz_var,
- vlc_value_t oldval, vlc_value_t newval, void *param )
+ vlc_value_t oldval, vlc_value_t, void *param )
{
MainInputManager *mim = (MainInputManager*)param;
- IMEvent *event = new IMEvent( ItemChanged_Type, newval.i_int );
+ IMEvent *event = new IMEvent( ItemChanged_Type );
QApplication::postEvent( mim, event );
return VLC_SUCCESS;
}
{
MainInputManager *mim = (MainInputManager*)param;
- IMEvent *event = new IMEvent( VolumeChanged_Type, newval.i_int );
+ IMEvent *event = new IMEvent( VolumeChanged_Type );
QApplication::postEvent( mim, event );
return VLC_SUCCESS;
}
{
friend class InputManager;
public:
- IMEvent( int type, int id ) : QEvent( (QEvent::Type)(type) )
- { i_id = id ; }
- virtual ~IMEvent() {}
+ IMEvent( int type, input_item_t *p_input = NULL )
+ : QEvent( (QEvent::Type)(type) )
+ {
+ if( (p_item = p_input) != NULL )
+ vlc_gc_incref( p_item );
+ }
+ virtual ~IMEvent()
+ {
+ if( p_item )
+ vlc_gc_decref( p_item );
+ }
private:
- int i_id;
+ input_item_t *p_item;
};
class InputManager : public QObject
private:
intf_thread_t *p_intf;
input_thread_t *p_input;
- int i_input_id;
+ input_item_t *p_item;
int i_old_playing_status;
QString oldName;
QString artUrl;
/// Statistics are updated
void statisticsUpdated( input_item_t* );
void infoChanged( input_item_t* );
- void metaChanged( input_item_t* );
+ void currentMetaChanged( input_item_t* );
void metaChanged( int );
void artChanged( QString );
/// Play/pause status
videoIsActive = false;
/* Try to resize, except when you are in Fullscreen mode */
- if( !isFullScreen() ) doComponentsUpdate();
+ doComponentsUpdate();
}
/* Call from WindowControl function */
void askReleaseVideo( );
void askVideoToResize( unsigned int, unsigned int );
void askVideoToShow( unsigned int, unsigned int );
- void askVideoToToggle();
void askBgWidgetToToggle();
void askUpdate();
void minimalViewToggled( bool );
}
/* clean up everything */
- var_Change( p_object, psz_var, VLC_VAR_FREELIST, &val_list, NULL );
+ var_FreeList( &val_list, NULL );
return i_result;
}
currentGroup = NULL;
/* clean up everything */
- var_Change( p_object, psz_var, VLC_VAR_FREELIST, &val_list, &text_list );
+ var_FreeList( &val_list, &text_list );
#undef CURVAL
#undef CURTEXT
Q_INIT_RESOURCE( vlc );
-#if !defined(WIN32) && !defined(__APPLE__)
- /* KLUDGE:
- * disables icon theme use because that makes Cleanlooks style bug
- * because it asks gconf for some settings that timeout because of threads
- * see commits 21610 21622 21654 for reference */
-
- /* If you don't have a gconftool-2 binary, you should comment this line */
- if( strcmp( qVersion(), "4.4.0" ) < 0 ) /* fixed in Qt 4.4.0 */
- QApplication::setDesktopSettingsAware( false );
-#endif
-
/* Start the QApplication here */
#ifdef Q_WS_X11
char *display = var_CreateGetNonEmptyString( p_intf, "x11-display" );
#include <QEvent>
#include <QString>
-#if ( QT_VERSION < 0x040300 )
+#if ( QT_VERSION < 0x040400 )
# error Update your Qt version
#endif
#if QT_VERSION == 0x040500
#include <QRegExp>
#include <QSignalMapper>
+#ifdef WIN32
+#include <shlobj.h>
+#endif
+
RecentsMRL* RecentsMRL::instance = NULL;
RecentsMRL::RecentsMRL( intf_thread_t *_p_intf ) : p_intf( _p_intf )
{
if ( !isActive || ( filter && filter->indexIn( mrl ) >= 0 ) )
return;
-
+#ifdef WIN32
+ SHAddToRecentDocs( 0x00000002 , qtu( mrl ) );
+#endif
msg_Dbg( p_intf, "Adding a new MRL to recent ones: %s", qtu( mrl ) );
int i_index = stack->indexOf( mrl );
if( 0 <= i_index )
}
QVLCMenu::updateRecents( p_intf );
save();
+
}
void RecentsMRL::clear()
--- /dev/null
+/*****************************************************************************
+ * variables.cpp : VLC variable class
+ ****************************************************************************
+ * Copyright (C) 2009 Rémi Denis-Courmont
+ * Copyright (C) 2006 the VideoLAN team
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
+ *****************************************************************************/
+
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
+#include "qt4.hpp"
+#include "variables.hpp"
+
+QVLCVariable::QVLCVariable (vlc_object_t *obj, const char *varname, int type,
+ bool inherit)
+ : object (obj), name (qfu(varname))
+{
+ vlc_object_hold (object);
+
+ if (inherit)
+ type |= VLC_VAR_DOINHERIT;
+ var_Create (object, qtu(name), type);
+ var_AddCallback (object, qtu(name), callback, this);
+}
+
+QVLCVariable::~QVLCVariable (void)
+{
+ var_DelCallback (object, qtu(name), callback, this);
+ var_Destroy (object, qtu(name));
+ vlc_object_release (object);
+}
+
+int QVLCVariable::callback (vlc_object_t *object, const char *,
+ vlc_value_t old, vlc_value_t cur, void *data)
+{
+ QVLCVariable *self = static_cast<QVLCVariable *>(data);
+
+ self->trigger (self->object, old, cur);
+ return VLC_SUCCESS;
+}
+
+
+QVLCPointer::QVLCPointer (vlc_object_t *obj, const char *varname, bool inherit)
+ : QVLCVariable (obj, varname, VLC_VAR_ADDRESS, inherit)
+{
+}
+
+void QVLCPointer::trigger (vlc_object_t *obj, vlc_value_t old, vlc_value_t cur)
+{
+ emit pointerChanged (obj, old.p_address, cur.p_address);
+ emit pointerChanged (obj, cur.p_address);
+}
+
+
+QVLCInteger::QVLCInteger (vlc_object_t *obj, const char *varname, bool inherit)
+ : QVLCVariable (obj, varname, VLC_VAR_INTEGER, inherit)
+{
+}
+
+void QVLCInteger::trigger (vlc_object_t *obj, vlc_value_t old, vlc_value_t cur)
+{
+ emit integerChanged (obj, old.i_int, cur.i_int);
+ emit integerChanged (obj, cur.i_int);
+}
--- /dev/null
+/*****************************************************************************
+ * external.hpp : Dialogs from other LibVLC core and other plugins
+ ****************************************************************************
+ * Copyright (C) 2009 Rémi Denis-Courmont
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
+ *****************************************************************************/
+
+#ifndef QVLC_VARIABLES_H_
+#define QVLC_VARIABLES_H_ 1
+
+#include <QObject>
+#include <vlc_common.h>
+
+class QVLCVariable : public QObject
+{
+ Q_OBJECT
+private:
+ static int callback (vlc_object_t *, const char *,
+ vlc_value_t, vlc_value_t, void *);
+ vlc_object_t *object;
+ QString name;
+ virtual void trigger (vlc_object_t *, vlc_value_t, vlc_value_t) = 0;
+
+public:
+ QVLCVariable (vlc_object_t *, const char *, int, bool);
+ virtual ~QVLCVariable (void);
+};
+
+class QVLCPointer : public QVLCVariable
+{
+ Q_OBJECT
+private:
+ virtual void trigger (vlc_object_t *, vlc_value_t, vlc_value_t);
+
+public:
+ QVLCPointer (vlc_object_t *, const char *, bool inherit = false);
+
+signals:
+ void pointerChanged (vlc_object_t *, void *, void *);
+ void pointerChanged (vlc_object_t *, void *);
+};
+
+class QVLCInteger : public QVLCVariable
+{
+ Q_OBJECT
+private:
+ virtual void trigger (vlc_object_t *, vlc_value_t, vlc_value_t);
+
+public:
+ QVLCInteger (vlc_object_t *, const char *, bool inherit = false);
+
+signals:
+ void integerChanged (vlc_object_t *, int, int);
+ void integerChanged (vlc_object_t *, int);
+};
+
+#endif
video_format_t fmt_in = {0}, fmt_out = {0};
picture_t *pPic;
- fmt_out.i_chroma = VLC_FOURCC('R','G','B','A');
+ fmt_out.i_chroma = VLC_CODEC_RGBA;
pPic = image_ReadUrl( pImageHandler, fileName.c_str(), &fmt_in, &fmt_out );
if( !pPic ) return;
int VlcProc::onItemChange( vlc_object_t *pObj, const char *pVariable,
- vlc_value_t oldVal, vlc_value_t newVal,
+ vlc_value_t oldval, vlc_value_t newval,
void *pParam )
{
VlcProc *pThis = (VlcProc*)pParam;
+ input_item_t *p_item = static_cast<input_item_t*>(newval.p_address);
// Update the stream variable
pThis->updateStreamName();
// Create a playtree notify command
CmdPlaytreeUpdate *pCmdTree = new CmdPlaytreeUpdate( pThis->getIntf(),
- newVal.i_int );
+ p_item->i_id );
// Push the command in the asynchronous command queue
AsyncQueue *pQueue = AsyncQueue::instance( pThis->getIntf() );
int VlcProc::onPlaylistChange( vlc_object_t *pObj, const char *pVariable,
- vlc_value_t oldVal, vlc_value_t newVal,
+ vlc_value_t oldval, vlc_value_t newval,
void *pParam )
{
VlcProc *pThis = (VlcProc*)pParam;
+ input_item_t *p_item = static_cast<input_item_t*>(newval.p_address);
AsyncQueue *pQueue = AsyncQueue::instance( pThis->getIntf() );
pThis->updateStreamName();
// Create two playtree notify commands: one for old item, one for new
+#if 0 /* FIXME: Heck, no! You cannot do that.
+ There is no warranty that the old item is still valid. */
CmdPlaytreeUpdate *pCmdTree = new CmdPlaytreeUpdate( pThis->getIntf(),
oldVal.i_int );
pQueue->push( CmdGenericPtr( pCmdTree ) , true );
- pCmdTree = new CmdPlaytreeUpdate( pThis->getIntf(), newVal.i_int );
+#endif
+ CmdPlaytreeUpdate *pCmdTree = new CmdPlaytreeUpdate( pThis->getIntf(), p_item->i_id );
pQueue->push( CmdGenericPtr( pCmdTree ) , true );
return VLC_SUCCESS;
if( p_item->i_children == -1 )
{
playlist_DeleteFromInput( getIntf()->p_sys->p_playlist,
- p_item->p_input->i_id, pl_Locked );
+ p_item->p_input, pl_Locked );
it2 = getNextVisibleItem( it ) ;
it->parent()->removeChild( it );
it = it2;
/* Clean up everything */
if( (i_type & VLC_VAR_TYPE) == VLC_VAR_STRING ) free( val.psz_string );
- var_Change( p_object, psz_var, VLC_VAR_FREELIST, &val_list, &text_list );
+ var_FreeList( &val_list, &text_list );
return hSubMenu;
}
/**********************************************************************
* Private functions
**********************************************************************/
-void Playlist::DeleteItem( int item )
+void Playlist::DeleteItem( input_item_t *item )
{
playlist_t *p_playlist = pl_Hold( p_intf );
if( p_playlist == NULL ) return;
psz_help = config_CategoryHelpGet( p_item->value.i );
if( psz_help )
{
- config_data->psz_help = wraptext( strdup( psz_help ), 72 );
+ config_data->psz_help = strdup( psz_help );
}
else
{
const char *psz_help = config_CategoryHelpGet( p_item->value.i );
if( psz_help )
{
- config_data->psz_help = wraptext( strdup( psz_help ), 72 );
+ config_data->psz_help = strdup( psz_help );
}
else
{
psz_help = config_CategoryHelpGet( p_item->value.i );
if( psz_help )
{
- config_data->psz_help = wraptext( strdup( psz_help ), 72 );
+ config_data->psz_help = strdup( psz_help );
}
else
{
int * py_pos )
: ConfigControl( p_this, p_item, parent, hInst )
{
- // Number of keys descriptions
- unsigned int i_keys = sizeof(vlc_keys)/sizeof(key_descriptor_t);
-
// Init the keys decriptions array
if( m_keysList == NULL )
{
- m_keysList = new string[i_keys];
- for( unsigned int i = 0; i < i_keys; i++ )
+ m_keysList = new string[vlc_num_keys];
+ for( size_t i = 0; i < vlc_num_keys; ++i )
{
m_keysList[i] = vlc_keys[i].psz_key_string;
}
*py_pos += 15 + 10;
- for( unsigned int i = 0; i < i_keys ; i++ )
+ for( size_t i = 0; i < vlc_num_keys ; ++i )
{
ComboBox_AddString( combo, _FROMMB(m_keysList[i].c_str()) );
ComboBox_SetItemData( combo, i, (void*)vlc_keys[i].i_key_code );
p_aout->output.pf_play = Play;
aout_VolumeSoftInit( p_aout );
- if ( p_aout->output.output.i_format == VLC_FOURCC('s','p','d','i') )
+ if ( p_aout->output.output.i_format == VLC_CODEC_SPDIFL )
{
p_aout->output.i_nb_samples = A52_FRAME_NB;
p_aout->output.output.i_bytes_per_frame = AOUT_SPDIF_SIZE;
bool b_chroma = 0;
psz_chroma = config_GetPsz( p_vout, "dummy-chroma" );
- if( psz_chroma )
- {
- if( strlen( psz_chroma ) >= 4 )
- {
- i_chroma = VLC_FOURCC( psz_chroma[0], psz_chroma[1],
- psz_chroma[2], psz_chroma[3] );
- b_chroma = 1;
- }
-
- free( psz_chroma );
- }
+ i_chroma = vlc_fourcc_GetCodecFromString( VIDEO_ES, psz_chroma );
+ b_chroma = i_chroma != 0;
+ free( psz_chroma );
I_OUTPUTPICTURES = 0;
msg_Dbg( p_vout, "forcing chroma 0x%.8x (%4.4s)",
i_chroma, (char*)&i_chroma );
p_vout->output.i_chroma = i_chroma;
- if ( i_chroma == VLC_FOURCC( 'R', 'G', 'B', '2' ) )
+ if ( i_chroma == VLC_CODEC_RGB8 )
{
p_vout->output.pf_setpalette = SetPalette;
}
/* Create a new subpicture region */
memset( &fmt, 0, sizeof(video_format_t) );
- fmt.i_chroma = VLC_FOURCC('Y','U','V','P');
+ fmt.i_chroma = VLC_CODEC_YUVP;
fmt.i_aspect = 0;
fmt.i_width = fmt.i_visible_width = i_width + 4;
fmt.i_height = fmt.i_visible_height = i_height + 4;
/* Create a new subpicture region */
memset( &fmt, 0, sizeof(video_format_t) );
- fmt.i_chroma = VLC_FOURCC('Y','U','V','A');
+ fmt.i_chroma = VLC_CODEC_YUVA;
fmt.i_aspect = 0;
fmt.i_width = fmt.i_visible_width = i_width + 6;
fmt.i_height = fmt.i_visible_height = i_height + 6;
static int vlclua_playlist_current( lua_State *L )
{
playlist_t *p_playlist = vlclua_get_playlist_internal( L );
- lua_pushinteger( L, var_GetInteger( p_playlist, "item-current" ) );
+ input_thread_t *p_input = playlist_CurrentInput( p_playlist );
+ int id = -1;
+
+ if( p_input )
+ {
+ input_item_t *p_item = input_GetItem( p_input );
+ if( p_item )
+ id = p_item->i_id;
+ vlc_object_release( p_input );
+ }
+
+#warning Indexing input items by ID is unsafe,
+ lua_pushinteger( L, id );
vlclua_release_playlist_internal( p_playlist );
return 1;
}
if( i_ret < 0 ) return vlclua_push_ret( L, i_ret );
vlclua_pushvalue( L, VLC_VAR_LIST, val );
vlclua_pushvalue( L, VLC_VAR_LIST, text );
- var_Change( *pp_obj, psz_var, VLC_VAR_FREELIST, &val, &text );
+ var_FreeList( &val, &text );
return 2;
}
playlist_t* p_playlist = (playlist_t*) p_this;
char *psz_buf = NULL;
input_thread_t *p_input;
+ input_item_t *p_item = newval.p_address;
bool b_is_item_current = !strcmp( "item-current", psz_var );
/* Don't update Telepathy presence each time an item has been preparsed */
if( b_is_item_current )
{ /* stores the current input item id */
- p_intf->p_sys->i_id = newval.i_int;
+ p_intf->p_sys->i_id = p_item->i_id;
p_intf->p_sys->i_item_changes = 0;
}
else
{
- if( newval.i_int != p_intf->p_sys->i_id ) /* "item-change" */
+
+ if( p_item->i_id != p_intf->p_sys->i_id ) /* "item-change" */
return VLC_SUCCESS;
/* Some variable bitrate inputs call "item-change callbacks each time
* their length is updated, that is several times per second.
memset( &fmt_in, 0, sizeof(video_format_t) );
memset( &fmt_out, 0, sizeof(video_format_t) );
- fmt_out.i_chroma = VLC_FOURCC('Y','U','V','A');
+ fmt_out.i_chroma = VLC_CODEC_YUVA;
if( p_menu->p_image )
{
p_state->p_pic = image_ReadUrl( p_menu->p_image, psz_file,
// Create a new subpicture region
memset( &fmt, 0, sizeof(video_format_t) );
- fmt.i_chroma = VLC_FOURCC('Y','U','V','A');
+ fmt.i_chroma = VLC_CODEC_YUVA;
fmt.i_aspect = 0;
fmt.i_width = fmt.i_visible_width = i_width;
fmt.i_height = fmt.i_visible_height = i_textblock_height + VERTICAL_MARGIN * 2;
switch( p_fmt->i_codec )
{
- case VLC_FOURCC( 's', '1', '6', 'b' ):
+ case VLC_CODEC_S16B:
if( p_fmt->audio.i_channels == 1 && p_fmt->audio.i_rate == 44100 )
{
p_es->i_payload_type = 11;
p_fmt->audio.i_channels ) == -1 )
p_es->psz_rtpmap = NULL;
break;
- case VLC_FOURCC( 'u', '8', ' ', ' ' ):
+ case VLC_CODEC_U8:
p_es->i_payload_type = p_media->i_payload_type++;
if( asprintf( &p_es->psz_rtpmap, "L8/%d/%d", p_fmt->audio.i_rate,
p_fmt->audio.i_channels ) == -1 )
p_es->psz_rtpmap = NULL;
break;
- case VLC_FOURCC( 'm', 'p', 'g', 'a' ):
- case VLC_FOURCC( 'm', 'p', '3', ' ' ):
+ case VLC_CODEC_MPGA:
p_es->i_payload_type = 14;
p_es->psz_rtpmap = strdup( "MPA/90000" );
break;
- case VLC_FOURCC( 'm', 'p', 'g', 'v' ):
+ case VLC_CODEC_MPGV:
p_es->i_payload_type = 32;
p_es->psz_rtpmap = strdup( "MPV/90000" );
break;
- case VLC_FOURCC( 'a', '5', '2', ' ' ):
+ case VLC_CODEC_A52:
p_es->i_payload_type = p_media->i_payload_type++;
if( asprintf( &p_es->psz_rtpmap, "ac3/%d", p_fmt->audio.i_rate ) == -1 )
p_es->psz_rtpmap = NULL;
break;
- case VLC_FOURCC( 'H', '2', '6', '3' ):
+ case VLC_CODEC_H263:
p_es->i_payload_type = p_media->i_payload_type++;
p_es->psz_rtpmap = strdup( "H263-1998/90000" );
break;
- case VLC_FOURCC( 'h', '2', '6', '4' ):
+ case VLC_CODEC_H264:
p_es->i_payload_type = p_media->i_payload_type++;
p_es->psz_rtpmap = strdup( "H264/90000" );
p_es->psz_fmtp = NULL;
if( !p_es->psz_fmtp )
p_es->psz_fmtp = strdup( "packetization-mode=1" );
break;
- case VLC_FOURCC( 'm', 'p', '4', 'v' ):
+ case VLC_CODEC_MP4V:
p_es->i_payload_type = p_media->i_payload_type++;
p_es->psz_rtpmap = strdup( "MP4V-ES/90000" );
if( p_fmt->i_extra > 0 )
free( p_hexa );
}
break;
- case VLC_FOURCC( 'm', 'p', '4', 'a' ):
+ case VLC_CODEC_MP4A:
p_es->i_payload_type = p_media->i_payload_type++;
if( asprintf( &p_es->psz_rtpmap, "mpeg4-generic/%d", p_fmt->audio.i_rate ) == -1 )
p_es->psz_rtpmap = NULL;
p_es->i_payload_type = p_media->i_payload_type++;
p_es->psz_rtpmap = strdup( "MP2P/90000" );
break;
- case VLC_FOURCC( 's', 'a', 'm', 'r' ):
+ case VLC_CODEC_AMR_NB:
p_es->i_payload_type = p_media->i_payload_type++;
p_es->psz_rtpmap = strdup( p_fmt->audio.i_channels == 2 ?
"AMR/8000/2" : "AMR/8000" );
p_es->psz_fmtp = strdup( "octet-align=1" );
break;
- case VLC_FOURCC( 's', 'a', 'w', 'b' ):
+ case VLC_CODEC_AMR_WB:
p_es->i_payload_type = p_media->i_payload_type++;
p_es->psz_rtpmap = strdup( p_fmt->audio.i_channels == 2 ?
"AMR-WB/16000/2" : "AMR-WB/16000" );
#include <vlc_plugin.h>
#include <vlc_input.h>
#include <vlc_interface.h>
-#include <vlc_aout.h>
-#include <vlc_vout.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <vlc_common.h>
#include <vlc_codec.h>
-#include <vlc_vout.h>
#include "stats.h"
p_dec->pf_decode_sub = NULL;
/* */
- es_format_Init( &p_dec->fmt_out, VIDEO_ES, VLC_FOURCC('I','4','2','0') );
+ es_format_Init( &p_dec->fmt_out, VIDEO_ES, VLC_CODEC_I420 );
p_dec->fmt_out.video.i_width = 100;
p_dec->fmt_out.video.i_height = 100;
p_dec->fmt_out.video.i_aspect = VOUT_ASPECT_FACTOR;
#include <vlc_common.h>
#include <vlc_codec.h>
-#include <vlc_vout.h>
#include "stats.h"
msg_Dbg( p_vout, "forcing chroma 0x%.8x (%4.4s)",
i_chroma, (char*)&i_chroma );
p_vout->output.i_chroma = i_chroma;
- if ( i_chroma == VLC_FOURCC( 'R', 'G', 'B', '2' ) )
+ if ( i_chroma == VLC_CODEC_RGB8 )
{
p_vout->output.pf_setpalette = SetPalette;
}
/* Create a new subpicture region */
memset( &fmt, 0, sizeof( video_format_t ) );
- fmt.i_chroma = VLC_FOURCC( 'Y','U','V','A' );
+ fmt.i_chroma = VLC_CODEC_YUVA;
fmt.i_aspect = VOUT_ASPECT_FACTOR;
fmt.i_width = fmt.i_visible_width = i_width;
fmt.i_height = fmt.i_visible_height = i_height;
}
p_svg->i_width = p_sys->i_width;
p_svg->i_height = p_sys->i_height;
- p_svg->i_chroma = VLC_FOURCC( 'Y','U','V','A' );
+ p_svg->i_chroma = VLC_CODEC_YUVA;
/* Render the SVG.
The input data is stored in the p_string structure,
{
printf( "value %i: %s\n", i, val.p_list->p_values[i].psz_string );
}
- var_Change( p_this, "honk", VLC_VAR_FREELIST, &val, NULL );
+ var_FreeList( &val, NULL );
var_Destroy( p_this, "honk" );
/* Create a new subpicture region */
memset( &fmt, 0, sizeof(video_format_t) );
- fmt.i_chroma = VLC_FOURCC('Y','U','V','P');
+ fmt.i_chroma = VLC_CODEC_YUVP;
fmt.i_width = fmt.i_visible_width = i_width + (b_outline ? 4 : 0);
fmt.i_height = fmt.i_visible_height = i_height + (b_outline ? 4 : 0);
fmt.i_x_offset = fmt.i_y_offset = 0;
switch( p_input->p_fmt->i_codec )
{
- case VLC_FOURCC( 'a', '5', '2', ' ' ):
+ case VLC_CODEC_A52:
tk->i_tag = WAVE_FORMAT_A52;
tk->psz_name = "A/52";
i_bitspersample = 0;
break;
- case VLC_FOURCC( 'm', 'p', '4', 'a' ):
+ case VLC_CODEC_MP4A:
tk->i_tag = WAVE_FORMAT_AAC;
tk->psz_name = "MPEG-4 Audio";
i_bitspersample = 0;
break;
- case VLC_FOURCC( 'm', 'p', 'g', 'a' ):
+ case VLC_CODEC_MPGA:
#if 1
tk->psz_name = "MPEG Audio Layer 3";
tk->i_tag = WAVE_FORMAT_MPEGLAYER3;
i_extra = 22;
break;
#endif
- case VLC_FOURCC( 'w', 'm', 'a', '1' ):
+ case VLC_CODEC_WMA1:
tk->psz_name = "Windows Media Audio v1";
tk->i_tag = WAVE_FORMAT_WMA1;
tk->b_audio_correction = true;
break;
- case VLC_FOURCC( 'w', 'm', 'a', ' ' ):
- case VLC_FOURCC( 'w', 'm', 'a', '2' ):
+ case VLC_CODEC_WMA2:
tk->psz_name= "Windows Media Audio (v2) 7, 8 and 9 Series";
tk->i_tag = WAVE_FORMAT_WMA2;
tk->b_audio_correction = true;
break;
- case VLC_FOURCC( 'w', 'm', 'a', 'p' ):
+ case VLC_CODEC_WMAP:
tk->psz_name = "Windows Media Audio 9 Professional";
tk->i_tag = WAVE_FORMAT_WMAP;
tk->b_audio_correction = true;
break;
- case VLC_FOURCC( 'w', 'm', 'a', 'l' ):
+ case VLC_CODEC_WMAL:
tk->psz_name = "Windows Media Audio 9 Lossless";
tk->i_tag = WAVE_FORMAT_WMAL;
tk->b_audio_correction = true;
break;
/* raw codec */
- case VLC_FOURCC( 'u', '8', ' ', ' ' ):
+ case VLC_CODEC_U8:
tk->psz_name = "Raw audio 8bits";
tk->i_tag = WAVE_FORMAT_PCM;
i_blockalign= p_input->p_fmt->audio.i_channels;
i_bitspersample = 8;
break;
- case VLC_FOURCC( 's', '1', '6', 'l' ):
+ case VLC_CODEC_S16L:
tk->psz_name = "Raw audio 16bits";
tk->i_tag = WAVE_FORMAT_PCM;
i_blockalign= 2 * p_input->p_fmt->audio.i_channels;
i_bitspersample = 16;
break;
- case VLC_FOURCC( 's', '2', '4', 'l' ):
+ case VLC_CODEC_S24L:
tk->psz_name = "Raw audio 24bits";
tk->i_tag = WAVE_FORMAT_PCM;
i_blockalign= 3 * p_input->p_fmt->audio.i_channels;
i_bitspersample = 24;
break;
- case VLC_FOURCC( 's', '3', '2', 'l' ):
+ case VLC_CODEC_S32L:
tk->psz_name = "Raw audio 32bits";
tk->i_tag = WAVE_FORMAT_PCM;
i_blockalign= 4 * p_input->p_fmt->audio.i_channels;
uint8_t *p_codec_extra = NULL;
int i_codec_extra = 0;
- if( p_input->p_fmt->i_codec == VLC_FOURCC('m','p','4','v') )
+ if( p_input->p_fmt->i_codec == VLC_CODEC_MP4V )
{
tk->psz_name = "MPEG-4 Video";
tk->i_fourcc = VLC_FOURCC( 'M', 'P', '4', 'S' );
}
- else if( p_input->p_fmt->i_codec == VLC_FOURCC('D','I','V','3') )
+ else if( p_input->p_fmt->i_codec == VLC_CODEC_DIV3 )
{
tk->psz_name = "MSMPEG-4 V3 Video";
tk->i_fourcc = VLC_FOURCC( 'M', 'P', '4', '3' );
}
- else if( p_input->p_fmt->i_codec == VLC_FOURCC('D','I','V','2') )
+ else if( p_input->p_fmt->i_codec == VLC_CODEC_DIV2 )
{
tk->psz_name = "MSMPEG-4 V2 Video";
tk->i_fourcc = VLC_FOURCC( 'M', 'P', '4', '2' );
}
- else if( p_input->p_fmt->i_codec == VLC_FOURCC('D','I','V','1') )
+ else if( p_input->p_fmt->i_codec == VLC_CODEC_DIV2 )
{
tk->psz_name = "MSMPEG-4 V1 Video";
tk->i_fourcc = VLC_FOURCC( 'M', 'P', 'G', '4' );
}
- else if( p_input->p_fmt->i_codec == VLC_FOURCC('W','M','V','1') )
+ else if( p_input->p_fmt->i_codec == VLC_CODEC_WMV1 )
{
tk->psz_name = "Windows Media Video 7";
tk->i_fourcc = VLC_FOURCC( 'W', 'M', 'V', '1' );
}
- else if( p_input->p_fmt->i_codec == VLC_FOURCC('W','M','V','2') )
+ else if( p_input->p_fmt->i_codec == VLC_CODEC_WMV2 )
{
tk->psz_name = "Windows Media Video 8";
tk->i_fourcc = VLC_FOURCC( 'W', 'M', 'V', '2' );
}
- else if( p_input->p_fmt->i_codec == VLC_FOURCC('W','M','V','3') )
+ else if( p_input->p_fmt->i_codec == VLC_CODEC_WMV3 )
{
tk->psz_name = "Windows Media Video 9";
tk->i_fourcc = VLC_FOURCC( 'W', 'M', 'V', '3' );
}
- else if( p_input->p_fmt->i_codec == VLC_FOURCC('W','V','C','1') )
+ else if( p_input->p_fmt->i_codec == VLC_CODEC_VC1 )
{
tk->psz_name = "Windows Media Video 9 Advanced Profile";
tk->i_fourcc = VLC_FOURCC( 'W', 'V', 'C', '1' );
}
}
}
- else if( p_input->p_fmt->i_codec == VLC_FOURCC('h','2','6','4') )
+ else if( p_input->p_fmt->i_codec == VLC_CODEC_H264 )
{
tk->psz_name = "H.264/MPEG-4 AVC";
tk->i_fourcc = VLC_FOURCC('h','2','6','4');
else
{
tk->psz_name = _("Unknown Video");
- tk->i_fourcc = p_input->p_fmt->i_codec;
+ tk->i_fourcc = p_input->p_fmt->i_original_fourcc ?: p_input->p_fmt->i_codec;
}
if( !i_codec_extra && p_fmt->i_extra > 0 )
{
switch( p_input->p_fmt->i_codec )
{
- case VLC_FOURCC( 'a', '5', '2', ' ' ):
+ case VLC_CODEC_A52:
p_wf->wFormatTag = WAVE_FORMAT_A52;
break;
- case VLC_FOURCC( 'm', 'p', 'g', 'a' ):
+ case VLC_CODEC_MPGA:
p_wf->wFormatTag = WAVE_FORMAT_MPEGLAYER3;
break;
- case VLC_FOURCC( 'w', 'm', 'a', '1' ):
+ case VLC_CODEC_WMA1:
p_wf->wFormatTag = WAVE_FORMAT_WMA1;
break;
- case VLC_FOURCC( 'w', 'm', 'a', ' ' ):
- case VLC_FOURCC( 'w', 'm', 'a', '2' ):
+ case VLC_CODEC_WMA2:
p_wf->wFormatTag = WAVE_FORMAT_WMA2;
break;
- case VLC_FOURCC( 'w', 'm', 'a', 'p' ):
+ case VLC_CODEC_WMAP:
p_wf->wFormatTag = WAVE_FORMAT_WMAP;
break;
- case VLC_FOURCC( 'w', 'm', 'a', 'l' ):
+ case VLC_CODEC_WMAL:
p_wf->wFormatTag = WAVE_FORMAT_WMAL;
break;
/* raw codec */
- case VLC_FOURCC( 'u', '8', ' ', ' ' ):
+ case VLC_CODEC_U8:
p_wf->wFormatTag = WAVE_FORMAT_PCM;
p_wf->nBlockAlign= p_wf->nChannels;
p_wf->wBitsPerSample = 8;
break;
- case VLC_FOURCC( 's', '1', '6', 'l' ):
+ case VLC_CODEC_S16L:
p_wf->wFormatTag = WAVE_FORMAT_PCM;
p_wf->nBlockAlign= 2 * p_wf->nChannels;
p_wf->wBitsPerSample = 16;
break;
- case VLC_FOURCC( 's', '2', '4', 'l' ):
+ case VLC_CODEC_S24L:
p_wf->wFormatTag = WAVE_FORMAT_PCM;
p_wf->nBlockAlign= 3 * p_wf->nChannels;
p_wf->wBitsPerSample = 24;
break;
- case VLC_FOURCC( 's', '3', '2', 'l' ):
+ case VLC_CODEC_S32L:
p_wf->wFormatTag = WAVE_FORMAT_PCM;
p_wf->nBlockAlign= 4 * p_wf->nChannels;
p_wf->wBitsPerSample = 32;
p_bih->biClrImportant = 0;
switch( p_input->p_fmt->i_codec )
{
- case VLC_FOURCC( 'm', 'p', '4', 'v' ):
+ case VLC_CODEC_MP4V:
p_bih->biCompression = VLC_FOURCC( 'X', 'V', 'I', 'D' );
break;
default:
- p_bih->biCompression = p_input->p_fmt->i_codec;
+ p_bih->biCompression = p_input->p_fmt->i_original_fourcc ?: p_input->p_fmt->i_codec;
break;
}
#undef p_bih
switch( p_input->p_fmt->i_codec )
{
- case VLC_FOURCC( 'm', 'p', '4', 'a' ):
- case VLC_FOURCC( 'm', 'p', '4', 'v' ):
- case VLC_FOURCC( 'm', 'p', 'g', 'a' ):
- case VLC_FOURCC( 'm', 'p', 'g', 'v' ):
- case VLC_FOURCC( 'M', 'J', 'P', 'G' ):
- case VLC_FOURCC( 'm', 'j', 'p', 'b' ):
- case VLC_FOURCC( 'S', 'V', 'Q', '1' ):
- case VLC_FOURCC( 'S', 'V', 'Q', '3' ):
- case VLC_FOURCC( 'H', '2', '6', '3' ):
- case VLC_FOURCC( 'h', '2', '6', '4' ):
- case VLC_FOURCC( 's', 'a', 'm', 'r' ):
- case VLC_FOURCC( 's', 'a', 'w', 'b' ):
- case VLC_FOURCC( 'Y', 'V', '1', '2' ):
- case VLC_FOURCC( 'Y', 'U', 'Y', '2' ):
+ case VLC_CODEC_MP4A:
+ case VLC_CODEC_MP4V:
+ case VLC_CODEC_MPGA:
+ case VLC_CODEC_MPGV:
+ case VLC_CODEC_MJPG:
+ case VLC_CODEC_MJPGB:
+ case VLC_CODEC_SVQ1:
+ case VLC_CODEC_SVQ3:
+ case VLC_CODEC_H263:
+ case VLC_CODEC_H264:
+ case VLC_CODEC_AMR_NB:
+ case VLC_CODEC_AMR_WB:
+ case VLC_CODEC_YV12:
+ case VLC_CODEC_YUYV:
break;
- case VLC_FOURCC( 's', 'u', 'b', 't' ):
+ case VLC_CODEC_SUBT:
msg_Warn( p_mux, "subtitle track added like in .mov (even when creating .mp4)" );
break;
default:
again:
p_data = block_FifoGet( p_input->p_fifo );
- if( p_stream->fmt.i_codec == VLC_FOURCC( 'h', '2', '6', '4' ) )
+ if( p_stream->fmt.i_codec == VLC_CODEC_H264 )
{
p_data = ConvertAVC1( p_data );
}
- else if( p_stream->fmt.i_codec == VLC_FOURCC( 's', 'u', 'b', 't' ) )
+ else if( p_stream->fmt.i_codec == VLC_CODEC_SUBT )
{
p_data = ConvertSUBT( p_data );
}
switch( p_stream->fmt.i_codec )
{
- case VLC_FOURCC( 'm', 'p', '4', 'v' ):
+ case VLC_CODEC_MP4V:
i_object_type_indication = 0x20;
break;
- case VLC_FOURCC( 'm', 'p', 'g', 'v' ):
+ case VLC_CODEC_MPGV:
/* FIXME MPEG-I=0x6b, MPEG-II = 0x60 -> 0x65 */
i_object_type_indication = 0x60;
break;
- case VLC_FOURCC( 'm', 'p', '4', 'a' ):
+ case VLC_CODEC_MP4A:
/* FIXME for mpeg2-aac == 0x66->0x68 */
i_object_type_indication = 0x40;
break;
- case VLC_FOURCC( 'm', 'p', 'g', 'a' ):
+ case VLC_CODEC_MPGA:
i_object_type_indication =
p_stream->fmt.audio.i_rate < 32000 ? 0x69 : 0x6b;
break;
bo_add_fourcc( damr, "REFC" );
bo_add_8( damr, 0 );
- if( p_stream->fmt.i_codec == VLC_FOURCC( 's', 'a', 'm', 'r' ) )
+ if( p_stream->fmt.i_codec == VLC_CODEC_AMR_NB )
bo_add_16be( damr, 0x81ff ); /* Mode set (all modes for AMR_NB) */
else
bo_add_16be( damr, 0x83ff ); /* Mode set (all modes for AMR_WB) */
{
mp4_stream_t *p_stream = p_sys->pp_streams[i_track];
- if( p_stream->fmt.i_codec == VLC_FOURCC('m','p','4','v') ||
- p_stream->fmt.i_codec == VLC_FOURCC('m','p','4','a') )
+ if( p_stream->fmt.i_codec == VLC_CODEC_MP4V ||
+ p_stream->fmt.i_codec == VLC_CODEC_MP4A )
{
bo_t *box = box_new( "\251req" );
/* String length */
switch( p_stream->fmt.i_codec )
{
- case VLC_FOURCC('m','p','4','a'):
+ case VLC_CODEC_MP4A:
memcpy( fcc, "mp4a", 4 );
b_descr = true;
break;
- case VLC_FOURCC('s','a','m','r'):
- case VLC_FOURCC('s','a','w','b'):
+ case VLC_CODEC_AMR_NB:
+ case VLC_CODEC_AMR_WB:
memcpy( fcc, (char*)&p_stream->fmt.i_codec, 4 );
b_descr = true;
break;
- case VLC_FOURCC('m','p','g','a'):
+ case VLC_CODEC_MPGA:
if( p_sys->b_mov )
memcpy( fcc, ".mp3", 4 );
else
/* SoundDescription */
if( p_sys->b_mov &&
- p_stream->fmt.i_codec == VLC_FOURCC('m','p','4','a') )
+ p_stream->fmt.i_codec == VLC_CODEC_MP4A )
{
bo_add_16be( soun, 1 ); // version 1;
}
/* Extended data for SoundDescription V1 */
if( p_sys->b_mov &&
- p_stream->fmt.i_codec == VLC_FOURCC('m','p','4','a') )
+ p_stream->fmt.i_codec == VLC_CODEC_MP4A )
{
/* samples per packet */
bo_add_32be( soun, p_stream->fmt.audio.i_frame_length );
bo_t *box;
if( p_sys->b_mov &&
- p_stream->fmt.i_codec == VLC_FOURCC('m','p','4','a') )
+ p_stream->fmt.i_codec == VLC_CODEC_MP4A )
{
box = GetWaveTag( p_stream );
}
- else if( p_stream->fmt.i_codec == VLC_FOURCC('s','a','m','r') )
+ else if( p_stream->fmt.i_codec == VLC_CODEC_AMR_NB )
{
box = GetDamrTag( p_stream );
}
switch( p_stream->fmt.i_codec )
{
- case VLC_FOURCC('m','p','4','v'):
- case VLC_FOURCC('m','p','g','v'):
+ case VLC_CODEC_MP4V:
+ case VLC_CODEC_MPGV:
memcpy( fcc, "mp4v", 4 );
break;
- case VLC_FOURCC('M','J','P','G'):
+ case VLC_CODEC_MJPG:
memcpy( fcc, "mjpa", 4 );
break;
- case VLC_FOURCC('S','V','Q','1'):
+ case VLC_CODEC_SVQ1:
memcpy( fcc, "SVQ1", 4 );
break;
- case VLC_FOURCC('S','V','Q','3'):
+ case VLC_CODEC_SVQ3:
memcpy( fcc, "SVQ3", 4 );
break;
- case VLC_FOURCC('H','2','6','3'):
+ case VLC_CODEC_H263:
memcpy( fcc, "s263", 4 );
break;
- case VLC_FOURCC('h','2','6','4'):
+ case VLC_CODEC_H264:
memcpy( fcc, "avc1", 4 );
break;
- case VLC_FOURCC('Y','V','1','2'):
+ case VLC_CODEC_YV12:
memcpy( fcc, "yv12", 4 );
break;
- case VLC_FOURCC('Y','U','Y','2'):
+ case VLC_CODEC_YUYV:
memcpy( fcc, "yuy2", 4 );
break;
/* add an ES Descriptor */
switch( p_stream->fmt.i_codec )
{
- case VLC_FOURCC('m','p','4','v'):
- case VLC_FOURCC('m','p','g','v'):
+ case VLC_CODEC_MP4V:
+ case VLC_CODEC_MPGV:
{
bo_t *esds = GetESDS( p_stream );
}
break;
- case VLC_FOURCC('H','2','6','3'):
+ case VLC_CODEC_H263:
{
bo_t *d263 = GetD263Tag();
}
break;
- case VLC_FOURCC('S','V','Q','3'):
+ case VLC_CODEC_SVQ3:
{
bo_t *esds = GetSVQ3Tag( p_stream );
}
break;
- case VLC_FOURCC('h','2','6','4'):
+ case VLC_CODEC_H264:
box_gather( vide, GetAvcCTag( p_stream ) );
break;
if( i_pts > 0 && i_dts > 0 &&
( i_pts != i_dts || ( p_fmt->i_cat == VIDEO_ES &&
- p_fmt->i_codec != VLC_FOURCC('m','p','g','v') ) ) )
+ p_fmt->i_codec != VLC_CODEC_MPGV ) ) )
{
i_pts_dts = 0x03;
if ( !i_header_size ) i_header_size = 0xa;
i_max_pes_size = PES_PAYLOAD_SIZE_MAX;
}
- if( p_fmt->i_codec == VLC_FOURCC( 'm', 'p','4', 'v' ) &&
+ if( p_fmt->i_codec == VLC_CODEC_MP4V &&
p_es->i_flags & BLOCK_FLAG_TYPE_I )
{
/* For MPEG4 video, add VOL before I-frames */
/* Init this new stream */
switch( p_input->p_fmt->i_codec )
{
- case VLC_FOURCC( 'm', 'p', '1', 'v' ):
- p_stream->i_stream_id =
- StreamIdGet( p_sys->stream_id_mpgv, 0xe0, 0xef );
- p_stream->i_stream_type = 0x01; /* ISO/IEC 11172 Video */
- break;
- case VLC_FOURCC( 'm', 'p', '2', 'v' ):
- case VLC_FOURCC( 'm', 'p', 'g', 'v' ):
+ case VLC_CODEC_MPGV:
p_stream->i_stream_id =
StreamIdGet( p_sys->stream_id_mpgv, 0xe0, 0xef );
p_stream->i_stream_type = 0x02; /* ISO/IEC 13818 Video */
break;
- case VLC_FOURCC( 'm', 'p', '4', 'v' ):
+ case VLC_CODEC_MP4V:
p_stream->i_stream_id =
StreamIdGet( p_sys->stream_id_mpgv, 0xe0, 0xef );
p_stream->i_stream_type = 0x10;
break;
- case VLC_FOURCC( 'h', '2', '6', '4' ):
+ case VLC_CODEC_H264:
p_stream->i_stream_id =
StreamIdGet( p_sys->stream_id_mpgv, 0xe0, 0xef );
p_stream->i_stream_type = 0x1b;
break;
- case VLC_FOURCC( 'l', 'p', 'c', 'm' ):
+ case VLC_CODEC_DVD_LPCM:
p_stream->i_stream_id =
0xbd00 | StreamIdGet( p_sys->stream_id_lpcm, 0xa0, 0xaf );
break;
- case VLC_FOURCC( 'd', 't', 's', ' ' ):
+ case VLC_CODEC_DTS:
p_stream->i_stream_id =
0xbd00 | StreamIdGet( p_sys->stream_id_dts, 0x88, 0x8f );
break;
- case VLC_FOURCC( 'a', '5', '2', ' ' ):
+ case VLC_CODEC_A52:
p_stream->i_stream_id =
0xbd00 | StreamIdGet( p_sys->stream_id_a52, 0x80, 0x87 );
break;
- case VLC_FOURCC( 'm', 'p', 'g', 'a' ):
+ case VLC_CODEC_MPGA:
p_stream->i_stream_id =
StreamIdGet( p_sys->stream_id_mpga, 0xc0, 0xcf );
p_stream->i_stream_type = 0x03; /* ISO/IEC 11172 Audio */
break;
- case VLC_FOURCC( 'm', 'p', '4', 'a' ):
+ case VLC_CODEC_MP4A:
p_stream->i_stream_id =
StreamIdGet( p_sys->stream_id_mpga, 0xc0, 0xcf );
p_stream->i_stream_type = 0x0f;
break;
- case VLC_FOURCC( 's', 'p', 'u', ' ' ):
+ case VLC_CODEC_SPU:
p_stream->i_stream_id =
0xbd00 | StreamIdGet( p_sys->stream_id_spu, 0x20, 0x3f );
break;
msg_Dbg( p_mux, "removing input" );
switch( p_input->p_fmt->i_codec )
{
- case VLC_FOURCC( 'm', 'p', 'g', 'v' ):
+ case VLC_CODEC_MPGV:
StreamIdRelease( p_sys->stream_id_mpgv, 0xe0,
p_stream->i_stream_id );
break;
- case VLC_FOURCC( 'l', 'p', 'c', 'm' ):
+ case VLC_CODEC_DVD_LPCM:
StreamIdRelease( p_sys->stream_id_lpcm, 0xa0,
p_stream->i_stream_id&0xff );
break;
- case VLC_FOURCC( 'd', 't', 's', ' ' ):
+ case VLC_CODEC_DTS:
StreamIdRelease( p_sys->stream_id_dts, 0x88,
p_stream->i_stream_id&0xff );
break;
- case VLC_FOURCC( 'a', '5', '2', ' ' ):
+ case VLC_CODEC_A52:
StreamIdRelease( p_sys->stream_id_a52, 0x80,
p_stream->i_stream_id&0xff );
break;
- case VLC_FOURCC( 'm', 'p', 'g', 'a' ):
+ case VLC_CODEC_MPGA:
StreamIdRelease( p_sys->stream_id_mpga, 0xc0,
p_stream->i_stream_id );
break;
- case VLC_FOURCC( 's', 'p', 'u', ' ' ):
+ case VLC_CODEC_SPU:
StreamIdRelease( p_sys->stream_id_spu, 0x20,
p_stream->i_stream_id&0xff );
break;
case VIDEO_ES:
switch( p_input->p_fmt->i_codec )
{
- case VLC_FOURCC( 'm', 'p','g', 'v' ):
+ case VLC_CODEC_MPGV:
/* TODO: do we need to check MPEG-I/II ? */
p_stream->i_stream_type = 0x02;
p_stream->i_stream_id = 0xe0;
break;
- case VLC_FOURCC( 'm', 'p','4', 'v' ):
+ case VLC_CODEC_MP4V:
p_stream->i_stream_type = 0x10;
p_stream->i_stream_id = 0xe0;
p_stream->i_es_id = p_stream->i_pid;
break;
- case VLC_FOURCC( 'h', '2','6', '4' ):
+ case VLC_CODEC_H264:
p_stream->i_stream_type = 0x1b;
p_stream->i_stream_id = 0xe0;
break;
/* XXX dirty dirty but somebody want that:
* using crapy MS-codec XXX */
/* I didn't want to do that :P */
- case VLC_FOURCC( 'H', '2', '6', '3' ):
- case VLC_FOURCC( 'I', '2', '6', '3' ):
- case VLC_FOURCC( 'W', 'M', 'V', '3' ):
- case VLC_FOURCC( 'W', 'M', 'V', '2' ):
- case VLC_FOURCC( 'W', 'M', 'V', '1' ):
- case VLC_FOURCC( 'D', 'I', 'V', '3' ):
- case VLC_FOURCC( 'D', 'I', 'V', '2' ):
- case VLC_FOURCC( 'D', 'I', 'V', '1' ):
- case VLC_FOURCC( 'M', 'J', 'P', 'G' ):
+ case VLC_CODEC_H263I:
+ case VLC_CODEC_H263:
+ case VLC_CODEC_WMV3:
+ case VLC_CODEC_WMV2:
+ case VLC_CODEC_WMV1:
+ case VLC_CODEC_DIV3:
+ case VLC_CODEC_DIV2:
+ case VLC_CODEC_DIV1:
+ case VLC_CODEC_MJPG:
p_stream->i_stream_type = 0xa0; /* private */
p_stream->i_stream_id = 0xa0; /* beurk */
p_stream->i_bih_codec = p_input->p_fmt->i_codec;
p_stream->i_bih_width = p_input->p_fmt->video.i_width;
p_stream->i_bih_height = p_input->p_fmt->video.i_height;
break;
- case VLC_FOURCC( 'd', 'r', 'a', 'c' ):
+ case VLC_CODEC_DIRAC:
/* stream_id makes use of stream_id_extension */
p_stream->i_stream_id = (PES_EXTENDED_STREAM_ID << 8) | 0x60;
p_stream->i_stream_type = 0xd1;
case AUDIO_ES:
switch( p_input->p_fmt->i_codec )
{
- case VLC_FOURCC( 'm', 'p','g', 'a' ):
- case VLC_FOURCC( 'm', 'p', '3', ' ' ):
+ case VLC_CODEC_MPGA:
p_stream->i_stream_type =
p_input->p_fmt->audio.i_rate >= 32000 ? 0x03 : 0x04;
p_stream->i_stream_id = 0xc0;
break;
- case VLC_FOURCC( 'a', '5','2', ' ' ):
+ case VLC_CODEC_A52:
p_stream->i_stream_type = 0x81;
p_stream->i_stream_id = 0xbd;
break;
- case VLC_FOURCC( 'l', 'p','c', 'm' ):
+ case VLC_CODEC_DVD_LPCM:
p_stream->i_stream_type = 0x83;
p_stream->i_stream_id = 0xbd;
break;
- case VLC_FOURCC( 'd', 't','s', ' ' ):
+ case VLC_CODEC_DTS:
p_stream->i_stream_type = 0x06;
p_stream->i_stream_id = 0xbd;
break;
- case VLC_FOURCC( 'm', 'p','4', 'a' ):
+ case VLC_CODEC_MP4A:
/* XXX: make that configurable in some way when LOAS
* is implemented for AAC in TS */
//p_stream->i_stream_type = 0x11; /* LOAS/LATM */
case SPU_ES:
switch( p_input->p_fmt->i_codec )
{
- case VLC_FOURCC( 's', 'p','u', ' ' ):
+ case VLC_CODEC_SPU:
p_stream->i_stream_type = 0x82;
p_stream->i_stream_id = 0xbd;
break;
- case VLC_FOURCC( 's', 'u','b', 't' ):
+ case VLC_CODEC_SUBT:
p_stream->i_stream_type = 0x12;
p_stream->i_stream_id = 0xfa;
p_sys->i_mpeg4_streams++;
p_stream->i_es_id = p_stream->i_pid;
break;
- case VLC_FOURCC('d','v','b','s'):
+ case VLC_CODEC_DVBS:
p_stream->i_stream_type = 0x06;
p_stream->i_es_id = p_input->p_fmt->subs.dvb.i_id;
p_stream->i_stream_id = 0xbd;
break;
- case VLC_FOURCC('t','e','l','x'):
+ case VLC_CODEC_TELETEXT:
p_stream->i_stream_type = 0x06;
p_stream->i_stream_id = 0xbd; /* FIXME */
break;
}
/* Create decoder specific info for subt */
- if( p_stream->i_codec == VLC_FOURCC( 's', 'u','b', 't' ) )
+ if( p_stream->i_codec == VLC_CODEC_SUBT )
{
uint8_t *p;
if( p_stream == p_pcr_stream || p_sys->b_data_alignment
|| p_input->p_fmt->i_codec !=
- VLC_FOURCC('m', 'p', 'g', 'a') )
+ VLC_CODEC_MPGA )
{
p_data = block_FifoGet( p_input->p_fifo );
if( p_input->p_fmt->i_codec ==
- VLC_FOURCC('m', 'p', '4', 'a' ) )
+ VLC_CODEC_MP4A )
p_data = Add_ADTS( p_data, p_input->p_fmt );
}
else
p_data->i_length = p_next->i_dts - p_data->i_dts;
}
else if( p_input->p_fmt->i_codec !=
- VLC_FOURCC('s', 'u', 'b', 't' ) )
+ VLC_CODEC_SUBT )
p_data->i_length = 1000;
if( ( p_pcr_stream->i_pes_dts > 0 &&
if( p_input->p_fmt->i_cat == SPU_ES )
{
if( p_input->p_fmt->i_codec ==
- VLC_FOURCC('s','u','b','t') )
+ VLC_CODEC_SUBT )
{
/* Prepend header */
p_data = block_Realloc( p_data, 2,
}
}
else if( p_input->p_fmt->i_codec ==
- VLC_FOURCC('t','e','l','x') )
+ VLC_CODEC_TELETEXT )
{
/* EN 300 472 */
i_header_size = 0x24;
b_data_alignment = 1;
}
else if( p_input->p_fmt->i_codec ==
- VLC_FOURCC('d','v','b','s') )
+ VLC_CODEC_DVBS )
{
/* EN 300 743 */
b_data_alignment = 1;
}
if( p_input->p_fmt->i_codec ==
- VLC_FOURCC('d','r','a','c') )
+ VLC_CODEC_DIRAC )
{
b_data_alignment = 1;
/* dirac pes packets should be unbounded in
bits_write( &bits, 6, 0x05 ); /* AudioStream */
}
else if( p_stream->i_stream_type == 0x12 &&
- p_stream->i_codec == VLC_FOURCC('s','u','b','t') )
+ p_stream->i_codec == VLC_CODEC_SUBT )
{
bits_write( &bits, 8, 0x0B ); /* Text Stream */
bits_write( &bits, 6, 0x04 ); /* VisualStream */
/* "registration" descriptor : "AC-3" */
dvbpsi_PMTESAddDescriptor( p_es, 0x05, 4, format );
}
- else if( p_stream->i_codec == VLC_FOURCC('d','r','a','c') )
+ else if( p_stream->i_codec == VLC_CODEC_DIRAC )
{
/* Dirac registration descriptor */
uint8_t data[4] = { 'd', 'r', 'a', 'c' };
dvbpsi_PMTESAddDescriptor( p_es, 0x05, 4, data );
}
- else if( p_stream->i_codec == VLC_FOURCC('d','t','s',' ') )
+ else if( p_stream->i_codec == VLC_CODEC_DTS )
{
/* DTS registration descriptor (ETSI TS 101 154 Annex F) */
uint8_t data[4] = { 0x44, 0x54, 0x53, 0x32 };
dvbpsi_PMTESAddDescriptor( p_es, 0x05, 4, data );
}
- else if( p_stream->i_codec == VLC_FOURCC('t','e','l','x') )
+ else if( p_stream->i_codec == VLC_CODEC_TELETEXT )
{
if( p_stream->i_decoder_specific_info )
{
}
continue;
}
- else if( p_stream->i_codec == VLC_FOURCC('d','v','b','s') )
+ else if( p_stream->i_codec == VLC_CODEC_DVBS )
{
/* DVB subtitles */
if( p_stream->i_decoder_specific_info )
}
msg_Dbg( p_mux, "adding input" );
- if( p_input->p_fmt->i_codec != VLC_FOURCC('M','J','P','G') &&
- p_input->p_fmt->i_codec != VLC_FOURCC('m','j','p','g') &&
- p_input->p_fmt->i_codec != VLC_FOURCC('j','p','e','g') &&
- p_input->p_fmt->i_codec != VLC_FOURCC('J','P','E','G') &&
- p_input->p_fmt->i_codec != VLC_FOURCC('J','F','I','F') &&
- p_input->p_fmt->i_codec != VLC_FOURCC('J','P','G','L') &&
- p_input->p_fmt->i_codec != VLC_FOURCC('m','j','p','a') )
- {
+ if( p_input->p_fmt->i_codec != VLC_CODEC_MJPG )
return VLC_EGENERIC;
- }
return VLC_SUCCESS;
}
switch( p_stream->i_fourcc )
{
- case VLC_FOURCC( 'm', 'p', 'g', 'v' ):
- case VLC_FOURCC( 'm', 'p', '4', 'v' ):
- case VLC_FOURCC( 'D', 'I', 'V', '3' ):
- case VLC_FOURCC( 'M', 'J', 'P', 'G' ):
- case VLC_FOURCC( 'W', 'M', 'V', '1' ):
- case VLC_FOURCC( 'W', 'M', 'V', '2' ):
- case VLC_FOURCC( 'W', 'M', 'V', '3' ):
- case VLC_FOURCC( 'S', 'N', 'O', 'W' ):
+ case VLC_CODEC_MP4V:
+ case VLC_CODEC_MPGV:
+ case VLC_CODEC_DIV3:
+ case VLC_CODEC_MJPG:
+ case VLC_CODEC_WMV1:
+ case VLC_CODEC_WMV2:
+ case VLC_CODEC_WMV3:
+ case VLC_CODEC_SNOW:
p_stream->p_oggds_header = calloc( 1, sizeof(oggds_header_t) );
if( !p_stream->p_oggds_header )
{
p_stream->p_oggds_header->i_packet_type = PACKET_TYPE_HEADER;
memcpy( p_stream->p_oggds_header->stream_type, "video", 5 );
- if( p_stream->i_fourcc == VLC_FOURCC( 'm', 'p', '4', 'v' ) )
+ if( p_stream->i_fourcc == VLC_CODEC_MP4V )
{
memcpy( p_stream->p_oggds_header->sub_type, "XVID", 4 );
}
- else if( p_stream->i_fourcc == VLC_FOURCC( 'D', 'I', 'V', '3' ) )
+ else if( p_stream->i_fourcc == VLC_CODEC_DIV3 )
{
memcpy( p_stream->p_oggds_header->sub_type, "DIV3", 4 );
}
msg_Dbg( p_mux, "%4.4s stream", (char *)&p_stream->i_fourcc );
break;
- case VLC_FOURCC( 'd', 'r', 'a', 'c' ):
+ case VLC_CODEC_DIRAC:
msg_Dbg( p_mux, "dirac stream" );
break;
- case VLC_FOURCC( 't', 'h', 'e', 'o' ):
+ case VLC_CODEC_THEORA:
msg_Dbg( p_mux, "theora stream" );
break;
case AUDIO_ES:
switch( p_stream->i_fourcc )
{
- case VLC_FOURCC( 'v', 'o', 'r', 'b' ):
+ case VLC_CODEC_VORBIS:
msg_Dbg( p_mux, "vorbis stream" );
break;
- case VLC_FOURCC( 's', 'p', 'x', ' ' ):
+ case VLC_CODEC_SPEEX:
msg_Dbg( p_mux, "speex stream" );
break;
- case VLC_FOURCC( 'f', 'l', 'a', 'c' ):
+ case VLC_CODEC_FLAC:
msg_Dbg( p_mux, "flac stream" );
break;
case SPU_ES:
switch( p_stream->i_fourcc )
{
- case VLC_FOURCC( 's', 'u','b', 't' ):
+ case VLC_CODEC_SUBT:
p_stream->p_oggds_header = calloc( 1, sizeof(oggds_header_t) );
if( !p_stream->p_oggds_header )
{
ogg_stream_init( &p_stream->os, p_stream->i_serial_no );
p_stream->i_packet_no = 0;
- if( p_stream->i_fourcc == VLC_FOURCC( 'v', 'o', 'r', 'b' ) ||
- p_stream->i_fourcc == VLC_FOURCC( 's', 'p', 'x', ' ' ) ||
- p_stream->i_fourcc == VLC_FOURCC( 't', 'h', 'e', 'o' ) )
+ if( p_stream->i_fourcc == VLC_CODEC_VORBIS ||
+ p_stream->i_fourcc == VLC_CODEC_SPEEX ||
+ p_stream->i_fourcc == VLC_CODEC_THEORA )
{
/* First packet in order: vorbis/speex/theora info */
p_extra = p_input->p_fmt->p_extra;
p_og = OggStreamFlush( p_mux, &p_stream->os, 0 );
/* Get keyframe_granule_shift for theora granulepos calculation */
- if( p_stream->i_fourcc == VLC_FOURCC( 't', 'h', 'e', 'o' ) )
+ if( p_stream->i_fourcc == VLC_CODEC_THEORA )
{
int i_keyframe_frequency_force =
1 << ((op.packet[40] << 6 >> 3) | (op.packet[41] >> 5));
}
}
}
- else if( p_stream->i_fourcc == VLC_FOURCC( 'd', 'r', 'a', 'c' ) )
+ else if( p_stream->i_fourcc == VLC_CODEC_DIRAC )
{
op.packet = p_input->p_fmt->p_extra;
op.bytes = p_input->p_fmt->i_extra;
ogg_stream_packetin( &p_stream->os, &op );
p_og = OggStreamFlush( p_mux, &p_stream->os, 0 );
}
- else if( p_stream->i_fourcc == VLC_FOURCC( 'f', 'l', 'a', 'c' ) )
+ else if( p_stream->i_fourcc == VLC_CODEC_FLAC )
{
/* flac stream marker (yeah, only that in the 1st packet) */
op.packet = (unsigned char *)"fLaC";
sout_input_t *p_input = p_mux->pp_inputs[i];
ogg_stream_t *p_stream = (ogg_stream_t*)p_input->p_sys;
- if( p_stream->i_fourcc == VLC_FOURCC( 'v', 'o', 'r', 'b' ) ||
- p_stream->i_fourcc == VLC_FOURCC( 's', 'p', 'x', ' ' ) ||
- p_stream->i_fourcc == VLC_FOURCC( 't', 'h', 'e', 'o' ) )
+ if( p_stream->i_fourcc == VLC_CODEC_VORBIS ||
+ p_stream->i_fourcc == VLC_CODEC_SPEEX ||
+ p_stream->i_fourcc == VLC_CODEC_THEORA )
{
/* Special case, headers are already there in the incoming stream.
* We need to gather them an mark them as headers. */
int j = 2;
- if( p_stream->i_fourcc == VLC_FOURCC( 's', 'p', 'x', ' ' ) ) j = 1;
+ if( p_stream->i_fourcc == VLC_CODEC_SPEEX ) j = 1;
p_extra = p_input->p_fmt->p_extra;
i_extra = p_input->p_fmt->i_extra;
block_ChainAppend( &p_hdr, p_og );
}
}
- else if( p_stream->i_fourcc != VLC_FOURCC( 'f', 'l', 'a', 'c' ) &&
- p_stream->i_fourcc != VLC_FOURCC( 'd', 'r', 'a', 'c' ) )
+ else if( p_stream->i_fourcc != VLC_CODEC_FLAC &&
+ p_stream->i_fourcc != VLC_CODEC_DIRAC )
{
uint8_t com[128];
int i_com;
}
/* Special case for mp4v and flac */
- if( ( p_stream->i_fourcc == VLC_FOURCC( 'm', 'p', '4', 'v' ) ||
- p_stream->i_fourcc == VLC_FOURCC( 'f', 'l', 'a', 'c' ) ) &&
+ if( ( p_stream->i_fourcc == VLC_CODEC_MP4V ||
+ p_stream->i_fourcc == VLC_CODEC_FLAC ) &&
p_input->p_fmt->i_extra )
{
/* Send a packet with the VOL data for mp4v
msg_Dbg( p_mux, "writing extra data" );
op.bytes = p_input->p_fmt->i_extra;
op.packet = p_input->p_fmt->p_extra;
- if( p_stream->i_fourcc == VLC_FOURCC( 'f', 'l', 'a', 'c' ) )
+ if( p_stream->i_fourcc == VLC_CODEC_FLAC )
{
/* Skip the flac stream marker */
op.bytes -= 4;
block_t *p_og = NULL;
ogg_packet op;
- if( p_stream->i_fourcc != VLC_FOURCC( 'v', 'o', 'r', 'b' ) &&
- p_stream->i_fourcc != VLC_FOURCC( 'f', 'l', 'a', 'c' ) &&
- p_stream->i_fourcc != VLC_FOURCC( 's', 'p', 'x', ' ' ) &&
- p_stream->i_fourcc != VLC_FOURCC( 't', 'h', 'e', 'o' ) &&
- p_stream->i_fourcc != VLC_FOURCC( 'd', 'r', 'a', 'c' ) )
+ if( p_stream->i_fourcc != VLC_CODEC_VORBIS &&
+ p_stream->i_fourcc != VLC_CODEC_FLAC &&
+ p_stream->i_fourcc != VLC_CODEC_SPEEX &&
+ p_stream->i_fourcc != VLC_CODEC_THEORA &&
+ p_stream->i_fourcc != VLC_CODEC_DIRAC )
{
p_data = block_Realloc( p_data, 1, p_data->i_buffer );
p_data->p_buffer[0] = PACKET_IS_SYNCPOINT; // FIXME
if( p_stream->i_cat == AUDIO_ES )
{
- if( p_stream->i_fourcc == VLC_FOURCC( 'v', 'o', 'r', 'b' ) ||
- p_stream->i_fourcc == VLC_FOURCC( 'f', 'l', 'a', 'c' ) ||
- p_stream->i_fourcc == VLC_FOURCC( 's', 'p', 'x', ' ' ) )
+ if( p_stream->i_fourcc == VLC_CODEC_VORBIS ||
+ p_stream->i_fourcc == VLC_CODEC_FLAC ||
+ p_stream->i_fourcc == VLC_CODEC_SPEEX )
{
/* number of sample from begining + current packet */
op.granulepos =
}
else if( p_stream->i_cat == VIDEO_ES )
{
- if( p_stream->i_fourcc == VLC_FOURCC( 't', 'h', 'e', 'o' ) )
+ if( p_stream->i_fourcc == VLC_CODEC_THEORA )
{
/* FIXME, we assume only keyframes */
op.granulepos = ( ( p_data->i_dts - p_sys->i_start_dts ) *
p_input->p_fmt->video.i_frame_rate_base /
INT64_C(1000000) ) << p_stream->i_keyframe_granule_shift;
}
- else if( p_stream->i_fourcc == VLC_FOURCC( 'd', 'r', 'a', 'c' ) )
+ else if( p_stream->i_fourcc == VLC_CODEC_DIRAC )
{
mtime_t dt = (p_data->i_dts - p_sys->i_start_dts + 1)
* p_input->p_fmt->video.i_frame_rate *2
ogg_stream_packetin( &p_stream->os, &op );
if( p_stream->i_cat == SPU_ES ||
- p_stream->i_fourcc == VLC_FOURCC( 's', 'p', 'x', ' ' ) ||
- p_stream->i_fourcc == VLC_FOURCC( 'd', 'r', 'a', 'c' ) )
+ p_stream->i_fourcc == VLC_CODEC_SPEEX ||
+ p_stream->i_fourcc == VLC_CODEC_DIRAC )
{
/* Subtitles or Speex packets are quite small so they
* need to be flushed to be sent on time */
p_sys->i_channel_mask, (int)p_sys->b_chan_reorder );
}
- i_format = p_input->p_fmt->i_codec == VLC_FOURCC('f', 'l', '3', '2') ?
+ i_format = p_input->p_fmt->i_codec == VLC_CODEC_FL32 ?
WAVE_FORMAT_IEEE_FLOAT : WAVE_FORMAT_PCM;
b_ext = p_sys->b_ext = p_input->p_fmt->audio.i_channels > 2;
/* Create the output format */
es_format_Copy( &p_dec->fmt_out, &p_dec->fmt_in );
- /* Fix the value of the fourcc */
- switch( p_dec->fmt_in.i_codec )
+ /* Fix the value of the fourcc for audio */
+ if( p_dec->fmt_in.i_cat == AUDIO_ES )
{
- /* video */
- case VLC_FOURCC( 'm', '4', 's', '2'):
- case VLC_FOURCC( 'M', '4', 'S', '2'):
- case VLC_FOURCC( 'm', 'p', '4', 's'):
- case VLC_FOURCC( 'M', 'P', '4', 'S'):
- case VLC_FOURCC( 'D', 'I', 'V', 'X'):
- case VLC_FOURCC( 'd', 'i', 'v', 'x'):
- case VLC_FOURCC( 'X', 'V', 'I', 'D'):
- case VLC_FOURCC( 'X', 'v', 'i', 'D'):
- case VLC_FOURCC( 'x', 'v', 'i', 'd'):
- case VLC_FOURCC( 'D', 'X', '5', '0'):
- case VLC_FOURCC( 0x04, 0, 0, 0):
- case VLC_FOURCC( '3', 'I', 'V', '2'):
- p_dec->fmt_out.i_codec = VLC_FOURCC( 'm', 'p', '4', 'v');
- break;
-
- case VLC_FOURCC( 'm', 'p', 'g', '1' ):
- case VLC_FOURCC( 'm', 'p', 'g', '2' ):
- case VLC_FOURCC( 'm', 'p', '1', 'v' ):
- case VLC_FOURCC( 'm', 'p', '2', 'v' ):
- p_dec->fmt_out.i_codec = VLC_FOURCC( 'm', 'p', 'g', 'v' );
- break;
-
- case VLC_FOURCC( 'd', 'i', 'v', '1' ):
- case VLC_FOURCC( 'M', 'P', 'G', '4' ):
- case VLC_FOURCC( 'm', 'p', 'g', '4' ):
- p_dec->fmt_out.i_codec = VLC_FOURCC( 'D', 'I', 'V', '1' );
- break;
-
- case VLC_FOURCC( 'd', 'i', 'v', '2' ):
- case VLC_FOURCC( 'M', 'P', '4', '2' ):
- case VLC_FOURCC( 'm', 'p', '4', '2' ):
- p_dec->fmt_out.i_codec = VLC_FOURCC( 'D', 'I', 'V', '2' );
- break;
-
- case VLC_FOURCC( 'd', 'i', 'v', '3' ):
- case VLC_FOURCC( 'd', 'i', 'v', '4' ):
- case VLC_FOURCC( 'D', 'I', 'V', '4' ):
- case VLC_FOURCC( 'd', 'i', 'v', '5' ):
- case VLC_FOURCC( 'D', 'I', 'V', '5' ):
- case VLC_FOURCC( 'd', 'i', 'v', '6' ):
- case VLC_FOURCC( 'D', 'I', 'V', '6' ):
- case VLC_FOURCC( 'M', 'P', '4', '3' ):
- case VLC_FOURCC( 'm', 'p', '4', '3' ):
- case VLC_FOURCC( 'm', 'p', 'g', '3' ):
- case VLC_FOURCC( 'M', 'P', 'G', '3' ):
- case VLC_FOURCC( 'A', 'P', '4', '1' ):
- p_dec->fmt_out.i_codec = VLC_FOURCC( 'D', 'I', 'V', '3' );
- break;
-
- case VLC_FOURCC( 'h', '2', '6', '3' ):
- case VLC_FOURCC( 'U', '2', '6', '3' ):
- case VLC_FOURCC( 'u', '2', '6', '3' ):
- p_dec->fmt_out.i_codec = VLC_FOURCC( 'H', '2', '6', '3' );
- break;
-
- case VLC_FOURCC( 'i', '2', '6', '3' ):
- p_dec->fmt_out.i_codec = VLC_FOURCC( 'I', '2', '6', '3' );
- break;
-
- case VLC_FOURCC( 'm', 'j', 'p', 'g' ):
- case VLC_FOURCC( 'm', 'j', 'p', 'a' ):
- case VLC_FOURCC( 'j', 'p', 'e', 'g' ):
- case VLC_FOURCC( 'J', 'P', 'E', 'G' ):
- case VLC_FOURCC( 'J', 'F', 'I', 'F' ):
- p_dec->fmt_out.i_codec = VLC_FOURCC( 'M', 'J', 'P', 'G' );
- break;
-
- case VLC_FOURCC( 'd', 'v', 's', 'd' ):
- case VLC_FOURCC( 'D', 'V', 'S', 'D' ):
- case VLC_FOURCC( 'd', 'v', 'h', 'd' ):
- p_dec->fmt_out.i_codec = VLC_FOURCC( 'd', 'v', 's', 'l' );
- break;
-
- /* audio */
- case VLC_FOURCC( 'a', 'r', 'a', 'w' ):
- switch( ( p_dec->fmt_in.audio.i_bitspersample + 7 ) / 8 )
- {
- case 1:
- p_dec->fmt_out.i_codec = VLC_FOURCC('u','8',' ',' ');
- break;
- case 2:
- p_dec->fmt_out.i_codec = VLC_FOURCC('s','1','6','l');
- break;
- case 3:
- p_dec->fmt_out.i_codec = VLC_FOURCC('s','2','4','l');
- break;
- case 4:
- p_dec->fmt_out.i_codec = VLC_FOURCC('s','3','2','l');
- break;
- default:
- msg_Err( p_dec, "unknown raw audio sample size" );
- return VLC_EGENERIC;
- }
- break;
-
- case VLC_FOURCC( 't', 'w', 'o', 's' ):
- switch( ( p_dec->fmt_in.audio.i_bitspersample + 7 ) / 8 )
- {
- case 1:
- p_dec->fmt_out.i_codec = VLC_FOURCC('s','8',' ',' ');
- break;
- case 2:
- p_dec->fmt_out.i_codec = VLC_FOURCC('s','1','6','b');
- break;
- case 3:
- p_dec->fmt_out.i_codec = VLC_FOURCC('s','2','4','b');
- break;
- case 4:
- p_dec->fmt_out.i_codec = VLC_FOURCC('s','3','2','b');
- break;
- default:
- msg_Err( p_dec, "unknown raw audio sample size" );
- return VLC_EGENERIC;
- }
- break;
-
- case VLC_FOURCC( 's', 'o', 'w', 't' ):
- switch( ( p_dec->fmt_in.audio.i_bitspersample + 7 ) / 8 )
- {
- case 1:
- p_dec->fmt_out.i_codec = VLC_FOURCC('s','8',' ',' ');
- break;
- case 2:
- p_dec->fmt_out.i_codec = VLC_FOURCC('s','1','6','l');
- break;
- case 3:
- p_dec->fmt_out.i_codec = VLC_FOURCC('s','2','4','l');
- break;
- case 4:
- p_dec->fmt_out.i_codec = VLC_FOURCC('s','3','2','l');
- break;
- default:
- msg_Err( p_dec, "unknown raw audio sample size" );
- return VLC_EGENERIC;
- }
- break;
+ p_dec->fmt_out.i_codec = vlc_fourcc_GetCodecAudio( p_dec->fmt_in.i_codec,
+ p_dec->fmt_in.audio.i_bitspersample );
+ if( !p_dec->fmt_out.i_codec )
+ {
+ msg_Err( p_dec, "unknown raw audio sample size" );
+ return VLC_EGENERIC;
+ }
}
- p_dec->p_sys = p_sys = malloc( sizeof( block_t ) );
+ p_dec->p_sys = p_sys = malloc( sizeof(*p_sys) );
p_sys->p_block = NULL;
return VLC_SUCCESS;
decoder_t *p_dec = (decoder_t*)p_this;
decoder_sys_t *p_sys;
- if( p_dec->fmt_in.i_codec != VLC_FOURCC( 'd','r','a','c' ) )
+ if( p_dec->fmt_in.i_codec != VLC_CODEC_DIRAC )
return VLC_EGENERIC;
p_dec->pf_packetize = Packetize;
decoder_sys_t *p_sys;
int i;
- if( p_dec->fmt_in.i_codec != VLC_FOURCC( 'h', '2', '6', '4') &&
- p_dec->fmt_in.i_codec != VLC_FOURCC( 'H', '2', '6', '4') &&
- p_dec->fmt_in.i_codec != VLC_FOURCC( 'V', 'S', 'S', 'H') &&
- p_dec->fmt_in.i_codec != VLC_FOURCC( 'v', 's', 's', 'h') &&
- p_dec->fmt_in.i_codec != VLC_FOURCC( 'D', 'A', 'V', 'C') &&
- p_dec->fmt_in.i_codec != VLC_FOURCC( 'x', '2', '6', '4') &&
- p_dec->fmt_in.i_codec != VLC_FOURCC( 'X', '2', '6', '4') &&
- ( p_dec->fmt_in.i_codec != VLC_FOURCC( 'a', 'v', 'c', '1') ||
- p_dec->fmt_in.i_extra < 7 ) )
- {
+ if( p_dec->fmt_in.i_codec != VLC_CODEC_H264 )
+ return VLC_EGENERIC;
+ if( p_dec->fmt_in.i_original_fourcc == VLC_FOURCC( 'a', 'v', 'c', '1') &&
+ p_dec->fmt_in.i_extra < 7 )
return VLC_EGENERIC;
- }
/* Allocate the memory needed to store the decoder's structure */
if( ( p_dec->p_sys = p_sys = malloc( sizeof(decoder_sys_t) ) ) == NULL )
/* Setup properties */
es_format_Copy( &p_dec->fmt_out, &p_dec->fmt_in );
- p_dec->fmt_out.i_codec = VLC_FOURCC( 'h', '2', '6', '4' );
+ p_dec->fmt_out.i_codec = VLC_CODEC_H264;
- if( p_dec->fmt_in.i_codec == VLC_FOURCC( 'a', 'v', 'c', '1' ) )
+ if( p_dec->fmt_in.i_original_fourcc == VLC_FOURCC( 'a', 'v', 'c', '1' ) )
{
/* This type of stream is produced by mp4 and matroska
* when we want to store it in another streamformat, you need to convert
decoder_t *p_dec = (decoder_t*)p_this;
decoder_sys_t *p_sys;
- if( p_dec->fmt_in.i_codec != VLC_FOURCC('m','l','p',' ') )
+ if( p_dec->fmt_in.i_codec != VLC_CODEC_MLP )
return VLC_EGENERIC;
/* */
/* Set output properties */
p_dec->fmt_out.i_cat = AUDIO_ES;
- p_dec->fmt_out.i_codec = VLC_FOURCC('m','l','p',' ');
+ p_dec->fmt_out.i_codec = VLC_CODEC_MLP;
p_dec->fmt_out.audio.i_rate = 0;
/* Set callback */
decoder_t *p_dec = (decoder_t*)p_this;
decoder_sys_t *p_sys;
- if( p_dec->fmt_in.i_codec != VLC_FOURCC( 'm', 'p', '4', 'a' ) )
+ if( p_dec->fmt_in.i_codec != VLC_CODEC_MP4A )
{
return VLC_EGENERIC;
}
/* Set output properties */
p_dec->fmt_out.i_cat = AUDIO_ES;
- p_dec->fmt_out.i_codec = VLC_FOURCC('m','p','4','a');
+ p_dec->fmt_out.i_codec = VLC_CODEC_MP4A;
msg_Dbg( p_dec, "running MPEG4 audio packetizer" );
decoder_t *p_dec = (decoder_t*)p_this;
decoder_sys_t *p_sys;
- switch( p_dec->fmt_in.i_codec )
- {
- case VLC_FOURCC( 'm', '4', 's', '2'):
- case VLC_FOURCC( 'M', '4', 'S', '2'):
- case VLC_FOURCC( 'm', 'p', '4', 's'):
- case VLC_FOURCC( 'M', 'P', '4', 'S'):
- case VLC_FOURCC( 'm', 'p', '4', 'v'):
- case VLC_FOURCC( 'M', 'P', '4', 'V'):
- case VLC_FOURCC( 'D', 'I', 'V', 'X'):
- case VLC_FOURCC( 'd', 'i', 'v', 'x'):
- case VLC_FOURCC( 'X', 'V', 'I', 'D'):
- case VLC_FOURCC( 'X', 'v', 'i', 'D'):
- case VLC_FOURCC( 'x', 'v', 'i', 'd'):
- case VLC_FOURCC( 'D', 'X', '5', '0'):
- case VLC_FOURCC( 'd', 'x', '5', '0'):
- case VLC_FOURCC( 0x04, 0, 0, 0):
- case VLC_FOURCC( '3', 'I', 'V', '2'):
- case VLC_FOURCC( 'm', '4', 'c', 'c'):
- case VLC_FOURCC( 'M', '4', 'C', 'C'):
- break;
-
- default:
- return VLC_EGENERIC;
- }
+ if( p_dec->fmt_in.i_codec != VLC_CODEC_MP4V )
+ return VLC_EGENERIC;
/* Allocate the memory needed to store the decoder's structure */
if( ( p_dec->p_sys = p_sys = malloc( sizeof(decoder_sys_t) ) ) == NULL )
/* Setup properties */
es_format_Copy( &p_dec->fmt_out, &p_dec->fmt_in );
- p_dec->fmt_out.i_codec = VLC_FOURCC( 'm', 'p', '4', 'v' );
+ p_dec->fmt_out.i_codec = VLC_CODEC_MP4V;
if( p_dec->fmt_in.i_extra )
{
decoder_t *p_dec = (decoder_t*)p_this;
decoder_sys_t *p_sys;
- if( p_dec->fmt_in.i_codec != VLC_FOURCC( 'm', 'p', 'g', '1' ) &&
- p_dec->fmt_in.i_codec != VLC_FOURCC( 'm', 'p', 'g', '2' ) &&
- p_dec->fmt_in.i_codec != VLC_FOURCC( 'm', 'p', 'g', 'v' ) )
- {
+ if( p_dec->fmt_in.i_codec != VLC_CODEC_MPGV )
return VLC_EGENERIC;
- }
- es_format_Init( &p_dec->fmt_out, VIDEO_ES, VLC_FOURCC('m','p','g','v') );
+ es_format_Init( &p_dec->fmt_out, VIDEO_ES, VLC_CODEC_MPGV );
+ p_dec->fmt_out.i_original_fourcc = p_dec->fmt_in.i_original_fourcc;
+
p_dec->pf_packetize = Packetize;
p_dec->pf_get_cc = GetCc;
decoder_t *p_dec = (decoder_t*)p_this;
decoder_sys_t *p_sys;
- if( p_dec->fmt_in.i_codec != VLC_FOURCC( 'W', 'V', 'C', '1' ) )
+ if( p_dec->fmt_in.i_codec != VLC_CODEC_VC1 )
return VLC_EGENERIC;
p_dec->pf_packetize = Packetize;
filter_chain_t *p_vf2;
};
-#define PICTURE_RING_SIZE 4
struct decoder_owner_sys_t
{
- picture_t *pp_pics[PICTURE_RING_SIZE];
-
/* Current format in use by the output */
video_format_t video;
};
-typedef void (* pf_release_t)( picture_t * );
-static void ReleasePicture( picture_t *p_pic )
-{
- assert( p_pic );
-
-
- if( p_pic->p_sys )
- {
- pf_release_t pf_release = (pf_release_t)p_pic->p_sys;
- p_pic->p_sys = NULL;
- pf_release( p_pic );
- }
- else
- {
- if( --p_pic->i_refcount == 0 )
- {
- free( p_pic->p_q );
- free( p_pic->p_data_orig );
- free( p_pic );
- }
- }
-}
-
/*****************************************************************************
* Local prototypes
*****************************************************************************/
inline static void video_del_buffer_decoder( decoder_t *, picture_t * );
inline static void video_del_buffer_filter( filter_t *, picture_t * );
-static void video_del_buffer( picture_t * );
inline static picture_t *video_new_buffer_decoder( decoder_t * );
inline static picture_t *video_new_buffer_filter( filter_t * );
static picture_t *video_new_buffer( vlc_object_t *, decoder_owner_sys_t *,
- es_format_t *, void (*)( picture_t * ) );
+ es_format_t * );
static void video_link_picture_decoder( decoder_t *, picture_t * );
static void video_unlink_picture_decoder( decoder_t *, picture_t * );
return NULL;
}
- for( i = 0; i < PICTURE_RING_SIZE; i++ )
- p_sys->p_decoder->p_owner->pp_pics[i] = NULL;
p_sys->p_decoder->p_owner->video = p_fmt->video;
//p_sys->p_decoder->p_cfg = p_sys->p_video_cfg;
vlc_object_detach( p_sys->p_decoder );
vlc_object_release( p_sys->p_decoder );
- picture_t **pp_ring = p_owner->pp_pics;
- for( i = 0; i < PICTURE_RING_SIZE; i++ )
- {
- if ( pp_ring[i] != NULL )
- {
- free( pp_ring[i]->p_data_orig );
- free( pp_ring[i]->p_sys );
- free( pp_ring[i] );
- }
- }
free( p_owner );
}
while ( p_es->p_picture )
{
picture_t *p_next = p_es->p_picture->p_next;
- p_es->p_picture->pf_release( p_es->p_picture );
+ picture_Release( p_es->p_picture );
p_es->p_picture = p_next;
}
if( p_sys->i_chroma )
fmt_out.i_chroma = p_sys->i_chroma;
else
- fmt_out.i_chroma = VLC_FOURCC('I','4','2','0');
+ fmt_out.i_chroma = VLC_CODEC_I420;
if ( !p_sys->i_height )
{
p_new_pic = image_Convert( p_sys->p_image,
p_pic, &fmt_in, &fmt_out );
- if ( p_new_pic == NULL )
+ if( p_new_pic == NULL )
{
msg_Err( p_stream, "image conversion failed" );
picture_Release( p_pic );
{
/* TODO: chroma conversion if needed */
- p_new_pic = (picture_t*)malloc( sizeof(picture_t) );
- if( p_new_pic == NULL )
- {
- msg_Err( p_stream, "image conversion failed" );
- continue;
- }
-
- if( vout_AllocatePicture(
- p_stream, p_new_pic, p_pic->format.i_chroma,
- p_pic->format.i_width, p_pic->format.i_height,
- p_sys->p_decoder->fmt_out.video.i_aspect )
- != VLC_SUCCESS )
+ p_new_pic = picture_New( p_pic->format.i_chroma,
+ p_pic->format.i_width, p_pic->format.i_height,
+ p_sys->p_decoder->fmt_out.video.i_aspect );
+ if( !p_new_pic )
{
picture_Release( p_pic );
- free( p_new_pic );
msg_Err( p_stream, "image allocation failed" );
continue;
}
picture_Copy( p_new_pic, p_pic );
}
-
- p_new_pic->i_refcount = 1;
- p_new_pic->i_status = DESTROYED_PICTURE;
- p_new_pic->i_type = DIRECT_PICTURE;
- p_new_pic->p_sys = (picture_sys_t *)p_new_pic->pf_release;
- p_new_pic->pf_release = ReleasePicture;
- p_new_pic->date = p_pic->date;
picture_Release( p_pic );
if( p_sys->p_vf2 )
return VLC_SUCCESS;
}
-struct picture_sys_t
-{
- vlc_object_t *p_owner;
- bool b_dead;
-};
-
-static void video_release_buffer_decoder( picture_t *p_pic )
-{
- assert( p_pic && p_pic->p_sys );
-
- if( --p_pic->i_refcount > 0 )
- return;
-
- video_del_buffer_decoder( (decoder_t *)p_pic->p_sys->p_owner, p_pic );
-}
-
-static void video_release_buffer_filter( picture_t *p_pic )
-{
- assert( p_pic );
-
- if( --p_pic->i_refcount > 0 )
- return;
-
- assert( p_pic->p_sys );
-
- video_del_buffer_filter( (filter_t *)p_pic->p_sys->p_owner, p_pic );
-}
-
inline static picture_t *video_new_buffer_decoder( decoder_t *p_dec )
{
return video_new_buffer( VLC_OBJECT( p_dec ),
(decoder_owner_sys_t *)p_dec->p_owner,
- &p_dec->fmt_out,
- video_release_buffer_decoder );
+ &p_dec->fmt_out );
}
inline static picture_t *video_new_buffer_filter( filter_t *p_filter )
{
return video_new_buffer( VLC_OBJECT( p_filter ),
(decoder_owner_sys_t *)p_filter->p_owner,
- &p_filter->fmt_out,
- video_release_buffer_filter );
+ &p_filter->fmt_out );
}
static picture_t *video_new_buffer( vlc_object_t *p_this,
decoder_owner_sys_t *p_sys,
- es_format_t *fmt_out,
- void ( *pf_release )( picture_t * ) )
+ es_format_t *fmt_out )
{
- picture_t **pp_ring = p_sys->pp_pics;
- picture_t *p_pic;
- int i;
-
if( fmt_out->video.i_width != p_sys->video.i_width ||
fmt_out->video.i_height != p_sys->video.i_height ||
fmt_out->video.i_chroma != p_sys->video.i_chroma ||
fmt_out->video.i_chroma = fmt_out->i_codec;
p_sys->video = fmt_out->video;
-
- for( i = 0; i < PICTURE_RING_SIZE; i++ )
- {
- if ( pp_ring[i] != NULL )
- {
- if ( pp_ring[i]->i_status == DESTROYED_PICTURE )
- {
- free( pp_ring[i]->p_data_orig );
- free( pp_ring[i]->p_sys );
- free( pp_ring[i] );
- }
- else
- {
- pp_ring[i]->p_sys->b_dead = true;
- }
- pp_ring[i] = NULL;
- }
- }
}
- /* Find an empty space in the picture ring buffer */
- for( i = 0; i < PICTURE_RING_SIZE; i++ )
- {
- if( pp_ring[i] != NULL && pp_ring[i]->i_status == DESTROYED_PICTURE )
- {
- pp_ring[i]->i_status = RESERVED_PICTURE;
- pp_ring[i]->i_refcount = 1;
- return pp_ring[i];
- }
- }
- for( i = 0; i < PICTURE_RING_SIZE; i++ )
- {
- if( pp_ring[i] == NULL ) break;
- }
-
- if( i == PICTURE_RING_SIZE )
- {
- msg_Err( p_this, "decoder/filter is leaking pictures, "
- "resetting its ring buffer" );
-
- for( i = 0; i < PICTURE_RING_SIZE; i++ )
- {
- pp_ring[i]->p_sys->b_dead = true;
- pp_ring[i]->pf_release( pp_ring[i] );
- pp_ring[i] = NULL;
- }
-
- i = 0;
- }
-
- p_pic = malloc( sizeof(picture_t) );
- if( !p_pic ) return NULL;
+ /* */
fmt_out->video.i_chroma = fmt_out->i_codec;
- if( vout_AllocatePicture( p_this, p_pic,
- fmt_out->video.i_chroma,
- fmt_out->video.i_width,
- fmt_out->video.i_height,
- fmt_out->video.i_aspect ) != VLC_SUCCESS )
- {
- free( p_pic );
- return NULL;
- }
-
- if( !p_pic->i_planes )
- {
- free( p_pic );
- return NULL;
- }
-
- p_pic->pf_release = pf_release;
- p_pic->i_refcount = 1;
- p_pic->p_sys = malloc( sizeof(picture_sys_t) );
- p_pic->p_sys->p_owner = p_this;
- p_pic->p_sys->b_dead = false;
- p_pic->i_status = RESERVED_PICTURE;
- pp_ring[i] = p_pic;
-
- return p_pic;
+ return picture_New( fmt_out->video.i_chroma,
+ fmt_out->video.i_width,
+ fmt_out->video.i_height,
+ fmt_out->video.i_aspect );
}
inline static void video_del_buffer_decoder( decoder_t *p_this,
picture_t *p_pic )
{
VLC_UNUSED(p_this);
- video_del_buffer( p_pic );
+ picture_Release( p_pic );
}
inline static void video_del_buffer_filter( filter_t *p_this,
picture_t *p_pic )
{
VLC_UNUSED(p_this);
- video_del_buffer( p_pic );
-}
-
-static void video_del_buffer( picture_t *p_pic )
-{
- p_pic->i_refcount = 0;
- p_pic->i_status = DESTROYED_PICTURE;
- if ( p_pic->p_sys->b_dead )
- {
- free( p_pic->p_data_orig );
- free( p_pic->p_sys );
- free( p_pic );
- }
+ picture_Release( p_pic );
}
static void video_link_picture_decoder( decoder_t *p_dec, picture_t *p_pic )
{
VLC_UNUSED(p_dec);
- p_pic->i_refcount++;
+ picture_Hold( p_pic );
}
static void video_unlink_picture_decoder( decoder_t *p_dec, picture_t *p_pic )
{
VLC_UNUSED(p_dec);
- video_release_buffer_decoder( p_pic );
+ picture_Release( p_pic );
}
switch ( id->fmt.i_cat )
{
case AUDIO_ES:
- if ( id->fmt.i_codec == VLC_FOURCC('a', 'l', 'a', 'c') )
+ if ( id->fmt.i_codec == VLC_CODEC_ALAC )
{
if ( p_sys->p_audio_stream )
{
* Do not do non native and non standard association !
* Muxer will be probe if no entry found */
static const muxer_properties_t p_muxers[] = {
- M( "raw", "mp3", 1, VLC_FOURCC('m','p','g','a') ),
- M( "raw", "a52", 1, VLC_FOURCC('a','5','2',' ') ),
- M( "raw", "dts", 1, VLC_FOURCC('d','t','s',' ') ),
- M( "raw", "mpc", 1, VLC_FOURCC('m','p','c',' ') ),
- M( "raw", "ape", 1, VLC_FOURCC('A','P','E',' ') ),
-
- M( "wav", "wav", 1, VLC_FOURCC('a','r','a','w'), VLC_FOURCC('u','8',' ',' '), VLC_FOURCC('s','1','6','l'),
- VLC_FOURCC('s','2','4','l'), VLC_FOURCC('s','3','2','l'), VLC_FOURCC('f','l','3','2') ),
-
- //M( "ffmpeg{mux=flac}", "flac", 1, VLC_FOURCC('f','l','a','c') ), BROKEN
-
- M( "ogg", "ogg", INT_MAX, VLC_FOURCC('v','o','r','b'), VLC_FOURCC('s','p','x',' '), VLC_FOURCC('f','l','a','c'),
- VLC_FOURCC('s','u','b','t'), VLC_FOURCC('t','h','e','o'), VLC_FOURCC('d','r','a','c') ),
-
- M( "asf", "asf", 127, VLC_FOURCC('w','m','a','1'), VLC_FOURCC('w','m','a','2'), VLC_FOURCC('w','m','a',' '),
- VLC_FOURCC('w','m','a','p'), VLC_FOURCC('w','m','a','l'),
- VLC_FOURCC('W','M','V','1'), VLC_FOURCC('W','M','V','2'), VLC_FOURCC('W','M','V','3'),
- VLC_FOURCC('W','V','C','1')),
-
- M( "mp4", "mp4", INT_MAX, VLC_FOURCC('m','p','4','a'), VLC_FOURCC('h','2','6','4'), VLC_FOURCC('m','p','4','v'),
- VLC_FOURCC('s','u','b','t') ),
-
- M( "ps", "mpg", 16/* FIXME*/,VLC_FOURCC('m','p','g','v'), VLC_FOURCC('m','p','1','v'), VLC_FOURCC('m','p','2','v'),
- VLC_FOURCC('m','p','g','a'), VLC_FOURCC('l','p','c','m'), VLC_FOURCC('a','5','2',' '),
- VLC_FOURCC('d','t','s',' '),
- VLC_FOURCC('s','p','u',' ') ),
-
- M( "ts", "ts", 8000, VLC_FOURCC('m','p','g','v'), VLC_FOURCC('m','p','1','v'), VLC_FOURCC('m','p','2','v'),
- VLC_FOURCC('h','2','6','4'),
- VLC_FOURCC('m','p','g','a'), VLC_FOURCC('l','p','c','m'), VLC_FOURCC('a','5','2',' '),
- VLC_FOURCC('d','t','s',' '), VLC_FOURCC('m','p','4','a'),
- VLC_FOURCC('d','v','b','s'), VLC_FOURCC('t','e','l','x') ),
+ M( "raw", "mp3", 1, VLC_CODEC_MPGA ),
+ M( "raw", "a52", 1, VLC_CODEC_A52 ),
+ M( "raw", "dts", 1, VLC_CODEC_DTS ),
+ M( "raw", "mpc", 1, VLC_CODEC_MUSEPACK7, VLC_CODEC_MUSEPACK8 ),
+ M( "raw", "ape", 1, VLC_CODEC_APE ),
+
+ M( "wav", "wav", 1, VLC_CODEC_U8, VLC_CODEC_S16L,
+ VLC_CODEC_S24L, VLC_CODEC_S32L, VLC_CODEC_FL32 ),
+
+ //M( "ffmpeg{mux=flac}", "flac", 1, VLC_CODEC_FLAC ), BROKEN
+
+ M( "ogg", "ogg", INT_MAX, VLC_CODEC_VORBIS, VLC_CODEC_SPEEX, VLC_CODEC_FLAC,
+ VLC_CODEC_SUBT, VLC_CODEC_THEORA, VLC_CODEC_DIRAC ),
+
+ M( "asf", "asf", 127, VLC_CODEC_WMA1, VLC_CODEC_WMA2, VLC_CODEC_WMAP, VLC_CODEC_WMAL, VLC_CODEC_WMAS,
+ VLC_CODEC_WMV1, VLC_CODEC_WMV2, VLC_CODEC_WMV3, VLC_CODEC_VC1 ),
+
+ M( "mp4", "mp4", INT_MAX, VLC_CODEC_MP4A, VLC_CODEC_H264, VLC_CODEC_MP4V,
+ VLC_CODEC_SUBT ),
+
+ M( "ps", "mpg", 16/* FIXME*/,VLC_CODEC_MPGV,
+ VLC_CODEC_MPGA, VLC_CODEC_DVD_LPCM, VLC_CODEC_A52,
+ VLC_CODEC_DTS,
+ VLC_CODEC_SPU ),
+
+ M( "ts", "ts", 8000, VLC_CODEC_MPGV,
+ VLC_CODEC_H264,
+ VLC_CODEC_MPGA, VLC_CODEC_DVD_LPCM, VLC_CODEC_A52,
+ VLC_CODEC_DTS, VLC_CODEC_MP4A,
+ VLC_CODEC_DVBS, VLC_CODEC_TELETEXT ),
M( NULL, NULL, 0, 0 )
};
else
switch( p_fmt->i_codec )
{
- case VLC_FOURCC( 'u', 'l', 'a', 'w' ):
+ case VLC_CODEC_MULAW:
if( p_fmt->audio.i_channels == 1 && p_fmt->audio.i_rate == 8000 )
id->i_payload_type = 0;
id->psz_enc = "PCMU";
id->pf_packetize = rtp_packetize_split;
rtp_set_ptime (id, 20, 1);
break;
- case VLC_FOURCC( 'a', 'l', 'a', 'w' ):
+ case VLC_CODEC_ALAW:
if( p_fmt->audio.i_channels == 1 && p_fmt->audio.i_rate == 8000 )
id->i_payload_type = 8;
id->psz_enc = "PCMA";
id->pf_packetize = rtp_packetize_split;
rtp_set_ptime (id, 20, 1);
break;
- case VLC_FOURCC( 's', '1', '6', 'b' ):
+ case VLC_CODEC_S16B:
if( p_fmt->audio.i_channels == 1 && p_fmt->audio.i_rate == 44100 )
{
id->i_payload_type = 11;
id->pf_packetize = rtp_packetize_split;
rtp_set_ptime (id, 20, 2);
break;
- case VLC_FOURCC( 'u', '8', ' ', ' ' ):
+ case VLC_CODEC_U8:
id->psz_enc = "L8";
id->pf_packetize = rtp_packetize_split;
rtp_set_ptime (id, 20, 1);
break;
- case VLC_FOURCC( 'm', 'p', 'g', 'a' ):
- case VLC_FOURCC( 'm', 'p', '3', ' ' ):
+ case VLC_CODEC_MPGA:
id->i_payload_type = 14;
id->psz_enc = "MPA";
id->i_clock_rate = 90000; /* not 44100 */
id->pf_packetize = rtp_packetize_mpa;
break;
- case VLC_FOURCC( 'm', 'p', 'g', 'v' ):
+ case VLC_CODEC_MPGV:
id->i_payload_type = 32;
id->psz_enc = "MPV";
id->pf_packetize = rtp_packetize_mpv;
break;
- case VLC_FOURCC( 'G', '7', '2', '6' ):
- case VLC_FOURCC( 'g', '7', '2', '6' ):
+ case VLC_CODEC_ADPCM_G726:
switch( p_fmt->i_bitrate / 1000 )
{
case 16:
break;
}
break;
- case VLC_FOURCC( 'a', '5', '2', ' ' ):
+ case VLC_CODEC_A52:
id->psz_enc = "ac3";
id->pf_packetize = rtp_packetize_ac3;
break;
- case VLC_FOURCC( 'H', '2', '6', '3' ):
+ case VLC_CODEC_H263:
id->psz_enc = "H263-1998";
id->pf_packetize = rtp_packetize_h263;
break;
- case VLC_FOURCC( 'h', '2', '6', '4' ):
+ case VLC_CODEC_H264:
id->psz_enc = "H264";
id->pf_packetize = rtp_packetize_h264;
id->psz_fmtp = NULL;
id->psz_fmtp = strdup( "packetization-mode=1" );
break;
- case VLC_FOURCC( 'm', 'p', '4', 'v' ):
+ case VLC_CODEC_MP4V:
{
char hexa[2*p_fmt->i_extra +1];
}
break;
}
- case VLC_FOURCC( 'm', 'p', '4', 'a' ):
+ case VLC_CODEC_MP4A:
{
if(!p_sys->b_latm)
{
}
break;
}
- case VLC_FOURCC( 's', 'a', 'm', 'r' ):
+ case VLC_CODEC_AMR_NB:
id->psz_enc = "AMR";
id->psz_fmtp = strdup( "octet-align=1" );
id->pf_packetize = rtp_packetize_amr;
break;
- case VLC_FOURCC( 's', 'a', 'w', 'b' ):
+ case VLC_CODEC_AMR_WB:
id->psz_enc = "AMR-WB";
id->psz_fmtp = strdup( "octet-align=1" );
id->pf_packetize = rtp_packetize_amr;
break;
- case VLC_FOURCC( 's', 'p', 'x', ' ' ):
+ case VLC_CODEC_SPEEX:
id->psz_enc = "SPEEX";
id->pf_packetize = rtp_packetize_spx;
break;
- case VLC_FOURCC( 't', '1', '4', '0' ):
+ case VLC_CODEC_ITU_T140:
id->psz_enc = "t140" ;
id->i_clock_rate = 1000;
id->pf_packetize = rtp_packetize_t140;
#include <vlc_common.h>
#include <vlc_plugin.h>
#include <vlc_sout.h>
-#include <vlc_vout.h>
#include <vlc_avcodec.h>
#include <vlc_block.h>
return NULL;
if( p_fmt->i_cat == VIDEO_ES &&
- ( p_fmt->i_codec == VLC_FOURCC('m', 'p', 'g', 'v') ||
+ ( p_fmt->i_codec == VLC_CODEC_MPGV ||
p_fmt->i_codec == VLC_FOURCC('f', 'a', 'k', 'e') ) )
{
id->b_switcher_video = true;
- p_fmt->i_codec = VLC_FOURCC('m', 'p', 'g', 'v');
+ p_fmt->i_codec = VLC_CODEC_MPGV;
msg_Dbg( p_stream, "creating video switcher for fcc=`%4.4s' cmd:%d",
(char*)&p_fmt->i_codec, p_sys->i_cmd );
}
else if ( p_fmt->i_cat == AUDIO_ES &&
- p_fmt->i_codec == VLC_FOURCC('m', 'p', 'g', 'a') &&
+ p_fmt->i_codec == VLC_CODEC_MPGA &&
p_sys->b_audio )
{
int i_ff_codec = CODEC_ID_MP2;
return -1;
}
- vout_InitPicture( VLC_OBJECT(p_stream), p_pic, VLC_FOURCC('I','4','2','0'),
- i_width, i_height,
- i_width * VOUT_ASPECT_FACTOR / i_height );
+ if( picture_Setup( p_pic, VLC_CODEC_I420,
+ i_width, i_height,
+ i_width * VOUT_ASPECT_FACTOR / i_height ) )
+ {
+ msg_Err( p_stream, "unknown chroma" );
+ return -1;
+ }
for ( i = 0; i < p_pic->i_planes; i++ )
{
p_pic->p[i].p_pixels = malloc( p_pic->p[i].i_lines *
static int transcode_video_process( sout_stream_t *, sout_stream_id_t *,
block_t *, block_t ** );
-static void video_del_buffer( vlc_object_t *, picture_t * );
static picture_t *video_new_buffer_decoder( decoder_t * );
static void video_del_buffer_decoder( decoder_t *, picture_t * );
static void video_link_picture_decoder( decoder_t *, picture_t * );
static void video_unlink_picture_decoder( decoder_t *, picture_t * );
-static picture_t *video_new_buffer_filter( filter_t * );
-static void video_del_buffer_filter( filter_t *, picture_t * );
static int transcode_spu_new ( sout_stream_t *, sout_stream_id_t * );
static void transcode_spu_close ( sout_stream_id_t * );
struct decoder_owner_sys_t
{
- picture_t *pp_pics[PICTURE_RING_SIZE];
- sout_stream_sys_t *p_sys;
-};
-struct filter_owner_sys_t
-{
- picture_t *pp_pics[PICTURE_RING_SIZE];
sout_stream_sys_t *p_sys;
};
if( p_sys->i_acodec )
{
- if( p_sys->i_acodec == VLC_FOURCC('m','p','3',0) &&
- p_sys->i_channels > 2 )
+ if( ( p_sys->i_acodec == VLC_CODEC_MP3 ||
+ p_sys->i_acodec == VLC_CODEC_MPGA ) && p_sys->i_channels > 2 )
{
msg_Warn( p_stream, "%d channels invalid for mp3, forcing to 2",
p_sys->i_channels );
&p_sys->p_osd_cfg, strdup( "dvbsub") );
free( psz_next );
- p_sys->i_osdcodec = VLC_FOURCC('Y','U','V','P' );
+ p_sys->i_osdcodec = VLC_CODEC_YUVP;
msg_Dbg( p_stream, "codec osd=%4.4s", (char *)&p_sys->i_osdcodec );
p_dst->audio.i_rate );
/* If any filter is needed, convert to fl32 */
- if( current.i_codec != VLC_FOURCC('f','l','3','2') )
+ if( current.i_codec != VLC_CODEC_FL32 )
{
/* First step, convert to fl32 */
current.i_codec =
- current.audio.i_format = VLC_FOURCC('f','l','3','2');
+ current.audio.i_format = VLC_CODEC_FL32;
if( !filter_chain_AppendFilter( p_chain, NULL, NULL, NULL, ¤t ) )
{
aout_BitsPerSample( id->p_decoder->fmt_out.i_codec );
fmt_last = id->p_decoder->fmt_out;
/* Fix AAC SBR changing number of channels and sampling rate */
- if( !(id->p_decoder->fmt_in.i_codec == VLC_FOURCC('m','p','4','a') &&
+ if( !(id->p_decoder->fmt_in.i_codec == VLC_CODEC_MP4A &&
fmt_last.audio.i_rate != id->p_encoder->fmt_in.audio.i_rate &&
fmt_last.audio.i_channels != id->p_encoder->fmt_in.audio.i_channels) )
fmt_last.audio.i_rate = id->p_decoder->fmt_in.audio.i_rate;
{
es_format_t fmt_fl32 = fmt_last;
fmt_fl32.i_codec =
- fmt_fl32.audio.i_format = VLC_FOURCC('f','l','3','2');
+ fmt_fl32.audio.i_format = VLC_CODEC_FL32;
if( transcode_audio_filter_chain_build( p_stream, id->p_uf_chain,
&fmt_fl32, &fmt_last ) )
{
}
fmt_last = id->p_encoder->fmt_in;
- /* FIXME: Hack for mp3 transcoding support */
- if( id->p_encoder->fmt_out.i_codec == VLC_FOURCC( 'm','p','3',' ' ) )
- id->p_encoder->fmt_out.i_codec = VLC_FOURCC( 'm','p','g','a' );
+ /* */
+ id->p_encoder->fmt_out.i_codec =
+ vlc_fourcc_GetCodec( AUDIO_ES, id->p_encoder->fmt_out.i_codec );
return VLC_SUCCESS;
}
* video
*/
+static picture_t *transcode_video_filter_buffer_new( filter_t *p_filter )
+{
+ p_filter->fmt_out.video.i_chroma = p_filter->fmt_out.i_codec;
+ return picture_New( p_filter->fmt_out.video.i_chroma,
+ p_filter->fmt_out.video.i_width,
+ p_filter->fmt_out.video.i_height,
+ p_filter->fmt_out.video.i_aspect );
+}
+static void transcode_video_filter_buffer_del( filter_t *p_filter, picture_t *p_pic )
+{
+ VLC_UNUSED(p_filter);
+ picture_Release( p_pic );
+}
+
static int transcode_video_filter_allocation_init( filter_t *p_filter,
void *p_data )
{
- sout_stream_sys_t *p_sys = (sout_stream_sys_t*)p_data;
- int i;
-
- p_filter->pf_vout_buffer_new = video_new_buffer_filter;
- p_filter->pf_vout_buffer_del = video_del_buffer_filter;
-
- p_filter->p_owner = malloc( sizeof(filter_owner_sys_t) );
- if( !p_filter->p_owner )
- return VLC_EGENERIC;
-
- for( i = 0; i < PICTURE_RING_SIZE; i++ )
- p_filter->p_owner->pp_pics[i] = 0;
- p_filter->p_owner->p_sys = p_sys;
-
+ p_filter->pf_vout_buffer_new = transcode_video_filter_buffer_new;
+ p_filter->pf_vout_buffer_del = transcode_video_filter_buffer_del;
return VLC_SUCCESS;
}
static void transcode_video_filter_allocation_clear( filter_t *p_filter )
{
- int j;
-
- /* Clean-up pictures ring buffer */
- for( j = 0; j < PICTURE_RING_SIZE; j++ )
- {
- if( p_filter->p_owner->pp_pics[j] )
- video_del_buffer( VLC_OBJECT(p_filter),
- p_filter->p_owner->pp_pics[j] );
- }
- free( p_filter->p_owner );
}
static int transcode_video_new( sout_stream_t *p_stream, sout_stream_id_t *id )
{
sout_stream_sys_t *p_sys = p_stream->p_sys;
- int i;
/* Open decoder
* Initialization of decoder structures
if( !id->p_decoder->p_owner )
return VLC_EGENERIC;
- for( i = 0; i < PICTURE_RING_SIZE; i++ )
- id->p_decoder->p_owner->pp_pics[i] = 0;
id->p_decoder->p_owner->p_sys = p_sys;
/* id->p_decoder->p_cfg = p_sys->p_video_cfg; */
id->p_encoder->fmt_in.video.i_chroma = id->p_encoder->fmt_in.i_codec;
- /* Hack for mp2v/mp1v transcoding support */
- if( id->p_encoder->fmt_out.i_codec == VLC_FOURCC('m','p','1','v') ||
- id->p_encoder->fmt_out.i_codec == VLC_FOURCC('m','p','2','v') )
- {
- id->p_encoder->fmt_out.i_codec = VLC_FOURCC('m','p','g','v');
- }
+ /* */
+ id->p_encoder->fmt_out.i_codec =
+ vlc_fourcc_GetCodec( VIDEO_ES, id->p_encoder->fmt_out.i_codec );
id->id = sout_StreamIdAdd( p_stream->p_sys->p_out,
&id->p_encoder->fmt_out );
static void transcode_video_close( sout_stream_t *p_stream,
sout_stream_id_t *id )
{
- int i;
-
if( p_stream->p_sys->i_threads >= 1 )
{
vlc_mutex_lock( &p_stream->p_sys->lock_out );
if( id->p_decoder->p_description )
vlc_meta_Delete( id->p_decoder->p_description );
- if( id->p_decoder->p_owner )
- {
- /* Clean-up pictures ring buffer */
- for( i = 0; i < PICTURE_RING_SIZE; i++ )
- {
- if( id->p_decoder->p_owner->pp_pics[i] )
- video_del_buffer( VLC_OBJECT(id->p_decoder),
- id->p_decoder->p_owner->pp_pics[i] );
- }
- free( id->p_decoder->p_owner );
- }
+ free( id->p_decoder->p_owner );
/* Close encoder */
if( id->p_encoder->p_module )
{
msg_Dbg( p_stream, "late picture skipped (%"PRId64")",
current_date + 50000 - p_pic->date );
- p_pic->pf_release( p_pic );
+ picture_Release( p_pic );
continue;
}
}
msg_Dbg( p_stream, "dropping frame (%i)",
(int)(i_video_drift - i_master_drift) );
#endif
- p_pic->pf_release( p_pic );
+ picture_Release( p_pic );
continue;
}
else if( i_video_drift > (i_master_drift + 50000) )
if( transcode_video_encoder_open( p_stream, id ) != VLC_SUCCESS )
{
- p_pic->pf_release( p_pic );
+ picture_Release( p_pic );
transcode_video_close( p_stream, id );
id->b_transcode = false;
return VLC_EGENERIC;
{
video_format_t fmt;
- if( p_pic->i_refcount && !filter_chain_GetLength( id->p_f_chain ) )
+ if( picture_IsReferenced( p_pic ) && !filter_chain_GetLength( id->p_f_chain ) )
{
/* We can't modify the picture, we need to duplicate it */
picture_t *p_tmp = video_new_buffer_decoder( id->p_decoder );
if( p_tmp )
{
picture_Copy( p_tmp, p_pic );
- p_pic->pf_release( p_pic );
+ picture_Release( p_pic );
p_pic = p_tmp;
}
}
if( p_sys->i_threads == 0 )
{
- p_pic->pf_release( p_pic );
+ picture_Release( p_pic );
}
else
{
block_ChainAppend( &p_sys->p_buffers, p_block );
vlc_mutex_unlock( &p_sys->lock_out );
- p_pic->pf_release( p_pic );
+ picture_Release( p_pic );
}
while( p_sys->i_last_pic != p_sys->i_first_pic )
{
p_pic = p_sys->pp_pics[p_sys->i_first_pic++];
p_sys->i_first_pic %= PICTURE_RING_SIZE;
- p_pic->pf_release( p_pic );
+ picture_Release( p_pic );
}
block_ChainRelease( p_sys->p_buffers );
return NULL;
}
-struct picture_sys_t
-{
- vlc_object_t *p_owner;
-};
-
-static void video_release_buffer( picture_t *p_pic )
+static picture_t *video_new_buffer_decoder( decoder_t *p_dec )
{
- if( p_pic && !p_pic->i_refcount && p_pic->pf_release && p_pic->p_sys )
+ sout_stream_sys_t *p_ssys = p_dec->p_owner->p_sys;
+ if( p_ssys->i_threads >= 1 )
{
- video_del_buffer_decoder( (decoder_t *)p_pic->p_sys->p_owner, p_pic );
- }
- else if( p_pic && p_pic->i_refcount > 0 ) p_pic->i_refcount--;
-}
-
-static picture_t *video_new_buffer( vlc_object_t *p_this, picture_t **pp_ring,
- sout_stream_sys_t *p_sys )
-{
- decoder_t *p_dec = (decoder_t *)p_this;
- picture_t *p_pic;
- int i;
+ int i_first_pic = p_ssys->i_first_pic;
- /* Find an empty space in the picture ring buffer */
- for( i = 0; i < PICTURE_RING_SIZE; i++ )
- {
- if( pp_ring[i] != NULL && pp_ring[i]->i_status == DESTROYED_PICTURE )
- {
- pp_ring[i]->i_status = RESERVED_PICTURE;
- return pp_ring[i];
- }
- }
- for( i = 0; i < PICTURE_RING_SIZE; i++ )
- {
- if( pp_ring[i] == NULL ) break;
- }
-
- if( i == PICTURE_RING_SIZE && p_sys->i_threads >= 1 )
- {
- int i_first_pic = p_sys->i_first_pic;
-
- if( p_sys->i_first_pic != p_sys->i_last_pic )
+ if( p_ssys->i_first_pic != p_ssys->i_last_pic )
{
/* Encoder still has stuff to encode, wait to clear-up the list */
- while( p_sys->i_first_pic == i_first_pic )
+ while( p_ssys->i_first_pic == i_first_pic )
msleep( 100000 );
}
-
- /* Find an empty space in the picture ring buffer */
- for( i = 0; i < PICTURE_RING_SIZE; i++ )
- {
- if( pp_ring[i] != NULL && pp_ring[i]->i_status == DESTROYED_PICTURE )
- {
- pp_ring[i]->i_status = RESERVED_PICTURE;
- return pp_ring[i];
- }
- }
- for( i = 0; i < PICTURE_RING_SIZE; i++ )
- {
- if( pp_ring[i] == NULL ) break;
- }
- }
-
- if( i == PICTURE_RING_SIZE )
- {
- msg_Err( p_this, "decoder/filter is leaking pictures, "
- "resetting its ring buffer" );
-
- for( i = 0; i < PICTURE_RING_SIZE; i++ )
- {
- pp_ring[i]->pf_release( pp_ring[i] );
- }
-
- i = 0;
}
p_dec->fmt_out.video.i_chroma = p_dec->fmt_out.i_codec;
- p_pic = picture_New( p_dec->fmt_out.video.i_chroma,
- p_dec->fmt_out.video.i_width,
- p_dec->fmt_out.video.i_height,
- p_dec->fmt_out.video.i_aspect );
- if( !p_pic ) return NULL;
- p_pic->p_sys = calloc( 1, sizeof(picture_sys_t) );
- if( !p_pic->p_sys )
- {
- picture_Release( p_pic );
- return NULL;
- }
- p_pic->pf_release = video_release_buffer;
- p_pic->i_refcount = 0;
-
- pp_ring[i] = p_pic;
- return p_pic;
-}
-
-static picture_t *video_new_buffer_decoder( decoder_t *p_dec )
-{
- return video_new_buffer( VLC_OBJECT(p_dec),
- p_dec->p_owner->pp_pics, p_dec->p_owner->p_sys );
-}
-
-static picture_t *video_new_buffer_filter( filter_t *p_filter )
-{
- return video_new_buffer( VLC_OBJECT(p_filter),
- p_filter->p_owner->pp_pics,
- p_filter->p_owner->p_sys );
-}
-
-static void video_del_buffer( vlc_object_t *p_this, picture_t *p_pic )
-{
- VLC_UNUSED(p_this);
- if( p_pic )
- {
- free( p_pic->p_q );
- free( p_pic->p_data_orig );
- free( p_pic->p_sys );
- free( p_pic );
- }
+ return picture_New( p_dec->fmt_out.video.i_chroma,
+ p_dec->fmt_out.video.i_width,
+ p_dec->fmt_out.video.i_height,
+ p_dec->fmt_out.video.i_aspect );
}
static void video_del_buffer_decoder( decoder_t *p_decoder, picture_t *p_pic )
{
VLC_UNUSED(p_decoder);
- p_pic->i_refcount = 0;
- p_pic->i_status = DESTROYED_PICTURE;
- picture_CleanupQuant( p_pic );
-}
-
-static void video_del_buffer_filter( filter_t *p_filter, picture_t *p_pic )
-{
- VLC_UNUSED(p_filter);
- p_pic->i_refcount = 0;
- p_pic->i_status = DESTROYED_PICTURE;
- picture_CleanupQuant( p_pic );
+ picture_Release( p_pic );
}
static void video_link_picture_decoder( decoder_t *p_dec, picture_t *p_pic )
{
VLC_UNUSED(p_dec);
- p_pic->i_refcount++;
+ picture_Hold( p_pic );
}
static void video_unlink_picture_decoder( decoder_t *p_dec, picture_t *p_pic )
{
VLC_UNUSED(p_dec);
- video_release_buffer( p_pic );
+ picture_Release( p_pic );
}
/*
/* Open encoder */
es_format_Init( &id->p_encoder->fmt_in, id->p_decoder->fmt_in.i_cat,
- VLC_FOURCC('Y','U','V','A') );
+ VLC_CODEC_YUVA );
id->p_encoder->fmt_in.psz_language = strdup( "osd" );
id->p_encoder->p_cfg = p_sys->p_osd_cfg;
id->id = NULL;
if( p_fmt->i_cat == VIDEO_ES
- && p_fmt->i_codec == VLC_FOURCC('m', 'p', 'g', 'v') )
+ && p_fmt->i_codec == VLC_CODEC_MPGV )
{
msg_Dbg( p_stream,
"creating video transrating for fcc=`%4.4s'",
#include <vlc_common.h>
#include <vlc_plugin.h>
#include <vlc_filter.h>
-#include <vlc_vout.h>
#define SRC_FOURCC "GREY"
#define DEST_FOURCC "I420,YUY2"
switch( p_filter->fmt_in.video.i_chroma )
{
- case VLC_FOURCC('Y','8','0','0'):
- p_filter->fmt_in.video.i_chroma = VLC_FOURCC('G','R','E','Y');
- case VLC_FOURCC('G','R','E','Y'):
+ case VLC_CODEC_GREY:
switch( p_filter->fmt_out.video.i_chroma )
{
- case VLC_FOURCC('I','4','2','0'):
+ case VLC_CODEC_I420:
p_filter->pf_video_filter = GREY_I420_Filter;
break;
- case VLC_FOURCC('Y','U','Y','2'):
+ case VLC_CODEC_YUYV:
p_filter->pf_video_filter = GREY_YUY2_Filter;
break;
default:
#include <vlc_common.h>
#include <vlc_plugin.h>
#include <vlc_filter.h>
-#include <vlc_vout.h>
#include "i420_rgb.h"
#if defined (MODULE_NAME_IS_i420_rgb)
switch( p_filter->fmt_in.video.i_chroma )
{
- case VLC_FOURCC('Y','V','1','2'):
- case VLC_FOURCC('I','4','2','0'):
- case VLC_FOURCC('I','Y','U','V'):
+ case VLC_CODEC_YV12:
+ case VLC_CODEC_I420:
switch( p_filter->fmt_out.video.i_chroma )
{
#if defined (MODULE_NAME_IS_i420_rgb)
- case VLC_FOURCC('R','G','B','2'):
+ case VLC_CODEC_RGB8:
p_filter->pf_video_filter = I420_RGB8_Filter;
break;
#endif
- case VLC_FOURCC('R','V','1','5'):
- case VLC_FOURCC('R','V','1','6'):
+ case VLC_CODEC_RGB15:
+ case VLC_CODEC_RGB16:
#if ! defined (MODULE_NAME_IS_i420_rgb)
/* If we don't have support for the bitmasks, bail out */
if( ( p_filter->fmt_out.video.i_rmask == 0x7c00
#if 0
/* Hmmm, is there only X11 using 32bits per pixel for RV24 ? */
- case VLC_FOURCC('R','V','2','4'):
+ case VLC_CODEC_RGB24:
#endif
- case VLC_FOURCC('R','V','3','2'):
+ case VLC_CODEC_RGB32:
#if ! defined (MODULE_NAME_IS_i420_rgb)
/* If we don't have support for the bitmasks, bail out */
if( p_filter->fmt_out.video.i_rmask == 0x00ff0000
switch( p_filter->fmt_out.video.i_chroma )
{
#if defined (MODULE_NAME_IS_i420_rgb)
- case VLC_FOURCC('R','G','B','2'):
+ case VLC_CODEC_RGB8:
p_filter->p_sys->p_buffer = malloc( VOUT_MAX_WIDTH );
break;
#endif
- case VLC_FOURCC('R','V','1','5'):
- case VLC_FOURCC('R','V','1','6'):
+ case VLC_CODEC_RGB15:
+ case VLC_CODEC_RGB16:
p_filter->p_sys->p_buffer = malloc( VOUT_MAX_WIDTH * 2 );
break;
- case VLC_FOURCC('R','V','2','4'):
- case VLC_FOURCC('R','V','3','2'):
+ case VLC_CODEC_RGB24:
+ case VLC_CODEC_RGB32:
p_filter->p_sys->p_buffer = malloc( VOUT_MAX_WIDTH * 4 );
break;
p_filter->p_sys->p_offset = malloc( p_filter->fmt_out.video.i_width
* ( ( p_filter->fmt_out.video.i_chroma
- == VLC_FOURCC('R','G','B','2') ) ? 2 : 1 )
+ == VLC_CODEC_RGB8 ) ? 2 : 1 )
* sizeof( int ) );
if( p_filter->p_sys->p_offset == NULL )
{
#if defined (MODULE_NAME_IS_i420_rgb)
switch( p_filter->fmt_out.video.i_chroma )
{
- case VLC_FOURCC('R','G','B','2'):
+ case VLC_CODEC_RGB8:
i_tables_size = sizeof( uint8_t ) * PALETTE_TABLE_SIZE;
break;
- case VLC_FOURCC('R','V','1','5'):
- case VLC_FOURCC('R','V','1','6'):
+ case VLC_CODEC_RGB15:
+ case VLC_CODEC_RGB16:
i_tables_size = sizeof( uint16_t ) * RGB_TABLE_SIZE;
break;
default: /* RV24, RV32 */
/* Color: build red, green and blue tables */
switch( p_filter->fmt_out.video.i_chroma )
{
- case VLC_FOURCC('R','G','B','2'):
+ case VLC_CODEC_RGB8:
p_filter->p_sys->p_rgb8 = (uint8_t *)p_filter->p_sys->p_base;
Set8bppPalette( p_filter, p_filter->p_sys->p_rgb8 );
break;
- case VLC_FOURCC('R','V','1','5'):
- case VLC_FOURCC('R','V','1','6'):
+ case VLC_CODEC_RGB15:
+ case VLC_CODEC_RGB16:
p_filter->p_sys->p_rgb16 = (uint16_t *)p_filter->p_sys->p_base;
for( i_index = 0; i_index < RED_MARGIN; i_index++ )
{
}
break;
- case VLC_FOURCC('R','V','2','4'):
- case VLC_FOURCC('R','V','3','2'):
+ case VLC_CODEC_RGB24:
+ case VLC_CODEC_RGB32:
p_filter->p_sys->p_rgb32 = (uint32_t *)p_filter->p_sys->p_base;
for( i_index = 0; i_index < RED_MARGIN; i_index++ )
{
#include <vlc/vlc.h>
#include <vlc_filter.h>
-#include <vlc_vout.h>
#include "i420_rgb.h"
#if defined (MODULE_NAME_IS_i420_rgb)
#include <vlc/vlc.h>
#include <vlc_filter.h>
-#include <vlc_vout.h>
#include "i420_rgb.h"
#include "i420_rgb_c.h"
#include <vlc_common.h>
#include <vlc_plugin.h>
#include <vlc_filter.h>
-#include <vlc_vout.h>
#define SRC_FOURCC "I420,IYUV,YV12"
#define DEST_FOURCC "YMGA"
switch( p_filter->fmt_in.video.i_chroma )
{
- case VLC_FOURCC('Y','V','1','2'):
- case VLC_FOURCC('I','4','2','0'):
- case VLC_FOURCC('I','Y','U','V'):
+ case VLC_CODEC_YV12:
+ case VLC_CODEC_I420:
switch( p_filter->fmt_out.video.i_chroma )
{
- case VLC_FOURCC('Y','M','G','A'):
+ case VLC_CODEC_YMGA:
p_filter->pf_video_filter = I420_YMGA_Filter;
break;
#include <vlc_common.h>
#include <vlc_plugin.h>
#include <vlc_filter.h>
-#include <vlc_vout.h>
#if defined (MODULE_NAME_IS_i420_yuy2_altivec) && defined(HAVE_ALTIVEC_H)
# include <altivec.h>
switch( p_filter->fmt_in.video.i_chroma )
{
- case VLC_FOURCC('Y','V','1','2'):
- case VLC_FOURCC('I','4','2','0'):
- case VLC_FOURCC('I','Y','U','V'):
+ case VLC_CODEC_YV12:
+ case VLC_CODEC_I420:
switch( p_filter->fmt_out.video.i_chroma )
{
- case VLC_FOURCC('Y','U','Y','2'):
- case VLC_FOURCC('Y','U','N','V'):
+ case VLC_CODEC_YUYV:
p_filter->pf_video_filter = I420_YUY2_Filter;
break;
- case VLC_FOURCC('Y','V','Y','U'):
+ case VLC_CODEC_YVYU:
p_filter->pf_video_filter = I420_YVYU_Filter;
break;
- case VLC_FOURCC('U','Y','V','Y'):
- case VLC_FOURCC('U','Y','N','V'):
- case VLC_FOURCC('Y','4','2','2'):
+ case VLC_CODEC_UYVY:
p_filter->pf_video_filter = I420_UYVY_Filter;
break;
#if !defined (MODULE_NAME_IS_i420_yuy2_altivec)
p_filter->pf_video_filter = I420_IUYV_Filter;
break;
- case VLC_FOURCC('c','y','u','v'):
+ case VLC_CODEC_CYUV:
p_filter->pf_video_filter = I420_cyuv_Filter;
break;
#endif
#if defined (MODULE_NAME_IS_i420_yuy2)
- case VLC_FOURCC('Y','2','1','1'):
+ case VLC_CODEC_Y211:
p_filter->pf_video_filter = I420_Y211_Filter;
break;
#endif
#include <vlc_common.h>
#include <vlc_plugin.h>
#include <vlc_filter.h>
-#include <vlc_vout.h>
#define SRC_FOURCC "I422,J422"
#define DEST_FOURCC "I420,IYUV,J420,YV12,YUVA"
switch( p_filter->fmt_in.video.i_chroma )
{
- case VLC_FOURCC('I','4','2','2'):
- case VLC_FOURCC('J','4','2','2'):
+ case VLC_CODEC_I422:
+ case VLC_CODEC_J422:
switch( p_filter->fmt_out.video.i_chroma )
{
- case VLC_FOURCC('I','4','2','0'):
- case VLC_FOURCC('I','Y','U','V'):
- case VLC_FOURCC('J','4','2','0'):
+ case VLC_CODEC_I420:
+ case VLC_CODEC_J420:
p_filter->pf_video_filter = I422_I420_Filter;
break;
- case VLC_FOURCC('Y','V','1','2'):
+ case VLC_CODEC_YV12:
p_filter->pf_video_filter = I422_YV12_Filter;
break;
- case VLC_FOURCC('Y','U','V','A'):
+ case VLC_CODEC_YUVA:
p_filter->pf_video_filter = I422_YUVA_Filter;
break;
#include <vlc_common.h>
#include <vlc_plugin.h>
#include <vlc_filter.h>
-#include <vlc_vout.h>
#include "i422_yuy2.h"
switch( p_filter->fmt_in.video.i_chroma )
{
- case VLC_FOURCC('I','4','2','2'):
+ case VLC_CODEC_I422:
switch( p_filter->fmt_out.video.i_chroma )
{
- case VLC_FOURCC('Y','U','Y','2'):
- case VLC_FOURCC('Y','U','N','V'):
+ case VLC_CODEC_YUYV:
p_filter->pf_video_filter = I422_YUY2_Filter;
break;
- case VLC_FOURCC('Y','V','Y','U'):
+ case VLC_CODEC_YVYU:
p_filter->pf_video_filter = I422_YVYU_Filter;
break;
- case VLC_FOURCC('U','Y','V','Y'):
- case VLC_FOURCC('U','Y','N','V'):
- case VLC_FOURCC('Y','4','2','2'):
+ case VLC_CODEC_UYVY:
p_filter->pf_video_filter = I422_UYVY_Filter;
break;
- case VLC_FOURCC('I','U','Y','V'):
p_filter->pf_video_filter = I422_IUYV_Filter;
break;
- case VLC_FOURCC('c','y','u','v'):
+ case VLC_CODEC_CYUV:
p_filter->pf_video_filter = I422_cyuv_Filter;
break;
#if defined (MODULE_NAME_IS_i422_yuy2)
- case VLC_FOURCC('Y','2','1','1'):
+ case VLC_CODEC_Y211:
p_filter->pf_video_filter = I422_Y211_Filter;
break;
#endif
#include <vlc_common.h>
#include <vlc_plugin.h>
#include <vlc_filter.h>
-#include <vlc_vout.h>
#define SRC_FOURCC "YUY2,YUNV,YVYU,UYVY,UYNV,Y422,cyuv"
#define DEST_FOURCC "I420"
switch( p_filter->fmt_out.video.i_chroma )
{
- case VLC_FOURCC('I','4','2','0'):
+ case VLC_CODEC_I420:
switch( p_filter->fmt_in.video.i_chroma )
{
- case VLC_FOURCC('Y','U','Y','2'):
- case VLC_FOURCC('Y','U','N','V'):
+ case VLC_CODEC_YUYV:
p_filter->pf_video_filter = YUY2_I420_Filter;
break;
- case VLC_FOURCC('Y','V','Y','U'):
+ case VLC_CODEC_YVYU:
p_filter->pf_video_filter = YVYU_I420_Filter;
break;
- case VLC_FOURCC('U','Y','V','Y'):
- case VLC_FOURCC('U','Y','N','V'):
- case VLC_FOURCC('Y','4','2','2'):
+ case VLC_CODEC_UYVY:
p_filter->pf_video_filter = UYVY_I420_Filter;
break;
- case VLC_FOURCC('c','y','u','v'):
+ case VLC_CODEC_CYUV:
p_filter->pf_video_filter = cyuv_I420_Filter;
break;
#include <vlc_common.h>
#include <vlc_plugin.h>
#include <vlc_filter.h>
-#include <vlc_vout.h>
#define SRC_FOURCC "YUY2,YUNV,YVYU,UYVY,UYNV,Y422,cyuv"
#define DEST_FOURCC "I422"
switch( p_filter->fmt_out.video.i_chroma )
{
- case VLC_FOURCC('I','4','2','2'):
+ case VLC_CODEC_I422:
switch( p_filter->fmt_in.video.i_chroma )
{
- case VLC_FOURCC('Y','U','Y','2'):
- case VLC_FOURCC('Y','U','N','V'):
+ case VLC_CODEC_YUYV:
p_filter->pf_video_filter = YUY2_I422_Filter;
break;
- case VLC_FOURCC('Y','V','Y','U'):
+ case VLC_CODEC_YVYU:
p_filter->pf_video_filter = YVYU_I422_Filter;
break;
- case VLC_FOURCC('U','Y','V','Y'):
- case VLC_FOURCC('U','Y','N','V'):
- case VLC_FOURCC('Y','4','2','2'):
+ case VLC_CODEC_UYVY:
p_filter->pf_video_filter = UYVY_I422_Filter;
break;
- case VLC_FOURCC('c','y','u','v'):
+ case VLC_CODEC_CYUV:
p_filter->pf_video_filter = cyuv_I422_Filter;
break;
#include <vlc_common.h>
#include <vlc_plugin.h>
#include <vlc_sout.h>
-#include <vlc_vout.h>
#include "vlc_filter.h"
#include "filter_picture.h"
return NULL;
}
- p_outpic = p_filter->pf_vout_buffer_new( p_filter );
+ p_outpic = filter_NewPicture( p_filter );
if( !p_outpic )
{
msg_Warn( p_filter, "can't get output picture" );
#include <vlc_common.h>
#include <vlc_plugin.h>
-#include <vlc_vout.h>
#include <vlc_image.h>
#include <vlc_filter.h>
filter_sys_t *p_sys;
char *psz_string;
- if( p_filter->fmt_in.video.i_chroma != VLC_FOURCC('Y','U','V','A') )
+ if( p_filter->fmt_in.video.i_chroma != VLC_CODEC_YUVA )
{
msg_Err( p_filter,
"Unsupported input chroma \"%4s\". "
video_format_t fmt_in, fmt_out;
memset( &fmt_in, 0, sizeof( video_format_t ) );
memset( &fmt_out, 0, sizeof( video_format_t ) );
- fmt_out.i_chroma = VLC_FOURCC('Y','U','V','A');
+ fmt_out.i_chroma = VLC_CODEC_YUVA;
if( p_filter->p_sys->p_mask )
picture_Release( p_filter->p_sys->p_mask );
p_image = image_HandlerCreate( p_filter );
CThread::CThread(vlc_object_t *pOwner)
{
- int err;
m_pAtmoThread = (atmo_thread_t *)vlc_object_create( pOwner,
sizeof(atmo_thread_t) );
if(m_pAtmoThread)
vlc_object_attach( m_pAtmoThread, m_pOwner);
vlc_mutex_init( &m_TerminateLock );
- err = vlc_cond_init( &m_TerminateCond );
- if(err) {
- msg_Err( m_pAtmoThread, "vlc_cond_init failed %d",err);
- }
+ vlc_cond_init( &m_TerminateCond );
}
}
switch( p_filter->fmt_in.video.i_chroma )
{
- case VLC_FOURCC('I','4','2','0'):
- case VLC_FOURCC('I','Y','U','V'):
- case VLC_FOURCC('Y','V','1','2'):
- case VLC_FOURCC('Y','V','1','6'):
- case VLC_FOURCC('Y','V','U','9'):
+ case VLC_CODEC_I420:
+ case VLC_CODEC_YV12:
// simple enough? Dionoea?
p_sys->pf_extract_mini_image = ExtractMiniImage_YUV;
break;
#include <assert.h>
#include <vlc_common.h>
#include <vlc_plugin.h>
-#include <vlc_vout.h>
#include "vlc_filter.h"
/*****************************************************************************
int i_dummy;
};
-#define FCC_YUVA VLC_FOURCC('Y','U','V','A')
-#define FCC_YUVP VLC_FOURCC('Y','U','V','P')
-#define FCC_RGBA VLC_FOURCC('R','G','B','A')
-
-#define FCC_I420 VLC_FOURCC('I','4','2','0')
-#define FCC_YV12 VLC_FOURCC('Y','V','1','2')
-#define FCC_YUY2 VLC_FOURCC('Y','U','Y','2')
-#define FCC_UYVY VLC_FOURCC('U','Y','V','Y')
-#define FCC_YVYU VLC_FOURCC('Y','V','Y','U')
-#define FCC_RV15 VLC_FOURCC('R','V','1','5')
-#define FCC_RV16 VLC_FOURCC('R','V','1','6')
-#define FCC_RV24 VLC_FOURCC('R','V','2','4')
-#define FCC_RV32 VLC_FOURCC('R','V','3','2')
+#define FCC_YUVA VLC_CODEC_YUVA
+#define FCC_YUVP VLC_CODEC_YUVP
+#define FCC_RGBA VLC_CODEC_RGBA
+
+#define FCC_I420 VLC_CODEC_I420
+#define FCC_YV12 VLC_CODEC_YV12
+#define FCC_YUY2 VLC_CODEC_YUYV
+#define FCC_UYVY VLC_CODEC_UYVY
+#define FCC_YVYU VLC_CODEC_YVYU
+#define FCC_RV15 VLC_CODEC_RGB15
+#define FCC_RV16 VLC_CODEC_RGB16
+#define FCC_RV24 VLC_CODEC_RGB24
+#define FCC_RV32 VLC_CODEC_RGB32
/****************************************************************************
* Local prototypes
#include <vlc_common.h>
#include <vlc_plugin.h>
#include <vlc_sout.h>
-#include <vlc_vout.h>
#include "vlc_filter.h"
#include "vlc_image.h"
#include <vlc_common.h>
#include <vlc_plugin.h>
-#include <vlc_vout.h>
#include "vlc_filter.h"
filter_t *p_filter = (filter_t *)p_this;
filter_sys_t *p_sys;
- if( p_filter->fmt_in.video.i_chroma != VLC_FOURCC('Y','U','V','A') )
+ if( p_filter->fmt_in.video.i_chroma != VLC_CODEC_YUVA )
{
msg_Err( p_filter,
"Unsupported input chroma \"%4s\". "
uint8_t *p_v = p_pic->p[ V_PLANE ].p_pixels;
uint8_t umin, umax, vmin, vmax;
- if( p_pic->format.i_chroma != VLC_FOURCC('Y','U','V','A') )
+ if( p_pic->format.i_chroma != VLC_CODEC_YUVA )
{
msg_Err( p_filter,
"Unsupported input chroma \"%4s\". "
#include <vlc_common.h>
#include <vlc_plugin.h>
#include <vlc_filter.h>
-#include <vlc_vout.h>
/*****************************************************************************
* Local and extern prototypes.
*****************************************************************************/
static picture_t *video_new( filter_t *p_filter )
{
- return ((filter_t*)p_filter->p_owner)->pf_vout_buffer_new( (filter_t*)p_filter->p_owner );
+ return filter_NewPicture( (filter_t*)p_filter->p_owner );
}
static void video_del( filter_t *p_filter, picture_t *p_pic )
{
- if( ((filter_t*)p_filter->p_owner)->pf_vout_buffer_del )
- ((filter_t*)p_filter->p_owner)->pf_vout_buffer_del( (filter_t*)p_filter->p_owner, p_pic );
+ return filter_DeletePicture( (filter_t*)p_filter->p_owner, p_pic );
}
static int alloc_init( filter_t *p_filter, void *p_data )
const es_format_t *p_size );
static const vlc_fourcc_t pi_allowed_chromas[] = {
- VLC_FOURCC('I','4','2','0'),
- VLC_FOURCC('I','4','2','2'),
- VLC_FOURCC('R','V','3','2'),
- VLC_FOURCC('R','V','2','4'),
+ VLC_CODEC_I420,
+ VLC_CODEC_I422,
+ VLC_CODEC_RGB32,
+ VLC_CODEC_RGB24,
0
};
{
filter_t *p_parent = (filter_t*)p_filter->p_owner;
- return p_parent->pf_vout_buffer_new( p_parent );
+ return filter_NewPicture( p_parent );
}
static void BufferDel( filter_t *p_filter, picture_t *p_pic )
{
filter_t *p_parent = (filter_t*)p_filter->p_owner;
- p_parent->pf_vout_buffer_del( p_parent, p_pic );
+ return filter_DeletePicture( p_parent, p_pic );
}
static int BufferAllocationInit ( filter_t *p_filter, void *p_data )
{
#include <vlc_common.h>
#include <vlc_plugin.h>
#include <vlc_sout.h>
-#include <vlc_vout.h>
#include "vlc_filter.h"
#include "filter_picture.h"
switch(i_chroma)
{
// planar YUV
- case VLC_FOURCC('I','4','4','4'):
- case VLC_FOURCC('I','4','2','2'):
- case VLC_FOURCC('I','4','2','0'):
- case VLC_FOURCC('Y','V','1','2'):
- case VLC_FOURCC('I','Y','U','V'):
- case VLC_FOURCC('I','4','1','1'):
- case VLC_FOURCC('I','4','1','0'):
- case VLC_FOURCC('Y','V','U','9'):
- case VLC_FOURCC('Y','U','V','A'):
+ case VLC_CODEC_I444:
+ case VLC_CODEC_I422:
+ case VLC_CODEC_I420:
+ case VLC_CODEC_YV12:
+ case VLC_CODEC_I411:
+ case VLC_CODEC_I410:
+ case VLC_CODEC_YUVA:
i_skipCount = (i_pitch * i_skipCountPercent) / 100;
for (i_index = i_col/2 + i_skipCount/2;
i_index <= i_visible_pitch/2 + i_col/2 - i_skipCount/2;
}
break;
// packed RGB
- case VLC_FOURCC('R','G','B','2'): // packed by 1
+ case VLC_CODEC_RGB8: // packed by 1
i_skipCount = (i_pitch * i_skipCountPercent) / 100;
for (i_index = i_col/2 + i_skipCount/2;
i_index <= i_visible_pitch/2 + i_col/2 - i_skipCount/2;
if (i_count > i_nonBlackPixel) break;
}
break;
- case VLC_FOURCC('R','V','1','5'): // packed by 2
- case VLC_FOURCC('R','V','1','6'): // packed by 2
+ case VLC_CODEC_RGB15: // packed by 2
+ case VLC_CODEC_RGB16: // packed by 2
i_skipCount = (i_pitch * i_skipCountPercent) / 100;
for (i_index = i_col/2 + i_skipCount/2 -
(i_col/2 + i_skipCount/2) % 2;
if (i_count > i_nonBlackPixel) break;
}
break;
- case VLC_FOURCC('R','V','2','4'): // packed by 3
+ case VLC_CODEC_RGB24: // packed by 3
i_skipCount = (i_pitch * i_skipCountPercent) / 100;
for (i_index = i_col/2 + i_skipCount/2 - (i_col/2 + i_skipCount/2) % 3; i_index <= i_visible_pitch/2 + i_col/2 - i_skipCount/2; i_index+=3)
{
if (i_count > i_nonBlackPixel) break;
}
break;
- case VLC_FOURCC('R','V','3','2'): // packed by 4
+ case VLC_CODEC_RGB32: // packed by 4
i_skipCount = (i_pitch * i_skipCountPercent) / 100;
for (i_index = i_col/2 + i_skipCount/2 - (i_col/2 + i_skipCount/2) % 4; i_index <= i_visible_pitch/2 + i_col/2 - i_skipCount/2; i_index+=4)
{
}
break;
// packed YUV
- case VLC_FOURCC('Y','U','Y','2'): // packed by 2
- case VLC_FOURCC('Y','U','N','V'): // packed by 2
- case VLC_FOURCC('U','Y','V','Y'): // packed by 2
- case VLC_FOURCC('U','Y','N','V'): // packed by 2
- case VLC_FOURCC('Y','4','2','2'): // packed by 2
+ case VLC_CODEC_YUYV: // packed by 2
+ case VLC_CODEC_UYVY: // packed by 2
i_skipCount = (i_pitch * i_skipCountPercent) / 100;
for (i_index = (i_col/2 + i_skipCount/2) -
(i_col/2 + i_skipCount/2) % 2;
/* Determine where black borders are */
switch( p_vout->output.i_chroma )
{
- case VLC_FOURCC('I','4','2','0'):
+ case VLC_CODEC_I420:
/* XXX: Do not laugh ! I know this is very naive. But it's just a
* proof of concept code snippet... */
for( i = i_lines ; i-- ; )
#include <vlc_common.h>
#include <vlc_plugin.h>
-#include <vlc_vout.h>
#include "vlc_filter.h"
#include "filter_picture.h"
}
else
{
- const bool b_i422 = p_vout->render.i_chroma == VLC_FOURCC('I','4','2','2');
+ const bool b_i422 = p_vout->render.i_chroma == VLC_CODEC_I422;
if( strcmp( psz_method, "discard" ) )
msg_Err( p_vout, "no valid deinterlace mode provided, "
"using \"discard\"" );
p_dst->i_sar_den *= 2;
}
- if( p_src->i_chroma == VLC_FOURCC('I','4','2','2') )
+ if( p_src->i_chroma == VLC_CODEC_I422 )
{
switch( p_vout->p_sys->i_mode )
{
case DEINTERLACE_MEAN:
case DEINTERLACE_LINEAR:
case DEINTERLACE_X:
- p_dst->i_chroma = VLC_FOURCC('I','4','2','2');
+ p_dst->i_chroma = VLC_CODEC_I422;
break;
default:
- p_dst->i_chroma = VLC_FOURCC('I','4','2','0');
+ p_dst->i_chroma = VLC_CODEC_I420;
break;
}
}
static bool IsChromaSupported( vlc_fourcc_t i_chroma )
{
- return i_chroma == VLC_FOURCC('I','4','2','0') ||
- i_chroma == VLC_FOURCC('I','Y','U','V') ||
- i_chroma == VLC_FOURCC('Y','V','1','2') ||
- i_chroma == VLC_FOURCC('I','4','2','2');
+ return i_chroma == VLC_CODEC_I420 ||
+ i_chroma == VLC_CODEC_YV12 ||
+ i_chroma == VLC_CODEC_I422;
}
/*****************************************************************************
switch( p_vout->render.i_chroma )
{
- case VLC_FOURCC('I','4','2','0'):
- case VLC_FOURCC('I','Y','U','V'):
- case VLC_FOURCC('Y','V','1','2'):
+ case VLC_CODEC_I420:
+ case VLC_CODEC_YV12:
for( ; p_out < p_out_end ; )
{
}
break;
- case VLC_FOURCC('I','4','2','2'):
+ case VLC_CODEC_I422:
i_increment = 2 * p_pic->p[i_plane].i_pitch;
switch( p_vout->render.i_chroma )
{
- case VLC_FOURCC('I','4','2','0'):
- case VLC_FOURCC('I','Y','U','V'):
- case VLC_FOURCC('Y','V','1','2'):
+ case VLC_CODEC_I420:
+ case VLC_CODEC_YV12:
/* For BOTTOM field we need to add the first line */
if( i_field == 1 )
{
}
break;
- case VLC_FOURCC('I','4','2','2'):
+ case VLC_CODEC_I422:
/* For BOTTOM field we need to add the first line */
if( i_field == 1 )
{
switch( p_vout->render.i_chroma )
{
- case VLC_FOURCC('I','4','2','0'):
- case VLC_FOURCC('I','Y','U','V'):
- case VLC_FOURCC('Y','V','1','2'):
+ case VLC_CODEC_I420:
+ case VLC_CODEC_YV12:
/* First line: simple copy */
vlc_memcpy( p_out, p_in, p_pic->p[i_plane].i_pitch );
p_out += p_outpic->p[i_plane].i_pitch;
}
break;
- case VLC_FOURCC('I','4','2','2'):
+ case VLC_CODEC_I422:
/* First line: simple copy */
vlc_memcpy( p_out, p_in, p_pic->p[i_plane].i_pitch );
p_out += p_outpic->p[i_plane].i_pitch;
(char*)&p_overlay->format.i_chroma, p_overlay->i_x, p_overlay->i_y,
p_overlay->i_alpha );
- if( p_overlay->format.i_chroma == VLC_FOURCC('T','E','X','T') )
+ if( p_overlay->format.i_chroma == VLC_CODEC_TEXT )
{
p_region->psz_text = strdup( p_overlay->data.p_text );
- p_region->p_style = malloc( sizeof(struct text_style_t) );
- if( p_region->p_style )
- *p_region->p_style = p_overlay->fontstyle;
+ p_region->p_style = text_style_Duplicate( p_overlay->p_fontstyle );
}
else
{
bool b_active;
video_format_t format;
- struct text_style_t fontstyle;
+ struct text_style_t *p_fontstyle;
union {
picture_t *p_pic;
char *p_text;
p_ovl->i_x = p_ovl->i_y = 0;
p_ovl->i_alpha = 0xFF;
p_ovl->b_active = false;
- vout_InitFormat( &p_ovl->format, VLC_FOURCC( '\0','\0','\0','\0') , 0, 0,
- VOUT_ASPECT_FACTOR );
- memcpy( &p_ovl->fontstyle, &default_text_style, sizeof(struct text_style_t) );
+ video_format_Setup( &p_ovl->format, VLC_FOURCC( '\0','\0','\0','\0') , 0, 0,
+ VOUT_ASPECT_FACTOR );
+ p_ovl->p_fontstyle = text_style_New();
p_ovl->data.p_text = NULL;
return p_ovl;
{
if( p_ovl->data.p_text != NULL )
free( p_ovl->data.p_text );
+ text_style_Delete( p_ovl->p_fontstyle );
return VLC_SUCCESS;
}
}
i_size = shminfo.shm_segsz;
- if( p_params->fourcc == VLC_FOURCC('T','E','X','T') )
+ if( p_params->fourcc == VLC_CODEC_TEXT )
{
char *p_data;
return VLC_ENOMEM;
}
- vout_InitFormat( &p_ovl->format, VLC_FOURCC('T','E','X','T'),
- 0, 0, 0 );
+ video_format_Setup( &p_ovl->format, VLC_CODEC_TEXT,
+ 0, 0, 0 );
p_data = shmat( p_params->i_shmid, NULL, SHM_RDONLY );
if( p_data == NULL )
if( p_ovl->data.p_pic == NULL )
return VLC_ENOMEM;
- vout_InitFormat( &p_ovl->format, p_params->fourcc,
- p_params->i_width, p_params->i_height,
- VOUT_ASPECT_FACTOR );
+ video_format_Setup( &p_ovl->format, p_params->fourcc,
+ p_params->i_width, p_params->i_height,
+ VOUT_ASPECT_FACTOR );
if( vout_AllocatePicture( p_filter, p_ovl->data.p_pic,
p_ovl->format.i_chroma, p_params->i_width,
p_params->i_height, p_ovl->format.i_aspect ) )
if( p_ovl == NULL )
return VLC_EGENERIC;
- p_results->fontstyle.i_font_alpha = p_ovl->fontstyle.i_font_alpha;
+ p_results->fontstyle.i_font_alpha = p_ovl->p_fontstyle->i_font_alpha;
return VLC_SUCCESS;
}
if( p_ovl == NULL )
return VLC_EGENERIC;
- p_results->fontstyle.i_font_color = p_ovl->fontstyle.i_font_color;
+ p_results->fontstyle.i_font_color = p_ovl->p_fontstyle->i_font_color;
return VLC_SUCCESS;
}
if( p_ovl == NULL )
return VLC_EGENERIC;
- p_results->fontstyle.i_font_size = p_ovl->fontstyle.i_font_size;
+ p_results->fontstyle.i_font_size = p_ovl->p_fontstyle->i_font_size;
return VLC_SUCCESS;
}
if( p_ovl == NULL )
return VLC_EGENERIC;
- p_ovl->fontstyle.i_font_alpha = p_params->fontstyle.i_font_alpha;
+ p_ovl->p_fontstyle->i_font_alpha = p_params->fontstyle.i_font_alpha;
p_sys->b_updated = p_ovl->b_active;
return VLC_SUCCESS;
}
if( p_ovl == NULL )
return VLC_EGENERIC;
- p_ovl->fontstyle.i_font_color = p_params->fontstyle.i_font_color;
+ p_ovl->p_fontstyle->i_font_color = p_params->fontstyle.i_font_color;
p_sys->b_updated = p_ovl->b_active;
return VLC_SUCCESS;
}
if( p_ovl == NULL )
return VLC_EGENERIC;
- p_ovl->fontstyle.i_font_size = p_params->fontstyle.i_font_size;
+ p_ovl->p_fontstyle->i_font_size = p_params->fontstyle.i_font_size;
p_sys->b_updated = p_ovl->b_active;
return VLC_SUCCESS;
}
#include <vlc_common.h>
#include <vlc_plugin.h>
#include <vlc_sout.h>
-#include <vlc_vout.h>
#include "vlc_image.h"
#include "vlc_filter.h"
picture_t *p_old_mask = p_filter->p_sys->p_mask;
memset( &fmt_in, 0, sizeof( video_format_t ) );
memset( &fmt_out, 0, sizeof( video_format_t ) );
- fmt_out.i_chroma = VLC_FOURCC('Y','U','V','A');
+ fmt_out.i_chroma = VLC_CODEC_YUVA;
p_image = image_HandlerCreate( p_filter );
p_filter->p_sys->p_mask =
image_ReadUrl( p_image, psz_filename, &fmt_in, &fmt_out );
switch( p_filter->fmt_in.video.i_chroma )
{
- case VLC_FOURCC('I','4','2','0'):
- case VLC_FOURCC('I','Y','U','V'):
- case VLC_FOURCC('J','4','2','0'):
- case VLC_FOURCC('Y','V','1','2'):
+ case VLC_CODEC_I420:
+ case VLC_CODEC_J420:
+ case VLC_CODEC_YV12:
- case VLC_FOURCC('I','4','2','2'):
- case VLC_FOURCC('J','4','2','2'):
+ case VLC_CODEC_I422:
+ case VLC_CODEC_J422:
break;
default:
int i_width = i_mask_visible_pitch;
const bool b_line_factor = ( i_plane /* U_PLANE or V_PLANE */ &&
- !( p_inpic->format.i_chroma == VLC_FOURCC('I','4','2','2')
- || p_inpic->format.i_chroma == VLC_FOURCC('J','4','2','2') ) );
+ !( p_inpic->format.i_chroma == VLC_CODEC_I422
+ || p_inpic->format.i_chroma == VLC_CODEC_J422 ) );
if( i_plane ) /* U_PLANE or V_PLANE */
{
#include <vlc_common.h>
#include <vlc_plugin.h>
-#include <vlc_vout.h>
#include "vlc_filter.h"
#include "filter_picture.h"
switch( p_filter->fmt_in.video.i_chroma )
{
- case VLC_FOURCC('I','4','2','0'):
- case VLC_FOURCC('I','Y','U','V'):
- case VLC_FOURCC('J','4','2','0'):
- case VLC_FOURCC('Y','V','1','2'):
+ case VLC_CODEC_I420:
+ case VLC_CODEC_J420:
+ case VLC_CODEC_YV12:
- case VLC_FOURCC('I','4','2','2'):
- case VLC_FOURCC('J','4','2','2'):
+ case VLC_CODEC_I422:
+ case VLC_CODEC_J422:
CASE_PACKED_YUV_422
break;
vlc_mutex_lock( &p_sys->lock );
switch( p_pic->format.i_chroma )
{
- case VLC_FOURCC('I','4','2','0'):
- case VLC_FOURCC('I','Y','U','V'):
- case VLC_FOURCC('J','4','2','0'):
- case VLC_FOURCC('Y','V','1','2'):
+ case VLC_CODEC_I420:
+ case VLC_CODEC_J420:
+ case VLC_CODEC_YV12:
switch( p_sys->i_color )
{
case RED:
}
break;
- case VLC_FOURCC('I','4','2','2'):
- case VLC_FOURCC('J','4','2','2'):
+ case VLC_CODEC_I422:
+ case VLC_CODEC_J422:
switch( p_filter->p_sys->i_color )
{
case RED:
/* FIXME: do all of these really have square pixels? */
#define CASE_PLANAR_YUV_SQUARE \
- case VLC_FOURCC('I','4','2','0'): \
- case VLC_FOURCC('I','Y','U','V'): \
- case VLC_FOURCC('J','4','2','0'): \
- case VLC_FOURCC('Y','V','1','2'): \
- case VLC_FOURCC('I','4','1','1'): \
- case VLC_FOURCC('I','4','1','0'): \
- case VLC_FOURCC('Y','V','U','9'): \
- case VLC_FOURCC('I','4','4','4'): \
- case VLC_FOURCC('J','4','4','4'): \
- case VLC_FOURCC('Y','U','V','A'):
+ case VLC_CODEC_I420: \
+ case VLC_CODEC_J420: \
+ case VLC_CODEC_YV12: \
+ case VLC_CODEC_I411: \
+ case VLC_CODEC_I410: \
+ case VLC_CODEC_I444: \
+ case VLC_CODEC_J444: \
+ case VLC_CODEC_YUVA:
#define CASE_PLANAR_YUV_NONSQUARE \
- case VLC_FOURCC('I','4','2','2'): \
- case VLC_FOURCC('J','4','2','2'):
+ case VLC_CODEC_I422: \
+ case VLC_CODEC_J422:
#define CASE_PLANAR_YUV \
CASE_PLANAR_YUV_SQUARE \
CASE_PLANAR_YUV_NONSQUARE \
#define CASE_PACKED_YUV_422 \
- case VLC_FOURCC('U','Y','V','Y'): \
- case VLC_FOURCC('U','Y','N','V'): \
- case VLC_FOURCC('Y','4','2','2'): \
- case VLC_FOURCC('c','y','u','v'): \
- case VLC_FOURCC('Y','U','Y','2'): \
- case VLC_FOURCC('Y','U','N','V'): \
- case VLC_FOURCC('Y','V','Y','U'):
+ case VLC_CODEC_UYVY: \
+ case VLC_CODEC_CYUV: \
+ case VLC_CODEC_YUYV: \
+ case VLC_CODEC_YVYU:
static inline int GetPackedYuvOffsets( vlc_fourcc_t i_chroma,
int *i_y_offset, int *i_u_offset, int *i_v_offset )
{
switch( i_chroma )
{
- case VLC_FOURCC('U','Y','V','Y'):
- case VLC_FOURCC('U','Y','N','V'):
- case VLC_FOURCC('Y','4','2','2'):
- case VLC_FOURCC('c','y','u','v'): /* <-- FIXME: reverted, whatever that means */
+ case VLC_CODEC_UYVY:
+ case VLC_CODEC_CYUV: /* <-- FIXME: reverted, whatever that means */
/* UYVY */
*i_y_offset = 1;
*i_u_offset = 0;
*i_v_offset = 2;
return VLC_SUCCESS;
- case VLC_FOURCC('Y','U','Y','2'):
- case VLC_FOURCC('Y','U','N','V'):
+ case VLC_CODEC_YUYV:
/* YUYV */
*i_y_offset = 0;
*i_u_offset = 1;
*i_v_offset = 3;
return VLC_SUCCESS;
- case VLC_FOURCC('Y','V','Y','U'):
+ case VLC_CODEC_YVYU:
/* YVYU */
*i_y_offset = 0;
*i_u_offset = 3;
#include <vlc_common.h>
#include <vlc_plugin.h>
-#include <vlc_vout.h>
#include "vlc_filter.h"
#include "filter_picture.h"
{
filter_t *p_filter = (filter_t *)p_this;
- if( p_filter->fmt_in.video.i_chroma != VLC_FOURCC('I','4','2','0')
- && p_filter->fmt_in.video.i_chroma != VLC_FOURCC('I','Y','U','V')
- && p_filter->fmt_in.video.i_chroma != VLC_FOURCC('J','4','2','0')
- && p_filter->fmt_in.video.i_chroma != VLC_FOURCC('Y','V','1','2')
+ if( p_filter->fmt_in.video.i_chroma != VLC_CODEC_I420
+ && p_filter->fmt_in.video.i_chroma != VLC_CODEC_J420
+ && p_filter->fmt_in.video.i_chroma != VLC_CODEC_YV12
- && p_filter->fmt_in.video.i_chroma != VLC_FOURCC('I','4','2','2')
- && p_filter->fmt_in.video.i_chroma != VLC_FOURCC('J','4','2','2')
+ && p_filter->fmt_in.video.i_chroma != VLC_CODEC_I422
+ && p_filter->fmt_in.video.i_chroma != VLC_CODEC_J422
)
{
/* We only want planar YUV 4:2:0 or 4:2:2 */
#include <vlc_common.h>
#include <vlc_plugin.h>
#include <vlc_sout.h>
-#include <vlc_vout.h>
#include "vlc_filter.h"
#include "filter_picture.h"
#include <vlc_common.h>
#include <vlc_plugin.h>
-#include <vlc_vout.h>
#include "vlc_filter.h"
#include "filter_picture.h"
#include <vlc_common.h>
#include <vlc_plugin.h>
-#include <vlc_vout.h>
#include "vlc_filter.h"
#include "filter_picture.h"
vlc_module_end ()
/*****************************************************************************
- * vout_sys_t: Invert video output method descriptor
+ * filter_sys_t: Invert video output method descriptor
*****************************************************************************
* This structure is part of the video output thread descriptor.
* It describes the Invert specific properties of an output thread.
return NULL;
}
- if( p_pic->format.i_chroma == VLC_FOURCC('Y','U','V','A') )
+ if( p_pic->format.i_chroma == VLC_CODEC_YUVA )
{
/* We don't want to invert the alpha plane */
i_planes = p_pic->i_planes - 1;
memset( &fmt_in, 0, sizeof(video_format_t) );
memset( &fmt_out, 0, sizeof(video_format_t) );
- fmt_out.i_chroma = VLC_FOURCC('Y','U','V','A');
+ fmt_out.i_chroma = VLC_CODEC_YUVA;
p_image = image_HandlerCreate( p_this );
p_pic = image_ReadUrl( p_image, psz_filename, &fmt_in, &fmt_out );
image_HandlerDelete( p_image );
p_sys->p_blend->fmt_in.video.i_y_offset = 0;
p_sys->p_blend->fmt_out.video.i_aspect = p_vout->render.i_aspect;
p_sys->p_blend->fmt_out.video.i_chroma = p_vout->output.i_chroma;
- p_sys->p_blend->fmt_in.video.i_chroma = VLC_FOURCC('Y','U','V','A');
+ p_sys->p_blend->fmt_in.video.i_chroma = VLC_CODEC_YUVA;
p_sys->p_blend->fmt_in.video.i_aspect = VOUT_ASPECT_FACTOR;
p_sys->i_width =
p_sys->p_blend->fmt_in.video.i_width =
/* Create new SPU region */
memset( &fmt, 0, sizeof(video_format_t) );
- fmt.i_chroma = VLC_FOURCC('Y','U','V','A');
+ fmt.i_chroma = VLC_CODEC_YUVA;
fmt.i_aspect = VOUT_ASPECT_FACTOR;
fmt.i_sar_num = fmt.i_sar_den = 1;
fmt.i_width = fmt.i_visible_width = p_pic->p[Y_PLANE].i_visible_pitch;
switch( p_vout->fmt_in.i_chroma )
{
CASE_PLANAR_YUV
- case VLC_FOURCC('G','R','E','Y'):
+ case VLC_CODEC_GREY:
break;
default:
msg_Err( p_vout, "Unsupported chroma" );
#include <vlc_common.h>
#include <vlc_plugin.h>
-#include <vlc_vout.h>
#include "vlc_filter.h"
#include "vlc_block.h"
return VLC_ENOMEM;
vlc_mutex_init( &p_sys->lock );
- p_sys->p_style = malloc( sizeof( text_style_t ) );
- memcpy( p_sys->p_style, &default_text_style, sizeof( text_style_t ) );
+ p_sys->p_style = text_style_New();
config_ChainParse( p_filter, CFG_PREFIX, ppsz_filter_options,
p_filter->p_cfg );
DEL_VAR( "marq-size" );
vlc_mutex_destroy( &p_sys->lock );
- free( p_sys->p_style );
+ text_style_Delete( p_sys->p_style );
free( p_sys->psz_marquee );
free( p_sys );
}
goto out;
memset( &fmt, 0, sizeof(video_format_t) );
- fmt.i_chroma = VLC_FOURCC('T','E','X','T');
+ fmt.i_chroma = VLC_CODEC_TEXT;
fmt.i_aspect = 0;
fmt.i_width = fmt.i_height = 0;
fmt.i_x_offset = 0;
p_spu->p_region->i_x = p_sys->i_xoff;
p_spu->p_region->i_y = p_sys->i_yoff;
- p_spu->p_region->p_style = p_sys->p_style;
+ p_spu->p_region->p_style = text_style_Duplicate( p_sys->p_style );
out:
vlc_mutex_unlock( &p_sys->lock );
#include <vlc_common.h>
#include <vlc_plugin.h>
-#include <vlc_vout.h>
#include <math.h>
#include <limits.h> /* INT_MAX */
fmt_in.i_height = p_es->p_picture->format.i_height;
fmt_in.i_width = p_es->p_picture->format.i_width;
- if( fmt_in.i_chroma == VLC_FOURCC('Y','U','V','A') ||
- fmt_in.i_chroma == VLC_FOURCC('R','G','B','A') )
- fmt_out.i_chroma = VLC_FOURCC('Y','U','V','A');
+ if( fmt_in.i_chroma == VLC_CODEC_YUVA ||
+ fmt_in.i_chroma == VLC_CODEC_RGBA )
+ fmt_out.i_chroma = VLC_CODEC_YUVA;
else
- fmt_out.i_chroma = VLC_FOURCC('I','4','2','0');
+ fmt_out.i_chroma = VLC_CODEC_I420;
fmt_out.i_width = col_inner_width;
fmt_out.i_height = row_inner_height;
#include <vlc_common.h>
#include <vlc_plugin.h>
#include <vlc_sout.h>
-#include <vlc_vout.h>
#include <vlc_filter.h>
#include "filter_picture.h"
#include <vlc_common.h>
#include <vlc_plugin.h>
#include <vlc_sout.h>
-#include <vlc_vout.h>
#include "vlc_filter.h"
#include "filter_picture.h"
int i_chroma_dy;
switch( p_inpic->format.i_chroma )
{
- case VLC_FOURCC('I','4','2','0'):
- case VLC_FOURCC('I','Y','U','V'):
- case VLC_FOURCC('J','4','2','0'):
- case VLC_FOURCC('Y','V','1','2'):
+ case VLC_CODEC_I420:
+ case VLC_CODEC_J420:
+ case VLC_CODEC_YV12:
i_chroma_dx = 2;
i_chroma_dy = 2;
break;
- case VLC_FOURCC('I','4','2','2'):
- case VLC_FOURCC('J','4','2','2'):
+ case VLC_CODEC_I422:
+ case VLC_CODEC_J422:
i_chroma_dx = 2;
i_chroma_dy = 1;
break;
#include <vlc_common.h>
#include <vlc_plugin.h>
-#include <vlc_vout.h>
#include "vlc_filter.h"
#include "filter_picture.h"
vlc_module_end ()
/*****************************************************************************
- * vout_sys_t: Distort video output method descriptor
+ * filter_sys_t: Distort video output method descriptor
*****************************************************************************
* This structure is part of the video output thread descriptor.
* It describes the Distort specific properties of an output thread.
msg_Err( p_filter, "no image" );
return NULL;
}
- if ((p_pic->format.i_chroma != VLC_FOURCC('I','4','2','0')))
+ if ((p_pic->format.i_chroma != VLC_CODEC_I420))
{
msg_Err( p_filter, "wrong chroma - use I420" );
return NULL;
fmt.i_y_offset = fmt.i_y_offset * p_sys->f_scale;
if (p_sys->i_internal_chroma == GREY)
- fmt.i_chroma = VLC_FOURCC('I','4','2','0');
+ fmt.i_chroma = VLC_CODEC_I420;
else if (p_sys->i_internal_chroma == RGB)
- fmt.i_chroma = VLC_FOURCC('R','V','3','2');
+ fmt.i_chroma = VLC_CODEC_RGB32;
}
/* Load the internal opencv filter */
//rgb2 gives 3 separate planes, this gives 1 interleaved plane
//rv24 gives is about 20% faster but gives r&b the wrong way round
//and I cant think of an easy way to fix this
- fmt_out.i_chroma = VLC_FOURCC('R','V','3','2');
+ fmt_out.i_chroma = VLC_CODEC_RGB32;
}
else if (p_sys->i_internal_chroma == GREY)
{
//take the I (gray) plane (video seems to commonly be in this fmt so usually the
//conversion does nothing)
- fmt_out.i_chroma = VLC_FOURCC('I','4','2','0');
+ fmt_out.i_chroma = VLC_CODEC_I420;
}
//convert from the input image
MouseEvent, p_sys );
}
- es_format_Init( &p_filter->fmt_out, SPU_ES, VLC_FOURCC( 's','p','u',' ' ) );
+ es_format_Init( &p_filter->fmt_out, SPU_ES, VLC_CODEC_SPU );
p_filter->fmt_out.i_priority = 0;
return VLC_SUCCESS;
/* Create new SPU region */
memset( &fmt, 0, sizeof(video_format_t) );
- fmt.i_chroma = VLC_FOURCC( 'T','E','X','T' );
+ fmt.i_chroma = VLC_CODEC_TEXT;
fmt.i_aspect = VOUT_ASPECT_FACTOR;
fmt.i_sar_num = fmt.i_sar_den = 1;
fmt.i_width = fmt.i_visible_width = i_width;
/* Create new SPU region */
memset( &fmt, 0, sizeof(video_format_t) );
- fmt.i_chroma = (p_pic == NULL) ? VLC_FOURCC('Y','U','V','P') : VLC_FOURCC('Y','U','V','A');
+ fmt.i_chroma = (p_pic == NULL) ? VLC_CODEC_YUVP : VLC_CODEC_YUVA;
fmt.i_aspect = VOUT_ASPECT_FACTOR;
fmt.i_sar_num = fmt.i_sar_den = 1;
fmt.i_width = fmt.i_visible_width = i_width;
fmt.i_height = fmt.i_visible_height = i_height;
fmt.i_x_offset = fmt.i_y_offset = 0;
- if( fmt.i_chroma == VLC_FOURCC('Y','U','V','P') )
+ if( fmt.i_chroma == VLC_CODEC_YUVP )
{
fmt.p_palette = &palette;
fmt.p_palette->i_entries = 0;
p_vout->pf_manage = NULL;
/* Color Format not supported
// Planar Y, packed UV
-case VLC_FOURCC('Y','M','G','A'):
+case VLC_CODEC_YMGA:
// Packed YUV 4:2:2, U:Y:V:Y, interlaced
case VLC_FOURCC('I','U','Y','V'): // packed by 2
// Packed YUV 2:1:1, Y:U:Y:V
-case VLC_FOURCC('Y','2','1','1'): // packed by 4
+case VLC_CODEC_Y211: // packed by 4
// Packed YUV Reverted
-case VLC_FOURCC('c','y','u','v'): // packed by 2
+case VLC_CODEC_CYUV: // packed by 2
*/
switch (p_vout->render.i_chroma)
{
// planar YUV
- case VLC_FOURCC('I','4','4','4'):
- case VLC_FOURCC('I','4','2','2'):
- case VLC_FOURCC('I','4','2','0'):
- case VLC_FOURCC('Y','V','1','2'):
- case VLC_FOURCC('I','Y','U','V'):
- case VLC_FOURCC('I','4','1','1'):
- case VLC_FOURCC('I','4','1','0'):
- case VLC_FOURCC('Y','V','U','9'):
- case VLC_FOURCC('Y','U','V','A'):
+ case VLC_CODEC_I444:
+ case VLC_CODEC_I422:
+ case VLC_CODEC_I420:
+ case VLC_CODEC_YV12:
+ case VLC_CODEC_I411:
+ case VLC_CODEC_I410:
+ case VLC_CODEC_YUVA:
p_vout->pf_render = RenderPlanarYUV;
break;
// packed RGB
- case VLC_FOURCC('R','G','B','2'): // packed by 1
- case VLC_FOURCC('R','V','1','5'): // packed by 2
- case VLC_FOURCC('R','V','1','6'): // packed by 2
- case VLC_FOURCC('R','V','2','4'): // packed by 3
- case VLC_FOURCC('R','V','3','2'): // packed by 4
+ case VLC_CODEC_RGB8: // packed by 1
+ case VLC_CODEC_RGB15: // packed by 2
+ case VLC_CODEC_RGB16: // packed by 2
+ case VLC_CODEC_RGB24: // packed by 3
+ case VLC_CODEC_RGB32: // packed by 4
p_vout->pf_render = RenderPackedRGB;
break;
#ifdef PACKED_YUV
// packed YUV
- case VLC_FOURCC('Y','U','Y','2'): // packed by 2
- case VLC_FOURCC('Y','U','N','V'): // packed by 2
- case VLC_FOURCC('U','Y','V','Y'): // packed by 2
- case VLC_FOURCC('U','Y','N','V'): // packed by 2
- case VLC_FOURCC('Y','4','2','2'): // packed by 2
+ case VLC_CODEC_YUYV: // packed by 2
+ case VLC_CODEC_UYVY: // packed by 2
p_vout->pf_render = RenderPackedYUV;
break;
#endif
switch (p_vout->render.i_chroma)
{
// planar YVU
- case VLC_FOURCC('Y','V','1','2'):
- case VLC_FOURCC('Y','V','U','9'):
+ case VLC_CODEC_YV12:
// packed UYV
- case VLC_FOURCC('U','Y','V','Y'): // packed by 2
- case VLC_FOURCC('U','Y','N','V'): // packed by 2
- case VLC_FOURCC('Y','4','2','2'): // packed by 2
- // case VLC_FOURCC('c','y','u','v'): // packed by 2
+ case VLC_CODEC_UYVY: // packed by 2
+ // case VLC_CODEC_CYUV: // packed by 2
VLC_XCHG( float, p_vout->p_sys->f_gamma[1], p_vout->p_sys->f_gamma[2] );
VLC_XCHG( float, f_BlackCrush[1], f_BlackCrush[2] );
VLC_XCHG( float, f_WhiteCrush[1], f_WhiteCrush[2] );
VLC_XCHG( float, f_BlackLevel[1], f_BlackLevel[2] );
VLC_XCHG( float, f_WhiteLevel[1], f_WhiteLevel[2] );
// planar YUV
- case VLC_FOURCC('I','4','4','4'):
- case VLC_FOURCC('I','4','2','2'):
- case VLC_FOURCC('I','4','2','0'):
- case VLC_FOURCC('I','4','1','1'):
- case VLC_FOURCC('I','4','1','0'):
- case VLC_FOURCC('I','Y','U','V'):
- case VLC_FOURCC('Y','U','V','A'):
+ case VLC_CODEC_I444:
+ case VLC_CODEC_I422:
+ case VLC_CODEC_I420:
+ case VLC_CODEC_I411:
+ case VLC_CODEC_I410:
+ case VLC_CODEC_YUVA:
// packed YUV
- case VLC_FOURCC('Y','U','Y','2'): // packed by 2
- case VLC_FOURCC('Y','U','N','V'): // packed by 2
+ case VLC_CODEC_YUYV: // packed by 2
for (i_index = 0; i_index < 256; i_index++)
for (i_index2 = 0; i_index2 <= ACCURACY; i_index2++)
for (i_plane = 0; i_plane < VOUT_MAX_PLANES; i_plane++)
}
break;
// packed RGB
- case VLC_FOURCC('R','G','B','2'): // packed by 1
- case VLC_FOURCC('R','V','1','5'): // packed by 2
- case VLC_FOURCC('R','V','1','6'): // packed by 2
- case VLC_FOURCC('R','V','2','4'): // packed by 3
- case VLC_FOURCC('R','V','3','2'): // packed by 4
+ case VLC_CODEC_RGB8: // packed by 1
+ case VLC_CODEC_RGB15: // packed by 2
+ case VLC_CODEC_RGB16: // packed by 2
+ case VLC_CODEC_RGB24: // packed by 3
+ case VLC_CODEC_RGB32: // packed by 4
for (i_index = 0; i_index < 256; i_index++)
for (i_index2 = 0; i_index2 <= ACCURACY; i_index2++)
for (i_plane = 0; i_plane < VOUT_MAX_PLANES; i_plane++)
#endif
switch (p_vout->output.i_chroma)
{
- case VLC_FOURCC('Y','U','Y','2'): // packed by 2
- case VLC_FOURCC('Y','U','N','V'): // packed by 2
+ case VLC_CODEC_YUYV: // packed by 2
Denom = F2(length / p_pic->p->i_pixel_pitch);
a_2 = p_vout->p_sys->a_2 * (ACCURACY / 100);
a_1 = p_vout->p_sys->a_1 * 2 * p_vout->p_sys->i_halfLength * (ACCURACY / 100);
p_vout->p_sys->cstYUV[i_col][1][i_index + 1] = p_vout->p_sys->cstYUV[i_col][1][i_index];
}
break;
- case VLC_FOURCC('U','Y','V','Y'): // packed by 2
- case VLC_FOURCC('U','Y','N','V'): // packed by 2
- case VLC_FOURCC('Y','4','2','2'): // packed by 2
+ case VLC_CODEC_UYVY: // packed by 2
Denom = F2(length / p_pic->p->i_pixel_pitch);
a_2 = p_vout->p_sys->a_2 * (ACCURACY / 100);
a_1 = p_vout->p_sys->a_1 * 2 * p_vout->p_sys->i_halfLength * (ACCURACY / 100);
#endif
switch (p_vout->output.i_chroma)
{
- case VLC_FOURCC('Y','U','Y','2'): // packed by 2
- case VLC_FOURCC('Y','U','N','V'): // packed by 2
+ case VLC_CODEC_YUYV: // packed by 2
Denom = F2(length / p_pic->p->i_pixel_pitch);
a_2 = p_vout->p_sys->a_2 * (ACCURACY / 100);
a_1 = p_vout->p_sys->a_1 * 2 * p_vout->p_sys->i_halfHeight * (ACCURACY / 100);
p_vout->p_sys->cstYUV2[i_row][1][i_index + 1] = p_vout->p_sys->cstYUV2[i_row][1][i_index];
}
break;
- case VLC_FOURCC('U','Y','V','Y'): // packed by 2
- case VLC_FOURCC('U','Y','N','V'): // packed by 2
- case VLC_FOURCC('Y','4','2','2'): // packed by 2
+ case VLC_CODEC_UYVY: // packed by 2
Denom = F2(length / p_pic->p->i_pixel_pitch);
a_2 = p_vout->p_sys->a_2 * (ACCURACY / 100);
a_1 = p_vout->p_sys->a_1 * 2 * p_vout->p_sys->i_halfHeight * (ACCURACY / 100);
#include <vlc_common.h>
#include <vlc_plugin.h>
-#include <vlc_vout.h>
+#include <vlc_filter.h>
#include "filter_picture.h"
switch( p_filter->fmt_in.video.i_chroma )
{
- case VLC_FOURCC('I','4','4','4'):
- case VLC_FOURCC('J','4','4','4'):
- /* case VLC_FOURCC('Y','U','V','A'): FIXME Should work but alpha plane needs to be copied manually and I'm kind of feeling too lazy to write the code to do that ATM (i_pitch vs i_visible_pitch...). */
+ case VLC_CODEC_I444:
+ case VLC_CODEC_J444:
+ /* case VLC_CODEC_YUVA: FIXME Should work but alpha plane needs to be copied manually and I'm kind of feeling too lazy to write the code to do that ATM (i_pitch vs i_visible_pitch...). */
i_flags |= PP_FORMAT_444;
break;
- case VLC_FOURCC('I','4','2','2'):
- case VLC_FOURCC('J','4','2','2'):
+ case VLC_CODEC_I422:
+ case VLC_CODEC_J422:
i_flags |= PP_FORMAT_422;
break;
- case VLC_FOURCC('I','4','1','1'):
+ case VLC_CODEC_I411:
i_flags |= PP_FORMAT_411;
break;
- case VLC_FOURCC('I','4','2','0'):
- case VLC_FOURCC('I','Y','U','V'):
- case VLC_FOURCC('J','4','2','0'):
- case VLC_FOURCC('Y','V','1','2'):
+ case VLC_CODEC_I420:
+ case VLC_CODEC_J420:
+ case VLC_CODEC_YV12:
i_flags |= PP_FORMAT_420;
break;
default:
vlc_module_end ()
/*****************************************************************************
- * vout_sys_t: Distort video output method descriptor
+ * filter_sys_t: Distort video output method descriptor
*****************************************************************************
* This structure is part of the video output thread descriptor.
* It describes the Distort specific properties of an output thread.
KeyEvent, p_this );
}
- es_format_Init( &p_filter->fmt_out, SPU_ES, VLC_FOURCC( 's','p','u',' ' ) );
+ es_format_Init( &p_filter->fmt_out, SPU_ES, VLC_CODEC_SPU );
p_filter->fmt_out.i_priority = 0;
vlc_gcrypt_init();
/* Create an empty picture for VNC the data */
vlc_mutex_lock( &p_sys->lock );
- p_sys->p_pic = picture_New( VLC_FOURCC('Y','U','V','A'),
+ p_sys->p_pic = picture_New( VLC_CODEC_YUVA,
p_sys->i_vnc_width, p_sys->i_vnc_height, VOUT_ASPECT_FACTOR );
if( !p_sys->p_pic )
{
/* Create new SPU region */
memset( &fmt, 0, sizeof(video_format_t) );
- fmt.i_chroma = VLC_FOURCC('Y','U','V','A');
+ fmt.i_chroma = VLC_CODEC_YUVA;
fmt.i_aspect = VOUT_ASPECT_FACTOR;
fmt.i_sar_num = fmt.i_sar_den = 1;
fmt.i_width = fmt.i_visible_width = p_pic->p[Y_PLANE].i_visible_pitch;
#include <vlc_common.h>
#include <vlc_plugin.h>
-#include <vlc_vout.h>
#include <vlc_filter.h>
#include "filter_picture.h"
vlc_module_end ()
/*****************************************************************************
- * vout_sys_t: Distort video output method descriptor
+ * filter_sys_t: Distort video output method descriptor
*****************************************************************************
* This structure is part of the video output thread descriptor.
* It describes the Distort specific properties of an output thread.
#include <vlc_common.h>
#include <vlc_plugin.h>
-#include <vlc_vout.h>
#include "vlc_filter.h"
#include "filter_picture.h"
#include <vlc_common.h>
#include <vlc_plugin.h>
-#include <vlc_vout.h>
#include "vlc_filter.h"
#include "vlc_block.h"
}
p_sys->psz_marquee[p_sys->i_length] = '\0';
- p_sys->p_style = malloc( sizeof( text_style_t ));
+ p_sys->p_style = text_style_New();
if( p_sys->p_style == NULL )
{
free( p_sys->psz_marquee );
free( p_sys );
return VLC_ENOMEM;
}
- memcpy( p_sys->p_style, &default_text_style, sizeof( text_style_t ));
p_sys->i_xoff = var_CreateGetInteger( p_filter, CFG_PREFIX "x" );
p_sys->i_yoff = var_CreateGetInteger( p_filter, CFG_PREFIX "y" );
if( FetchRSS( p_filter ) )
{
msg_Err( p_filter, "failed while fetching RSS ... too bad" );
- free( p_sys->p_style );
+ text_style_Delete( p_sys->p_style );
free( p_sys->psz_marquee );
vlc_mutex_unlock( &p_sys->lock );
vlc_mutex_destroy( &p_sys->lock );
if( p_sys->i_feeds == 0 )
{
- free( p_sys->p_style );
+ text_style_Delete( p_sys->p_style );
free( p_sys->psz_marquee );
vlc_mutex_unlock( &p_sys->lock );
vlc_mutex_destroy( &p_sys->lock );
{
if( p_sys->p_feeds[i_feed].i_items == 0 )
{
- free( p_sys->p_style );
+ text_style_Delete( p_sys->p_style );
free( p_sys->psz_marquee );
FreeRSS( p_filter );
vlc_mutex_unlock( &p_sys->lock );
vlc_mutex_lock( &p_sys->lock );
- free( p_sys->p_style );
+ text_style_Delete( p_sys->p_style );
free( p_sys->psz_marquee );
free( p_sys->psz_urls );
FreeRSS( p_filter );
return NULL;
}
- fmt.i_chroma = VLC_FOURCC('T','E','X','T');
+ fmt.i_chroma = VLC_CODEC_TEXT;
p_spu->p_region = subpicture_region_New( &fmt );
if( !p_spu->p_region )
p_spu->b_absolute = false;
}
- p_spu->p_region->p_style = p_sys->p_style;
+ p_spu->p_region->p_style = text_style_Duplicate( p_sys->p_style );
if( p_feed->p_pic )
{
memset( &fmt_out, 0, sizeof(video_format_t) );
- fmt_out.i_chroma = VLC_FOURCC('Y','U','V','A');
+ fmt_out.i_chroma = VLC_CODEC_YUVA;
fmt_out.i_aspect = VOUT_ASPECT_FACTOR;
fmt_out.i_sar_num = fmt_out.i_sar_den = 1;
fmt_out.i_width =
memset( &fmt_in, 0, sizeof(video_format_t) );
memset( &fmt_out, 0, sizeof(video_format_t) );
- fmt_out.i_chroma = VLC_FOURCC('Y','U','V','A');
+ fmt_out.i_chroma = VLC_CODEC_YUVA;
p_orig = image_ReadUrl( p_handler, psz_url, &fmt_in, &fmt_out );
if( !p_orig )
else if( p_sys->p_style->i_font_size > 0 )
{
- fmt_in.i_chroma = VLC_FOURCC('Y','U','V','A');
+ fmt_in.i_chroma = VLC_CODEC_YUVA;
fmt_in.i_height = p_orig->p[Y_PLANE].i_visible_lines;
fmt_in.i_width = p_orig->p[Y_PLANE].i_visible_pitch;
fmt_out.i_width = p_orig->p[Y_PLANE].i_visible_pitch
#include <vlc_common.h>
#include <vlc_plugin.h>
-#include <vlc_vout.h>
#include "vlc_filter.h"
/*****************************************************************************
filter_sys_t *p_sys;
/* XXX Only support RV24 -> RV32 conversion */
- if( p_filter->fmt_in.video.i_chroma != VLC_FOURCC('R','V','2','4') ||
- (p_filter->fmt_out.video.i_chroma != VLC_FOURCC('R', 'V', '3', '2') &&
- p_filter->fmt_out.video.i_chroma != VLC_FOURCC('R', 'G', 'B', 'A')) )
+ if( p_filter->fmt_in.video.i_chroma != VLC_CODEC_RGB24 ||
+ (p_filter->fmt_out.video.i_chroma != VLC_CODEC_RGB32 &&
+ p_filter->fmt_out.video.i_chroma != VLC_CODEC_RGBA) )
{
return VLC_EGENERIC;
}
#include <vlc_common.h>
#include <vlc_plugin.h>
-#include <vlc_vout.h>
#include "vlc_filter.h"
/*****************************************************************************
filter_t *p_filter = (filter_t*)p_this;
filter_sys_t *p_sys;
- if( ( p_filter->fmt_in.video.i_chroma != VLC_FOURCC('Y','U','V','P') &&
- p_filter->fmt_in.video.i_chroma != VLC_FOURCC('Y','U','V','A') &&
- p_filter->fmt_in.video.i_chroma != VLC_FOURCC('I','4','2','0') &&
- p_filter->fmt_in.video.i_chroma != VLC_FOURCC('Y','V','1','2') &&
- p_filter->fmt_in.video.i_chroma != VLC_FOURCC('R','V','3','2') &&
- p_filter->fmt_in.video.i_chroma != VLC_FOURCC('R','G','B','A') ) ||
+ if( ( p_filter->fmt_in.video.i_chroma != VLC_CODEC_YUVP &&
+ p_filter->fmt_in.video.i_chroma != VLC_CODEC_YUVA &&
+ p_filter->fmt_in.video.i_chroma != VLC_CODEC_I420 &&
+ p_filter->fmt_in.video.i_chroma != VLC_CODEC_YV12 &&
+ p_filter->fmt_in.video.i_chroma != VLC_CODEC_RGB32 &&
+ p_filter->fmt_in.video.i_chroma != VLC_CODEC_RGBA ) ||
p_filter->fmt_in.video.i_chroma != p_filter->fmt_out.video.i_chroma )
{
return VLC_EGENERIC;
return NULL;
}
- if( p_filter->fmt_in.video.i_chroma != VLC_FOURCC('R','G','B','A') &&
- p_filter->fmt_in.video.i_chroma != VLC_FOURCC('R','V','3','2') )
+ if( p_filter->fmt_in.video.i_chroma != VLC_CODEC_RGBA &&
+ p_filter->fmt_in.video.i_chroma != VLC_CODEC_RGB32 )
{
for( i_plane = 0; i_plane < p_pic_dst->i_planes; i_plane++ )
{
#include <vlc_common.h>
#include <vlc_plugin.h>
-#include <vlc_vout.h>
#include <vlc_block.h>
#include "vlc_filter.h"
#include <vlc_common.h>
#include <vlc_plugin.h>
-#include <vlc_vout.h>
#include "vlc_filter.h"
#include "filter_picture.h"
#include <vlc_common.h>
#include <vlc_plugin.h>
-#include <vlc_vout.h>
#include <vlc_filter.h>
#ifdef HAVE_LIBSWSCALE_SWSCALE_H
if( p_fmti->i_chroma == p_fmto->i_chroma )
{
- if( p_fmti->i_chroma == VLC_FOURCC( 'Y', 'U', 'V', 'P' ) && ALLOW_YUVP )
+ if( p_fmti->i_chroma == VLC_CODEC_YUVP && ALLOW_YUVP )
{
i_fmti = i_fmto = PIX_FMT_GRAY8;
i_sws_flags = SWS_POINT;
}
}
- if( p_fmti->i_chroma == VLC_FOURCC( 'Y', 'U', 'V', 'A' ) )
+ if( p_fmti->i_chroma == VLC_CODEC_YUVA )
{
i_fmti = PIX_FMT_YUV444P;
b_has_ai = true;
}
- else if( p_fmti->i_chroma == VLC_FOURCC( 'R', 'G', 'B', 'A' ) )
+ else if( p_fmti->i_chroma == VLC_CODEC_RGBA )
{
i_fmti = PIX_FMT_BGR32;
b_has_ai = true;
}
- if( p_fmto->i_chroma == VLC_FOURCC( 'Y', 'U', 'V', 'A' ) )
+ if( p_fmto->i_chroma == VLC_CODEC_YUVA )
{
i_fmto = PIX_FMT_YUV444P;
b_has_ao = true;
}
- else if( p_fmto->i_chroma == VLC_FOURCC( 'R', 'G', 'B', 'A' ) )
+ else if( p_fmto->i_chroma == VLC_CODEC_RGBA )
{
i_fmto = PIX_FMT_BGR32;
b_has_ao = true;
}
if( p_sys->ctxA )
{
- p_sys->p_src_a = picture_New( VLC_FOURCC( 'G', 'R', 'E', 'Y' ), i_fmti_width, p_fmti->i_height, 0 );
- p_sys->p_dst_a = picture_New( VLC_FOURCC( 'G', 'R', 'E', 'Y' ), i_fmto_width, p_fmto->i_height, 0 );
+ p_sys->p_src_a = picture_New( VLC_CODEC_GREY, i_fmti_width, p_fmti->i_height, 0 );
+ p_sys->p_dst_a = picture_New( VLC_CODEC_GREY, i_fmto_width, p_fmto->i_height, 0 );
}
if( p_sys->i_extend_factor != 1 )
{
uint8_t *dst[3]; int dst_stride[3];
GetPixels( src, src_stride, p_src, i_plane_start, i_plane_count );
- if( p_filter->fmt_in.video.i_chroma == VLC_FOURCC( 'R', 'G', 'B', 'P' ) )
+ if( p_filter->fmt_in.video.i_chroma == VLC_CODEC_RGBP )
{
memset( palette, 0, sizeof(palette) );
if( p_filter->fmt_in.video.p_palette )
if( p_sys->ctxA )
{
/* We extract the A plane to rescale it, and then we reinject it. */
- if( p_fmti->i_chroma == VLC_FOURCC( 'R', 'G', 'B', 'A' ) )
+ if( p_fmti->i_chroma == VLC_CODEC_RGBA )
ExtractA( p_sys->p_src_a, p_src, p_fmti->i_width * p_sys->i_extend_factor, p_fmti->i_height );
else
plane_CopyPixels( p_sys->p_src_a->p, p_src->p+A_PLANE );
Convert( p_filter, p_sys->ctxA, p_sys->p_dst_a, p_sys->p_src_a, p_fmti->i_height, 0, 1 );
- if( p_fmto->i_chroma == VLC_FOURCC( 'R', 'G', 'B', 'A' ) )
+ if( p_fmto->i_chroma == VLC_CODEC_RGBA )
InjectA( p_dst, p_sys->p_dst_a, p_fmto->i_width * p_sys->i_extend_factor, p_fmto->i_height );
else
plane_CopyPixels( p_dst->p+A_PLANE, p_sys->p_dst_a->p );
else if( p_sys->b_add_a )
{
/* We inject a complete opaque alpha plane */
- if( p_fmto->i_chroma == VLC_FOURCC( 'R', 'G', 'B', 'A' ) )
+ if( p_fmto->i_chroma == VLC_CODEC_RGBA )
FillA( &p_dst->p[0], OFFSET_A );
else
FillA( &p_dst->p[A_PLANE], 0 );
#include <vlc_common.h>
#include <vlc_plugin.h>
-#include <vlc_vout.h>
#include <vlc_filter.h>
#include "libswscale_nokia770/arm_jit_swscale.h"
return VLC_SUCCESS;
}
- if( ( p_filter->fmt_in.video.i_chroma != VLC_FOURCC('I','4','2','0') &&
- p_filter->fmt_in.video.i_chroma != VLC_FOURCC('I','Y','U','V') &&
- p_filter->fmt_in.video.i_chroma != VLC_FOURCC('Y','V','1','2') ) ||
+ if( ( p_filter->fmt_in.video.i_chroma != VLC_CODEC_I420 &&
+ p_filter->fmt_in.video.i_chroma != VLC_CODEC_YV12 ) ||
p_filter->fmt_out.video.i_chroma != VLC_FOURCC('Y','4','2','0') )
{
msg_Err( p_filter, "format not supported" );
return NULL;
/* Request output picture */
- p_pic_dst = p_filter->pf_vout_buffer_new( p_filter );
+ p_pic_dst = filter_NewPicture( p_filter );
if( !p_pic_dst )
{
msg_Warn( p_filter, "can't get output picture" );
switch( p_vout->fmt_in.i_chroma )
{
CASE_PLANAR_YUV_SQUARE
- case VLC_FOURCC('G','R','E','Y'):
+ case VLC_CODEC_GREY:
p_vout->p_sys->pf_filter = FilterPlanar;
break;
- case VLC_FOURCC('I','4','2','2'):
- case VLC_FOURCC('J','4','2','2'):
+ case VLC_CODEC_I422:
+ case VLC_CODEC_J422:
p_vout->p_sys->pf_filter = FilterI422;
break;
#include <vlc_common.h>
#include <vlc_plugin.h>
-#include <vlc_vout.h>
#include "vlc_filter.h"
#include "filter_picture.h"
vlc_module_end ()
/*****************************************************************************
- * vout_sys_t: Distort video output method descriptor
+ * filter_sys_t: Distort video output method descriptor
*****************************************************************************
* This structure is part of the video output thread descriptor.
* It describes the Distort specific properties of an output thread.
#include <vlc_common.h>
#include <vlc_plugin.h>
-#include <vlc_vout.h>
#include "vlc_filter.h"
#include <assert.h>
/* It only supports YUVP to YUVA/RGBA without scaling
* (if scaling is required another filter can do it) */
- if( p_filter->fmt_in.video.i_chroma != VLC_FOURCC('Y','U','V','P') ||
- ( p_filter->fmt_out.video.i_chroma != VLC_FOURCC('Y','U','V','A') &&
- p_filter->fmt_out.video.i_chroma != VLC_FOURCC('R','G','B','A') ) ||
+ if( p_filter->fmt_in.video.i_chroma != VLC_CODEC_YUVP ||
+ ( p_filter->fmt_out.video.i_chroma != VLC_CODEC_YUVA &&
+ p_filter->fmt_out.video.i_chroma != VLC_CODEC_RGBA ) ||
p_filter->fmt_in.video.i_width != p_filter->fmt_out.video.i_width ||
p_filter->fmt_in.video.i_height != p_filter->fmt_out.video.i_height )
{
const video_palette_t *p_yuvp = p_filter->fmt_in.video.p_palette;
assert( p_yuvp != NULL );
- assert( p_filter->fmt_in.video.i_chroma == VLC_FOURCC('Y','U','V','P') );
+ assert( p_filter->fmt_in.video.i_chroma == VLC_CODEC_YUVP );
assert( p_filter->fmt_in.video.i_width == p_filter->fmt_out.video.i_width );
assert( p_filter->fmt_in.video.i_height == p_filter->fmt_out.video.i_height );
return NULL;
}
- if( p_filter->fmt_out.video.i_chroma == VLC_FOURCC('Y','U','V','A') )
+ if( p_filter->fmt_out.video.i_chroma == VLC_CODEC_YUVA )
{
for( unsigned int y = 0; y < p_filter->fmt_in.video.i_height; y++ )
{
}
else
{
- assert( p_filter->fmt_out.video.i_chroma == VLC_FOURCC('R','G','B','A') );
+ assert( p_filter->fmt_out.video.i_chroma == VLC_CODEC_RGBA );
/* Create a RGBA palette */
video_palette_t rgbp;
I_OUTPUTPICTURES = 0;
- p_vout->output.i_chroma = VLC_FOURCC('R','G','B','2');
+ p_vout->output.i_chroma = VLC_CODEC_RGB8;
p_vout->output.i_width = p_vout->p_sys->i_width;
p_vout->output.i_height = p_vout->p_sys->i_height;
p_vout->output.i_aspect = p_vout->p_sys->i_width
static void Display( vout_thread_t *p_vout, picture_t *p_pic )
{
/* No need to do anything, the fake direct buffers stay as they are */
- int i_width, i_height, i_x, i_y;
+ unsigned int i_width, i_height, i_x, i_y;
vout_PlacePicture( p_vout, p_vout->p_sys->i_width, p_vout->p_sys->i_height,
&i_x, &i_y, &i_width, &i_height );
I_OUTPUTPICTURES = 0;
- p_vout->output.i_chroma = VLC_FOURCC('R','V','3','2');
+ p_vout->output.i_chroma = VLC_CODEC_RGB32;
p_vout->output.i_width = p_vout->render.i_width;
p_vout->output.i_height = p_vout->render.i_height;
p_vout->output.i_aspect = p_vout->render.i_aspect;
i_goffset = 2;
i_blength = 2;
i_boffset = 0;
- p_vout->output.i_chroma = VLC_FOURCC('R','G','B','2');
+ p_vout->output.i_chroma = VLC_CODEC_RGB8;
break;
case DSPF_RGB16:
i_goffset = 5;
i_blength = 5;
i_boffset = 0;
- p_vout->output.i_chroma = VLC_FOURCC('R','V','1','6');
+ p_vout->output.i_chroma = VLC_CODEC_RGB16;
break;
case DSPF_RGB24:
i_goffset = 8;
i_blength = 8;
i_boffset = 0;
- p_vout->output.i_chroma = VLC_FOURCC('R','V','2','4');
+ p_vout->output.i_chroma = VLC_CODEC_RGB24;
break;
case DSPF_RGB32:
i_goffset = 8;
i_blength = 8;
i_boffset = 0;
- p_vout->output.i_chroma = VLC_FOURCC('R','V','3','2');
+ p_vout->output.i_chroma = VLC_CODEC_RGB32;
break;
default:
psz_chroma = var_CreateGetNonEmptyString( p_vout, "fb-chroma" );
if( psz_chroma )
{
- if( strlen( psz_chroma ) == 4 )
+ const vlc_fourcc_t i_chroma =
+ vlc_fourcc_GetCodecFromString( VIDEO_ES, psz_chroma );
+
+ if( i_chroma )
{
- p_sys->i_chroma = VLC_FOURCC( psz_chroma[0],
- psz_chroma[1],
- psz_chroma[2],
- psz_chroma[3] );
+ p_sys->i_chroma = i_chroma;
msg_Dbg( p_vout, "forcing chroma '%s'", psz_chroma );
}
else
}
/* Fill in picture_t fields */
- vout_InitPicture( VLC_OBJECT(p_vout), p_pic, p_vout->output.i_chroma,
- p_vout->output.i_width, p_vout->output.i_height,
- p_vout->output.i_aspect );
+ if( picture_Setup( p_pic, p_vout->output.i_chroma,
+ p_vout->output.i_width, p_vout->output.i_height,
+ p_vout->output.i_aspect ) )
+ {
+ free( p_pic );
+ return VLC_EGENERIC;
+ }
p_pic->p_sys->p_data = malloc( p_vout->p_sys->i_page_size );
if( !p_pic->p_sys->p_data )
switch( p_sys->var_info.bits_per_pixel )
{
case 8: /* FIXME: set the palette */
- p_vout->output.i_chroma = VLC_FOURCC('R','G','B','2'); break;
+ p_vout->output.i_chroma = VLC_CODEC_RGB8; break;
case 15:
- p_vout->output.i_chroma = VLC_FOURCC('R','V','1','5'); break;
+ p_vout->output.i_chroma = VLC_CODEC_RGB15; break;
case 16:
- p_vout->output.i_chroma = VLC_FOURCC('R','V','1','6'); break;
+ p_vout->output.i_chroma = VLC_CODEC_RGB16; break;
case 24:
- p_vout->output.i_chroma = VLC_FOURCC('R','V','2','4'); break;
+ p_vout->output.i_chroma = VLC_CODEC_RGB24; break;
case 32:
- p_vout->output.i_chroma = VLC_FOURCC('R','V','3','2'); break;
+ p_vout->output.i_chroma = VLC_CODEC_RGB32; break;
default:
msg_Err( p_vout, "unknown screen depth %i",
p_vout->p_sys->var_info.bits_per_pixel );
switch( p_vout->p_sys->i_bits_per_pixel )
{
case 8:
- p_vout->output.i_chroma = VLC_FOURCC('R','G','B','2');
+ p_vout->output.i_chroma = VLC_CODEC_RGB8;
p_vout->output.pf_setpalette = SetPalette;
break;
case 15:
- p_vout->output.i_chroma = VLC_FOURCC('R','V','1','5'); break;
+ p_vout->output.i_chroma = VLC_CODEC_RGB15; break;
case 16:
- p_vout->output.i_chroma = VLC_FOURCC('R','V','1','6'); break;
+ p_vout->output.i_chroma = VLC_CODEC_RGB16; break;
case 24:
- p_vout->output.i_chroma = VLC_FOURCC('R','V','2','4'); break;
+ p_vout->output.i_chroma = VLC_CODEC_RGB24; break;
case 32:
- p_vout->output.i_chroma = VLC_FOURCC('R','V','3','2'); break;
+ p_vout->output.i_chroma = VLC_CODEC_RGB32; break;
default:
msg_Err( p_vout, "unknown screen depth %i",
p_vout->p_sys->i_bits_per_pixel );
I_OUTPUTPICTURES = 0;
- p_vout->output.i_chroma = VLC_FOURCC('R','G','B','2');
+ p_vout->output.i_chroma = VLC_CODEC_RGB8;
p_vout->output.i_width = p_vout->p_sys->i_width;
p_vout->output.i_height = p_vout->p_sys->i_height;
p_vout->output.i_aspect = p_vout->p_sys->i_width
switch( p_vout->p_sys->i_screen_depth )
{
case 8: /* FIXME: set the palette */
- p_vout->output.i_chroma = VLC_FOURCC('R','G','B','2'); break;
+ p_vout->output.i_chroma = VLC_CODEC_RGB8; break;
case 15:
- p_vout->output.i_chroma = VLC_FOURCC('R','V','1','5'); break;
+ p_vout->output.i_chroma = VLC_CODEC_RGB15; break;
case 16:
- p_vout->output.i_chroma = VLC_FOURCC('R','V','1','6'); break;
+ p_vout->output.i_chroma = VLC_CODEC_RGB16; break;
case 24:
- p_vout->output.i_chroma = VLC_FOURCC('R','V','2','4'); break;
+ p_vout->output.i_chroma = VLC_CODEC_RGB24; break;
case 32:
- p_vout->output.i_chroma = VLC_FOURCC('R','V','3','2'); break;
+ p_vout->output.i_chroma = VLC_CODEC_RGB32; break;
default:
msg_Err( p_vout, "unknown screen depth %i",
p_vout->p_sys->i_screen_depth );
}
/* Fill in picture_t fields */
- vout_InitPicture( VLC_OBJECT(p_vout), p_pic, p_vout->output.i_chroma,
- p_vout->output.i_width, p_vout->output.i_height,
- p_vout->output.i_aspect );
+ picture_Setup( p_pic, p_vout->output.i_chroma,
+ p_vout->output.i_width, p_vout->output.i_height,
+ p_vout->output.i_aspect );
p_pic->p_sys->p_image = new CascadeSharedMemZone();
if( p_pic->p_sys->p_image == NULL )
/* Assume we only do YMGA for the moment. XXX: mga_vid calls this
* YV12, but it's actually some strange format with packed UV. */
- p_vout->output.i_chroma = VLC_FOURCC('Y','M','G','A');
+ p_vout->output.i_chroma = VLC_CODEC_YMGA;
p_vout->p_sys->mga.format = MGA_VID_FORMAT_YV12;
if( ioctl(p_vout->p_sys->i_fd, MGA_VID_CONFIG, &p_vout->p_sys->mga) )
p_vout->p_sys->i_window_width = p_vout->i_window_width;
p_vout->p_sys->i_window_height = p_vout->i_window_height;
- /* Create the Vout EventThread, this thread is created by us to isolate
- * the Win32 PeekMessage function calls. We want to do this because
- * Windows can stay blocked inside this call for a long time, and when
- * this happens it thus blocks vlc's video_output thread.
- * Vout EventThread will take care of the creation of the video
- * window (because PeekMessage has to be called from the same thread which
- * created the window). */
- msg_Dbg( p_vout, "creating Vout EventThread" );
- p_vout->p_sys->p_event =
- vlc_object_create( p_vout, sizeof(event_thread_t) );
- p_vout->p_sys->p_event->p_vout = p_vout;
- p_vout->p_sys->p_event->window_ready = CreateEvent( NULL, TRUE, FALSE, NULL );
- if( vlc_thread_create( p_vout->p_sys->p_event, "Vout Events Thread",
- EventThread, 0 ) )
+ if ( CreateEventThread( p_vout ) )
{
- msg_Err( p_vout, "cannot create Vout EventThread" );
- CloseHandle( p_vout->p_sys->p_event->window_ready );
- vlc_object_release( p_vout->p_sys->p_event );
- p_vout->p_sys->p_event = NULL;
- goto error;
- }
- WaitForSingleObject( p_vout->p_sys->p_event->window_ready, INFINITE );
- CloseHandle( p_vout->p_sys->p_event->window_ready );
-
- if( p_vout->p_sys->p_event->b_error )
- {
- msg_Err( p_vout, "Vout EventThread failed" );
- goto error;
- }
+ /* Variable to indicate if the window should be on top of others */
+ /* Trigger a callback right now */
+ var_TriggerCallback( p_vout, "video-on-top" );
- vlc_object_attach( p_vout->p_sys->p_event, p_vout );
+ DisableScreensaver ( p_vout );
- msg_Dbg( p_vout, "Vout EventThread running" );
-
- /* Variable to indicate if the window should be on top of others */
- /* Trigger a callback right now */
- var_TriggerCallback( p_vout, "video-on-top" );
-
- /* disable screensaver by temporarily changing system settings */
- p_vout->p_sys->i_spi_lowpowertimeout = 0;
- p_vout->p_sys->i_spi_powerofftimeout = 0;
- p_vout->p_sys->i_spi_screensavetimeout = 0;
- if( var_GetBool( p_vout, "disable-screensaver" ) ) {
- msg_Dbg(p_vout, "disabling screen saver");
- SystemParametersInfo(SPI_GETLOWPOWERTIMEOUT,
- 0, &(p_vout->p_sys->i_spi_lowpowertimeout), 0);
- if( 0 != p_vout->p_sys->i_spi_lowpowertimeout ) {
- SystemParametersInfo(SPI_SETLOWPOWERTIMEOUT, 0, NULL, 0);
- }
- SystemParametersInfo(SPI_GETPOWEROFFTIMEOUT, 0,
- &(p_vout->p_sys->i_spi_powerofftimeout), 0);
- if( 0 != p_vout->p_sys->i_spi_powerofftimeout ) {
- SystemParametersInfo(SPI_SETPOWEROFFTIMEOUT, 0, NULL, 0);
- }
- SystemParametersInfo(SPI_GETSCREENSAVETIMEOUT, 0,
- &(p_vout->p_sys->i_spi_screensavetimeout), 0);
- if( 0 != p_vout->p_sys->i_spi_screensavetimeout ) {
- SystemParametersInfo(SPI_SETSCREENSAVETIMEOUT, 0, NULL, 0);
- }
+ return VLC_SUCCESS;
+ }
+ else
+ {
+ CloseVideo( VLC_OBJECT(p_vout) );
+ return VLC_EGENERIC;
}
- return VLC_SUCCESS;
-
-error:
- CloseVideo( VLC_OBJECT(p_vout) );
- return VLC_EGENERIC;
}
/*****************************************************************************
Direct3DVoutRelease( p_vout );
- if( p_vout->b_fullscreen )
- {
- msg_Dbg( p_vout, "Quitting fullscreen" );
- Win32ToggleFullscreen( p_vout );
- /* Force fullscreen in the core for the next video */
- var_SetBool( p_vout, "fullscreen", true );
- }
-
- if( p_vout->p_sys->p_event )
- {
- vlc_object_detach( p_vout->p_sys->p_event );
-
- /* Kill Vout EventThread */
- vlc_object_kill( p_vout->p_sys->p_event );
+ StopEventThread( p_vout );
- /* we need to be sure Vout EventThread won't stay stuck in
- * GetMessage, so we send a fake message */
- if( p_vout->p_sys->hwnd )
- {
- PostMessage( p_vout->p_sys->hwnd, WM_NULL, 0, 0);
- }
-
- vlc_thread_join( p_vout->p_sys->p_event );
- vlc_object_release( p_vout->p_sys->p_event );
- }
-
- vlc_mutex_destroy( &p_vout->p_sys->lock );
-
- /* restore screensaver system settings */
- if( 0 != p_vout->p_sys->i_spi_lowpowertimeout ) {
- SystemParametersInfo(SPI_SETLOWPOWERTIMEOUT,
- p_vout->p_sys->i_spi_lowpowertimeout, NULL, 0);
- }
- if( 0 != p_vout->p_sys->i_spi_powerofftimeout ) {
- SystemParametersInfo(SPI_SETPOWEROFFTIMEOUT,
- p_vout->p_sys->i_spi_powerofftimeout, NULL, 0);
- }
- if( 0 != p_vout->p_sys->i_spi_screensavetimeout ) {
- SystemParametersInfo(SPI_SETSCREENSAVETIMEOUT,
- p_vout->p_sys->i_spi_screensavetimeout, NULL, 0);
- }
+ RestoreScreensaver( p_vout );
free( p_vout->p_sys );
p_vout->p_sys = NULL;
/* it sounds like vista does not support YUV surfaces at all */
switch( i_chroma )
{
- case VLC_FOURCC('U','Y','V','Y'):
- case VLC_FOURCC('U','Y','N','V'):
- case VLC_FOURCC('Y','4','2','2'):
+ case VLC_CODEC_UYVY:
{
static const D3DFORMAT formats[] =
{ D3DFMT_UYVY, D3DFMT_YUY2, D3DFMT_X8R8G8B8, D3DFMT_A8R8G8B8, D3DFMT_R5G6B5, D3DFMT_X1R5G5B5 };
return Direct3DVoutSelectFormat(p_vout, target, formats, sizeof(formats)/sizeof(D3DFORMAT));
}
- case VLC_FOURCC('I','4','2','0'):
- case VLC_FOURCC('I','4','2','2'):
- case VLC_FOURCC('Y','V','1','2'):
+ case VLC_CODEC_I420:
+ case VLC_CODEC_I422:
+ case VLC_CODEC_YV12:
{
/* typically 3D textures don't support planar format
** fallback to packed version and use CPU for the conversion
{ D3DFMT_YUY2, D3DFMT_UYVY, D3DFMT_X8R8G8B8, D3DFMT_A8R8G8B8, D3DFMT_R5G6B5, D3DFMT_X1R5G5B5 };
return Direct3DVoutSelectFormat(p_vout, target, formats, sizeof(formats)/sizeof(D3DFORMAT));
}
- case VLC_FOURCC('Y','U','Y','2'):
- case VLC_FOURCC('Y','U','N','V'):
+ case VLC_CODEC_YUYV:
{
static const D3DFORMAT formats[] =
{ D3DFMT_YUY2, D3DFMT_UYVY, D3DFMT_X8R8G8B8, D3DFMT_A8R8G8B8, D3DFMT_R5G6B5, D3DFMT_X1R5G5B5 };
switch( i_chroma )
{
- case VLC_FOURCC('R', 'V', '1', '5'):
+ case VLC_CODEC_RGB15:
{
static const D3DFORMAT formats[] =
{ D3DFMT_X1R5G5B5 };
return Direct3DVoutSelectFormat(p_vout, target, formats, sizeof(formats)/sizeof(D3DFORMAT));
}
- case VLC_FOURCC('R', 'V', '1', '6'):
+ case VLC_CODEC_RGB16:
{
static const D3DFORMAT formats[] =
{ D3DFMT_R5G6B5 };
return Direct3DVoutSelectFormat(p_vout, target, formats, sizeof(formats)/sizeof(D3DFORMAT));
}
- case VLC_FOURCC('R', 'V', '2', '4'):
+ case VLC_CODEC_RGB24:
{
static const D3DFORMAT formats[] =
{ D3DFMT_R8G8B8, D3DFMT_X8R8G8B8, D3DFMT_A8R8G8B8 };
return Direct3DVoutSelectFormat(p_vout, target, formats, sizeof(formats)/sizeof(D3DFORMAT));
}
- case VLC_FOURCC('R', 'V', '3', '2'):
+ case VLC_CODEC_RGB32:
{
static const D3DFORMAT formats[] =
{ D3DFMT_A8R8G8B8, D3DFMT_X8R8G8B8 };
switch( format )
{
case D3DFMT_YUY2:
- p_vout->output.i_chroma = VLC_FOURCC('Y', 'U', 'Y', '2');
+ p_vout->output.i_chroma = VLC_CODEC_YUYV;
break;
case D3DFMT_UYVY:
- p_vout->output.i_chroma = VLC_FOURCC('U', 'Y', 'V', 'Y');
+ p_vout->output.i_chroma = VLC_CODEC_UYVY;
break;
case D3DFMT_R8G8B8:
- p_vout->output.i_chroma = VLC_FOURCC('R', 'V', '2', '4');
+ p_vout->output.i_chroma = VLC_CODEC_RGB24;
p_vout->output.i_rmask = 0xff0000;
p_vout->output.i_gmask = 0x00ff00;
p_vout->output.i_bmask = 0x0000ff;
break;
case D3DFMT_X8R8G8B8:
case D3DFMT_A8R8G8B8:
- p_vout->output.i_chroma = VLC_FOURCC('R', 'V', '3', '2');
+ p_vout->output.i_chroma = VLC_CODEC_RGB32;
p_vout->output.i_rmask = 0x00ff0000;
p_vout->output.i_gmask = 0x0000ff00;
p_vout->output.i_bmask = 0x000000ff;
break;
case D3DFMT_R5G6B5:
- p_vout->output.i_chroma = VLC_FOURCC('R', 'V', '1', '6');
+ p_vout->output.i_chroma = VLC_CODEC_RGB16;
p_vout->output.i_rmask = (0x1fL)<<11;
p_vout->output.i_gmask = (0x3fL)<<5;
p_vout->output.i_bmask = (0x1fL)<<0;
break;
case D3DFMT_X1R5G5B5:
- p_vout->output.i_chroma = VLC_FOURCC('R', 'V', '1', '5');
+ p_vout->output.i_chroma = VLC_CODEC_RGB15;
p_vout->output.i_rmask = (0x1fL)<<10;
p_vout->output.i_gmask = (0x1fL)<<5;
p_vout->output.i_bmask = (0x1fL)<<0;
* picture_t structures */
switch( p_vout->output.i_chroma )
{
- case VLC_FOURCC('R','G','B','2'):
+ case VLC_CODEC_RGB8:
p_pic->p->i_lines = p_vout->output.i_height;
p_pic->p->i_visible_lines = p_vout->output.i_height;
p_pic->p->i_pixel_pitch = 1;
p_pic->p->i_pixel_pitch;
p_pic->i_planes = 1;
break;
- case VLC_FOURCC('R','V','1','5'):
- case VLC_FOURCC('R','V','1','6'):
+ case VLC_CODEC_RGB15:
+ case VLC_CODEC_RGB16:
p_pic->p->i_lines = p_vout->output.i_height;
p_pic->p->i_visible_lines = p_vout->output.i_height;
p_pic->p->i_pixel_pitch = 2;
p_pic->p->i_pixel_pitch;
p_pic->i_planes = 1;
break;
- case VLC_FOURCC('R','V','2','4'):
+ case VLC_CODEC_RGB24:
p_pic->p->i_lines = p_vout->output.i_height;
p_pic->p->i_visible_lines = p_vout->output.i_height;
p_pic->p->i_pixel_pitch = 3;
p_pic->p->i_pixel_pitch;
p_pic->i_planes = 1;
break;
- case VLC_FOURCC('R','V','3','2'):
+ case VLC_CODEC_RGB32:
p_pic->p->i_lines = p_vout->output.i_height;
p_pic->p->i_visible_lines = p_vout->output.i_height;
p_pic->p->i_pixel_pitch = 4;
p_pic->p->i_pixel_pitch;
p_pic->i_planes = 1;
break;
- case VLC_FOURCC('U','Y','V','Y'):
- case VLC_FOURCC('Y','U','Y','2'):
+ case VLC_CODEC_UYVY:
+ case VLC_CODEC_YUYV:
p_pic->p->i_lines = p_vout->output.i_height;
p_pic->p->i_visible_lines = p_vout->output.i_height;
p_pic->p->i_pixel_pitch = 2;
p_vout->p_sys->i_window_width = p_vout->i_window_width;
p_vout->p_sys->i_window_height = p_vout->i_window_height;
- /* Create the Vout EventThread, this thread is created by us to isolate
- * the Win32 PeekMessage function calls. We want to do this because
- * Windows can stay blocked inside this call for a long time, and when
- * this happens it thus blocks vlc's video_output thread.
- * DirectXEventThread will take care of the creation of the video
- * window (because PeekMessage has to be called from the same thread which
- * created the window). */
- msg_Dbg( p_vout, "creating DirectXEventThread" );
- p_vout->p_sys->p_event =
- vlc_object_create( p_vout, sizeof(event_thread_t) );
- p_vout->p_sys->p_event->p_vout = p_vout;
- p_vout->p_sys->p_event->window_ready = CreateEvent( NULL, TRUE, FALSE, NULL );
- if( vlc_thread_create( p_vout->p_sys->p_event, "Vout Events Thread",
- EventThread, 0 ) )
- {
- msg_Err( p_vout, "cannot create Vout EventThread" );
- CloseHandle( p_vout->p_sys->p_event->window_ready );
- vlc_object_release( p_vout->p_sys->p_event );
- p_vout->p_sys->p_event = NULL;
+ if ( !CreateEventThread( p_vout ) )
goto error;
- }
- WaitForSingleObject( p_vout->p_sys->p_event->window_ready, INFINITE );
- CloseHandle( p_vout->p_sys->p_event->window_ready );
-
- if( p_vout->p_sys->p_event->b_error )
- {
- msg_Err( p_vout, "Vout EventThread failed" );
- goto error;
- }
-
- vlc_object_attach( p_vout->p_sys->p_event, p_vout );
-
- msg_Dbg( p_vout, "Vout EventThread running" );
/* Initialise DirectDraw */
if( DirectXInitDDraw( p_vout ) )
var_AddCallback( p_vout, "directx-wallpaper", WallpaperCallback, NULL );
var_TriggerCallback( p_vout, "directx-wallpaper" );
- /* disable screensaver by temporarily changing system settings */
- p_vout->p_sys->i_spi_lowpowertimeout = 0;
- p_vout->p_sys->i_spi_powerofftimeout = 0;
- p_vout->p_sys->i_spi_screensavetimeout = 0;
- if( var_GetBool( p_vout, "disable-screensaver" ) ) {
- msg_Dbg(p_vout, "disabling screen saver");
- SystemParametersInfo(SPI_GETLOWPOWERTIMEOUT,
- 0, &(p_vout->p_sys->i_spi_lowpowertimeout), 0);
- if( 0 != p_vout->p_sys->i_spi_lowpowertimeout ) {
- SystemParametersInfo(SPI_SETLOWPOWERTIMEOUT, 0, NULL, 0);
- }
- SystemParametersInfo(SPI_GETPOWEROFFTIMEOUT, 0,
- &(p_vout->p_sys->i_spi_powerofftimeout), 0);
- if( 0 != p_vout->p_sys->i_spi_powerofftimeout ) {
- SystemParametersInfo(SPI_SETPOWEROFFTIMEOUT, 0, NULL, 0);
- }
- SystemParametersInfo(SPI_GETSCREENSAVETIMEOUT, 0,
- &(p_vout->p_sys->i_spi_screensavetimeout), 0);
- if( 0 != p_vout->p_sys->i_spi_screensavetimeout ) {
- SystemParametersInfo(SPI_SETSCREENSAVETIMEOUT, 0, NULL, 0);
- }
- }
+ DisableScreensaver ( p_vout );
return VLC_SUCCESS;
/* Choose the chroma we will try first. */
switch( p_vout->render.i_chroma )
{
- case VLC_FOURCC('Y','U','Y','2'):
- case VLC_FOURCC('Y','U','N','V'):
- p_vout->output.i_chroma = VLC_FOURCC('Y','U','Y','2');
+ case VLC_CODEC_YUYV:
+ p_vout->output.i_chroma = VLC_CODEC_YUYV;
break;
- case VLC_FOURCC('U','Y','V','Y'):
- case VLC_FOURCC('U','Y','N','V'):
- case VLC_FOURCC('Y','4','2','2'):
- p_vout->output.i_chroma = VLC_FOURCC('U','Y','V','Y');
+ case VLC_CODEC_UYVY:
+ p_vout->output.i_chroma = VLC_CODEC_UYVY;
break;
- case VLC_FOURCC('Y','V','Y','U'):
- p_vout->output.i_chroma = VLC_FOURCC('Y','V','Y','U');
+ case VLC_CODEC_YVYU:
+ p_vout->output.i_chroma = VLC_CODEC_YVYU;
break;
default:
- p_vout->output.i_chroma = VLC_FOURCC('Y','V','1','2');
+ p_vout->output.i_chroma = VLC_CODEC_YV12;
break;
}
if( !I_OUTPUTPICTURES )
{
/* hmmm, it didn't work! Let's try commonly supported chromas */
- if( p_vout->output.i_chroma != VLC_FOURCC('I','4','2','0') )
+ if( p_vout->output.i_chroma != VLC_CODEC_I420 )
{
- p_vout->output.i_chroma = VLC_FOURCC('Y','V','1','2');
+ p_vout->output.i_chroma = VLC_CODEC_YV12;
NewPictureVec( p_vout, p_vout->p_picture, MAX_DIRECTBUFFERS );
}
if( !I_OUTPUTPICTURES )
{
/* hmmm, it still didn't work! Let's try another one */
- p_vout->output.i_chroma = VLC_FOURCC('Y','U','Y','2');
+ p_vout->output.i_chroma = VLC_CODEC_YUYV;
NewPictureVec( p_vout, p_vout->p_picture, MAX_DIRECTBUFFERS );
}
}
{
vout_thread_t * p_vout = (vout_thread_t *)p_this;
- if( p_vout->b_fullscreen )
- {
- msg_Dbg( p_vout, "Quitting fullscreen" );
- Win32ToggleFullscreen( p_vout );
- /* Force fullscreen in the core for the next video */
- var_SetBool( p_vout, "fullscreen", true );
- }
-
- if( p_vout->p_sys->p_event )
- {
- vlc_object_detach( p_vout->p_sys->p_event );
-
- /* Kill Vout EventThread */
- vlc_object_kill( p_vout->p_sys->p_event );
-
- /* we need to be sure Vout EventThread won't stay stuck in
- * GetMessage, so we send a fake message */
- if( p_vout->p_sys->hwnd )
- {
- PostMessage( p_vout->p_sys->hwnd, WM_NULL, 0, 0);
- }
-
- vlc_thread_join( p_vout->p_sys->p_event );
- vlc_object_release( p_vout->p_sys->p_event );
- }
-
- vlc_mutex_destroy( &p_vout->p_sys->lock );
+ StopEventThread( p_vout );
/* Make sure the wallpaper is restored */
SwitchWallpaperMode( p_vout, false );
- /* restore screensaver system settings */
- if( 0 != p_vout->p_sys->i_spi_lowpowertimeout ) {
- SystemParametersInfo(SPI_SETLOWPOWERTIMEOUT,
- p_vout->p_sys->i_spi_lowpowertimeout, NULL, 0);
- }
- if( 0 != p_vout->p_sys->i_spi_powerofftimeout ) {
- SystemParametersInfo(SPI_SETPOWEROFFTIMEOUT,
- p_vout->p_sys->i_spi_powerofftimeout, NULL, 0);
- }
- if( 0 != p_vout->p_sys->i_spi_screensavetimeout ) {
- SystemParametersInfo(SPI_SETSCREENSAVETIMEOUT,
- p_vout->p_sys->i_spi_screensavetimeout, NULL, 0);
- }
+ RestoreScreensaver( p_vout );
free( p_vout->p_sys );
p_vout->p_sys = NULL;
if( !b_overlay )
{
bool b_rgb_surface =
- ( i_chroma == VLC_FOURCC('R','G','B','2') )
- || ( i_chroma == VLC_FOURCC('R','V','1','5') )
- || ( i_chroma == VLC_FOURCC('R','V','1','6') )
- || ( i_chroma == VLC_FOURCC('R','V','2','4') )
- || ( i_chroma == VLC_FOURCC('R','V','3','2') );
+ ( i_chroma == VLC_CODEC_RGB8 )
+ || ( i_chroma == VLC_CODEC_RGB15 )
+ || ( i_chroma == VLC_CODEC_RGB16 )
+ || ( i_chroma == VLC_CODEC_RGB24 )
+ || ( i_chroma == VLC_CODEC_RGB32 );
memset( &ddsd, 0, sizeof( DDSURFACEDESC ) );
ddsd.dwSize = sizeof(DDSURFACEDESC);
switch( ddpfPixelFormat.dwRGBBitCount )
{
case 8:
- p_vout->output.i_chroma = VLC_FOURCC('R','G','B','2');
+ p_vout->output.i_chroma = VLC_CODEC_RGB8;
p_vout->output.pf_setpalette = SetPalette;
break;
case 15:
- p_vout->output.i_chroma = VLC_FOURCC('R','V','1','5');
+ p_vout->output.i_chroma = VLC_CODEC_RGB15;
break;
case 16:
- p_vout->output.i_chroma = VLC_FOURCC('R','V','1','6');
+ p_vout->output.i_chroma = VLC_CODEC_RGB16;
break;
case 24:
- p_vout->output.i_chroma = VLC_FOURCC('R','V','2','4');
+ p_vout->output.i_chroma = VLC_CODEC_RGB24;
break;
case 32:
- p_vout->output.i_chroma = VLC_FOURCC('R','V','3','2');
+ p_vout->output.i_chroma = VLC_CODEC_RGB32;
break;
default:
msg_Err( p_vout, "unknown screen depth" );
{
switch( p_vout->output.i_chroma )
{
- case VLC_FOURCC('R','G','B','2'):
- case VLC_FOURCC('R','V','1','5'):
- case VLC_FOURCC('R','V','1','6'):
- case VLC_FOURCC('R','V','2','4'):
- case VLC_FOURCC('R','V','3','2'):
+ case VLC_CODEC_RGB8:
+ case VLC_CODEC_RGB15:
+ case VLC_CODEC_RGB16:
+ case VLC_CODEC_RGB24:
+ case VLC_CODEC_RGB32:
p_pic->p->p_pixels = p_pic->p_sys->ddsd.lpSurface;
p_pic->p->i_lines = p_vout->output.i_height;
p_pic->p->i_visible_lines = p_vout->output.i_height;
p_pic->p->i_pitch = p_pic->p_sys->ddsd.lPitch;
switch( p_vout->output.i_chroma )
{
- case VLC_FOURCC('R','G','B','2'):
+ case VLC_CODEC_RGB8:
p_pic->p->i_pixel_pitch = 1;
break;
- case VLC_FOURCC('R','V','1','5'):
- case VLC_FOURCC('R','V','1','6'):
+ case VLC_CODEC_RGB15:
+ case VLC_CODEC_RGB16:
p_pic->p->i_pixel_pitch = 2;
break;
- case VLC_FOURCC('R','V','2','4'):
+ case VLC_CODEC_RGB24:
p_pic->p->i_pixel_pitch = 3;
break;
- case VLC_FOURCC('R','V','3','2'):
+ case VLC_CODEC_RGB32:
p_pic->p->i_pixel_pitch = 4;
break;
default:
p_pic->i_planes = 1;
break;
- case VLC_FOURCC('Y','V','1','2'):
- case VLC_FOURCC('I','4','2','0'):
+ case VLC_CODEC_YV12:
/* U and V inverted compared to I420
* Fixme: this should be handled by the vout core */
- p_vout->output.i_chroma = VLC_FOURCC('I','4','2','0');
+ p_vout->output.i_chroma = VLC_CODEC_I420;
p_pic->Y_PIXELS = p_pic->p_sys->ddsd.lpSurface;
p_pic->p[Y_PLANE].i_lines = p_vout->output.i_height;
p_pic->i_planes = 3;
break;
- case VLC_FOURCC('I','Y','U','V'):
+ case VLC_CODEC_I420:
p_pic->Y_PIXELS = p_pic->p_sys->ddsd.lpSurface;
p_pic->p[Y_PLANE].i_lines = p_vout->output.i_height;
p_pic->i_planes = 3;
break;
- case VLC_FOURCC('U','Y','V','Y'):
- case VLC_FOURCC('Y','U','Y','2'):
+ case VLC_CODEC_UYVY:
+ case VLC_CODEC_YUYV:
p_pic->p->p_pixels = p_pic->p_sys->ddsd.lpSurface;
p_pic->p->i_lines = p_vout->output.i_height;
/* Update the object variable and trigger callback */
var_SetBool( p_vout, "fullscreen", p_vout->b_fullscreen );
}
+
+void DisableScreensaver( vout_thread_t *p_vout )
+{
+ /* disable screensaver by temporarily changing system settings */
+ p_vout->p_sys->i_spi_lowpowertimeout = 0;
+ p_vout->p_sys->i_spi_powerofftimeout = 0;
+ p_vout->p_sys->i_spi_screensavetimeout = 0;
+ if( var_GetBool( p_vout, "disable-screensaver" ) )
+ {
+ msg_Dbg(p_vout, "disabling screen saver");
+ SystemParametersInfo(SPI_GETLOWPOWERTIMEOUT,
+ 0, &(p_vout->p_sys->i_spi_lowpowertimeout), 0);
+ if( 0 != p_vout->p_sys->i_spi_lowpowertimeout ) {
+ SystemParametersInfo(SPI_SETLOWPOWERTIMEOUT, 0, NULL, 0);
+ }
+ SystemParametersInfo(SPI_GETPOWEROFFTIMEOUT, 0,
+ &(p_vout->p_sys->i_spi_powerofftimeout), 0);
+ if( 0 != p_vout->p_sys->i_spi_powerofftimeout ) {
+ SystemParametersInfo(SPI_SETPOWEROFFTIMEOUT, 0, NULL, 0);
+ }
+ SystemParametersInfo(SPI_GETSCREENSAVETIMEOUT, 0,
+ &(p_vout->p_sys->i_spi_screensavetimeout), 0);
+ if( 0 != p_vout->p_sys->i_spi_screensavetimeout ) {
+ SystemParametersInfo(SPI_SETSCREENSAVETIMEOUT, 0, NULL, 0);
+ }
+ }
+}
+
+void RestoreScreensaver( vout_thread_t *p_vout )
+{
+ /* restore screensaver system settings */
+ if( 0 != p_vout->p_sys->i_spi_lowpowertimeout ) {
+ SystemParametersInfo(SPI_SETLOWPOWERTIMEOUT,
+ p_vout->p_sys->i_spi_lowpowertimeout, NULL, 0);
+ }
+ if( 0 != p_vout->p_sys->i_spi_powerofftimeout ) {
+ SystemParametersInfo(SPI_SETPOWEROFFTIMEOUT,
+ p_vout->p_sys->i_spi_powerofftimeout, NULL, 0);
+ }
+ if( 0 != p_vout->p_sys->i_spi_screensavetimeout ) {
+ SystemParametersInfo(SPI_SETSCREENSAVETIMEOUT,
+ p_vout->p_sys->i_spi_screensavetimeout, NULL, 0);
+ }
+}
+
+int CreateEventThread( vout_thread_t *p_vout )
+{
+ /* Create the Vout EventThread, this thread is created by us to isolate
+ * the Win32 PeekMessage function calls. We want to do this because
+ * Windows can stay blocked inside this call for a long time, and when
+ * this happens it thus blocks vlc's video_output thread.
+ * Vout EventThread will take care of the creation of the video
+ * window (because PeekMessage has to be called from the same thread which
+ * created the window). */
+ msg_Dbg( p_vout, "creating Vout EventThread" );
+ p_vout->p_sys->p_event =
+ vlc_object_create( p_vout, sizeof(event_thread_t) );
+ p_vout->p_sys->p_event->p_vout = p_vout;
+ p_vout->p_sys->p_event->window_ready = CreateEvent( NULL, TRUE, FALSE, NULL );
+ if( vlc_thread_create( p_vout->p_sys->p_event, "Vout Events Thread",
+ EventThread, 0 ) )
+ {
+ msg_Err( p_vout, "cannot create Vout EventThread" );
+ CloseHandle( p_vout->p_sys->p_event->window_ready );
+ vlc_object_release( p_vout->p_sys->p_event );
+ p_vout->p_sys->p_event = NULL;
+ return 0;
+ }
+ WaitForSingleObject( p_vout->p_sys->p_event->window_ready, INFINITE );
+ CloseHandle( p_vout->p_sys->p_event->window_ready );
+
+ if( p_vout->p_sys->p_event->b_error )
+ {
+ msg_Err( p_vout, "Vout EventThread failed" );
+ return 0;
+ }
+
+ vlc_object_attach( p_vout->p_sys->p_event, p_vout );
+
+ msg_Dbg( p_vout, "Vout EventThread running" );
+ return 1;
+}
+
+void StopEventThread( vout_thread_t *p_vout )
+{
+ if( p_vout->b_fullscreen )
+ {
+ msg_Dbg( p_vout, "Quitting fullscreen" );
+ Win32ToggleFullscreen( p_vout );
+ /* Force fullscreen in the core for the next video */
+ var_SetBool( p_vout, "fullscreen", true );
+ }
+
+ if( p_vout->p_sys->p_event )
+ {
+ vlc_object_detach( p_vout->p_sys->p_event );
+
+ /* Kill Vout EventThread */
+ vlc_object_kill( p_vout->p_sys->p_event );
+
+ /* we need to be sure Vout EventThread won't stay stuck in
+ * GetMessage, so we send a fake message */
+ if( p_vout->p_sys->hwnd )
+ {
+ PostMessage( p_vout->p_sys->hwnd, WM_NULL, 0, 0);
+ }
+
+ vlc_thread_join( p_vout->p_sys->p_event );
+ vlc_object_release( p_vout->p_sys->p_event );
+ }
+
+ vlc_mutex_destroy( &p_vout->p_sys->lock );
+}
p_vout->p_sys->i_window_width = p_vout->i_window_width;
p_vout->p_sys->i_window_height = p_vout->i_window_height;
- /* Create the Vout EventThread, this thread is created by us to isolate
- * the Win32 PeekMessage function calls. We want to do this because
- * Windows can stay blocked inside this call for a long time, and when
- * this happens it thus blocks vlc's video_output thread.
- * Vout EventThread will take care of the creation of the video
- * window (because PeekMessage has to be called from the same thread which
- * created the window). */
- msg_Dbg( p_vout, "creating Vout EventThread" );
- p_vout->p_sys->p_event =
- vlc_object_create( p_vout, sizeof(event_thread_t) );
- p_vout->p_sys->p_event->p_vout = p_vout;
- p_vout->p_sys->p_event->window_ready = CreateEvent( NULL, TRUE, FALSE, NULL );
- if( vlc_thread_create( p_vout->p_sys->p_event, "Vout Events Thread",
- EventThread, 0 ) )
+ if ( CreateEventThread( p_vout ) )
{
- msg_Err( p_vout, "cannot create Vout EventThread" );
- CloseHandle( p_vout->p_sys->p_event->window_ready );
- vlc_object_release( p_vout->p_sys->p_event );
- p_vout->p_sys->p_event = NULL;
- goto error;
- }
- WaitForSingleObject( p_vout->p_sys->p_event->window_ready, INFINITE );
- CloseHandle( p_vout->p_sys->p_event->window_ready );
+ /* Variable to indicate if the window should be on top of others */
+ /* Trigger a callback right now */
+ var_TriggerCallback( p_vout, "video-on-top" );
- if( p_vout->p_sys->p_event->b_error )
+ return VLC_SUCCESS;
+ }
+ else
{
- msg_Err( p_vout, "Vout EventThread failed" );
- goto error;
+ CloseVideo( VLC_OBJECT(p_vout) );
+ return VLC_EGENERIC;
}
-
- vlc_object_attach( p_vout->p_sys->p_event, p_vout );
-
- msg_Dbg( p_vout, "Vout EventThread running" );
-
- /* Variable to indicate if the window should be on top of others */
- /* Trigger a callback right now */
- var_TriggerCallback( p_vout, "video-on-top" );
-
- return VLC_SUCCESS;
-
- error:
- CloseVideo( VLC_OBJECT(p_vout) );
- return VLC_EGENERIC;
}
/*****************************************************************************
{
vout_thread_t * p_vout = (vout_thread_t *)p_this;
- if( p_vout->b_fullscreen )
- {
- msg_Dbg( p_vout, "Quitting fullscreen" );
- Win32ToggleFullscreen( p_vout );
- /* Force fullscreen in the core for the next video */
- var_SetBool( p_vout, "fullscreen", true );
- }
-
- if( p_vout->p_sys->p_event )
- {
- vlc_object_detach( p_vout->p_sys->p_event );
-
- /* Kill Vout EventThread */
- vlc_object_kill( p_vout->p_sys->p_event );
-
- /* we need to be sure Vout EventThread won't stay stuck in
- * GetMessage, so we send a fake message */
- if( p_vout->p_sys->hwnd )
- {
- PostMessage( p_vout->p_sys->hwnd, WM_NULL, 0, 0);
- }
-
- vlc_thread_join( p_vout->p_sys->p_event );
- vlc_object_release( p_vout->p_sys->p_event );
- }
-
- vlc_mutex_destroy( &p_vout->p_sys->lock );
+ StopEventThread( p_vout );
free( p_vout->p_sys );
p_vout->p_sys = NULL;
void* EventThread ( vlc_object_t *p_this );
void UpdateRects ( vout_thread_t *p_vout, bool b_force );
void Win32ToggleFullscreen ( vout_thread_t *p_vout );
+void DisableScreensaver ( vout_thread_t *p_vout );
+void RestoreScreensaver ( vout_thread_t *p_vout );
+int CreateEventThread( vout_thread_t *p_vout );
+void StopEventThread ( vout_thread_t *p_vout );
/*****************************************************************************
* Constants
p_vout->p_sys->i_window_width = p_vout->i_window_width;
p_vout->p_sys->i_window_height = p_vout->i_window_height;
- /* Create the EventThread, this thread is created by us to isolate
- * the Win32 PeekMessage function calls. We want to do this because
- * Windows can stay blocked inside this call for a long time, and when
- * this happens it thus blocks vlc's video_output thread.
- * Vout EventThread will take care of the creation of the video
- * window (because PeekMessage has to be called from the same thread which
- * created the window). */
- msg_Dbg( p_vout, "creating Vout EventThread" );
- p_vout->p_sys->p_event =
- vlc_object_create( p_vout, sizeof(event_thread_t) );
- p_vout->p_sys->p_event->p_vout = p_vout;
- p_vout->p_sys->p_event->window_ready = CreateEvent( NULL, TRUE, FALSE, NULL );
- if( vlc_thread_create( p_vout->p_sys->p_event, "Vout Events Thread",
- EventThread, 0 ) )
+ if ( CreateEventThread( p_vout ) )
{
- msg_Err( p_vout, "cannot create Vout EventThread" );
- CloseHandle( p_vout->p_sys->p_event->window_ready );
- vlc_object_release( p_vout->p_sys->p_event );
- p_vout->p_sys->p_event = NULL;
- goto error;
- }
- WaitForSingleObject( p_vout->p_sys->p_event->window_ready, INFINITE );
- CloseHandle( p_vout->p_sys->p_event->window_ready );
-
- if( p_vout->p_sys->p_event->b_error )
- {
- msg_Err( p_vout, "Vout EventThread failed" );
- goto error;
- }
-
- vlc_object_attach( p_vout->p_sys->p_event, p_vout );
-
- msg_Dbg( p_vout, "Vout EventThread running" );
#ifndef UNDER_CE
- /* Variable to indicate if the window should be on top of others */
- /* Trigger a callback right now */
- var_TriggerCallback( p_vout, "video-on-top" );
-
- /* disable screensaver by temporarily changing system settings */
- p_vout->p_sys->i_spi_lowpowertimeout = 0;
- p_vout->p_sys->i_spi_powerofftimeout = 0;
- p_vout->p_sys->i_spi_screensavetimeout = 0;
- if( var_GetBool( p_vout, "disable-screensaver" ) ) {
- msg_Dbg(p_vout, "disabling screen saver");
- SystemParametersInfo(SPI_GETLOWPOWERTIMEOUT,
- 0, &(p_vout->p_sys->i_spi_lowpowertimeout), 0);
- if( 0 != p_vout->p_sys->i_spi_lowpowertimeout ) {
- SystemParametersInfo(SPI_SETLOWPOWERTIMEOUT, 0, NULL, 0);
- }
- SystemParametersInfo(SPI_GETPOWEROFFTIMEOUT, 0,
- &(p_vout->p_sys->i_spi_powerofftimeout), 0);
- if( 0 != p_vout->p_sys->i_spi_powerofftimeout ) {
- SystemParametersInfo(SPI_SETPOWEROFFTIMEOUT, 0, NULL, 0);
- }
- SystemParametersInfo(SPI_GETSCREENSAVETIMEOUT, 0,
- &(p_vout->p_sys->i_spi_screensavetimeout), 0);
- if( 0 != p_vout->p_sys->i_spi_screensavetimeout ) {
- SystemParametersInfo(SPI_SETSCREENSAVETIMEOUT, 0, NULL, 0);
- }
- }
-#endif
- return VLC_SUCCESS;
+ /* Variable to indicate if the window should be on top of others */
+ /* Trigger a callback right now */
+ var_TriggerCallback( p_vout, "video-on-top" );
-error:
- CloseVideo( VLC_OBJECT(p_vout) );
- return VLC_EGENERIC;
+ DisableScreensaver ( p_vout );
+#endif
+ return VLC_SUCCESS;
+ }
+ else
+ {
+ CloseVideo( VLC_OBJECT(p_vout) );
+ return VLC_EGENERIC;
+ }
}
/*****************************************************************************
{
vout_thread_t * p_vout = (vout_thread_t *)p_this;
- if( p_vout->b_fullscreen )
- {
- msg_Dbg( p_vout, "Quitting fullscreen" );
- Win32ToggleFullscreen( p_vout );
- /* Force fullscreen in the core for the next video */
- var_SetBool( p_vout, "fullscreen", true );
- }
-
- if( p_vout->p_sys->p_event )
- {
- vlc_object_detach( p_vout->p_sys->p_event );
-
- /* Kill Vout EventThread */
- vlc_object_kill( p_vout->p_sys->p_event );
-
- /* we need to be sure Vout EventThread won't stay stuck in
- * GetMessage, so we send a fake message */
- if( p_vout->p_sys->hwnd )
- {
- PostMessage( p_vout->p_sys->hwnd, WM_NULL, 0, 0);
- }
-
- vlc_thread_join( p_vout->p_sys->p_event );
- vlc_object_release( p_vout->p_sys->p_event );
- }
- vlc_mutex_destroy( &p_vout->p_sys->lock );
+ StopEventThread( p_vout );
#ifndef UNDER_CE
- /* restore screensaver system settings */
- if( 0 != p_vout->p_sys->i_spi_lowpowertimeout ) {
- SystemParametersInfo(SPI_SETLOWPOWERTIMEOUT,
- p_vout->p_sys->i_spi_lowpowertimeout, NULL, 0);
- }
- if( 0 != p_vout->p_sys->i_spi_powerofftimeout ) {
- SystemParametersInfo(SPI_SETPOWEROFFTIMEOUT,
- p_vout->p_sys->i_spi_powerofftimeout, NULL, 0);
- }
- if( 0 != p_vout->p_sys->i_spi_screensavetimeout ) {
- SystemParametersInfo(SPI_SETSCREENSAVETIMEOUT,
- p_vout->p_sys->i_spi_screensavetimeout, NULL, 0);
- }
+ RestoreScreensaver( p_vout );
#endif
#ifdef MODULE_NAME_IS_wingapi
switch( p_vout->p_sys->i_depth )
{
case 8:
- p_vout->output.i_chroma = VLC_FOURCC('R','G','B','2');
+ p_vout->output.i_chroma = VLC_CODEC_RGB8;
p_vout->output.pf_setpalette = SetPalette;
break;
case 15:
- p_vout->output.i_chroma = VLC_FOURCC('R','V','1','5');
+ p_vout->output.i_chroma = VLC_CODEC_RGB15;
p_vout->output.i_rmask = 0x7c00;
p_vout->output.i_gmask = 0x03e0;
p_vout->output.i_bmask = 0x001f;
break;
case 16:
- p_vout->output.i_chroma = VLC_FOURCC('R','V','1','6');
+ p_vout->output.i_chroma = VLC_CODEC_RGB16;
p_vout->output.i_rmask = 0xf800;
p_vout->output.i_gmask = 0x07e0;
p_vout->output.i_bmask = 0x001f;
break;
case 24:
- p_vout->output.i_chroma = VLC_FOURCC('R','V','2','4');
+ p_vout->output.i_chroma = VLC_CODEC_RGB24;
p_vout->output.i_rmask = 0x00ff0000;
p_vout->output.i_gmask = 0x0000ff00;
p_vout->output.i_bmask = 0x000000ff;
break;
case 32:
- p_vout->output.i_chroma = VLC_FOURCC('R','V','3','2');
+ p_vout->output.i_chroma = VLC_CODEC_RGB32;
p_vout->output.i_rmask = 0x00ff0000;
p_vout->output.i_gmask = 0x0000ff00;
p_vout->output.i_bmask = 0x000000ff;
vout_thread_t *p_vout = (vout_thread_t *)p_this;
vout_sys_t *p_sys;
- if( p_vout->fmt_in.i_chroma != VLC_FOURCC('I','4','2','0') &&
- p_vout->fmt_in.i_chroma != VLC_FOURCC('I','Y','U','V') &&
- p_vout->fmt_in.i_chroma != VLC_FOURCC('Y','V','1','2') )
+ if( p_vout->fmt_in.i_chroma != VLC_CODEC_I420 &&
+ p_vout->fmt_in.i_chroma != VLC_CODEC_YV12 )
return VLC_EGENERIC;
/* Allocate instance and initialize some members */
}
p_vout->output.i_chroma =
- p_vout->fmt_out.i_chroma = VLC_FOURCC( 'Y','4','2','0' );
+ p_vout->fmt_out.i_chroma = VLC_CODEC_I420;
p_sys->i_color_format = OMAPFB_COLOR_YUV420;
// place in the framebuffer where we have to write
/* TODO: We use YCbCr on Mac which is Y422, but on OSX it seems to == YUY2. Verify */
#if ( defined( WORDS_BIGENDIAN ) && VLCGL_FORMAT == GL_YCBCR_422_APPLE ) || (VLCGL_FORMAT == YCBCR_MESA)
- p_vout->output.i_chroma = VLC_FOURCC('Y','U','Y','2');
+ p_vout->output.i_chroma = VLC_CODEC_YUYV;
i_pixel_pitch = 2;
#elif (VLCGL_FORMAT == GL_YCBCR_422_APPLE)
- p_vout->output.i_chroma = VLC_FOURCC('U','Y','V','Y');
+ p_vout->output.i_chroma = VLC_CODEC_UYVY;
i_pixel_pitch = 2;
#elif VLCGL_FORMAT == GL_RGB
# if VLCGL_TYPE == GL_UNSIGNED_BYTE
- p_vout->output.i_chroma = VLC_FOURCC('R','V','2','4');
+ p_vout->output.i_chroma = VLC_CODEC_RGB24;
# if defined( WORDS_BIGENDIAN )
p_vout->output.i_rmask = 0x00ff0000;
p_vout->output.i_gmask = 0x0000ff00;
# endif
i_pixel_pitch = 3;
# else
- p_vout->output.i_chroma = VLC_FOURCC('R','V','1','6');
+ p_vout->output.i_chroma = VLC_CODEC_RGB16;
# if defined( WORDS_BIGENDIAN )
p_vout->output.i_rmask = 0x001f;
p_vout->output.i_gmask = 0x07e0;
i_pixel_pitch = 2;
# endif
#else
- p_vout->output.i_chroma = VLC_FOURCC('R','V','3','2');
+ p_vout->output.i_chroma = VLC_CODEC_RGB32;
# if defined( WORDS_BIGENDIAN )
p_vout->output.i_rmask = 0xff000000;
p_vout->output.i_gmask = 0x00ff0000;
vlc_value_t val;
#if ( defined( WORDS_BIGENDIAN ) && VLCGL_FORMAT == GL_YCBCR_422_APPLE ) || (VLCGL_FORMAT == YCBCR_MESA)
- p_vout->output.i_chroma = VLC_FOURCC('Y','U','Y','2');
+ p_vout->output.i_chroma = VLC_CODEC_YUYV;
i_pixel_pitch = 2;
#elif (VLCGL_FORMAT == GL_YCBCR_422_APPLE)
- p_vout->output.i_chroma = VLC_FOURCC('U','Y','V','Y');
+ p_vout->output.i_chroma = VLC_CODEC_UYVY;
i_pixel_pitch = 2;
#endif
I_OUTPUTPICTURES = 0;
- p_vout->output.i_chroma = (dd == 16) ? VLC_FOURCC('R','V','1','6'): VLC_FOURCC('R','V','3','2');
+ p_vout->output.i_chroma = (dd == 16) ? VLC_CODEC_RGB16 : VLC_CODEC_RGB32;
p_vout->output.i_rmask = 0xf800;
p_vout->output.i_gmask = 0x07e0;
p_vout->output.i_bmask = 0x001f;
/* SDL fucked up fourcc definitions on bigendian machines */
uint32_t i_sdl_chroma;
char *psz_chroma = NULL;
- uint32_t i_chroma = 0;
+ vlc_fourcc_t i_chroma = 0;
bool b_overlay = config_GetInt( p_vout, "overlay" );
if( ( psz_chroma = config_GetPsz( p_vout, "sdl-chroma" ) ) )
{
- if( strlen( psz_chroma ) >= 4 )
+ i_chroma = vlc_fourcc_GetCodecFromString( VIDEO_ES, psz_chroma );
+ if( i_chroma )
{
- memcpy(&i_chroma, psz_chroma, 4);
msg_Dbg( p_vout, "Forcing chroma to 0x%.8x (%4.4s)", i_chroma, (char*)&i_chroma );
}
else
if( !psz_chroma ) i_chroma = 0;
switch( i_chroma ? i_chroma : p_vout->render.i_chroma )
{
- case VLC_FOURCC('Y','U','Y','2'):
- case VLC_FOURCC('Y','U','N','V'):
- p_vout->output.i_chroma = VLC_FOURCC('Y','U','Y','2');
+ case VLC_CODEC_YUYV:
+ p_vout->output.i_chroma = VLC_CODEC_YUYV;
i_sdl_chroma = SDL_YUY2_OVERLAY;
break;
- case VLC_FOURCC('U','Y','V','Y'):
- case VLC_FOURCC('U','Y','N','V'):
- case VLC_FOURCC('Y','4','2','2'):
- p_vout->output.i_chroma = VLC_FOURCC('U','Y','V','Y');
+ case VLC_CODEC_UYVY:
+ p_vout->output.i_chroma = VLC_CODEC_UYVY;
i_sdl_chroma = SDL_UYVY_OVERLAY;
break;
- case VLC_FOURCC('Y','V','Y','U'):
- p_vout->output.i_chroma = VLC_FOURCC('Y','V','Y','U');
+ case VLC_CODEC_YVYU:
+ p_vout->output.i_chroma = VLC_CODEC_YVYU;
i_sdl_chroma = SDL_YVYU_OVERLAY;
break;
- case VLC_FOURCC('Y','V','1','2'):
- case VLC_FOURCC('I','4','2','0'):
- case VLC_FOURCC('I','Y','U','V'):
+ case VLC_CODEC_YV12:
+ case VLC_CODEC_I420:
default:
- p_vout->output.i_chroma = VLC_FOURCC('Y','V','1','2');
+ p_vout->output.i_chroma = VLC_CODEC_YV12;
i_sdl_chroma = SDL_YV12_OVERLAY;
break;
}
/* If this best choice failed, fall back to other chromas */
if( p_vout->p_sys->p_overlay == NULL )
{
- p_vout->output.i_chroma = VLC_FOURCC('I','Y','U','V');
+ p_vout->output.i_chroma = VLC_CODEC_I420;
p_vout->p_sys->p_overlay =
SDL_CreateYUVOverlay( 32, 32, SDL_IYUV_OVERLAY,
p_vout->p_sys->p_display );
if( p_vout->p_sys->p_overlay == NULL )
{
- p_vout->output.i_chroma = VLC_FOURCC('Y','V','1','2');
+ p_vout->output.i_chroma = VLC_CODEC_YV12;
p_vout->p_sys->p_overlay =
SDL_CreateYUVOverlay( 32, 32, SDL_YV12_OVERLAY,
p_vout->p_sys->p_display );
if( p_vout->p_sys->p_overlay == NULL )
{
- p_vout->output.i_chroma = VLC_FOURCC('Y','U','Y','2');
+ p_vout->output.i_chroma = VLC_CODEC_YUYV;
p_vout->p_sys->p_overlay =
SDL_CreateYUVOverlay( 32, 32, SDL_YUY2_OVERLAY,
p_vout->p_sys->p_display );
switch( p_vout->p_sys->p_display->format->BitsPerPixel )
{
case 8:
- p_vout->output.i_chroma = VLC_FOURCC('R','G','B','2');
+ p_vout->output.i_chroma = VLC_CODEC_RGB8;
p_vout->output.pf_setpalette = SetPalette;
break;
case 15:
- p_vout->output.i_chroma = VLC_FOURCC('R','V','1','5');
+ p_vout->output.i_chroma = VLC_CODEC_RGB15;
break;
case 16:
- p_vout->output.i_chroma = VLC_FOURCC('R','V','1','6');
+ p_vout->output.i_chroma = VLC_CODEC_RGB16;
break;
case 24:
- p_vout->output.i_chroma = VLC_FOURCC('R','V','2','4');
+ p_vout->output.i_chroma = VLC_CODEC_RGB24;
break;
case 32:
- p_vout->output.i_chroma = VLC_FOURCC('R','V','3','2');
+ p_vout->output.i_chroma = VLC_CODEC_RGB32;
break;
default:
msg_Err( p_vout, "unknown screen depth %i",
picture_t *p_pic;
vlc_value_t val;
char* psz_chroma;
- int i_chroma;
+ vlc_fourcc_t i_chroma;
int i_width;
int i_height;
int i_datasize;
i_height = config_GetInt( p_vout, "snapshot-height" );
psz_chroma = config_GetPsz( p_vout, "snapshot-chroma" );
- if( psz_chroma )
+ if( !psz_chroma )
{
- if( strlen( psz_chroma ) < 4 )
- {
- msg_Err( p_vout, "snapshot-chroma should be 4 characters long" );
- return VLC_EGENERIC;
- }
- i_chroma = VLC_FOURCC( psz_chroma[0], psz_chroma[1],
- psz_chroma[2], psz_chroma[3] );
- free( psz_chroma );
+ msg_Err( p_vout, "Cannot find chroma information." );
+ return VLC_EGENERIC;
}
- else
+
+ i_chroma = vlc_fourcc_GetCodecFromString( VIDEO_ES, psz_chroma );
+ free( psz_chroma );
+
+ if( !i_chroma )
{
- msg_Err( p_vout, "Cannot find chroma information." );
+ msg_Err( p_vout, "snapshot-chroma should be 4 characters long" );
return VLC_EGENERIC;
}
/* Define the bitmasks */
switch( i_chroma )
{
- case VLC_FOURCC( 'R','V','1','5' ):
+ case VLC_CODEC_RGB15:
p_vout->output.i_rmask = 0x001f;
p_vout->output.i_gmask = 0x03e0;
p_vout->output.i_bmask = 0x7c00;
break;
- case VLC_FOURCC( 'R','V','1','6' ):
+ case VLC_CODEC_RGB16:
p_vout->output.i_rmask = 0x001f;
p_vout->output.i_gmask = 0x07e0;
p_vout->output.i_bmask = 0xf800;
break;
- case VLC_FOURCC( 'R','V','2','4' ):
+ case VLC_CODEC_RGB24:
p_vout->output.i_rmask = 0xff0000;
p_vout->output.i_gmask = 0x00ff00;
p_vout->output.i_bmask = 0x0000ff;
break;
- case VLC_FOURCC( 'R','V','3','2' ):
+ case VLC_CODEC_RGB32:
p_vout->output.i_rmask = 0xff0000;
p_vout->output.i_gmask = 0x00ff00;
p_vout->output.i_bmask = 0x0000ff;
/* Initialize the output structure: RGB with square pixels, whatever
* the input format is, since it's the only format we know */
- p_vout->output.i_chroma = VLC_FOURCC('R','G','B','2');
+ p_vout->output.i_chroma = VLC_CODEC_RGB8;
p_vout->output.pf_setpalette = SetPalette;
p_vout->output.i_width = vga_getxdim();
p_vout->output.i_height = vga_getydim();
int i_index;
picture_t *p_pic;
char *psz_chroma, *psz_tmp;
- int i_width, i_height, i_pitch, i_chroma;
+ int i_width, i_height, i_pitch;
+ vlc_fourcc_t i_chroma;
i_width = var_CreateGetInteger( p_vout, "vmem-width" );
i_height = var_CreateGetInteger( p_vout, "vmem-height" );
i_pitch = var_CreateGetInteger( p_vout, "vmem-pitch" );
psz_chroma = var_CreateGetString( p_vout, "vmem-chroma" );
- if( psz_chroma )
+ if( !psz_chroma )
{
- if( strlen( psz_chroma ) < 4 )
- {
- msg_Err( p_vout, "vmem-chroma should be 4 characters long" );
- free( psz_chroma );
- return VLC_EGENERIC;
- }
- i_chroma = VLC_FOURCC( psz_chroma[0], psz_chroma[1],
- psz_chroma[2], psz_chroma[3] );
- free( psz_chroma );
+ msg_Err( p_vout, "Cannot find chroma information." );
+ return VLC_EGENERIC;
}
- else
+
+ i_chroma = vlc_fourcc_GetCodecFromString( VIDEO_ES, psz_chroma );
+ free( psz_chroma );
+
+ if( !i_chroma )
{
- msg_Err( p_vout, "Cannot find chroma information." );
+ msg_Err( p_vout, "vmem-chroma should be 4 characters long" );
return VLC_EGENERIC;
}
/* Define the bitmasks */
switch( i_chroma )
{
- case VLC_FOURCC( 'R','V','1','5' ):
+ case VLC_CODEC_RGB15:
p_vout->output.i_rmask = 0x001f;
p_vout->output.i_gmask = 0x03e0;
p_vout->output.i_bmask = 0x7c00;
break;
- case VLC_FOURCC( 'R','V','1','6' ):
+ case VLC_CODEC_RGB16:
p_vout->output.i_rmask = 0x001f;
p_vout->output.i_gmask = 0x07e0;
p_vout->output.i_bmask = 0xf800;
break;
- case VLC_FOURCC( 'R','V','2','4' ):
+ case VLC_CODEC_RGB24:
p_vout->output.i_rmask = 0xff0000;
p_vout->output.i_gmask = 0x00ff00;
p_vout->output.i_bmask = 0x0000ff;
break;
- case VLC_FOURCC( 'R','V','3','2' ):
+ case VLC_CODEC_RGB32:
p_vout->output.i_rmask = 0xff0000;
p_vout->output.i_gmask = 0x00ff00;
p_vout->output.i_bmask = 0x0000ff;
return VLC_SUCCESS;
}
- vout_InitPicture( VLC_OBJECT(p_vout), p_pic, p_vout->output.i_chroma,
- p_vout->output.i_width, p_vout->output.i_height,
- p_vout->output.i_aspect );
+ if( picture_Setup( p_pic, p_vout->output.i_chroma,
+ p_vout->output.i_width, p_vout->output.i_height,
+ p_vout->output.i_aspect ) )
+ {
+ free( p_pic );
+ return VLC_EGENERIC;
+ }
p_pic->p->i_pitch = i_pitch;
}
}
}
- p_vout->output.i_chroma = X112VLC_FOURCC(p_vout->output.i_chroma);
+ p_vout->output.i_chroma = vlc_fourcc_GetCodec( VIDEO_ES, X112VLC_FOURCC(p_vout->output.i_chroma) );
#elif defined(MODULE_NAME_IS_glx)
{
int i_opcode, i_evt, i_err = 0;
#if XvVersion < 2 || ( XvVersion == 2 && XvRevision < 2 )
switch( p_vout->output.i_chroma )
{
- case VLC_FOURCC('R','V','1','6'):
+ case VLC_CODEC_RGB16:
#if defined( WORDS_BIGENDIAN )
p_vout->output.i_rmask = 0xf800;
p_vout->output.i_gmask = 0x07e0;
p_vout->output.i_bmask = 0xf800;
#endif
break;
- case VLC_FOURCC('R','V','1','5'):
+ case VLC_CODEC_RGB15:
#if defined( WORDS_BIGENDIAN )
p_vout->output.i_rmask = 0x7c00;
p_vout->output.i_gmask = 0x03e0;
switch( p_vout->p_sys->i_screen_depth )
{
case 8: /* FIXME: set the palette */
- p_vout->output.i_chroma = VLC_FOURCC('R','G','B','2'); break;
+ p_vout->output.i_chroma = VLC_CODEC_RGB8; break;
case 15:
- p_vout->output.i_chroma = VLC_FOURCC('R','V','1','5'); break;
+ p_vout->output.i_chroma = VLC_CODEC_RGB15; break;
case 16:
- p_vout->output.i_chroma = VLC_FOURCC('R','V','1','6'); break;
+ p_vout->output.i_chroma = VLC_CODEC_RGB16; break;
case 24:
case 32:
- p_vout->output.i_chroma = VLC_FOURCC('R','V','3','2'); break;
+ p_vout->output.i_chroma = VLC_CODEC_RGB32; break;
default:
msg_Err( p_vout, "unknown screen depth %i",
p_vout->p_sys->i_screen_depth );
I_OUTPUTPICTURES++;
}
- if( p_vout->output.i_chroma == VLC_FOURCC('Y','V','1','2') )
+ if( p_vout->output.i_chroma == VLC_CODEC_YV12 )
{
/* U and V inverted compared to I420
* Fixme: this should be handled by the vout core */
- p_vout->output.i_chroma = VLC_FOURCC('I','4','2','0');
- p_vout->fmt_out.i_chroma = VLC_FOURCC('I','4','2','0');
+ p_vout->output.i_chroma = VLC_CODEC_I420;
+ p_vout->fmt_out.i_chroma = VLC_CODEC_I420;
}
return VLC_SUCCESS;
{
p_win->owner_window = vout_RequestXWindow( p_vout, &p_win->i_x,
&p_win->i_y, &p_win->i_width, &p_win->i_height );
+ if( !p_win->owner_window )
+ return VLC_EGENERIC;
xsize_hints.base_width = xsize_hints.width = p_win->i_width;
xsize_hints.base_height = xsize_hints.height = p_win->i_height;
xsize_hints.flags = PSize | PMinSize;
xsize_hints.y = p_win->i_y;
xsize_hints.flags |= PPosition;
}
+
+ /* Select events we are interested in. */
+ XSelectInput( p_vout->p_sys->p_display,
+ p_win->owner_window->handle.xid, StructureNotifyMask );
+
+ /* Get the parent window's geometry information */
+ XGetGeometry( p_vout->p_sys->p_display,
+ p_win->owner_window->handle.xid,
+ &(Window){ 0 }, &(int){ 0 }, &(int){ 0 },
+ &p_win->i_width,
+ &p_win->i_height,
+ &(unsigned){ 0 }, &(unsigned){ 0 } );
+
+ /* From man XSelectInput: only one client at a time can select a
+ * ButtonPress event, so we need to open a new window anyway. */
+ p_win->base_window =
+ XCreateWindow( p_vout->p_sys->p_display,
+ p_win->owner_window->handle.xid,
+ 0, 0,
+ p_win->i_width, p_win->i_height,
+ 0,
+ 0, CopyFromParent, 0,
+ CWBackingStore | CWBackPixel | CWEventMask,
+ &xwindow_attributes );
}
else
{
DisplayWidth( p_vout->p_sys->p_display, p_vout->p_sys->i_screen );
p_win->i_height =
DisplayHeight( p_vout->p_sys->p_display, p_vout->p_sys->i_screen );
- }
- if( !p_win->owner_window )
- {
/* Create the window and set hints - the window must receive
* ConfigureNotify events, and until it is displayed, Expose and
* MapNotify events. */
p_win->base_window, val.psz_string );
}
free( val.psz_string );
-
- if( !p_vout->b_fullscreen )
- {
- const char *argv[] = { "vlc", NULL };
-
- /* Set window manager hints and properties: size hints, command,
- * window's name, and accepted protocols */
- XSetWMNormalHints( p_vout->p_sys->p_display,
- p_win->base_window, &xsize_hints );
- XSetCommand( p_vout->p_sys->p_display, p_win->base_window,
- (char**)argv, 1 );
-
- if( !var_GetBool( p_vout, "video-deco") )
- {
- Atom prop;
- mwmhints_t mwmhints;
-
- mwmhints.flags = MWM_HINTS_DECORATIONS;
- mwmhints.decorations = False;
-
- prop = XInternAtom( p_vout->p_sys->p_display, "_MOTIF_WM_HINTS",
- False );
-
- XChangeProperty( p_vout->p_sys->p_display,
- p_win->base_window,
- prop, prop, 32, PropModeReplace,
- (unsigned char *)&mwmhints,
- PROP_MWM_HINTS_ELEMENTS );
- }
- }
- }
- else
- {
- Window dummy1;
- int dummy2, dummy3;
- unsigned int dummy4, dummy5;
-
- /* Select events we are interested in. */
- XSelectInput( p_vout->p_sys->p_display,
- p_win->owner_window->handle.xid, StructureNotifyMask );
-
- /* Get the parent window's geometry information */
- XGetGeometry( p_vout->p_sys->p_display,
- p_win->owner_window->handle.xid,
- &dummy1, &dummy2, &dummy3,
- &p_win->i_width,
- &p_win->i_height,
- &dummy4, &dummy5 );
-
- /* From man XSelectInput: only one client at a time can select a
- * ButtonPress event, so we need to open a new window anyway. */
- p_win->base_window =
- XCreateWindow( p_vout->p_sys->p_display,
- p_win->owner_window->handle.xid,
- 0, 0,
- p_win->i_width, p_win->i_height,
- 0,
- 0, CopyFromParent, 0,
- CWBackingStore | CWBackPixel | CWEventMask,
- &xwindow_attributes );
}
if( (p_win->wm_protocols == None) /* use WM_DELETE_WINDOW */
#endif
/* Fill in picture_t fields */
- vout_InitPicture( VLC_OBJECT(p_vout), p_pic, p_vout->output.i_chroma,
- p_vout->output.i_width, p_vout->output.i_height,
- p_vout->output.i_aspect );
+ if( picture_Setup( p_pic, p_vout->output.i_chroma,
+ p_vout->output.i_width, p_vout->output.i_height,
+ p_vout->output.i_aspect ) )
+ return -1;
#ifdef HAVE_SYS_SHM_H
if( p_vout->p_sys->i_shm_opcode )
switch( p_vout->output.i_chroma )
{
#if defined(MODULE_NAME_IS_xvideo) || defined(MODULE_NAME_IS_xvmc)
- case VLC_FOURCC('I','4','2','0'):
- case VLC_FOURCC('Y','V','1','2'):
- case VLC_FOURCC('Y','2','1','1'):
- case VLC_FOURCC('Y','U','Y','2'):
- case VLC_FOURCC('U','Y','V','Y'):
- case VLC_FOURCC('R','V','1','5'):
- case VLC_FOURCC('R','V','1','6'):
- case VLC_FOURCC('R','V','2','4'): /* Fixme: pixel pitch == 4 ? */
- case VLC_FOURCC('R','V','3','2'):
+ case VLC_CODEC_I420:
+ case VLC_CODEC_YV12:
+ case VLC_CODEC_Y211:
+ case VLC_CODEC_YUYV:
+ case VLC_CODEC_UYVY:
+ case VLC_CODEC_RGB15:
+ case VLC_CODEC_RGB16:
+ case VLC_CODEC_RGB24: /* Fixme: pixel pitch == 4 ? */
+ case VLC_CODEC_RGB32:
for( i_plane = 0; i_plane < p_pic->p_sys->p_image->num_planes;
i_plane++ )
p_pic->p[i_plane].i_pitch =
p_pic->p_sys->p_image->pitches[i_plane];
}
- if( p_vout->output.i_chroma == VLC_FOURCC('Y','V','1','2') )
+ if( p_vout->output.i_chroma == VLC_CODEC_YV12 )
{
/* U and V inverted compared to I420
* Fixme: this should be handled by the vout core */
break;
#else
- case VLC_FOURCC('R','G','B','2'):
- case VLC_FOURCC('R','V','1','6'):
- case VLC_FOURCC('R','V','1','5'):
- case VLC_FOURCC('R','V','2','4'):
- case VLC_FOURCC('R','V','3','2'):
+ case VLC_CODEC_RGB8:
+ case VLC_CODEC_RGB16:
+ case VLC_CODEC_RGB15:
+ case VLC_CODEC_RGB24:
+ case VLC_CODEC_RGB32:
p_pic->p->i_lines = p_pic->p_sys->p_image->height;
p_pic->p->i_visible_lines = p_pic->p_sys->p_image->height;
p_pic->p->i_pitch = p_pic->p_sys->p_image->bytes_per_line;
/* p_pic->p->i_pixel_pitch = 4 for RV24 but this should be set
- * properly by vout_InitPicture() */
+ * properly by picture_Setup() */
p_pic->p->i_visible_pitch = p_pic->p->i_pixel_pitch
* p_pic->p_sys->p_image->width;
break;
{
case 24:
if (fmt->bits_per_pixel == 32)
- chroma = VLC_FOURCC ('R', 'V', '3', '2');
+ chroma = VLC_CODEC_RGB32;
else if (fmt->bits_per_pixel == 24)
- chroma = VLC_FOURCC ('R', 'V', '2', '4');
+ chroma = VLC_CODEC_RGB24;
else
continue;
break;
case 16:
if (fmt->bits_per_pixel != 16)
continue;
- chroma = VLC_FOURCC ('R', 'V', '1', '6');
+ chroma = VLC_CODEC_RGB16;
break;
case 15:
if (fmt->bits_per_pixel != 16)
continue;
- chroma = VLC_FOURCC ('R', 'V', '1', '5');
+ chroma = VLC_CODEC_RGB15;
break;
case 8:
if (fmt->bits_per_pixel != 8)
continue;
- chroma = VLC_FOURCC ('R', 'G', 'B', '2');
+ chroma = VLC_CODEC_RGB8;
break;
default:
continue;
if (!gray)
continue; /* Prefer color over gray scale */
vid = vt->visual_id;
- chroma = VLC_FOURCC ('G', 'R', 'E', 'Y');
+ chroma = VLC_CODEC_GREY;
}
}
if (pic->i_status != FREE_PICTURE)
continue;
- vout_InitPicture (vout, pic, vout->output.i_chroma,
- vout->output.i_width, vout->output.i_height,
- vout->output.i_aspect);
+ picture_Setup (pic, vout->output.i_chroma,
+ vout->output.i_width, vout->output.i_height,
+ vout->output.i_aspect);
if (PictureAlloc (vout, pic, pic->p->i_pitch * pic->p->i_lines,
p_sys->shm ? p_sys->conn : NULL))
break;
{
case 32:
if (f->depth == 24)
- return VLC_FOURCC ('R', 'V', '3', '2');
+ return VLC_CODEC_RGB32;
break;
case 24:
if (f->depth == 24)
- return VLC_FOURCC ('R', 'V', '2', '4');
+ return VLC_CODEC_RGB24;
break;
case 16:
if (f->depth == 16)
- return VLC_FOURCC ('R', 'V', '1', '6');
+ return VLC_CODEC_RGB16;
if (f->depth == 15)
- return VLC_FOURCC ('R', 'V', '1', '5');
+ return VLC_CODEC_RGB15;
break;
case 8:
if (f->depth == 8)
- return VLC_FOURCC ('R', 'G', 'B', '2');
+ return VLC_CODEC_RGB8;
break;
}
break;
{
/*untested: case 24:
if (f->vhorz_u_period == 1 && f->vvert_u_period == 1)
- return VLC_FOURCC ('I', '4', '4', '4');
+ return VLC_CODEC_I444;
break;*/
case 16:
if (f->vhorz_u_period == 2 && f->vvert_u_period == 1)
{
if (!strcmp ((const char *)f->vcomp_order, "YUYV"))
- return VLC_FOURCC ('Y', 'U', 'Y', '2');
+ return VLC_CODEC_YUYV;
if (!strcmp ((const char *)f->vcomp_order, "UYVY"))
- return VLC_FOURCC ('U', 'Y', 'V', 'Y');
+ return VLC_CODEC_UYVY;
}
break;
}
if (f->vhorz_u_period == 2 && f->vvert_u_period == 2)
{
if (!strcmp ((const char *)f->vcomp_order, "YVU"))
- return VLC_FOURCC ('Y', 'V', '1', '2');
+ return VLC_CODEC_YV12;
if (!strcmp ((const char *)f->vcomp_order, "YUV"))
- return VLC_FOURCC ('I', '4', '2', '0');
+ return VLC_CODEC_I420;
}
}
break;
xcb_connection_t *conn = vout->p_sys->conn;
const xcb_xv_image_format_info_t *f, *end;
+#ifndef XCB_XV_OLD
f = xcb_xv_list_image_formats_format (list);
+#else
+ f = (xcb_xv_image_format_info_t *) (list + 1);
+#endif
end = f + xcb_xv_list_image_formats_format_length (list);
for (; f < end; f++)
{
/* Video chroma in preference order */
const vlc_fourcc_t chromas[] = {
vout->fmt_in.i_chroma,
- VLC_FOURCC ('Y', 'U', 'Y', '2'),
- VLC_FOURCC ('R', 'V', '2', '4'),
- VLC_FOURCC ('R', 'V', '1', '5'),
+ VLC_CODEC_YUYV,
+ VLC_CODEC_RGB24,
+ VLC_CODEC_RGB15,
};
for (size_t i = 0; i < sizeof (chromas) / sizeof (chromas[0]); i++)
{
if (pic->i_status != FREE_PICTURE)
continue;
- vout_InitPicture (vout, pic, vout->output.i_chroma,
- att->width, att->height,
- vout->fmt_in.i_aspect);
+ picture_Setup (pic, vout->output.i_chroma,
+ att->width, att->height,
+ vout->fmt_in.i_aspect);
if (PictureAlloc (vout, pic, att->data_size,
p_sys->shm ? p_sys->conn : NULL))
break;
p_sys->p_fd = NULL;
p_sys->b_yuv4mpeg2 = var_CreateGetBool( p_this, CFG_PREFIX "yuv4mpeg2" );
- p_sys->i_chroma = VLC_FOURCC('I','4','2','0');
+ p_sys->i_chroma = VLC_CODEC_I420;
p_sys->psz_file =
var_CreateGetString( p_this, CFG_PREFIX "file" );
}
psz_fcc = var_CreateGetNonEmptyString( p_this, CFG_PREFIX "chroma" );
- if( psz_fcc && (strlen( psz_fcc ) == 4) )
- {
- p_sys->i_chroma = VLC_FOURCC( psz_fcc[0], psz_fcc[1],
- psz_fcc[2], psz_fcc[3] );
- }
+ const vlc_fourcc_t i_requested_chroma =
+ vlc_fourcc_GetCodecFromString( VIDEO_ES, psz_fcc );
+ if( i_requested_chroma )
+ p_sys->i_chroma = i_requested_chroma;
free( psz_fcc );
if( p_sys->b_yuv4mpeg2 )
{
switch( p_sys->i_chroma )
{
- case VLC_FOURCC('Y','V','1','2'):
- case VLC_FOURCC('I','4','2','0'):
- case VLC_FOURCC('I','Y','U','V'):
- case VLC_FOURCC('J','4','2','0'):
+ case VLC_CODEC_YV12:
+ case VLC_CODEC_I420:
+ case VLC_CODEC_J420:
break;
default:
msg_Err( p_this,
aout_filter_sys_t *p_sys;
galaktos_thread_t *p_thread;
- if ( p_filter->input.i_format != VLC_FOURCC('f','l','3','2' )
- || p_filter->output.i_format != VLC_FOURCC('f','l','3','2') )
+ if( p_filter->input.i_format != VLC_CODEC_FL32 ||
+ p_filter->output.i_format != VLC_CODEC_FL32 )
{
msg_Warn( p_filter, "bad input or output format" );
return VLC_EGENERIC;
vlc_object_attach( p_thread->p_opengl, p_this );
/* Initialize vout parameters */
- vout_InitFormat( &p_thread->p_opengl->fmt_in,
- VLC_FOURCC('R','V','3','2'),
- p_thread->i_width, p_thread->i_height, 1 );
+ video_format_Setup( &p_thread->p_opengl->fmt_in,
+ VLC_CODEC_RGB32, p_thread->i_width, p_thread->i_height, 1 );
p_thread->p_opengl->i_window_width = p_thread->i_width;
p_thread->p_opengl->i_window_height = p_thread->i_height;
p_thread->p_opengl->render.i_width = p_thread->i_width;
video_format_t fmt;
- if ( p_filter->input.i_format != VLC_FOURCC('f','l','3','2' )
- || p_filter->output.i_format != VLC_FOURCC('f','l','3','2') )
+ if( p_filter->input.i_format != VLC_CODEC_FL32 ||
+ p_filter->output.i_format != VLC_CODEC_FL32 )
{
msg_Warn( p_filter, "bad input or output format" );
return VLC_EGENERIC;
}
- if ( !AOUT_FMTS_SIMILAR( &p_filter->input, &p_filter->output ) )
+ if( !AOUT_FMTS_SIMILAR( &p_filter->input, &p_filter->output ) )
{
msg_Warn( p_filter, "input and output formats are not similar" );
return VLC_EGENERIC;
fmt.i_width = fmt.i_visible_width = width;
fmt.i_height = fmt.i_visible_height = height;
- fmt.i_chroma = VLC_FOURCC('R','V','3','2');
+ fmt.i_chroma = VLC_CODEC_RGB32;
fmt.i_aspect = VOUT_ASPECT_FACTOR * width/height;
fmt.i_sar_num = fmt.i_sar_den = 1;
char *psz_effects, *psz_parser;
video_format_t fmt;
- if( ( p_filter->input.i_format != VLC_FOURCC('f','l','3','2') &&
- p_filter->input.i_format != VLC_FOURCC('f','i','3','2') ) )
+ if( ( p_filter->input.i_format != VLC_CODEC_FL32 &&
+ p_filter->input.i_format != VLC_CODEC_FI32 ) )
{
return VLC_EGENERIC;
}
fmt.i_width = fmt.i_visible_width = p_sys->i_width;
fmt.i_height = fmt.i_visible_height = p_sys->i_height;
- fmt.i_chroma = VLC_FOURCC('I','4','2','0');
+ fmt.i_chroma = VLC_CODEC_I420;
fmt.i_aspect = VOUT_ASPECT_FACTOR * p_sys->i_width/p_sys->i_height;
fmt.i_sar_num = fmt.i_sar_den = 1;
if( FAILED(result) )
return result;
- /* set internal video width and height */
- libvlc_video_set_size(p_libvlc,
- lprcPosRect->right-lprcPosRect->left,
- lprcPosRect->bottom-lprcPosRect->top,
- NULL );
-
- /* set internal video parent window */
- libvlc_video_set_parent(p_libvlc,
- reinterpret_cast<libvlc_drawable_t>(_inplacewnd), NULL);
-
if( _b_autoplay && playlist_select(0,NULL) )
{
libvlc_media_player_play(_p_mplayer,NULL);
SetWindowRgn(_inplacewnd, clipRgn, FALSE);
//RedrawWindow(_videownd, &posRect, NULL, RDW_INVALIDATE|RDW_ERASE|RDW_ALLCHILDREN);
- if( isRunning() )
- {
- libvlc_video_set_size(_p_libvlc,
- lprcPosRect->right-lprcPosRect->left,
- lprcPosRect->bottom-lprcPosRect->top,
- NULL );
- }
};
void VLCPlugin::freezeEvents(BOOL freeze)
return item;
}
-
-
* Copyright (C) 2002-2009 the VideoLAN team
*
* Authors: Damien Fouilleul <Damien.Fouilleul@laposte.net>
- * Jan Paul Dinger <jpd@m2x.nl>
+ * JP Dinger <jpd@m2x.nl>
*
* 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
OBJECT_TO_NPVARIANT(NPN_RetainObject(videoObj), result);
return INVOKERESULT_NO_ERROR;
case ID_root_VersionInfo:
- {
- const char *s = libvlc_get_version();
- int len = strlen(s);
- NPUTF8 *retval =(NPUTF8*)NPN_MemAlloc(len);
- if( !retval )
- return INVOKERESULT_OUT_OF_MEMORY;
-
- memcpy(retval, s, len);
- STRINGN_TO_NPVARIANT(retval, len, result);
- return INVOKERESULT_NO_ERROR;
- }
+ return invokeResultString(libvlc_get_version(),result);
default:
;
}
switch( index )
{
case ID_root_versionInfo:
- if( argCount == 0 )
- {
- const char *s = libvlc_get_version();
- int len = strlen(s);
- NPUTF8 *retval =(NPUTF8*)NPN_MemAlloc(len);
- if( !retval )
- return INVOKERESULT_OUT_OF_MEMORY;
- memcpy(retval, s, len);
- STRINGN_TO_NPVARIANT(retval, len, result);
- return INVOKERESULT_NO_ERROR;
- }
- return INVOKERESULT_NO_SUCH_METHOD;
+ if( 0 != argCount )
+ return INVOKERESULT_NO_SUCH_METHOD;
+ return invokeResultString(libvlc_get_version(),result);
default:
;
}
LibvlcPlaylistNPObject::~LibvlcPlaylistNPObject()
{
- if( isValid() )
- {
- if( playlistItemsObj ) NPN_ReleaseObject(playlistItemsObj);
- }
+ // Why the isValid()?
+ if( isValid() && playlistItemsObj )
+ NPN_ReleaseObject(playlistItemsObj);
};
const NPUTF8 * const LibvlcPlaylistNPObject::propertyNames[] =
}
}
- int item = p_plugin->playlist_add_extended_untrusted(url, name, i_options,
- const_cast<const char **>(ppsz_options), &ex);
+ int item = p_plugin->playlist_add_extended_untrusted(url, name,
+ i_options, const_cast<const char **>(ppsz_options), &ex);
free(url);
free(name);
for( int i=0; i< i_options; ++i )
}
return false;
}
+
+RuntimeNPObject::InvokeResult
+RuntimeNPObject::invokeResultString(const char *psz, NPVariant &result)
+{
+ if( !psz )
+ NULL_TO_NPVARIANT(result);
+ else
+ {
+ size_t len = strlen(psz);
+ NPUTF8* retval = (NPUTF8*)NPN_MemAlloc(len);
+ if( !retval )
+ return INVOKERESULT_OUT_OF_MEMORY;
+ else
+ {
+ memcpy(retval, psz, len);
+ STRINGN_TO_NPVARIANT(retval, len, result);
+ }
+ }
+ return INVOKERESULT_NO_ERROR;
+}
+
bool returnInvokeResult(InvokeResult result);
+ static InvokeResult invokeResultString(const char *,NPVariant &);
+
bool isPluginRunning()
{
return _instance->pdata;
function onEnd()\r
{\r
document.getElementById("state").innerHTML = "End...";\r
+ doStop();\r
}\r
\r
var liveFeedText = new Array("Live", "((Live))", "(( Live ))", "(( Live ))");\r
/* parse plugin arguments */
for( int i = 0; i < argc ; i++ )
{
- fprintf(stderr, "argn=%s, argv=%s\n", argn[i], argv[i]);
+ /* fprintf(stderr, "argn=%s, argv=%s\n", argn[i], argv[i]); */
if( !strcmp( argn[i], "target" )
|| !strcmp( argn[i], "mrl")
}
else if( !strcmp( argn[i], "toolbar" ) )
{
-/* FIXME: Remove this when toolbar functionality has been implemented on\
+/* FIXME: Remove this when toolbar functionality has been implemented on
* MacOS X and Win32 for Firefox/Mozilla/Safari. */
#ifdef XP_UNIX
b_toolbar = boolValue(argv[i]);
libvlc_exception_init(&ex);
libvlc_instance = libvlc_new(ppsz_argc, ppsz_argv, &ex);
-
if( libvlc_exception_raised(&ex) )
{
libvlc_exception_clear(&ex);
if( href )
{
/* prepend base URL */
- strcpy(href, psz_baseURL);
+ memcpy(href, psz_baseURL, baseLen+1);
/*
** relative url could be empty,
/* skip over protocol part */
char *pathstart = strchr(href, ':');
- char *pathend;
+ char *pathend = href+baseLen;
if( pathstart )
{
if( '/' == *(++pathstart) )
}
/* skip over host part */
pathstart = strchr(pathstart, '/');
- pathend = href+baseLen;
if( ! pathstart )
{
// no path, add a / past end of url (over '\0')
return NULL;
}
pathstart = href;
- pathend = href+baseLen;
}
/* relative URL made of an absolute path ? */
return false;
}
- VlcPlugin *p_plugin = (VlcPlugin*)instance->pdata;
-
+ VlcPlugin* p_plugin = reinterpret_cast<VlcPlugin*>(instance->pdata);
if( p_plugin == NULL )
{
return false;
{
/* check if plugin has a new parent window */
CGrafPtr drawable = (((NP_Port*) (window->window))->port);
- if( !curwin.window || drawable != (((NP_Port*) (curwin.window))->port) )
- {
- /* set/change parent window */
- libvlc_video_set_parent(p_vlc, (libvlc_drawable_t)drawable, &ex);
- if( libvlc_exception_raised(&ex) )
- fprintf( stderr, "Exception: %s\n", libvlc_exception_get_message(&ex) );
- libvlc_exception_clear(&ex);
- }
/* as MacOS X video output is windowless, set viewport */
libvlc_rectangle_t view, clip;
clip.right = window->clipRect.right;
libvlc_video_set_viewport(p_vlc, p_plugin->getMD(&ex), &view, &clip, &ex);
- if( libvlc_exception_raised(&ex) )
- fprintf( stderr, "Exception: %s\n", libvlc_exception_get_message(&ex) );
libvlc_exception_clear(&ex);
/* remember new window */
else if( curwin.window )
{
/* change/set parent */
- libvlc_video_set_parent(p_vlc, 0, &ex);
- if( libvlc_exception_raised(&ex) )
- fprintf( stderr, "Exception: %s\n", libvlc_exception_get_message(&ex) );
- libvlc_exception_clear(&ex);
-
curwin.window = NULL;
}
#endif /* XP_MACOSX */
style |= WS_CLIPCHILDREN|WS_CLIPSIBLINGS;
SetWindowLong((HWND)drawable, GWL_STYLE, style);
- /* change/set parent */
- libvlc_video_set_parent(p_vlc, (libvlc_drawable_t)drawable, &ex);
- if( libvlc_exception_raised(&ex) )
- fprintf( stderr, "Exception: %s\n", libvlc_exception_get_message(&ex) );
- libvlc_exception_clear(&ex);
-
/* remember new window */
p_plugin->setWindow(*window);
SetWindowLong( oldwin, GWL_WNDPROC, (LONG)(p_plugin->getWindowProc()) );
p_plugin->setWindowProc(NULL);
- /* change/set parent */
- libvlc_video_set_parent(p_vlc, 0, &ex);
- if( libvlc_exception_raised(&ex) )
- fprintf( stderr, "Exception: %s\n", libvlc_exception_get_message(&ex) );
- libvlc_exception_clear(&ex);
-
curwin.window = NULL;
}
#endif /* XP_WIN */
XtAddEventHandler( w, ButtonReleaseMask, FALSE,
(XtEventHandler)ControlHandler, p_plugin );
- /* set/change parent window */
- libvlc_video_set_parent( p_vlc, (libvlc_drawable_t) video, &ex );
- if( libvlc_exception_raised(&ex) )
- fprintf( stderr, "Exception: %s\n", libvlc_exception_get_message(&ex) );
- libvlc_exception_clear(&ex);
-
/* remember window */
p_plugin->setWindow( *window );
p_plugin->setVideoWindow( video );
}
else if( curwin.window )
{
- /* change/set parent */
- libvlc_video_set_parent(p_vlc, 0, &ex);
- if( libvlc_exception_raised(&ex) )
- fprintf( stderr, "Exception: %s\n", libvlc_exception_get_message(&ex) );
- libvlc_exception_clear(&ex);
curwin.window = NULL;
}
#endif /* XP_UNIX */
libvlc_exception_init( &ex );
libvlc_media_player_t *p_md = p_plugin->getMD(&ex);
- if( libvlc_exception_raised(&ex) )
- fprintf( stderr, "%s\n", libvlc_exception_get_message(&ex));
libvlc_exception_clear( &ex );
i_playing = p_plugin->playlist_isplaying( &ex );
- if( libvlc_exception_raised(&ex) )
- fprintf( stderr, "%s\n", libvlc_exception_get_message(&ex));
libvlc_exception_clear( &ex );
vlc_toolbar_clicked_t clicked;
else
p_plugin->playlist_play( &ex );
- if( libvlc_exception_raised(&ex) )
- fprintf( stderr, "%s\n", libvlc_exception_get_message(&ex));
libvlc_exception_clear( &ex );
}
break;
case clicked_Stop:
{
p_plugin->playlist_stop(&ex);
- if( libvlc_exception_raised(&ex) )
- fprintf( stderr, "%s\n", libvlc_exception_get_message(&ex));
libvlc_exception_clear( &ex );
}
break;
case clicked_Fullscreen:
{
p_plugin->set_fullscreen( 1, &ex );
- if( libvlc_exception_raised(&ex) )
- fprintf( stderr, "%s\n", libvlc_exception_get_message(&ex));
libvlc_exception_clear( &ex );
}
break;
case clicked_Unmute:
{
libvlc_audio_toggle_mute( p_plugin->getVLC(), &ex );
- if( libvlc_exception_raised(&ex) )
- fprintf( stderr, "%s\n", libvlc_exception_get_message(&ex));
libvlc_exception_clear( &ex );
}
break;
( ((float)i_xPos-4.0 ) / ( ((float)i_width-8.0)/100) );
libvlc_media_player_set_time( p_md, f_length, &ex );
- if( libvlc_exception_raised(&ex) )
- fprintf( stderr, "%s\n", libvlc_exception_get_message(&ex));
libvlc_exception_clear( &ex );
}
}
../include/vlc_es_out.h \
../include/vlc_events.h \
../include/vlc_filter.h \
+ ../include/vlc_fourcc.h \
../include/vlc_gcrypt.h \
../include/vlc_httpd.h \
../include/vlc_image.h \
../include/vlc_modules.h \
../include/vlc_mtime.h \
../include/vlc_objects.h \
+ ../include/vlc_picture.h \
../include/vlc_playlist.h \
../include/vlc_plugin.h \
../include/vlc_rand.h \
../include/vlc_sout.h \
../include/vlc_stream.h \
../include/vlc_strings.h \
+ ../include/vlc_subpicture.h \
../include/vlc_threads.h \
../include/vlc_url.h \
../include/vlc_variables.h \
libvlccore_la_LDFLAGS = `$(VLC_CONFIG) --ldflags libvlccore` $(AM_LDFLAGS) \
-no-undefined \
-export-symbols $(srcdir)/libvlccore.sym \
- -version-info 2:0:0
+ -version-info 3:0:0
libvlccore_la_LIBADD = `$(VLC_CONFIG) -libs libvlccore` $(AM_LIBADD) \
$(LTLIBINTL) ../compat/libcompat.la
libvlccore_la_DEPENDENCIES = libvlccore.sym
libvlccore.la ../compat/libcompat.la
libvlc_la_CFLAGS = `$(VLC_CONFIG) --cflags libvlc`
libvlc_la_LDFLAGS = $(AM_LDFLAGS) `$(VLC_CONFIG) --ldflags libvlc` \
- -version-info 4:0:2 \
+ -version-info 5:0:0 \
-export-symbols $(srcdir)/libvlc.sym
libvlc_la_DEPENDENCIES = libvlc.sym libvlccore.la
if HAVE_WIN32
endif
SOURCES_libvlc_beos = \
+ misc/pthread.c \
$(NULL)
SOURCES_libvlc_darwin = \
+ misc/pthread.c \
misc/darwin_specific.c \
$(NULL)
SOURCES_libvlc_linux = \
+ misc/pthread.c \
misc/linux_specific.c \
$(NULL)
SOURCES_libvlc_win32 = \
+ misc/w32thread.c \
misc/win32_specific.c \
network/winsock.c \
$(NULL)
-SOURCES_libvlc_other = misc/not_specific.c
+SOURCES_libvlc_other = \
+ misc/pthread.c \
+ misc/not_specific.c
SOURCES_libvlc_dirent = \
extras/dirent.c \
misc/rand.c \
misc/mtime.c \
misc/block.c \
+ misc/fourcc.c \
misc/es_format.c \
modules/modules.h \
modules/modules.c \
{
switch( i_format )
{
- case VLC_FOURCC('u','8',' ',' '):
- case VLC_FOURCC('s','8',' ',' '):
+ case VLC_CODEC_U8:
+ case VLC_CODEC_S8:
return 8;
- case VLC_FOURCC('u','1','6','l'):
- case VLC_FOURCC('s','1','6','l'):
- case VLC_FOURCC('u','1','6','b'):
- case VLC_FOURCC('s','1','6','b'):
+ case VLC_CODEC_U16L:
+ case VLC_CODEC_S16L:
+ case VLC_CODEC_U16B:
+ case VLC_CODEC_S16B:
return 16;
- case VLC_FOURCC('u','2','4','l'):
- case VLC_FOURCC('s','2','4','l'):
- case VLC_FOURCC('u','2','4','b'):
- case VLC_FOURCC('s','2','4','b'):
+ case VLC_CODEC_U24L:
+ case VLC_CODEC_S24L:
+ case VLC_CODEC_U24B:
+ case VLC_CODEC_S24B:
return 24;
- case VLC_FOURCC('s','3','2','l'):
- case VLC_FOURCC('s','3','2','b'):
- case VLC_FOURCC('f','l','3','2'):
- case VLC_FOURCC('f','i','3','2'):
+ case VLC_CODEC_S32L:
+ case VLC_CODEC_S32B:
+ case VLC_CODEC_FL32:
+ case VLC_CODEC_FI32:
return 32;
- case VLC_FOURCC('f','l','6','4'):
+ case VLC_CODEC_FL64:
return 64;
default:
/* Non-S/PDIF mixer only deals with float32 or fixed32. */
p_aout->mixer.mixer.i_format
= (vlc_CPU() & CPU_CAPABILITY_FPU) ?
- VLC_FOURCC('f','l','3','2') :
- VLC_FOURCC('f','i','3','2');
+ VLC_CODEC_FL32 : VLC_CODEC_FI32;
aout_FormatPrepare( &p_aout->mixer.mixer );
}
else
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
*****************************************************************************/
#ifdef HAVE_CONFIG_H
# include "config.h"
#endif
-#include <vlc_common.h>
-#include "../libvlc.h"
-#include "vlc_charset.h"
-#include "vlc_keys.h"
-
#include <errno.h> /* errno */
#include <assert.h>
#include <limits.h>
#include <locale.h>
#endif
+#include <vlc_common.h>
+#include "../libvlc.h"
+#include "vlc_charset.h"
+#include "vlc_keys.h"
+
#include "configuration.h"
#include "modules/modules.h"
int ConfigStringToKey( const char *psz_key )
{
int i_key = 0;
- unsigned int i;
+ size_t i;
const char *psz_parser = strchr( psz_key, '-' );
while( psz_parser && psz_parser != psz_key )
{
- for( i = 0; i < sizeof(vlc_modifiers) / sizeof(key_descriptor_t); i++ )
+ for( i = 0; i < vlc_num_modifiers; ++i )
{
if( !strncasecmp( vlc_modifiers[i].psz_key_string, psz_key,
strlen( vlc_modifiers[i].psz_key_string ) ) )
psz_key = psz_parser + 1;
psz_parser = strchr( psz_key, '-' );
}
- for( i = 0; i < sizeof(vlc_keys) / sizeof( key_descriptor_t ); i++ )
+ for( i = 0; i < vlc_num_keys; ++i )
{
if( !strcasecmp( vlc_keys[i].psz_key_string, psz_key ) )
{
char *ConfigKeyToString( int i_key )
{
- char *psz_key = malloc( 100 );
+ // Worst case appears to be 45 characters:
+ // "Command-Meta-Ctrl-Shift-Alt-Browser Favorites"
+ enum { keylen=64 };
+ char *psz_key = malloc( keylen );
char *p;
size_t index;
*psz_key = '\0';
p = psz_key;
- for( index = 0; index < (sizeof(vlc_modifiers) / sizeof(key_descriptor_t));
- index++ )
+ for( index = 0; index < vlc_num_modifiers; ++index )
{
if( i_key & vlc_modifiers[index].i_key_code )
{
- p += sprintf( p, "%s-", vlc_modifiers[index].psz_key_string );
+ p += snprintf( p, keylen-(psz_key-p), "%s-",
+ vlc_modifiers[index].psz_key_string );
}
}
- for( index = 0; index < (sizeof(vlc_keys) / sizeof( key_descriptor_t));
- index++)
+ for( index = 0; index < vlc_num_keys; ++index )
{
if( (int)( i_key & ~KEY_MODIFIER ) == vlc_keys[index].i_key_code )
{
- p += sprintf( p, "%s", vlc_keys[index].psz_key_string );
+ p += snprintf( p, keylen-(psz_key-p), "%s",
+ vlc_keys[index].psz_key_string );
break;
}
}
aout_instance_t *p_aout = GetAOut( p_instance, p_e );
if( p_aout )
{
- vlc_value_t val;
- int i_ret = -1;
-
- val.i_int = (int) device_type;
- i_ret = var_Set( p_aout, "audio-device", val );
- if( i_ret < 0 )
- {
+ if( var_SetInteger( p_aout, "audio-device", device_type ) < 0 )
libvlc_exception_raise( p_e, "Failed setting audio device" );
- vlc_object_release( p_aout );
- return;
- }
-
vlc_object_release( p_aout );
}
}
int libvlc_audio_get_mute( libvlc_instance_t *p_instance,
libvlc_exception_t *p_e )
{
- /*
- * If the volume level is 0, then the channel is muted
- */
- audio_volume_t i_volume;
-
- i_volume = libvlc_audio_get_volume(p_instance, p_e);
- if ( i_volume == 0 )
- return true;
- return false;
+ return (libvlc_audio_get_volume(p_instance, p_e) == 0);
}
void libvlc_audio_set_mute( libvlc_instance_t *p_instance, int mute,
libvlc_exception_t *p_e )
{
input_thread_t *p_input_thread = libvlc_get_input_thread( p_mi, p_e );
- vlc_value_t val_list;
int i_track_count;
if( !p_input_thread )
return -1;
- var_Change( p_input_thread, "audio-es", VLC_VAR_GETCHOICES, &val_list, NULL );
- i_track_count = val_list.p_list->i_count;
- var_Change( p_input_thread, "audio-es", VLC_VAR_FREELIST, &val_list, NULL );
+ i_track_count = var_CountChoices( p_input_thread, "audio-es" );
vlc_object_release( p_input_thread );
return i_track_count;
break;
}
}
- var_Change( p_input_thread, "audio-es", VLC_VAR_FREELIST, &val_list, NULL );
+ var_FreeList( &val_list, NULL );
vlc_object_release( p_input_thread );
return i_track;
}
libvlc_exception_raise( p_e, "Setting audio track failed" );
end:
- var_Change( p_input_thread, "audio-es", VLC_VAR_FREELIST, &val_list, NULL );
+ var_FreeList( &val_list, NULL );
vlc_object_release( p_input_thread );
}
libvlc_event_listeners_group_t * p_lg;
int i,j ;
- vlc_mutex_destroy( &p_em->event_sending_lock );
- vlc_mutex_destroy( &p_em->object_lock );
+ vlc_mutex_lock( &p_em->event_sending_lock );
+ vlc_mutex_lock( &p_em->object_lock );
for( i = 0; i < vlc_array_count(&p_em->listeners_groups); i++)
{
free( p_lg );
}
vlc_array_clear( &p_em->listeners_groups );
+
+ vlc_mutex_unlock( &p_em->object_lock );
+ vlc_mutex_unlock( &p_em->event_sending_lock );
+
libvlc_release( p_em->p_libvlc_instance );
+
+ vlc_mutex_destroy( &p_em->event_sending_lock );
+ vlc_mutex_destroy( &p_em->object_lock );
+
free( p_em );
}
libvlc_exception_t * p_e )
{
libvlc_event_listeners_group_t * listeners_group;
+
+ vlc_mutex_lock( &p_em->object_lock );
+
listeners_group = malloc(sizeof(libvlc_event_listeners_group_t));
if( !listeners_group )
{
+ vlc_mutex_unlock( &p_em->object_lock );
+
libvlc_exception_raise( p_e, "No Memory left" );
return;
}
listeners_group->event_type = event_type;
vlc_array_init( &listeners_group->listeners );
- vlc_mutex_lock( &p_em->object_lock );
vlc_array_append( &p_em->listeners_groups, listeners_group );
vlc_mutex_unlock( &p_em->object_lock );
}
if( !array_listeners_cached )
{
fprintf(stderr, "Can't alloc memory in libvlc_event_send" );
+ vlc_mutex_unlock( &p_em->object_lock );
return;
}
if( !listeners_group )
{
+ vlc_mutex_unlock( &p_em->object_lock );
free( array_listeners_cached );
return;
}
listener_cached->pf_callback( p_event, listener_cached->p_user_data );
listener_cached++;
}
- vlc_mutex_unlock( &p_em->event_sending_lock );
free( array_listeners_cached );
+
+ vlc_mutex_unlock( &p_em->event_sending_lock );
}
/*
libvlc_event_listener_t * listener;
int i;
+ vlc_mutex_lock( &p_event_manager->object_lock );
+
listener = malloc(sizeof(libvlc_event_listener_t));
if( !listener )
{
+ vlc_mutex_unlock( &p_event_manager->object_lock );
+
libvlc_exception_raise( p_e, "No Memory left" );
return;
}
listener->p_user_data = p_user_data;
listener->pf_callback = pf_callback;
- vlc_mutex_lock( &p_event_manager->object_lock );
for( i = 0; i < vlc_array_count(&p_event_manager->listeners_groups); i++ )
{
listeners_group = vlc_array_item_at_index(&p_event_manager->listeners_groups, i);
return;
}
}
- vlc_mutex_unlock( &p_event_manager->object_lock );
free(listener);
+
+ vlc_mutex_unlock( &p_event_manager->object_lock );
+
libvlc_exception_raise( p_e,
"This object event manager doesn't know about '%s' events",
libvlc_event_type_name(event_type));
libvlc_event_listener_t * listener;
int i, j;
- vlc_mutex_lock( &p_event_manager->event_sending_lock );
vlc_mutex_lock( &p_event_manager->object_lock );
+
for( i = 0; i < vlc_array_count(&p_event_manager->listeners_groups); i++)
{
listeners_group = vlc_array_item_at_index(&p_event_manager->listeners_groups, i);
free( listener );
vlc_array_remove( &listeners_group->listeners, j );
vlc_mutex_unlock( &p_event_manager->object_lock );
- vlc_mutex_unlock( &p_event_manager->event_sending_lock );
return;
}
}
}
}
+
vlc_mutex_unlock( &p_event_manager->object_lock );
- vlc_mutex_unlock( &p_event_manager->event_sending_lock );
libvlc_exception_raise( p_e,
"This object event manager doesn't know about '%s,%p,%p' event observer",
libvlc_instance_t * p_libvlc_instance;
int i_refcount;
vlc_mutex_t object_lock;
+ vlc_mutex_t refcount_lock;
libvlc_media_t * p_md; /* The media from which the
* mlist comes, if any. */
vlc_array_t items;
uint32_t xid;
uint32_t agl;
} drawable;
-
- bool b_own_its_input_thread;
};
struct libvlc_media_library_t
libvlc_media_player_t *,
libvlc_exception_t * );
-/* Media instance */
-libvlc_media_player_t *
-libvlc_media_player_new_from_input_thread( libvlc_instance_t *,
- input_thread_t *,
- libvlc_exception_t * );
-
-void libvlc_media_player_destroy(
- libvlc_media_player_t * );
-
/* Media Descriptor */
libvlc_media_t * libvlc_media_new_from_input_item(
libvlc_instance_t *, input_item_t *,
}
vlc_mutex_init( &p_mlist->object_lock );
+ vlc_mutex_init( &p_mlist->refcount_lock ); // FIXME: spinlock?
vlc_array_init( &p_mlist->items );
p_mlist->i_refcount = 1;
libvlc_media_t * p_md;
int i;
- vlc_mutex_lock( &p_mlist->object_lock );
+ vlc_mutex_lock( &p_mlist->refcount_lock );
p_mlist->i_refcount--;
if( p_mlist->i_refcount > 0 )
{
- vlc_mutex_unlock( &p_mlist->object_lock );
+ vlc_mutex_unlock( &p_mlist->refcount_lock );
return;
}
- vlc_mutex_unlock( &p_mlist->object_lock );
+ vlc_mutex_unlock( &p_mlist->refcount_lock );
/* Refcount null, time to free */
libvlc_event_manager_release( p_mlist->p_event_manager );
- if( p_mlist->p_md )
- libvlc_media_release( p_mlist->p_md );
+ libvlc_media_release( p_mlist->p_md );
for ( i = 0; i < vlc_array_count( &p_mlist->items ); i++ )
{
**************************************************************************/
void libvlc_media_list_retain( libvlc_media_list_t * p_mlist )
{
- vlc_mutex_lock( &p_mlist->object_lock );
+ vlc_mutex_lock( &p_mlist->refcount_lock );
p_mlist->i_refcount++;
- vlc_mutex_unlock( &p_mlist->object_lock );
+ vlc_mutex_unlock( &p_mlist->refcount_lock );
}
{
VLC_UNUSED(p_e);
vlc_mutex_lock( &p_mlist->object_lock );
- if( p_mlist->p_md )
- libvlc_media_release( p_mlist->p_md );
+ libvlc_media_release( p_mlist->p_md );
libvlc_media_retain( p_md );
p_mlist->p_md = p_md;
vlc_mutex_unlock( &p_mlist->object_lock );
}
/**************************************************************************
- * path_deepness (Media List Player Internal)
+ * path_depth (Media List Player Internal)
**************************************************************************/
-static inline int libvlc_media_list_path_deepness( libvlc_media_list_path_t path )
+static inline int libvlc_media_list_path_depth( libvlc_media_list_path_t path )
{
int i;
for( i = 0; path[i] != -1; i++ );
**************************************************************************/
static inline void libvlc_media_list_path_append( libvlc_media_list_path_t * p_path, int index )
{
- int old_deepness = libvlc_media_list_path_deepness( *p_path );
- *p_path = realloc( *p_path, sizeof(int)*(old_deepness+2));
- *p_path[old_deepness] = index;
- *p_path[old_deepness+1] = -1;
+ int old_depth = libvlc_media_list_path_depth( *p_path );
+ *p_path = realloc( *p_path, sizeof(int)*(old_depth+2));
+ *p_path[old_depth] = index;
+ *p_path[old_depth+1] = -1;
}
/**************************************************************************
static inline libvlc_media_list_path_t libvlc_media_list_path_copy_by_appending( libvlc_media_list_path_t path, int index )
{
libvlc_media_list_path_t ret;
- int old_deepness = libvlc_media_list_path_deepness( path );
- ret = malloc( sizeof(int)*(old_deepness+2) );
- memcpy( ret, path, sizeof(int)*(old_deepness+2) );
- ret[old_deepness] = index;
- ret[old_deepness+1] = -1;
+ int old_depth = libvlc_media_list_path_depth( path );
+ ret = malloc( sizeof(int)*(old_depth+2) );
+ memcpy( ret, path, sizeof(int)*(old_depth+2) );
+ ret[old_depth] = index;
+ ret[old_depth+1] = -1;
return ret;
}
static inline libvlc_media_list_path_t libvlc_media_list_path_copy( libvlc_media_list_path_t path )
{
libvlc_media_list_path_t ret;
- int deepness = libvlc_media_list_path_deepness( path );
- ret = malloc( sizeof(int)*(deepness+1) );
- memcpy( ret, path, sizeof(int)*(deepness+1) );
+ int depth = libvlc_media_list_path_depth( path );
+ ret = malloc( sizeof(int)*(depth+1) );
+ memcpy( ret, path, sizeof(int)*(depth+1) );
return ret;
}
p_mlp->p_mlist,
p_mlp->current_playing_item_path );
- int deepness = libvlc_media_list_path_deepness( p_mlp->current_playing_item_path );
- if( deepness < 1 || !p_parent_of_playing_item )
+ int depth = libvlc_media_list_path_depth( p_mlp->current_playing_item_path );
+ if( depth < 1 || !p_parent_of_playing_item )
return NULL;
ret = libvlc_media_list_path_copy( p_mlp->current_playing_item_path );
- while( ret[deepness-1] >= libvlc_media_list_count( p_parent_of_playing_item, NULL ) )
+ while( ret[depth-1] >= libvlc_media_list_count( p_parent_of_playing_item, NULL ) )
{
- deepness--;
- if( deepness <= 0 )
+ depth--;
+ if( depth <= 0 )
{
free( ret );
libvlc_media_list_release( p_parent_of_playing_item );
return NULL;
}
- ret[deepness] = -1;
- ret[deepness-1]++;
+ ret[depth] = -1;
+ ret[depth-1]++;
p_parent_of_playing_item = libvlc_media_list_parentlist_at_path(
p_mlp->p_mlist,
ret );
if( !p_mlp )
return NULL;
+ libvlc_retain( p_instance );
+ p_mlp->p_libvlc_instance = p_instance;
+ p_mlp->i_refcount = 0;
+ vlc_mutex_init( &p_mlp->object_lock );
p_mlp->current_playing_item_path = NULL;
- p_mlp->p_mi = NULL;
p_mlp->p_mlist = NULL;
- vlc_mutex_init( &p_mlp->object_lock );
+ p_mlp->p_mi = NULL;
p_mlp->p_event_manager = libvlc_event_manager_new( p_mlp,
p_instance,
p_e );
**************************************************************************/
void libvlc_media_list_player_release( libvlc_media_list_player_t * p_mlp )
{
- free(p_mlp);
+ if( !p_mlp )
+ return;
+
+ vlc_mutex_lock( &p_mlp->object_lock );
+
+ p_mlp->i_refcount--;
+ if( p_mlp->i_refcount > 0 )
+ {
+ vlc_mutex_unlock( &p_mlp->object_lock );
+ return;
+ }
+ vlc_mutex_unlock( &p_mlp->object_lock );
+ vlc_mutex_destroy( &p_mlp->object_lock );
+
+ libvlc_event_manager_release( p_mlp->p_event_manager );
+ libvlc_media_player_release( p_mlp->p_mi );
+
+ if( p_mlp->p_mlist )
+ {
+ uninstall_playlist_observer( p_mlp );
+ libvlc_media_list_release( p_mlp->p_mlist );
+ }
+
+ free( p_mlp->current_playing_item_path );
+ libvlc_release( p_mlp->p_libvlc_instance );
+ free( p_mlp );
}
/**************************************************************************
p_input_thread = p_mi->p_input_thread;
- /* No one is tracking this input_thread apart from us. Destroy it. */
- if( p_mi->b_own_its_input_thread )
- {
- var_DelCallback( p_input_thread, "can-seek",
- input_seekable_changed, p_mi );
- var_DelCallback( p_input_thread, "can-pause",
- input_pausable_changed, p_mi );
- var_DelCallback( p_input_thread, "intf-event",
- input_event_changed, p_mi );
-
- /* We owned this one */
- input_Stop( p_input_thread, b_input_abort );
- vlc_thread_join( p_input_thread );
-
- var_Destroy( p_input_thread, "drawable-hwnd" );
- var_Destroy( p_input_thread, "drawable-xid" );
- var_Destroy( p_input_thread, "drawable-agl" );
- }
+ var_DelCallback( p_input_thread, "can-seek",
+ input_seekable_changed, p_mi );
+ var_DelCallback( p_input_thread, "can-pause",
+ input_pausable_changed, p_mi );
+ var_DelCallback( p_input_thread, "intf-event",
+ input_event_changed, p_mi );
+
+ /* We owned this one */
+ input_Stop( p_input_thread, b_input_abort );
+ vlc_thread_join( p_input_thread );
+
+ var_Destroy( p_input_thread, "drawable-hwnd" );
+ var_Destroy( p_input_thread, "drawable-xid" );
+ var_Destroy( p_input_thread, "drawable-agl" );
vlc_object_release( p_input_thread );
libvlc_media_set_state( p_mi->p_md, libvlc_state, NULL );
libvlc_event_send( p_mi->p_event_manager, &event );
}
- else if( newval.i_int == INPUT_EVENT_TIMES )
+ else if( newval.i_int == INPUT_EVENT_POSITION )
{
if( var_GetInteger( p_input, "state" ) != PLAYING_S )
return VLC_SUCCESS; /* Don't send the position while stopped */
var_GetTime( p_input, "time" );
libvlc_event_send( p_mi->p_event_manager, &event );
}
+ else if( newval.i_int == INPUT_EVENT_LENGTH )
+ {
+ event.type = libvlc_MediaPlayerLengthChanged;
+ event.u.media_player_length_changed.new_length =
+ var_GetTime( p_input, "length" );
+ libvlc_event_send( p_mi->p_event_manager, &event );
+ }
return VLC_SUCCESS;
}
+static void libvlc_media_player_destroy( libvlc_media_player_t * );
+
/**************************************************************************
* Create a Media Instance object.
*
p_mi->p_libvlc_instance = p_libvlc_instance;
p_mi->p_input_thread = NULL;
p_mi->i_refcount = 1;
- p_mi->b_own_its_input_thread = true;
vlc_mutex_init( &p_mi->object_lock );
p_mi->p_event_manager = libvlc_event_manager_new( p_mi,
p_libvlc_instance, p_e );
libvlc_MediaPlayerPositionChanged, p_e );
libvlc_event_manager_register_event_type( p_mi->p_event_manager,
libvlc_MediaPlayerTimeChanged, p_e );
+ libvlc_event_manager_register_event_type( p_mi->p_event_manager,
+ libvlc_MediaPlayerLengthChanged, p_e );
libvlc_event_manager_register_event_type( p_mi->p_event_manager,
libvlc_MediaPlayerTitleChanged, p_e );
libvlc_event_manager_register_event_type( p_mi->p_event_manager,
/* Snapshot initialization */
libvlc_event_manager_register_event_type( p_mi->p_event_manager,
libvlc_MediaPlayerSnapshotTaken, p_e );
+
/* Attach a var callback to the global object to provide the glue between
vout_thread that generates the event and media_player that re-emits it
with its own event manager
libvlc_exception_t *p_e )
{
libvlc_media_player_t * p_mi;
- p_mi = libvlc_media_player_new( p_md->p_libvlc_instance, p_e );
+ p_mi = libvlc_media_player_new( p_md->p_libvlc_instance, p_e );
if( !p_mi )
return NULL;
return p_mi;
}
-/**************************************************************************
- * Create a new media instance object from an input_thread (Libvlc Internal).
- **************************************************************************/
-libvlc_media_player_t * libvlc_media_player_new_from_input_thread(
- struct libvlc_instance_t *p_libvlc_instance,
- input_thread_t *p_input,
- libvlc_exception_t *p_e )
-{
- libvlc_media_player_t * p_mi;
-
- if( !p_input )
- {
- libvlc_exception_raise( p_e, "invalid input thread" );
- return NULL;
- }
-
- p_mi = libvlc_media_player_new( p_libvlc_instance, p_e );
-
- if( !p_mi )
- return NULL;
-
- p_mi->p_md = libvlc_media_new_from_input_item(
- p_libvlc_instance,
- input_GetItem( p_input ), p_e );
-
- if( !p_mi->p_md )
- {
- libvlc_media_player_destroy( p_mi );
- return NULL;
- }
-
- /* will be released in media_player_release() */
- vlc_object_hold( p_input );
-
- p_mi->p_input_thread = p_input;
- p_mi->b_own_its_input_thread = false;
-
- return p_mi;
-}
-
/**************************************************************************
* Destroy a Media Instance object (libvlc internal)
*
* Warning: No lock held here, but hey, this is internal. Caller must lock.
**************************************************************************/
-void libvlc_media_player_destroy( libvlc_media_player_t *p_mi )
+static void libvlc_media_player_destroy( libvlc_media_player_t *p_mi )
{
input_thread_t *p_input_thread;
libvlc_exception_t p_e;
- libvlc_exception_init( &p_e );
-
- if( !p_mi )
- return;
+ assert( p_mi );
- /* Detach Callback from the main libvlc object */
+ /* Detach Callback from the main libvlc object */
var_DelCallback( p_mi->p_libvlc_instance->p_libvlc_int,
"vout-snapshottaken", SnapshotTakenCallback, p_mi );
+ libvlc_exception_init( &p_e );
p_input_thread = libvlc_get_input_thread( p_mi, &p_e );
if( libvlc_exception_raised( &p_e ) )
- {
- libvlc_event_manager_release( p_mi->p_event_manager );
+ /* no need to worry about no input thread */
libvlc_exception_clear( &p_e );
- free( p_mi );
- return; /* no need to worry about no input thread */
- }
- vlc_mutex_destroy( &p_mi->object_lock );
-
- vlc_object_release( p_input_thread );
+ else
+ release_input_thread( p_mi, true );
+ libvlc_event_manager_release( p_mi->p_event_manager );
libvlc_media_release( p_mi->p_md );
-
+ vlc_mutex_destroy( &p_mi->object_lock );
free( p_mi );
}
**************************************************************************/
void libvlc_media_player_release( libvlc_media_player_t *p_mi )
{
- if( !p_mi )
- return;
+ bool destroy;
+ assert( p_mi );
vlc_mutex_lock( &p_mi->object_lock );
-
- p_mi->i_refcount--;
-
- if( p_mi->i_refcount > 0 )
- {
- vlc_mutex_unlock( &p_mi->object_lock );
- return;
- }
+ destroy = !--p_mi->i_refcount;
vlc_mutex_unlock( &p_mi->object_lock );
- vlc_mutex_destroy( &p_mi->object_lock );
-
- release_input_thread( p_mi, true );
-
- libvlc_event_manager_release( p_mi->p_event_manager );
-
- libvlc_media_release( p_mi->p_md );
- free( p_mi );
+ if( destroy )
+ libvlc_media_player_destroy( p_mi );
}
/**************************************************************************
libvlc_event_send( p_mi->p_event_manager, &event );
}
- if( p_mi->b_own_its_input_thread )
- {
- vlc_mutex_lock( &p_mi->object_lock );
- release_input_thread( p_mi, true ); /* This will stop the input thread */
- vlc_mutex_unlock( &p_mi->object_lock );
- }
- else
- {
- input_thread_t * p_input_thread = libvlc_get_input_thread( p_mi, p_e );
-
- if( !p_input_thread )
- return;
-
- input_Stop( p_input_thread, true );
- vlc_object_release( p_input_thread );
- p_mi->p_input_thread = NULL;
- }
+ vlc_mutex_lock( &p_mi->object_lock );
+ release_input_thread( p_mi, true ); /* This will stop the input thread */
+ vlc_mutex_unlock( &p_mi->object_lock );
}
/**************************************************************************
* set_nsobject
**************************************************************************/
void libvlc_media_player_set_nsobject( libvlc_media_player_t *p_mi,
- void * drawable,
- libvlc_exception_t *p_e )
+ void * drawable,
+ libvlc_exception_t *p_e )
{
(void) p_e;
p_mi->drawable.nsobject = drawable;
libvlc_exception_t *p_e )
{
input_thread_t *p_input = libvlc_get_input_thread( p_mi, p_e );
+ libvlc_track_description_t *p_track_description = NULL,
+ *p_actual, *p_previous;
if( !p_input )
return NULL;
vlc_value_t val_list, text_list;
var_Change( p_input, psz_variable, VLC_VAR_GETLIST, &val_list, &text_list);
- if( val_list.p_list->i_count <= 0 ) /* no tracks */
- {
- var_Change( p_input, psz_variable, VLC_VAR_FREELIST, &val_list, &text_list);
- vlc_object_release( p_input );
- return NULL;
- }
+ /* no tracks */
+ if( val_list.p_list->i_count <= 0 )
+ goto end;
- libvlc_track_description_t *p_track_description, *p_actual, *p_previous;
p_track_description = ( libvlc_track_description_t * )
malloc( sizeof( libvlc_track_description_t ) );
if ( !p_track_description )
{
- var_Change( p_input, psz_variable, VLC_VAR_FREELIST,
- &val_list, &text_list);
- vlc_object_release( p_input );
libvlc_exception_raise( p_e, "no enough memory" );
- return NULL;
+ goto end;
}
p_actual = p_track_description;
p_previous = NULL;
if ( !p_actual )
{
libvlc_track_description_release( p_track_description );
- var_Change( p_input, psz_variable, VLC_VAR_FREELIST,
- &val_list, &text_list);
- vlc_object_release( p_input );
libvlc_exception_raise( p_e, "no enough memory" );
- return NULL;
+ goto end;
}
}
p_actual->i_id = val_list.p_list->p_values[i].i_int;
p_previous = p_actual;
p_actual = NULL;
}
- var_Change( p_input, psz_variable, VLC_VAR_FREELIST, &val_list, &text_list);
+
+end:
+ var_FreeList( &val_list, &text_list );
vlc_object_release( p_input );
return p_track_description;
#include <assert.h>
-#define PL (libvlc_priv (p_instance->p_libvlc_int)->p_playlist)
-
-static inline int playlist_was_locked( libvlc_instance_t *p_instance )
-{
- int was_locked;
- vlc_mutex_lock( &p_instance->instance_lock );
- was_locked = p_instance->b_playlist_locked;
- vlc_mutex_unlock( &p_instance->instance_lock );
- return was_locked;
-}
-
-static inline void playlist_mark_locked( libvlc_instance_t *p_instance,
- int locked )
-{
- vlc_mutex_lock( &p_instance->instance_lock );
- p_instance->b_playlist_locked = locked;
- vlc_mutex_unlock( &p_instance->instance_lock );
-}
-
-void libvlc_playlist_loop( libvlc_instance_t *p_instance, int loop,
- libvlc_exception_t *p_e)
-{
- VLC_UNUSED(p_e);
-
- assert( PL );
- var_SetBool( PL, "loop", loop );
-}
-
void libvlc_playlist_play( libvlc_instance_t *p_instance, int i_id,
int i_options, char **ppsz_options,
libvlc_exception_t *p_e )
{
- VLC_UNUSED(p_e); VLC_UNUSED(i_options); VLC_UNUSED(ppsz_options);
-
- int did_lock = 0;
- assert( PL );
- ///\todo Handle additionnal options
-
- if( PL->items.i_size == 0 ) RAISEVOID( "Empty playlist" );
- if( i_id > 0 )
- {
- playlist_item_t *p_item;
- if (! playlist_was_locked( p_instance ) )
- {
- playlist_mark_locked( p_instance, 1 );
- playlist_Lock( PL );
- did_lock = 1;
- }
-
- p_item = playlist_ItemGetByInputId( PL, i_id,
- PL->p_root_category );
- if( p_item )
- playlist_Control( PL, PLAYLIST_VIEWPLAY, pl_Locked,
- PL->p_root_category, p_item );
- else
- RAISEVOID( "Unable to find item" );
-
- if( did_lock == 1 )
- {
- playlist_Unlock( PL );
- playlist_mark_locked( p_instance, 0 );
- }
- }
- else
- {
- playlist_Control( PL, PLAYLIST_PLAY,
- playlist_was_locked( p_instance ) );
- }
-}
-
-void libvlc_playlist_pause( libvlc_instance_t *p_instance,
- libvlc_exception_t *p_e )
-{
- assert( PL );
- if( playlist_Control( PL, PLAYLIST_PAUSE,
- playlist_was_locked( p_instance ) ) != VLC_SUCCESS )
- RAISEVOID( "Empty playlist" );
-}
-
-
-void libvlc_playlist_stop( libvlc_instance_t *p_instance,
- libvlc_exception_t *p_e )
-{
- assert( PL );
- if( playlist_Control( PL, PLAYLIST_STOP,
- playlist_was_locked( p_instance ) ) != VLC_SUCCESS )
- RAISEVOID( "Empty playlist" );
-}
-
-void libvlc_playlist_clear( libvlc_instance_t *p_instance,
- libvlc_exception_t *p_e )
-{
- VLC_UNUSED(p_e);
-
- assert( PL );
- playlist_Clear( PL, playlist_was_locked( p_instance ) );
-}
-
-void libvlc_playlist_next( libvlc_instance_t *p_instance,
- libvlc_exception_t *p_e )
-{
- assert( PL );
- if( playlist_Control( PL, PLAYLIST_SKIP, playlist_was_locked( p_instance ),
- 1 ) != VLC_SUCCESS )
- RAISEVOID( "Empty playlist" );
-}
+ playlist_t *pl = libvlc_priv (p_instance->p_libvlc_int)->p_playlist;
+ VLC_UNUSED(i_id); VLC_UNUSED(i_options); VLC_UNUSED(ppsz_options);
-void libvlc_playlist_prev( libvlc_instance_t *p_instance,
- libvlc_exception_t *p_e )
-{
- if( playlist_Control( PL, PLAYLIST_SKIP, playlist_was_locked( p_instance ),
- -1 ) != VLC_SUCCESS )
- RAISEVOID( "Empty playlist" );
+ assert( pl );
+ if( pl->items.i_size == 0 ) RAISEVOID( "Empty playlist" );
+ playlist_Control( pl, PLAYLIST_PLAY, false );
}
-
-int libvlc_playlist_add( libvlc_instance_t *p_instance, const char *psz_uri,
- const char *psz_name, libvlc_exception_t *p_e )
-{
- return libvlc_playlist_add_extended( p_instance, psz_uri, psz_name,
- 0, NULL, p_e );
-}
-
-static int PlaylistAddExtended( libvlc_instance_t *p_instance,
- const char *psz_uri, const char *psz_name,
- int i_options, const char **ppsz_options,
- unsigned i_option_flags,
- libvlc_exception_t *p_e )
-{
- assert( PL );
- if( playlist_was_locked( p_instance ) )
- {
- libvlc_exception_raise( p_e, "You must unlock playlist before "
- "calling libvlc_playlist_add" );
- return VLC_EGENERIC;
- }
- return playlist_AddExt( PL, psz_uri, psz_name,
- PLAYLIST_INSERT, PLAYLIST_END, -1,
- i_options, ppsz_options, i_option_flags,
- true, pl_Unlocked );
-}
-int libvlc_playlist_add_extended( libvlc_instance_t *p_instance,
- const char *psz_uri, const char *psz_name,
- int i_options, const char **ppsz_options,
- libvlc_exception_t *p_e )
-{
- return PlaylistAddExtended( p_instance, psz_uri, psz_name,
- i_options, ppsz_options, VLC_INPUT_OPTION_TRUSTED,
- p_e );
-}
-int libvlc_playlist_add_extended_untrusted( libvlc_instance_t *p_instance,
- const char *psz_uri, const char *psz_name,
- int i_options, const char **ppsz_options,
- libvlc_exception_t *p_e )
-{
- return PlaylistAddExtended( p_instance, psz_uri, psz_name,
- i_options, ppsz_options, 0,
- p_e );
-}
-
-int libvlc_playlist_delete_item( libvlc_instance_t *p_instance, int i_id,
- libvlc_exception_t *p_e )
-{
- assert( PL );
-
- if( playlist_DeleteFromInput( PL, i_id,
- playlist_was_locked( p_instance ) ) )
- {
- libvlc_exception_raise( p_e, "deletion failed" );
- return VLC_ENOITEM;
- }
- return VLC_SUCCESS;
-}
-
-int libvlc_playlist_isplaying( libvlc_instance_t *p_instance,
- libvlc_exception_t *p_e )
-{
- VLC_UNUSED(p_e);
-
- assert( PL );
- return playlist_Status( PL ) == PLAYLIST_RUNNING;
-}
-
-int libvlc_playlist_items_count( libvlc_instance_t *p_instance,
- libvlc_exception_t *p_e )
-{
- VLC_UNUSED(p_e);
-
- assert( PL );
- return playlist_CurrentSize( PL );
-}
-
-int libvlc_playlist_get_current_index ( libvlc_instance_t *p_instance,
- libvlc_exception_t *p_e )
-{
- VLC_UNUSED(p_e);
-
- assert( PL );
- playlist_item_t *p_item = playlist_CurrentPlayingItem( PL );
- if( !p_item )
- return -1;
- return p_item->i_id;
-}
-
-void libvlc_playlist_lock( libvlc_instance_t *p_instance )
-{
- assert( PL );
- playlist_Lock( PL );
- p_instance->b_playlist_locked = 1;
-}
-
-void libvlc_playlist_unlock( libvlc_instance_t *p_instance )
-{
- assert( PL );
- p_instance->b_playlist_locked = 0;
- playlist_Unlock( PL );
-}
-
-libvlc_media_player_t * libvlc_playlist_get_media_player(
- libvlc_instance_t *p_instance,
- libvlc_exception_t *p_e )
-{
- libvlc_media_player_t *p_mi;
- assert( PL );
- input_thread_t * input = playlist_CurrentInput( PL );
- if( input )
- {
- p_mi = libvlc_media_player_new_from_input_thread(
- p_instance, input, p_e );
- vlc_object_release( input );
- }
- else
- {
- /* no active input */
- p_mi = NULL;
- libvlc_exception_raise( p_e, "No active input" );
- }
-
- return p_mi;
-}
-
return has_vout;
}
-int libvlc_video_reparent( libvlc_media_player_t *p_mi, libvlc_drawable_t d,
- libvlc_exception_t *p_e )
-{
- (void) p_mi; (void) d;
- libvlc_exception_raise(p_e, "Reparenting not supported");
- return -1;
-}
-
-void libvlc_video_resize( libvlc_media_player_t *p_mi, int width, int height, libvlc_exception_t *p_e )
-{
- vout_thread_t *p_vout = GetVout( p_mi, p_e );
- if( p_vout )
- {
- vout_Control( p_vout, VOUT_SET_SIZE, width, height );
- vlc_object_release( p_vout );
- }
-}
-
-void libvlc_video_redraw_rectangle( libvlc_media_player_t *p_mi,
- const libvlc_rectangle_t *area,
- libvlc_exception_t *p_e )
-{
-#ifdef __APPLE__
- if( (NULL != area)
- && ((area->bottom - area->top) > 0)
- && ((area->right - area->left) > 0) )
- {
- vout_thread_t *p_vout = GetVout( p_mi, p_e );
- if( p_vout )
- {
- /* tell running vout to redraw area */
- vout_Control( p_vout , VOUT_REDRAW_RECT,
- area->top, area->left, area->bottom, area->right );
- vlc_object_release( p_vout );
- }
- }
-#else
- (void) p_mi; (void) area; (void) p_e;
-#endif
-}
-
-/* global video settings */
-
-/* Deprecated use libvlc_media_player_set_drawable() */
-void libvlc_video_set_parent( libvlc_instance_t *p_instance, libvlc_drawable_t d,
- libvlc_exception_t *p_e )
-{
- /* set as default for future vout instances */
-#ifdef WIN32
- vlc_value_t val;
-
- if( sizeof(HWND) > sizeof(libvlc_drawable_t) )
- return; /* BOOM! we told you not to use this function! */
- val.p_address = (void *)(uintptr_t)d;
- var_Set( p_instance->p_libvlc_int, "drawable-hwnd", val );
-#elif defined(__APPLE__)
- var_SetInteger( p_instance->p_libvlc_int, "drawable-agl", d );
-#else
- var_SetInteger( p_instance->p_libvlc_int, "drawable-xid", d );
-#endif
-
- libvlc_media_player_t *p_mi = libvlc_playlist_get_media_player(p_instance, p_e);
- if( p_mi )
- {
- libvlc_media_player_set_drawable( p_mi, d, p_e );
- libvlc_media_player_release(p_mi);
- }
-}
-
-/* Deprecated use libvlc_media_player_get_drawable() */
-libvlc_drawable_t libvlc_video_get_parent( libvlc_instance_t *p_instance, libvlc_exception_t *p_e )
-{
- VLC_UNUSED(p_e);
-
-#ifdef WIN32
- vlc_value_t val;
-
- if( sizeof(HWND) > sizeof(libvlc_drawable_t) )
- return 0;
- var_Get( p_instance->p_libvlc_int, "drawable-hwnd", &val );
- return (uintptr_t)val.p_address;
-#elif defined(__APPLE__)
- return var_GetInteger( p_instance->p_libvlc_int, "drawable-agl" );
-#else
- return var_GetInteger( p_instance->p_libvlc_int, "drawable-xid" );
-#endif
-}
-
-void libvlc_video_set_size( libvlc_instance_t *p_instance, int width, int height,
- libvlc_exception_t *p_e )
-{
- /* set as default for future vout instances */
- config_PutInt(p_instance->p_libvlc_int, "width", width);
- config_PutInt(p_instance->p_libvlc_int, "height", height);
-
- libvlc_media_player_t *p_mi = libvlc_playlist_get_media_player(p_instance, p_e);
- if( p_mi )
- {
- vout_thread_t *p_vout = GetVout( p_mi, p_e );
- if( p_vout )
- {
- /* tell running vout to re-size */
- vout_Control( p_vout , VOUT_SET_SIZE, width, height);
- vlc_object_release( p_vout );
- }
- libvlc_media_player_release(p_mi);
- }
-}
-
-void libvlc_video_set_viewport( libvlc_instance_t *p_instance, libvlc_media_player_t *p_mi,
- const libvlc_rectangle_t *view, const libvlc_rectangle_t *clip,
- libvlc_exception_t *p_e )
-{
-#ifdef __APPLE__
- if( !view )
- {
- libvlc_exception_raise( p_e, "viewport is NULL" );
- return;
- }
-
- /* if clip is NULL, then use view rectangle as clip */
- if( !clip )
- clip = view;
-
- /* set as default for future vout instances */
- var_SetInteger( p_instance->p_libvlc_int, "drawable-view-top", view->top );
- var_SetInteger( p_instance->p_libvlc_int, "drawable-view-left", view->left );
- var_SetInteger( p_instance->p_libvlc_int, "drawable-view-bottom", view->bottom );
- var_SetInteger( p_instance->p_libvlc_int, "drawable-view-right", view->right );
- var_SetInteger( p_instance->p_libvlc_int, "drawable-clip-top", clip->top );
- var_SetInteger( p_instance->p_libvlc_int, "drawable-clip-left", clip->left );
- var_SetInteger( p_instance->p_libvlc_int, "drawable-clip-bottom", clip->bottom );
- var_SetInteger( p_instance->p_libvlc_int, "drawable-clip-right", clip->right );
-
- if( p_mi )
- {
- vout_thread_t *p_vout = GetVout( p_mi, p_e );
- if( p_vout )
- {
- /* change viewport for running vout */
- vout_Control( p_vout, VOUT_SET_VIEWPORT,
- view->top, view->left, view->bottom, view->right,
- clip->top, clip->left, clip->bottom, clip->right );
- vlc_object_release( p_vout );
- }
- }
-#else
- (void) p_instance; (void) p_mi; (void) view; (void) clip; (void) p_e;
-#endif
-}
-
float libvlc_video_get_scale( libvlc_media_player_t *p_mp,
libvlc_exception_t *p_e )
{
break;
}
}
- var_Change( p_input_thread, "spu-es", VLC_VAR_FREELIST, &val_list, NULL );
+ var_FreeList( &val_list, NULL );
vlc_object_release( p_input_thread );
return i_spu;
}
libvlc_exception_t *p_e )
{
input_thread_t *p_input_thread = libvlc_get_input_thread( p_mi, p_e );
- vlc_value_t val_list;
int i_spu_count;
if( !p_input_thread )
return -1;
- var_Change( p_input_thread, "spu-es", VLC_VAR_GETCHOICES, &val_list, NULL );
- i_spu_count = val_list.p_list->i_count;
- var_Change( p_input_thread, "spu-es", VLC_VAR_FREELIST, &val_list, NULL );
+ i_spu_count = var_CountChoices( p_input_thread, "spu-es" );
vlc_object_release( p_input_thread );
return i_spu_count;
}
end:
- var_Change( p_input_thread, "spu-es", VLC_VAR_FREELIST, &val_list, NULL );
+ var_FreeList( &val_list, NULL );
vlc_object_release( p_input_thread );
}
if( list.p_list->i_count > 0 )
var_SetInteger( p_input_thread, "spu-es", list.p_list->p_values[0].i_int );
- var_Change( p_input_thread, "teletext-es", VLC_VAR_FREELIST, &list, NULL );
+ var_FreeList( &list, NULL );
}
}
vlc_object_release( p_input_thread );
libvlc_exception_t *p_e )
{
input_thread_t *p_input_thread = libvlc_get_input_thread( p_mi, p_e );
- vlc_value_t val_list;
int i_track_count;
if( !p_input_thread )
return -1;
- var_Change( p_input_thread, "video-es", VLC_VAR_GETCHOICES, &val_list, NULL );
- i_track_count = val_list.p_list->i_count;
- var_Change( p_input_thread, "video-es", VLC_VAR_FREELIST, &val_list, NULL );
+ i_track_count = var_CountChoices( p_input_thread, "video-es" );
vlc_object_release( p_input_thread );
return i_track_count;
break;
}
}
- var_Change( p_input_thread, "video-es", VLC_VAR_FREELIST, &val_list, NULL );
+ var_FreeList( &val_list, NULL );
vlc_object_release( p_input_thread );
return i_track;
}
libvlc_exception_raise( p_e, "Video track out of range" );
end:
- var_Change( p_input_thread, "video-es", VLC_VAR_FREELIST, &val_list, NULL );
+ var_FreeList( &val_list, NULL );
vlc_object_release( p_input_thread );
}
-
-int libvlc_video_destroy( libvlc_media_player_t *p_mi,
- libvlc_exception_t *p_e )
-{
- vout_thread_t *p_vout = GetVout( p_mi, p_e );
- vlc_object_detach( p_vout );
- vlc_object_release( p_vout );
- vlc_object_release( p_vout );
-
- return 0;
-}
char *psz_format = (char *)va_arg( args, char * );
char *psz_value;
-
+
if( vasprintf( &psz_value, psz_format, args ) == -1 )
return VLC_EGENERIC;
#include "../video_output/vout_control.h"
-static decoder_t *CreateDecoder( input_thread_t *, es_format_t *, int, sout_instance_t *p_sout );
+static decoder_t *CreateDecoder( input_thread_t *, es_format_t *, bool,
+ sout_instance_t *p_sout );
static void DeleteDecoder( decoder_t * );
static void *DecoderThread( vlc_object_t * );
/* Some decoders require already packetized data (ie. not truncated) */
decoder_t *p_packetizer;
+ bool b_packetizer;
/* Current format in use by the output */
video_format_t video;
* \return the spawned decoder object
*/
decoder_t *input_DecoderNew( input_thread_t *p_input,
- es_format_t *fmt, input_clock_t *p_clock, sout_instance_t *p_sout )
+ es_format_t *fmt, input_clock_t *p_clock,
+ sout_instance_t *p_sout )
{
decoder_t *p_dec = NULL;
+ const char *psz_type = p_sout ? N_("packetizer") : N_("decoder");
int i_priority;
-#ifdef ENABLE_SOUT
- /* If we are in sout mode, search for packetizer module */
- if( p_sout )
- {
- /* Create the decoder configuration structure */
- p_dec = CreateDecoder( p_input, fmt, VLC_OBJECT_PACKETIZER, p_sout );
- if( p_dec == NULL )
- {
- msg_Err( p_input, "could not create packetizer" );
- dialog_Fatal( p_input, _("Streaming / Transcoding failed"), "%s",
- _("VLC could not open the packetizer module.") );
- return NULL;
- }
- }
- else
-#endif
+ /* Create the decoder configuration structure */
+ p_dec = CreateDecoder( p_input, fmt, p_sout != NULL, p_sout );
+ if( p_dec == NULL )
{
- /* Create the decoder configuration structure */
- p_dec = CreateDecoder( p_input, fmt, VLC_OBJECT_DECODER, p_sout );
- if( p_dec == NULL )
- {
- msg_Err( p_input, "could not create decoder" );
- dialog_Fatal( p_input, _("Streaming / Transcoding failed"), "%s",
- _("VLC could not open the decoder module.") );
- return NULL;
- }
+ msg_Err( p_input, "could not create %s", psz_type );
+ dialog_Fatal( p_input, _("Streaming / Transcoding failed"),
+ _("VLC could not open the %s module."),
+ vlc_gettext( psz_type ) );
+ return NULL;
}
if( !p_dec->p_module )
es_format_t fmt;
es_format_Init( &fmt, SPU_ES, fcc[i_channel] );
- p_cc = CreateDecoder( p_owner->p_input, &fmt, VLC_OBJECT_DECODER, p_owner->p_sout );
+ p_cc = CreateDecoder( p_owner->p_input, &fmt, false, p_owner->p_sout );
if( !p_cc )
{
msg_Err( p_dec, "could not create decoder" );
*
* \param p_input the input thread
* \param p_es the es descriptor
- * \param i_object_type Object type as define in include/vlc_objects.h
+ * \param b_packetizer instead of a decoder
* \return the decoder object
*/
static decoder_t * CreateDecoder( input_thread_t *p_input,
- es_format_t *fmt, int i_object_type, sout_instance_t *p_sout )
+ es_format_t *fmt, bool b_packetizer,
+ sout_instance_t *p_sout )
{
decoder_t *p_dec;
decoder_owner_sys_t *p_owner;
es_format_t null_es_format;
- int i;
-
- p_dec = vlc_object_create( p_input, i_object_type );
+ p_dec = vlc_object_create( p_input, VLC_OBJECT_DECODER );
if( p_dec == NULL )
return NULL;
p_dec->p_owner->p_sout = p_sout;
p_dec->p_owner->p_sout_input = NULL;
p_dec->p_owner->p_packetizer = NULL;
+ p_dec->p_owner->b_packetizer = b_packetizer;
/* decoder fifo */
if( ( p_dec->p_owner->p_fifo = block_FifoNew() ) == NULL )
vlc_object_attach( p_dec, p_input );
/* Find a suitable decoder/packetizer module */
- if( i_object_type == VLC_OBJECT_DECODER )
+ if( !b_packetizer )
p_dec->p_module = module_need( p_dec, "decoder", "$codec", false );
else
p_dec->p_module = module_need( p_dec, "packetizer", "$packetizer", false );
/* Check if decoder requires already packetized data */
- if( i_object_type == VLC_OBJECT_DECODER &&
+ if( !b_packetizer &&
p_dec->b_need_packetized && !p_dec->fmt_in.b_packetized )
{
p_dec->p_owner->p_packetizer =
- vlc_object_create( p_input, VLC_OBJECT_PACKETIZER );
+ vlc_object_create( p_input, VLC_OBJECT_DECODER );
if( p_dec->p_owner->p_packetizer )
{
es_format_Copy( &p_dec->p_owner->p_packetizer->fmt_in,
/* Copy ourself the input replay gain */
if( fmt->i_cat == AUDIO_ES )
{
- for( i = 0; i < AUDIO_REPLAY_GAIN_MAX; i++ )
+ for( unsigned i = 0; i < AUDIO_REPLAY_GAIN_MAX; i++ )
{
if( !p_dec->fmt_out.audio_replay_gain.pb_peak[i] )
{
/* */
p_owner->cc.b_supported = false;
- if( i_object_type == VLC_OBJECT_DECODER )
+ if( !b_packetizer )
{
if( p_owner->p_packetizer && p_owner->p_packetizer->pf_get_cc )
p_owner->cc.b_supported = true;
p_owner->cc.b_supported = true;
}
- for( i = 0; i < 4; i++ )
+ for( unsigned i = 0; i < 4; i++ )
{
p_owner->cc.pb_present[i] = false;
p_owner->cc.pp_decoder[i] = NULL;
static void DecoderProcessSout( decoder_t *p_dec, block_t *p_block )
{
decoder_owner_sys_t *p_owner = (decoder_owner_sys_t *)p_dec->p_owner;
- const bool b_telx = p_dec->fmt_in.i_codec == VLC_FOURCC('t','e','l','x');
+ const bool b_telx = p_dec->fmt_in.i_codec == VLC_CODEC_TELETEXT;
block_t *p_sout_block;
while( ( p_sout_block =
static void DecoderProcessSpu( decoder_t *p_dec, block_t *p_block, bool b_flush )
{
decoder_owner_sys_t *p_owner = p_dec->p_owner;
- const bool b_telx = p_dec->fmt_in.i_codec == VLC_FOURCC('t','e','l','x');
+ const bool b_telx = p_dec->fmt_in.i_codec == VLC_CODEC_TELETEXT;
input_thread_t *p_input = p_owner->p_input;
vout_thread_t *p_vout;
}
#ifdef ENABLE_SOUT
- if( vlc_internals( p_dec )->i_object_type == VLC_OBJECT_PACKETIZER )
+ if( p_owner->b_packetizer )
{
if( p_block )
p_block->i_flags &= ~BLOCK_FLAG_CORE_PRIVATE_MASK;
****************************************************************************/
decoder_t *demux_PacketizerNew( demux_t *p_demux, es_format_t *p_fmt, const char *psz_msg )
{
- decoder_t *p_packetizer = vlc_object_create( p_demux, VLC_OBJECT_PACKETIZER );
+ decoder_t *p_packetizer = vlc_object_create( p_demux, VLC_OBJECT_DECODER );
if( !p_packetizer )
{
return p_packetizer;
}
+
void demux_PacketizerDestroy( decoder_t *p_packetizer )
{
if( p_packetizer->p_module )
#include <vlc_es_out.h>
#include <vlc_block.h>
#include <vlc_aout.h>
+#include <vlc_fourcc.h>
#include "input_internal.h"
#include "clock.h"
}
static inline bool EsFmtIsTeletext( const es_format_t *p_fmt )
{
- return p_fmt->i_cat == SPU_ES && p_fmt->i_codec == VLC_FOURCC( 't', 'e', 'l', 'x' );
+ return p_fmt->i_cat == SPU_ES && p_fmt->i_codec == VLC_CODEC_TELETEXT;
}
/*****************************************************************************
es_format_Copy( &es->fmt, fmt );
if( es->fmt.i_id < 0 )
es->fmt.i_id = out->p_sys->i_id;
+ if( !es->fmt.i_original_fourcc )
+ es->fmt.i_original_fourcc = es->fmt.i_codec;
+ es->fmt.i_codec = vlc_fourcc_GetCodec( es->fmt.i_cat, es->fmt.i_codec );
+
es->i_id = es->fmt.i_id;
es->i_meta_id = out->p_sys->i_id;
es->b_scrambled = false;
break;
}
}
- var_Change( p_sys->p_input, "programs", VLC_VAR_FREELIST, &val, NULL );
+ var_FreeList( &val, NULL );
}
else if( p_sys->i_mode == ES_OUT_MODE_AUTO )
{
input_DecoderIsCcPresent( es->p_dec, pb_cc );
for( int i = 0; i < 4; i++ )
{
- static const vlc_fourcc_t fcc[4] = {
- VLC_FOURCC('c', 'c', '1', ' '),
- VLC_FOURCC('c', 'c', '2', ' '),
- VLC_FOURCC('c', 'c', '3', ' '),
- VLC_FOURCC('c', 'c', '4', ' '),
- };
es_format_t fmt;
if( es->pb_cc_present[i] || !pb_cc[i] )
continue;
msg_Dbg( p_input, "Adding CC track %d for es[%d]", 1+i, es->i_id );
- es_format_Init( &fmt, SPU_ES, fcc[i] );
+ es_format_Init( &fmt, SPU_ES, EsOutFourccClosedCaptions[i] );
fmt.i_group = es->fmt.i_group;
if( asprintf( &fmt.psz_description,
_("Closed captions %u"), 1 + i ) == -1 )
mtime_t i_time = (mtime_t)va_arg( args, mtime_t );
mtime_t i_length = (mtime_t)va_arg( args, mtime_t );
- /* Fix for buffering delay */
- const mtime_t i_delay = EsOutGetBuffering( out );
+ input_SendEventLength( p_sys->p_input, i_length );
- i_time -= i_delay;
- if( i_time < 0 )
- i_time = 0;
+ if( !p_sys->b_buffering )
+ {
+ /* Fix for buffering delay */
+ const mtime_t i_delay = EsOutGetBuffering( out );
- if( i_length > 0 )
- f_position -= (double)i_delay / i_length;
- if( f_position < 0 )
- f_position = 0;
+ i_time -= i_delay;
+ if( i_time < 0 )
+ i_time = 0;
- if( !p_sys->b_buffering )
- input_SendEventTimes( p_sys->p_input, f_position, i_time, i_length );
+ if( i_length > 0 )
+ f_position -= (double)i_delay / i_length;
+ if( f_position < 0 )
+ f_position = 0;
+
+ input_SendEventPosition( p_sys->p_input, f_position, i_time );
+ }
return VLC_SUCCESS;
}
case ES_OUT_SET_JITTER:
input_Control( p_input, INPUT_ADD_INFO, psz_cat, _("Original ID"),
"%d", es->i_id );
- input_Control( p_input, INPUT_ADD_INFO, psz_cat, _("Codec"),
- "%.4s", (char*)&p_fmt_es->i_codec );
+ const char *psz_codec_description =
+ vlc_fourcc_GetDescription( p_fmt_es->i_cat, p_fmt_es->i_codec );
+ const vlc_fourcc_t i_codec_fourcc = p_fmt_es->i_original_fourcc ?: p_fmt_es->i_codec;
+ if( psz_codec_description )
+ input_Control( p_input, INPUT_ADD_INFO, psz_cat, _("Codec"),
+ "%s (%.4s)", psz_codec_description, (char*)&i_codec_fourcc );
+ else
+ input_Control( p_input, INPUT_ADD_INFO, psz_cat, _("Codec"),
+ "%.4s", (char*)&i_codec_fourcc );
if( es->psz_language && *es->psz_language )
input_Control( p_input, INPUT_ADD_INFO, psz_cat, _("Language"),
Trigger( p_input, INPUT_EVENT_ABORT );
}
-void input_SendEventTimes( input_thread_t *p_input,
- double f_position, mtime_t i_time, mtime_t i_length )
+void input_SendEventPosition( input_thread_t *p_input, double f_position, mtime_t i_time )
{
vlc_value_t val;
val.i_time = i_time;
var_Change( p_input, "time", VLC_VAR_SETVALUE, &val, NULL );
+ Trigger( p_input, INPUT_EVENT_POSITION );
+}
+void input_SendEventLength( input_thread_t *p_input, mtime_t i_length )
+{
+ vlc_value_t val;
+
/* FIXME ugly + what about meta change event ? */
- if( var_GetTime( p_input, "length" ) != i_length )
- input_item_SetDuration( p_input->p->p_item, i_length );
+ if( var_GetTime( p_input, "length" ) == i_length )
+ return;
+
+ input_item_SetDuration( p_input->p->p_item, i_length );
+
val.i_time = i_length;
var_Change( p_input, "length", VLC_VAR_SETVALUE, &val, NULL );
- Trigger( p_input, INPUT_EVENT_TIMES );
+ Trigger( p_input, INPUT_EVENT_LENGTH );
}
void input_SendEventStatistics( input_thread_t *p_input )
{
*****************************************************************************/
void input_SendEventDead( input_thread_t *p_input );
void input_SendEventAbort( input_thread_t *p_input );
-void input_SendEventTimes( input_thread_t *p_input, double f_position, mtime_t i_time, mtime_t i_length );
+void input_SendEventPosition( input_thread_t *p_input, double f_position, mtime_t i_time );
+void input_SendEventLength( input_thread_t *p_input, mtime_t i_length );
void input_SendEventStatistics( input_thread_t *p_input );
void input_SendEventRate( input_thread_t *p_input, int i_rate );
void input_SendEventAudioDelay( input_thread_t *p_input, mtime_t i_delay );
i = vlc_internals( p_obj )->i_object_type;
if( i == VLC_OBJECT_VOUT ||i == VLC_OBJECT_AOUT ||
p_obj == VLC_OBJECT(p_input->p->p_sout) ||
- i == VLC_OBJECT_DECODER || i == VLC_OBJECT_PACKETIZER )
+ i == VLC_OBJECT_DECODER )
return;
vlc_object_kill( p_obj );
}
else
{
- var_Change( p_input, "programs", VLC_VAR_FREELIST, &val, NULL );
+ var_FreeList( &val, NULL );
}
}
}
{
demux_Control( p_input->p->input.p_demux, DEMUX_SET_GROUP, -1,
val.p_list );
- var_Change( p_input, "programs", VLC_VAR_FREELIST, &val, NULL );
+ var_FreeList( &val, NULL );
}
else
{
i_length = 0;
if( i_length <= 0 )
i_length = input_item_GetDuration( p_input->p->p_item );
- input_SendEventTimes( p_input, 0.0, 0, i_length );
+ input_SendEventLength( p_input, i_length );
+
+ input_SendEventPosition( p_input, 0.0, 0 );
if( !p_input->b_preparsing )
{
es_out_Control( p_input->p->p_es_out_display, ES_OUT_SET_ES_DEFAULT_BY_ID, i_id );
es_out_Control( p_input->p->p_es_out_display, ES_OUT_SET_ES_BY_ID, i_id );
}
- var_Change( p_input, "spu-es", VLC_VAR_FREELIST, &list, NULL );
+ var_FreeList( &list, NULL );
}
}
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
*****************************************************************************/
#ifdef HAVE_CONFIG_H
/* The name is NULL: fill it with everything except login and password */
if( !p_i->psz_name )
{
+ int r;
vlc_url_t url;
vlc_UrlParse( &url, psz_uri, 0 );
if( url.psz_protocol )
{
if( url.i_port > 0 )
- asprintf( &p_i->psz_name, "%s://%s:%d%s", url.psz_protocol,
+ r=asprintf( &p_i->psz_name, "%s://%s:%d%s", url.psz_protocol,
url.psz_host, url.i_port,
url.psz_path ? url.psz_path : "" );
else
- asprintf( &p_i->psz_name, "%s://%s%s", url.psz_protocol,
+ r=asprintf( &p_i->psz_name, "%s://%s%s", url.psz_protocol,
url.psz_host ? url.psz_host : "",
url.psz_path ? url.psz_path : "" );
}
else
{
if( url.i_port > 0 )
- asprintf( &p_i->psz_name, "%s:%d%s", url.psz_host, url.i_port,
+ r=asprintf( &p_i->psz_name, "%s:%d%s", url.psz_host, url.i_port,
url.psz_path ? url.psz_path : "" );
else
- asprintf( &p_i->psz_name, "%s%s", url.psz_host,
+ r=asprintf( &p_i->psz_name, "%s%s", url.psz_host,
url.psz_path ? url.psz_path : "" );
}
vlc_UrlClean( &url );
+ if( -1==r )
+ p_i->psz_name=NULL; /* recover from undefined value */
}
vlc_mutex_unlock( &p_i->lock );
# include "config.h"
#endif
+#include <assert.h>
#include <vlc_common.h>
#include <vlc_aout.h>
static int AddIntfCallback( vlc_object_t *, char const *,
vlc_value_t , vlc_value_t , void * );
-/**
- * Destroy the interface after the main loop endeed.
- *
- * @param p_obj: the interface thread
- */
-static void intf_Destroy( vlc_object_t *obj )
-{
- intf_thread_t *p_intf = (intf_thread_t *)obj;
-
- free( p_intf->psz_intf );
- config_ChainDestroy( p_intf->p_cfg );
-}
-
+static vlc_mutex_t lock = VLC_STATIC_MUTEX;
+#undef intf_Create
/**
- * Create the interface, and prepare it for main loop. It opens ouput device
- * and creates specific interfaces. Sends its own error messages.
+ * Create and start an interface.
*
* @param p_this the calling vlc_object_t
* @param psz_module a preferred interface module
- * @return a pointer to the created interface thread, NULL on error
+ * @return VLC_SUCCESS or an error code
*/
-intf_thread_t* __intf_Create( vlc_object_t *p_this, const char *psz_module )
+int intf_Create( vlc_object_t *p_this, const char *psz_module )
{
+ libvlc_int_t *p_libvlc = p_this->p_libvlc;
intf_thread_t * p_intf;
+ static const char psz_type[] = "interface";
/* Allocate structure */
- p_intf = vlc_object_create( p_this, VLC_OBJECT_INTF );
+ p_intf = vlc_custom_create( p_libvlc, sizeof( *p_intf ),
+ VLC_OBJECT_GENERIC, psz_type );
if( !p_intf )
- return NULL;
+ return VLC_ENOMEM;
+
+ /* Variable used for interface spawning */
+ vlc_value_t val, text;
+ var_Create( p_intf, "intf-add", VLC_VAR_STRING |
+ VLC_VAR_HASCHOICE | VLC_VAR_ISCOMMAND );
+ text.psz_string = _("Add Interface");
+ var_Change( p_intf, "intf-add", VLC_VAR_SETTEXT, &text, NULL );
+
+ val.psz_string = (char *)"rc";
+ text.psz_string = (char *)_("Console");
+ var_Change( p_intf, "intf-add", VLC_VAR_ADDCHOICE, &val, &text );
+ val.psz_string = (char *)"telnet";
+ text.psz_string = (char *)_("Telnet Interface");
+ var_Change( p_intf, "intf-add", VLC_VAR_ADDCHOICE, &val, &text );
+ val.psz_string = (char *)"http";
+ text.psz_string = (char *)_("Web Interface");
+ var_Change( p_intf, "intf-add", VLC_VAR_ADDCHOICE, &val, &text );
+ val.psz_string = (char *)"logger";
+ text.psz_string = (char *)_("Debug logging");
+ var_Change( p_intf, "intf-add", VLC_VAR_ADDCHOICE, &val, &text );
+ val.psz_string = (char *)"gestures";
+ text.psz_string = (char *)_("Mouse Gestures");
+ var_Change( p_intf, "intf-add", VLC_VAR_ADDCHOICE, &val, &text );
+
+ var_AddCallback( p_intf, "intf-add", AddIntfCallback, NULL );
+
+ /* Attach interface to LibVLC */
+ vlc_object_attach( p_intf, p_libvlc );
#if defined( __APPLE__ ) || defined( WIN32 )
p_intf->b_should_run_on_first_thread = false;
#endif
free( psz_tmp );
free( psz_parser );
p_intf->p_module = module_need( p_intf, "interface", p_intf->psz_intf, true );
-
if( p_intf->p_module == NULL )
{
msg_Err( p_intf, "no suitable interface module" );
- free( p_intf->psz_intf );
- vlc_object_release( p_intf );
- return NULL;
+ goto error;
}
- /* Attach interface to its parent object */
- vlc_object_attach( p_intf, p_this );
- vlc_object_set_destructor( p_intf, intf_Destroy );
-
- return p_intf;
-}
-
-
-/**
- * Starts and runs the interface thread.
- *
- * @param p_intf the interface thread
- * @return VLC_SUCCESS on success, an error number else
- */
-int intf_RunThread( intf_thread_t *p_intf )
-{
+ vlc_mutex_lock( &lock );
+ if( !vlc_object_alive( p_libvlc ) )
+ {
+ vlc_mutex_unlock( &lock );
+ goto error; /* Too late! */
+ }
#if defined( __APPLE__ ) || defined( WIN32 )
/* Hack to get Mac OS X Cocoa runtime running
* (it needs access to the main thread) */
VLC_THREAD_PRIORITY_LOW ) )
{
msg_Err( p_intf, "cannot spawn libvlc death monitoring thread" );
- return VLC_EGENERIC;
+ vlc_mutex_unlock( &lock );
+ goto error;
}
- RunInterface( VLC_OBJECT(p_intf) );
+ assert( p_intf->pf_run );
+ p_intf->pf_run( p_intf );
- /* Make sure our MonitorLibVLCDeath thread exit */
- vlc_object_kill( p_intf );
/* It is monitoring libvlc, not the p_intf */
vlc_object_kill( p_intf->p_libvlc );
- vlc_thread_join( p_intf );
-
- vlc_object_detach( p_intf );
- vlc_object_release( p_intf );
- return VLC_SUCCESS;
}
+ else
#endif
/* Run the interface in a separate thread */
- if( vlc_thread_create( p_intf, "interface", RunInterface,
+ if( p_intf->pf_run
+ && vlc_thread_create( p_intf, "interface", RunInterface,
VLC_THREAD_PRIORITY_LOW ) )
{
msg_Err( p_intf, "cannot spawn interface thread" );
- return VLC_EGENERIC;
+ vlc_mutex_unlock( &lock );
+ goto error;
}
+ p_intf->p_next = libvlc_priv( p_libvlc )->p_intf;
+ libvlc_priv( p_libvlc )->p_intf = p_intf;
+ vlc_mutex_unlock( &lock );
+
return VLC_SUCCESS;
+
+error:
+ if( p_intf->p_module )
+ module_unneed( p_intf, p_intf->p_module );
+ config_ChainDestroy( p_intf->p_cfg );
+ free( p_intf->psz_intf );
+ vlc_object_release( p_intf );
+ return VLC_EGENERIC;
}
/**
- * Stops the interface thread
- *
- * This function asks the interface thread to stop
- * @param p_intf the interface thread
+ * Stops and destroys all interfaces
+ * @param p_libvlc the LibVLC instance
*/
-void intf_StopThread( intf_thread_t *p_intf )
+void intf_DestroyAll( libvlc_int_t *p_libvlc )
{
- /* Tell the interface to die */
- vlc_object_kill( p_intf );
- vlc_thread_join( p_intf );
+ intf_thread_t *p_first;
- module_unneed( p_intf, p_intf->p_module );
-}
+ assert( !vlc_object_alive( p_libvlc ) );
+
+ vlc_mutex_lock( &lock );
+ p_first = libvlc_priv( p_libvlc )->p_intf;
+#ifndef NDEBUG
+ libvlc_priv( p_libvlc )->p_intf = NULL;
+#endif
+ vlc_mutex_unlock( &lock );
+ /* Tell the interfaces to die */
+ for( intf_thread_t *p_intf = p_first; p_intf; p_intf = p_intf->p_next )
+ vlc_object_kill( p_intf );
+ /* Cleanup the interfaces */
+ for( intf_thread_t *p_intf = p_first; p_intf != NULL; )
+ {
+ intf_thread_t *p_next = p_intf->p_next;
+
+ if( p_intf->pf_run )
+ vlc_thread_join( p_intf );
+ module_unneed( p_intf, p_intf->p_module );
+ free( p_intf->psz_intf );
+ config_ChainDestroy( p_intf->p_cfg );
+ vlc_object_release( p_intf );
+
+ p_intf = p_next;
+ }
+}
/* Following functions are local */
static void* RunInterface( vlc_object_t *p_this )
{
intf_thread_t *p_intf = (intf_thread_t *)p_this;
- vlc_value_t val, text;
- int canc = vlc_savecancel ();
-
- /* Variable used for interface spawning */
- var_Create( p_intf, "intf-add", VLC_VAR_STRING |
- VLC_VAR_HASCHOICE | VLC_VAR_ISCOMMAND );
- text.psz_string = _("Add Interface");
- var_Change( p_intf, "intf-add", VLC_VAR_SETTEXT, &text, NULL );
-
- val.psz_string = (char *)"rc";
- text.psz_string = (char *)_("Console");
- var_Change( p_intf, "intf-add", VLC_VAR_ADDCHOICE, &val, &text );
- val.psz_string = (char *)"telnet";
- text.psz_string = (char *)_("Telnet Interface");
- var_Change( p_intf, "intf-add", VLC_VAR_ADDCHOICE, &val, &text );
- val.psz_string = (char *)"http";
- text.psz_string = (char *)_("Web Interface");
- var_Change( p_intf, "intf-add", VLC_VAR_ADDCHOICE, &val, &text );
- val.psz_string = (char *)"logger";
- text.psz_string = (char *)_("Debug logging");
- var_Change( p_intf, "intf-add", VLC_VAR_ADDCHOICE, &val, &text );
- val.psz_string = (char *)"gestures";
- text.psz_string = (char *)_("Mouse Gestures");
- var_Change( p_intf, "intf-add", VLC_VAR_ADDCHOICE, &val, &text );
-
- var_AddCallback( p_intf, "intf-add", AddIntfCallback, NULL );
- vlc_restorecancel (canc);
-
- /* Give control to the interface */
- if( p_intf->pf_run )
- p_intf->pf_run( p_intf );
+ p_intf->pf_run( p_intf );
return NULL;
}
vlc_value_t oldval, vlc_value_t newval, void *p_data )
{
(void)psz_cmd; (void)oldval; (void)p_data;
- intf_thread_t *p_intf;
char* psz_intf;
/* Try to create the interface */
if( asprintf( &psz_intf, "%s,none", newval.psz_string ) == -1 )
return VLC_ENOMEM;
- p_intf = intf_Create( p_this->p_libvlc, psz_intf );
+ int ret = intf_Create( VLC_OBJECT(p_this->p_libvlc), psz_intf );
free( psz_intf );
- if( p_intf == NULL )
- {
+ if( ret )
msg_Err( p_this, "interface \"%s\" initialization failed",
newval.psz_string );
- return VLC_EGENERIC;
- }
-
- /* Try to run the interface */
- if( intf_RunThread( p_intf ) != VLC_SUCCESS )
- {
- vlc_object_detach( p_intf );
- vlc_object_release( p_intf );
- return VLC_EGENERIC;
- }
-
- return VLC_SUCCESS;
+ return ret;
}
-
}
if( asprintf( &psz_temp, "%s,none", psz_module ) != -1)
{
- libvlc_InternalAddIntf( p_libvlc, psz_temp );
+ intf_Create( p_libvlc, psz_temp );
free( psz_temp );
}
}
/*
* Always load the hotkeys interface if it exists
*/
- libvlc_InternalAddIntf( p_libvlc, "hotkeys,none" );
+ intf_Create( p_libvlc, "hotkeys,none" );
#ifdef HAVE_DBUS
/* loads dbus control interface if in one-instance mode
if( config_GetInt( p_libvlc, "one-instance" ) > 0
|| ( config_GetInt( p_libvlc, "one-instance-when-started-from-file" )
&& config_GetInt( p_libvlc, "started-from-file" ) ) )
- libvlc_InternalAddIntf( p_libvlc, "dbus,none" );
+ intf_Create( p_libvlc, "dbus,none" );
/* Prevents the power management daemon from suspending the system
* when VLC is active */
if( config_GetInt( p_libvlc, "inhibit" ) > 0 )
- libvlc_InternalAddIntf( p_libvlc, "inhibit,none" );
+ interface_Create( p_libvlc, "inhibit,none" );
#endif
/*
#ifdef HAVE_X11_XLIB_H
if( config_GetInt( p_libvlc, "disable-screensaver" ) )
{
- libvlc_InternalAddIntf( p_libvlc, "screensaver,none" );
+ intf_Create( p_libvlc, "screensaver,none" );
}
#endif
if( (config_GetInt( p_libvlc, "file-logging" ) > 0) &&
!config_GetInt( p_libvlc, "syslog" ) )
{
- libvlc_InternalAddIntf( p_libvlc, "logger,none" );
+ intf_Create( p_libvlc, "logger,none" );
}
#ifdef HAVE_SYSLOG_H
if( config_GetInt( p_libvlc, "syslog" ) > 0 )
{
char *logmode = var_CreateGetString( p_libvlc, "logmode" );
var_SetString( p_libvlc, "logmode", "syslog" );
- libvlc_InternalAddIntf( p_libvlc, "logger,none" );
+ intf_Create( p_libvlc, "logger,none" );
if( logmode )
{
if( config_GetInt( p_libvlc, "show-intf" ) > 0 )
{
- libvlc_InternalAddIntf( p_libvlc, "showintf,none" );
+ intf_Create( p_libvlc, "showintf,none" );
}
if( config_GetInt( p_libvlc, "network-synchronisation") > 0 )
{
- libvlc_InternalAddIntf( p_libvlc, "netsync,none" );
+ intf_Create( p_libvlc, "netsync,none" );
}
#ifdef WIN32
}
#endif
- /*
- * FIXME: kludge to use a p_libvlc-local variable for the Mozilla plugin
- */
- var_Create( p_libvlc, "drawable-xid", VLC_VAR_DOINHERIT|VLC_VAR_INTEGER );
- var_Create( p_libvlc, "drawable-hwnd", VLC_VAR_ADDRESS );
- var_Create( p_libvlc, "drawable-agl", VLC_VAR_INTEGER );
- var_Create( p_libvlc, "drawable-gl", VLC_VAR_INTEGER );
-
var_Create( p_libvlc, "drawable-view-top", VLC_VAR_INTEGER );
var_Create( p_libvlc, "drawable-view-left", VLC_VAR_INTEGER );
var_Create( p_libvlc, "drawable-view-bottom", VLC_VAR_INTEGER );
/* Ask the interfaces to stop and destroy them */
msg_Dbg( p_libvlc, "removing all interfaces" );
- intf_thread_t *p_intf;
- while( (p_intf = vlc_object_find( p_libvlc, VLC_OBJECT_INTF, FIND_CHILD )) )
- {
- intf_StopThread( p_intf );
- vlc_object_detach( p_intf );
- vlc_object_release( p_intf ); /* for intf_Create() */
- vlc_object_release( p_intf ); /* for vlc_object_find() */
- }
+ libvlc_Quit( p_libvlc );
+ intf_DestroyAll( p_libvlc );
#ifdef ENABLE_VLM
/* Destroy VLM if created in libvlc_InternalInit */
*/
int libvlc_InternalAddIntf( libvlc_int_t *p_libvlc, char const *psz_module )
{
- int i_err;
- intf_thread_t *p_intf = NULL;
-
if( !p_libvlc )
return VLC_EGENERIC;
}
/* Try to create the interface */
- p_intf = intf_Create( p_libvlc, psz_module ? psz_module : "$intf" );
- if( p_intf == NULL )
+ if( intf_Create( p_libvlc, psz_module ? psz_module : "$intf" ) )
{
msg_Err( p_libvlc, "interface \"%s\" initialization failed",
psz_module );
return VLC_EGENERIC;
}
-
- /* Try to run the interface */
- i_err = intf_RunThread( p_intf );
- if( i_err )
- {
- vlc_object_detach( p_intf );
- vlc_object_release( p_intf );
- return i_err;
- }
-
return VLC_SUCCESS;
-};
+}
static vlc_mutex_t exit_lock = VLC_STATIC_MUTEX;
#define vlc_object_signal_unlocked( obj )
vlc_list_t *vlc_list_find( vlc_object_t *, int, int );
-#define VLC_OBJECT_INTF (-4)
-#define VLC_OBJECT_PACKETIZER (-13)
/*
* Threads subsystem
#ifdef ENABLE_SOUT
sap_handler_t *p_sap; ///< SAP SDP advertiser
#endif
+
+ /* Interfaces */
+ struct intf_thread_t *p_intf; ///< Interfaces linked-list
+
+ /* Objects tree */
vlc_mutex_t structure_lock;
} libvlc_priv_t;
}
void playlist_ServicesDiscoveryKillAll( playlist_t *p_playlist );
+void intf_DestroyAll( libvlc_int_t * );
#define libvlc_stats( o ) (libvlc_priv((VLC_OBJECT(o))->p_libvlc)->b_stats)
libvlc_media_new_as_node
libvlc_media_new_from_input_item
libvlc_media_player_can_pause
-libvlc_media_player_destroy
libvlc_media_player_event_manager
libvlc_media_player_get_agl
libvlc_media_player_get_chapter
libvlc_media_player_is_seekable
libvlc_media_player_is_playing
libvlc_media_player_new
-libvlc_media_player_new_from_input_thread
libvlc_media_player_new_from_media
libvlc_media_player_next_chapter
libvlc_media_player_pause
libvlc_media_set_user_data
libvlc_media_subitems
libvlc_new
-libvlc_playlist_add
-libvlc_playlist_add_extended
-libvlc_playlist_add_extended_untrusted
-libvlc_playlist_clear
-libvlc_playlist_delete_item
-libvlc_playlist_get_media_player
-libvlc_playlist_isplaying
-libvlc_playlist_items_count
-libvlc_playlist_get_current_index
-libvlc_playlist_lock
-libvlc_playlist_loop
-libvlc_playlist_next
-libvlc_playlist_pause
libvlc_playlist_play
-libvlc_playlist_prev
-libvlc_playlist_stop
-libvlc_playlist_unlock
libvlc_release
libvlc_retain
libvlc_set_fullscreen
libvlc_toggle_fullscreen
libvlc_toggle_teletext
libvlc_track_description_release
-libvlc_video_destroy
libvlc_video_get_aspect_ratio
libvlc_video_get_chapter_description
libvlc_video_get_crop_geometry
libvlc_video_get_height
-libvlc_video_get_parent
libvlc_video_get_scale
libvlc_video_get_spu
libvlc_video_get_spu_count
libvlc_video_get_track_count
libvlc_video_get_track_description
libvlc_video_get_width
-libvlc_video_redraw_rectangle
-libvlc_video_reparent
-libvlc_video_resize
libvlc_video_set_aspect_ratio
libvlc_video_set_crop_geometry
-libvlc_video_set_parent
libvlc_video_set_scale
-libvlc_video_set_size
libvlc_video_set_spu
libvlc_video_set_subtitle_file
libvlc_video_set_teletext
libvlc_video_set_track
-libvlc_video_set_viewport
libvlc_video_take_snapshot
libvlc_vlm_add_broadcast
libvlc_vlm_add_vod
input_Start
input_Stop
input_vaControl
-__intf_Create
+intf_Create
__intf_Eject
-intf_RunThread
-intf_StopThread
IsUTF8
libvlc_InternalAddIntf
libvlc_InternalCleanup
picture_Delete
picture_Export
picture_New
+picture_Setup
plane_CopyPixels
playlist_Add
playlist_AddExt
playlist_IsServicesDiscoveryLoaded
playlist_ItemGetById
playlist_ItemGetByInput
-playlist_ItemGetByInputId
playlist_LiveSearchUpdate
playlist_Lock
playlist_NodeAppend
subpicture_region_ChainDelete
subpicture_region_Delete
subpicture_region_New
+text_style_Copy
+text_style_Delete
+text_style_Duplicate
+text_style_New
tls_ClientCreate
tls_ClientDelete
ToLocale
__var_Create
__var_DelCallback
__var_Destroy
+var_FreeList
__var_Get
var_GetChecked
__var_Set
__var_TriggerCallback
__var_Type
video_format_FixRgb
+video_format_Setup
vlc_avcodec_mutex
vlc_b64_decode
vlc_b64_decode_binary
vlc_event_send
__vlc_execve
vlc_fastmem_register
+vlc_fourcc_GetCodec
+vlc_fourcc_GetCodecAudio
+vlc_fourcc_GetCodecFromString
+vlc_fourcc_GetDescription
vlc_freeaddrinfo
vlc_gai_strerror
vlc_gc_init
vout_DisplayPicture
vout_EnableFilter
vout_GetSnapshot
-vout_InitFormat
-__vout_InitPicture
vout_LinkPicture
vout_OSDIcon
__vout_OSDMessage
{
switch( p_fmt->i_chroma )
{
- case VLC_FOURCC('R','V','1','5'):
+ case VLC_CODEC_RGB15:
p_fmt->i_rmask = 0x7c00;
p_fmt->i_gmask = 0x03e0;
p_fmt->i_bmask = 0x001f;
break;
- case VLC_FOURCC('R','V','1','6'):
+ case VLC_CODEC_RGB16:
p_fmt->i_rmask = 0xf800;
p_fmt->i_gmask = 0x07e0;
p_fmt->i_bmask = 0x001f;
break;
- case VLC_FOURCC('R','V','2','4'):
+ case VLC_CODEC_RGB24:
p_fmt->i_rmask = 0xff0000;
p_fmt->i_gmask = 0x00ff00;
p_fmt->i_bmask = 0x0000ff;
break;
- case VLC_FOURCC('R','V','3','2'):
+ case VLC_CODEC_RGB32:
p_fmt->i_rmask = 0x00ff0000;
p_fmt->i_gmask = 0x0000ff00;
p_fmt->i_bmask = 0x000000ff;
p_fmt->i_bmask );
}
+void video_format_Setup( video_format_t *p_fmt, vlc_fourcc_t i_chroma, int i_width, int i_height, int i_aspect )
+{
+ p_fmt->i_chroma = vlc_fourcc_GetCodec( VIDEO_ES, i_chroma );
+ p_fmt->i_width =
+ p_fmt->i_visible_width = i_width;
+ p_fmt->i_height =
+ p_fmt->i_visible_height = i_height;
+ p_fmt->i_x_offset =
+ p_fmt->i_y_offset = 0;
+ p_fmt->i_aspect = i_aspect;
+
+ switch( p_fmt->i_chroma )
+ {
+ case VLC_CODEC_YUVA:
+ p_fmt->i_bits_per_pixel = 32;
+ break;
+ case VLC_CODEC_I444:
+ case VLC_CODEC_J444:
+ p_fmt->i_bits_per_pixel = 24;
+ break;
+ case VLC_CODEC_I422:
+ case VLC_CODEC_YUYV:
+ case VLC_CODEC_YVYU:
+ case VLC_CODEC_UYVY:
+ case VLC_CODEC_VYUY:
+ case VLC_CODEC_J422:
+ p_fmt->i_bits_per_pixel = 16;
+ break;
+ case VLC_CODEC_I440:
+ case VLC_CODEC_J440:
+ p_fmt->i_bits_per_pixel = 16;
+ break;
+ case VLC_CODEC_I411:
+ case VLC_CODEC_YV12:
+ case VLC_CODEC_I420:
+ case VLC_CODEC_J420:
+ p_fmt->i_bits_per_pixel = 12;
+ break;
+ case VLC_CODEC_I410:
+ p_fmt->i_bits_per_pixel = 9;
+ break;
+ case VLC_CODEC_Y211:
+ p_fmt->i_bits_per_pixel = 8;
+ break;
+ case VLC_CODEC_YUVP:
+ p_fmt->i_bits_per_pixel = 8;
+ break;
+
+ case VLC_CODEC_RGB32:
+ case VLC_CODEC_RGBA:
+ p_fmt->i_bits_per_pixel = 32;
+ break;
+ case VLC_CODEC_RGB24:
+ p_fmt->i_bits_per_pixel = 24;
+ break;
+ case VLC_CODEC_RGB15:
+ case VLC_CODEC_RGB16:
+ p_fmt->i_bits_per_pixel = 16;
+ break;
+ case VLC_CODEC_RGB8:
+ p_fmt->i_bits_per_pixel = 8;
+ break;
+
+ case VLC_CODEC_GREY:
+ case VLC_CODEC_RGBP:
+ p_fmt->i_bits_per_pixel = 8;
+ break;
+
+ default:
+ p_fmt->i_bits_per_pixel = 0;
+ break;
+ }
+}
+
void es_format_Init( es_format_t *fmt,
int i_cat, vlc_fourcc_t i_codec )
{
fmt->i_cat = i_cat;
fmt->i_codec = i_codec;
+ fmt->i_original_fourcc = 0;
fmt->i_id = -1;
fmt->i_group = 0;
fmt->i_priority = 0;
--- /dev/null
+/*****************************************************************************
+ * fourcc.c: fourcc helpers functions
+ *****************************************************************************
+ * Copyright (C) 2009 Laurent Aimar
+ * $Id$
+ *
+ * Authors: Laurent Aimar <fenrir@videolan.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., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
+ *****************************************************************************/
+
+/*****************************************************************************
+ * Preamble
+ *****************************************************************************/
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include <vlc_fourcc.h>
+#include <assert.h>
+
+typedef struct
+{
+ char p_class[4];
+ char p_fourcc[4];
+ const char *psz_description;
+} entry_t;
+
+#define NULL4 "\x00\x00\x00\x00"
+
+/* XXX You don't want to see the preprocessor generated code ;) */
+#ifdef WORDS_BIGENDIAN
+# define FCC2STR(f) { ((f)>>24)&0xff, ((f)>>16)&0xff, ((f)>>8)&0xff, ((f)>>0)&0xff }
+#else
+# define FCC2STR(f) { ((f)>>0)&0xff, ((f)>>8)&0xff, ((f)>>16)&0xff, ((f)>>24)&0xff }
+#endif
+/* Begin a new class */
+#define B(a, c) { .p_class = FCC2STR(a), .p_fourcc = FCC2STR(a), .psz_description = c }
+/* Create a sub-class entry with description */
+#define E(b, c) { .p_class = NULL4, .p_fourcc = b, .psz_description = c }
+/* Create a sub-class entry without description (alias) */
+#define A(b) E(b, NULL4)
+
+
+/* */
+static const entry_t p_list_video[] = {
+
+ B(VLC_CODEC_MPGV, "MPEG-1/2 Video"),
+ A("mpgv"),
+ A("mp1v"),
+ A("mpeg"),
+ A("mpg1"),
+ A("mp2v"),
+ A("MPEG"),
+ A("mpg2"),
+
+ E("PIM1", "Pinnacle DC1000 (MPEG-1 Video)"),
+
+ E("hdv1", "HDV 720p30 (MPEG-2 Video)"),
+ E("hdv2", "Sony HDV (MPEG-2 Video)"),
+ E("hdv3", "FCP HDV (MPEG-2 Video)"),
+ E("hdv5", "HDV 720p25 (MPEG-2 Video)"),
+ E("hdv6", "HDV 1080p24 (MPEG-2 Video)"),
+ E("hdv7", "HDV 1080p25 (MPEG-2 Video)"),
+ E("hdv8", "HDV 1080p30 (MPEG-2 Video)"),
+
+ E("mx5n", "MPEG2 IMX NTSC 525/60 50mb/s (FCP)"),
+ E("mx5p", "MPEG2 IMX PAL 625/60 50mb/s (FCP)"),
+ E("mx4n", "MPEG2 IMX NTSC 525/60 40mb/s (FCP)"),
+ E("mx4p", "MPEG2 IMX PAL 625/50 40mb/s (FCP)"),
+ E("mx3n", "MPEG2 IMX NTSC 525/60 30mb/s (FCP)"),
+ E("mx3p", "MPEG2 IMX NTSC 625/50 30mb/s (FCP)"),
+
+ E("xdv1", "XDCAM HD"),
+ E("xdv2", "XDCAM HD 1080i60 35mb/s"),
+ E("xdv3", "XDCAM HD 1080i50 35mb/s"),
+ E("xdv4", "XDCAM HD"),
+ E("xdv5", "XDCAM HD"),
+ E("xdv6", "XDCAM HD 1080p24 35mb/s"),
+ E("xdv7", "XDCAM HD 1080p25 35mb/s"),
+ E("xdv8", "XDCAM HD 1080p30 35mb/s"),
+ E("xdv9", "XDCAM HD"),
+
+ E("xdva", "XDCAM"),
+ E("xdvb", "XDCAM"),
+ E("xdvc", "XDCAM"),
+ E("xdvd", "XDCAM"),
+ E("xdve", "XDCAM"),
+ E("xdvf", "XDCAM"),
+
+ E("xd5a", "XDCAM"),
+ E("xd5b", "XDCAM"),
+ E("xd5c", "XDCAM"),
+ E("xd5d", "XDCAM"),
+ E("xd5e", "XDCAM"),
+ E("xd5f", "XDCAM"),
+ E("xd59", "XDCAM"),
+
+ E("AVmp", "AVID IMX PAL"),
+ E("MMES", "Matrox MPEG-2"),
+ E("mmes", "Matrox MPEG-2"),
+ E("PIM2", "Pinnacle MPEG-2"),
+ E("LMP2", "Lead MPEG-2"),
+
+ E("VCR2", "ATI VCR-2"),
+
+ B(VLC_CODEC_MP4V, "MPEG-4 Video"),
+ A("mp4v"),
+ A("DIVX"),
+ A("divx"),
+ A("MP4S"),
+ A("mp4s"),
+ A("M4S2"),
+ A("m4s2"),
+ A("MP4V"),
+ A("\x04\x00\x00\x00"),
+ A("m4cc"),
+ A("M4CC"),
+ A("FMP4"),
+ A("fmp4"),
+ A("DCOD"),
+ A("MVXM"),
+ A("PM4V"),
+ A("M4T3"),
+ A("GEOX"),
+ A("DMK2"),
+ A("WV1F"),
+ A("DIGI"),
+ A("INMC"),
+ A("SN40"),
+ A("EPHV"),
+ /* XVID flavours */
+ E("xvid", "Xvid MPEG-4 Video"),
+ E("XVID", "Xvid MPEG-4 Video"),
+ E("XviD", "Xvid MPEG-4 Video"),
+ E("XVIX", "Xvid MPEG-4 Video"),
+ E("xvix", "Xvid MPEG-4 Video"),
+ /* DX50 */
+ E("DX50", "DivX MPEG-4 Video"),
+ E("dx50", "DivX MPEG-4 Video"),
+ E("BLZ0", "Blizzard MPEG-4 Video"),
+ E("DXGM", "Electronic Arts Game MPEG-4 Video"),
+ /* 3ivx delta 4 */
+ E("3IV2", "3ivx MPEG-4 Video"),
+ E("3iv2", "3ivx MPEG-4 Video"),
+ /* Various */
+ E("UMP4", "UB MPEG-4 Video"),
+ E("SEDG", "Samsung MPEG-4 Video"),
+ E("RMP4", "REALmagic MPEG-4 Video"),
+ E("HDX4", "Jomigo HDX4 (MPEG-4 Video)"),
+ E("hdx4", "Jomigo HDX4 (MPEG-4 Video)"),
+ E("SMP4", "Samsung SMP4 (MPEG-4 Video)"),
+ E("smp4", "Samsung SMP4 (MPEG-4 Video)"),
+ E("fvfw", "FFmpeg MPEG-4"),
+ E("FVFW", "FFmpeg MPEG-4"),
+ E("FFDS", "FFDShow MPEG-4"),
+ E("VIDM", "vidm 4.01 codec"),
+ /* 3ivx delta 3.5 Unsupported
+ * putting it here gives extreme distorted images */
+ //E("3IV1", "3ivx delta 3.5 MPEG-4 Video"),
+ //E("3iv1", "3ivx delta 3.5 MPEG-4 Video"),
+
+ /* MSMPEG4 v1 */
+ B(VLC_CODEC_DIV1, "MS MPEG-4 Video v1"),
+ A("DIV1"),
+ A("div1"),
+ A("MPG4"),
+ A("mpg4"),
+ A("mp41"),
+
+ /* MSMPEG4 v2 */
+ B(VLC_CODEC_DIV2, "MS MPEG-4 Video v2"),
+ A("DIV2"),
+ A("div2"),
+ A("MP42"),
+ A("mp42"),
+
+ /* MSMPEG4 v3 / M$ mpeg4 v3 */
+ B(VLC_CODEC_DIV3, "MS MPEG-4 Video v3"),
+ A("DIV3"),
+ A("MPG3"),
+ A("mpg3"),
+ A("div3"),
+ A("MP43"),
+ A("mp43"),
+ /* DivX 3.20 */
+ A("DIV4"),
+ A("div4"),
+ A("DIV5"),
+ A("div5"),
+ A("DIV6"),
+ A("div6"),
+ E("divf", "DivX 4.12"),
+ E("DIVF", "DivX 4.12"),
+ /* Cool Codec */
+ A("COL1"),
+ A("col1"),
+ A("COL0"),
+ A("col0"),
+ /* AngelPotion stuff */
+ A("AP41"),
+ /* 3ivx doctered divx files */
+ A("3IVD"),
+ A("3ivd"),
+ /* who knows? */
+ A("3VID"),
+ A("3vid"),
+ A("DVX3"),
+
+ /* Sorenson v1 */
+ B(VLC_CODEC_SVQ1, "SVQ-1 (Sorenson Video v1)"),
+ A("SVQ1"),
+ A("svq1"),
+ A("svqi"),
+
+ /* Sorenson v3 */
+ B(VLC_CODEC_SVQ3, "SVQ-3 (Sorenson Video v3)"),
+ A("SVQ3"),
+
+ /* h264 */
+ B(VLC_CODEC_H264, "H264 - MPEG-4 AVC (part 10)"),
+ A("H264"),
+ A("h264"),
+ A("x264"),
+ A("X264"),
+ /* avc1: special case h264 */
+ A("avc1"),
+ A("AVC1"),
+ E("VSSH", "Vanguard VSS H264"),
+ E("VSSW", "Vanguard VSS H264"),
+ E("vssh", "Vanguard VSS H264"),
+ E("DAVC", "Dicas MPEGable H.264/MPEG-4 AVC"),
+ E("davc", "Dicas MPEGable H.264/MPEG-4 AVC"),
+
+ /* H263 and H263i */
+ /* H263(+) is also known as Real Video 1.0 */
+
+ /* H263 */
+ B(VLC_CODEC_H263, "H263"),
+ A("H263"),
+ A("h263"),
+ A("VX1K"),
+ A("s263"),
+ A("S263"),
+ A("U263"),
+ A("u263"),
+ E("D263", "DEC H263"),
+ E("L263", "LEAD H263"),
+ E("M263", "Microsoft H263"),
+ E("X263", "Xirlink H263"),
+ /* Zygo (partial) */
+ E("ZyGo", "ITU H263+"),
+
+ /* H263i */
+ B(VLC_CODEC_H263I, "I263.I"),
+ A("I263"),
+ A("i263"),
+
+ /* H263P */
+ B(VLC_CODEC_H263P, "ITU H263+"),
+ E("ILVR", "ITU H263+"),
+ E("viv1", "H263+"),
+ E("vivO", "H263+"),
+ E("viv2", "H263+"),
+ E("U263", "UB H263+"),
+
+ /* Flash (H263) variant */
+ B(VLC_CODEC_FLV1, "Flash Video"),
+ A("FLV1"),
+ A("flv "),
+
+ /* H261 */
+ B(VLC_CODEC_H261, "H.261"),
+ A("H261"),
+ A("h261"),
+
+ B(VLC_CODEC_FLIC, "Flic Video"),
+ A("FLIC"),
+
+ /* MJPEG */
+ B(VLC_CODEC_MJPG, "Motion JPEG Video"),
+ A("MJPG"),
+ A("mjpg"),
+ A("mjpa"),
+ A("jpeg"),
+ A("JPEG"),
+ A("JFIF"),
+ A("JPGL"),
+ A("AVDJ"),
+ A("MMJP"),
+ A("QIVG"),
+ /* AVID MJPEG */
+ E("AVRn", "Avid Motion JPEG"),
+ E("AVDJ", "Avid Motion JPEG"),
+ E("ADJV", "Avid Motion JPEG"),
+ E("dmb1", "Motion JPEG OpenDML Video"),
+ E("ijpg", "Intergraph JPEG Video"),
+ E("IJPG", "Intergraph JPEG Video"),
+ E("ACDV", "ACD Systems Digital"),
+ E("SLMJ", "SL M-JPEG"),
+
+ B(VLC_CODEC_MJPGB, "Motion JPEG B Video"),
+ A("mjpb"),
+
+ B(VLC_CODEC_LJPG, "Lead Motion JPEG Video"),
+ A("LJPG"),
+
+ // ? from avcodec/fourcc.c but makes not sense.
+ //{ VLC_FOURCC( 'L','J','P','G' ), CODEC_ID_MJPEG, VIDEO_ES, "Lead Motion JPEG Video" },
+
+ /* SP5x */
+ B(VLC_CODEC_SP5X, "Sunplus Motion JPEG Video"),
+ A("SP5X"),
+ A("SP53"),
+ A("SP54"),
+ A("SP55"),
+ A("SP56"),
+ A("SP57"),
+ A("SP58"),
+
+ /* DV */
+ B(VLC_CODEC_DV, "DV Video"),
+ A("dv "),
+ A("dvsl"),
+ A("DVSD"),
+ A("dvsd"),
+ A("DVCS"),
+ A("dvcs"),
+ A("dvhd"),
+ A("dvhp"),
+ A("dvhq"),
+ A("dvh3"),
+ A("dvh5"),
+ A("dvh6"),
+ A("dv1n"),
+ A("dv1p"),
+ A("dvc "),
+ A("dv25"),
+ A("dvh1"),
+ A("dvs1"),
+ E("dvcp", "DV Video PAL"),
+ E("dvp ", "DV Video Pro"),
+ E("dvpp", "DV Video Pro PAL"),
+ E("dv50", "DV Video C Pro 50"),
+ E("dv5p", "DV Video C Pro 50 PAL"),
+ E("dv5n", "DV Video C Pro 50 NTSC"),
+ E("AVdv", "AVID DV"),
+ E("AVd1", "AVID DV"),
+ E("CDVC", "Canopus DV Video"),
+ E("cdvc", "Canopus DV Video"),
+ E("CDVH", "Canopus DV Video"),
+ E("cdvh", "Canopus DV Video"),
+
+ /* Windows Media Video */
+ B(VLC_CODEC_WMV1, "Windows Media Video 7"),
+ A("WMV1"),
+ A("wmv1"),
+
+ B(VLC_CODEC_WMV2, "Windows Media Video 8"),
+ A("WMV2"),
+ A("wmv2"),
+
+ B(VLC_CODEC_WMV3, "Windows Media Video 9"),
+ A("WMV3"),
+ A("wmv3"),
+
+ B(VLC_CODEC_WMVA, "Windows Media Video Advanced"),
+ A("WMVA"),
+ A("wmva"),
+ A("WVP2"),
+ A("wvp2"),
+
+ B(VLC_CODEC_VC1, "Windows Media Video VC1"),
+ A("WVC1"),
+ A("wvc1"),
+ A("vc-1"),
+ A("VC-1"),
+ /* WMVA is the VC-1 codec before the standardization proces,
+ * it is not bitstream compatible and deprecated */
+ E("WMVA", "Windows Media Video Advanced Profile"),
+
+ /* Microsoft Video 1 */
+ B(VLC_CODEC_MSVIDEO1, "Microsoft Video 1"),
+ A("MSVC"),
+ A("msvc"),
+ A("CRAM"),
+ A("cram"),
+ A("WHAM"),
+ A("wham"),
+
+ /* Microsoft RLE */
+ B(VLC_CODEC_MSRLE, "Microsoft RLE Video"),
+ A("mrle"),
+ A("WRLE"),
+ A("\x01\x00\x00\x00"),
+ A("\x02\x00\x00\x00"),
+
+ /* Indeo Video Codecs (Quality of this decoder on ppc is not good) */
+ B(VLC_CODEC_INDEO3, "Indeo Video v3"),
+ A("IV31"),
+ A("iv31"),
+ A("IV32"),
+ A("iv32"),
+
+ /* Huff YUV */
+ B(VLC_CODEC_HUFFYUV, "Huff YUV Video"),
+ A("HFYU"),
+
+ B(VLC_CODEC_FFVHUFF, "Huff YUV Video"),
+ A("FFVH"),
+
+ /* On2 VP3 Video Codecs */
+ B(VLC_CODEC_VP3, "On2's VP3 Video"),
+ A("VP3 "),
+ A("VP30"),
+ A("vp30"),
+ A("VP31"),
+ A("vp31"),
+
+ /* On2 VP5, VP6 codecs */
+ B(VLC_CODEC_VP5, "On2's VP5 Video"),
+ A("VP5 "),
+ A("VP50"),
+
+ B(VLC_CODEC_VP6, "On2's VP6.2 Video"),
+ A("VP62"),
+ A("vp62"),
+ E("VP60", "On2's VP6.0 Video"),
+ E("VP61", "On2's VP6.1 Video"),
+
+ B(VLC_CODEC_VP6F, "On2's VP6.2 Video (Flash)"),
+ A("VP6F"),
+
+ B(VLC_CODEC_VP6A, "On2's VP6 A Video"),
+ A("VP6A"),
+
+ /* Xiph.org theora */
+ B(VLC_CODEC_THEORA, "Xiph.org's Theora Video"),
+ A("theo"),
+ A("Thra"),
+
+ /* Xiph.org tarkin */
+ B(VLC_CODEC_TARKIN, "Xiph.org's Tarkin Video"),
+ A("tark"),
+
+ /* Asus Video (Another thing that doesn't work on PPC) */
+ B(VLC_CODEC_ASV1, "Asus V1 Video"),
+ A("ASV1"),
+ B(VLC_CODEC_ASV2, "Asus V2 Video"),
+ A("ASV2"),
+
+ /* FFMPEG Video 1 (lossless codec) */
+ B(VLC_CODEC_FFV1, "FFMpeg Video 1"),
+ A("FFV1"),
+
+ /* ATI VCR1 */
+ B(VLC_CODEC_VCR1, "ATI VCR1 Video"),
+ A("VCR1"),
+
+ /* Cirrus Logic AccuPak */
+ B(VLC_CODEC_CLJR, "Creative Logic AccuPak"),
+ A("CLJR"),
+
+ /* Real Video */
+ B(VLC_CODEC_RV10, "Real Video 1.0"),
+ A("RV10"),
+ A("rv10"),
+
+ B(VLC_CODEC_RV13, "Real Video 1.3"),
+ A("RV13"),
+ A("rv13"),
+
+ B(VLC_CODEC_RV20, "Real Video 2.0"),
+ A("RV20"),
+ A("rv20"),
+
+ B(VLC_CODEC_RV30, "Real Video 3.0"),
+ A("RV30"),
+ A("rv30"),
+
+ B(VLC_CODEC_RV40, "Real Video 4.0"),
+ A("RV40"),
+ A("rv40"),
+
+ /* Apple Video */
+ B(VLC_CODEC_RPZA, "Apple Video"),
+ A("rpza"),
+ A("azpr"),
+ A("RPZA"),
+ A("AZPR"),
+
+ B(VLC_CODEC_SMC, "Apple graphics"),
+ A("smc "),
+
+ B(VLC_CODEC_CINEPAK, "Cinepak Video"),
+ A("CVID"),
+ A("cvid"),
+
+ /* Screen Capture Video Codecs */
+ B(VLC_CODEC_TSCC, "TechSmith Camtasia Screen Capture"),
+ A("TSCC"),
+ A("tscc"),
+
+ B(VLC_CODEC_CSCD, "CamStudio Screen Codec"),
+ A("CSCD"),
+ A("cscd"),
+
+ B(VLC_CODEC_ZMBV, "DosBox Capture Codec"),
+ A("ZMBV"),
+
+ B(VLC_CODEC_VMNC, "VMware Video"),
+ A("VMnc"),
+ B(VLC_CODEC_FRAPS, "FRAPS: Realtime Video Capture"),
+ A("FPS1"),
+ A("fps1"),
+
+ /* Duck TrueMotion */
+ B(VLC_CODEC_TRUEMOTION1, "Duck TrueMotion v1 Video"),
+ A("DUCK"),
+ A("PVEZ"),
+ B(VLC_CODEC_TRUEMOTION2, "Duck TrueMotion v2.0 Video"),
+ A("TM20"),
+
+ /* FFMPEG's SNOW wavelet codec */
+ B(VLC_CODEC_SNOW, "FFMpeg SNOW wavelet Video"),
+ A("SNOW"),
+ A("snow"),
+
+ B(VLC_CODEC_QTRLE, "Apple QuickTime RLE Video"),
+ A("rle "),
+
+ B(VLC_CODEC_QDRAW, "Apple QuickDraw Video"),
+ A("qdrw"),
+
+ B(VLC_CODEC_QPEG, "QPEG Video"),
+ A("QPEG"),
+ A("Q1.0"),
+ A("Q1.1"),
+
+ B(VLC_CODEC_ULTI, "IBM Ultimotion Video"),
+ A("ULTI"),
+
+ B(VLC_CODEC_VIXL, "Miro/Pinnacle VideoXL Video"),
+ A("VIXL"),
+ A("XIXL"),
+ E("PIXL", "Pinnacle VideoXL Video"),
+
+ B(VLC_CODEC_LOCO, "LOCO Video"),
+ A("LOCO"),
+
+ B(VLC_CODEC_WNV1, "Winnov WNV1 Video"),
+ A("WNV1"),
+
+ B(VLC_CODEC_AASC, "Autodesc RLE Video"),
+ A("AASC"),
+
+ B(VLC_CODEC_INDEO2, "Indeo Video v2"),
+ A("IV20"),
+ A("RT21"),
+
+ /* Flash Screen Video */
+ B(VLC_CODEC_FLASHSV, "Flash Screen Video"),
+ A("FSV1"),
+ B(VLC_CODEC_KMVC, "Karl Morton's Video Codec (Worms)"),
+ A("KMVC"),
+
+ B(VLC_CODEC_NUV, "Nuppel Video"),
+ A("RJPG"),
+ A("NUV1"),
+
+ /* CODEC_ID_SMACKVIDEO */
+ B(VLC_CODEC_SMACKVIDEO, "Smacker Video"),
+ A("SMK2"),
+ A("SMK4"),
+
+ /* Chinese AVS - Untested */
+ B(VLC_CODEC_CAVS, "Chinese AVS"),
+ A("CAVS"),
+ A("AVs2"),
+ A("avs2"),
+
+ /* */
+ B(VLC_CODEC_DNXHD, "DNxHD"),
+ A("AVdn"),
+ B(VLC_CODEC_8BPS, "8BPS"),
+ A("8BPS"),
+ B(VLC_CODEC_MIMIC, "Mimic"),
+ A("ML2O"),
+
+ B(VLC_CODEC_CDG, "CD-G Video"),
+ A("CDG "),
+
+ /* */
+ B(VLC_CODEC_YV12, "Planar 4:2:0 YVU"),
+ A("YV12"),
+ A("yv12"),
+ B(VLC_CODEC_I420, "Planar 4:1:0 YUV"),
+ A("I410"),
+ A("YVU9"),
+ B(VLC_CODEC_I420, "Planar 4:1:1 YUV"),
+ A("I411"),
+ B(VLC_CODEC_I420, "Planar 4:2:0 YUV"),
+ A("I420"),
+ A("IYUV"),
+ B(VLC_CODEC_I422, "Planar 4:2:2 YUV"),
+ A("I422"),
+ B(VLC_CODEC_I444, "Planar 4:4:0 YUV"),
+ A("I440"),
+ B(VLC_CODEC_I444, "Planar 4:4:4 YUV"),
+ A("I444"),
+
+ B(VLC_CODEC_I420, "Planar 4:1:0 YUV full scale"),
+ A("J410"),
+ B(VLC_CODEC_I420, "Planar 4:1:1 YUV full scale"),
+ A("J411"),
+ B(VLC_CODEC_I420, "Planar 4:2:0 YUV full scale"),
+ A("J420"),
+ B(VLC_CODEC_I422, "Planar 4:2:2 YUV full scale"),
+ A("J422"),
+ B(VLC_CODEC_I444, "Planar 4:4:0 YUV full scale"),
+ A("J440"),
+ B(VLC_CODEC_I444, "Planar 4:4:4 YUV full scale"),
+ A("J444"),
+
+ B(VLC_CODEC_YUVP, "Palettized YUV with palette element Y:U:V:A"),
+ A("YUVP"),
+
+ B(VLC_CODEC_YUVA, "Planar YUV 4:4:4 Y:U:V:A"),
+ A("YUVA"),
+
+ B(VLC_CODEC_RGBP, "Palettized RGB with palette element R:G:B"),
+ A("RGBP"),
+
+ B(VLC_CODEC_RGB8, "8 bits RGB"),
+ A("RGB2"),
+ B(VLC_CODEC_RGB15, "15 bits RGB"),
+ A("RV15"),
+ B(VLC_CODEC_RGB16, "16 bits RGB"),
+ A("RV16"),
+ B(VLC_CODEC_RGB24, "24 bits RGB"),
+ A("RV24"),
+ B(VLC_CODEC_RGB32, "32 bits RGB"),
+ A("RV32"),
+ B(VLC_CODEC_RGBA, "32 bits RGBA"),
+ A("RGBA"),
+
+ B(VLC_CODEC_GREY, "8 bits greyscale"),
+ A("GREY"),
+ A("Y800"),
+ A("Y8 "),
+
+ B(VLC_CODEC_UYVY, "Packed YUV 4:2:2, U:Y:V:Y"),
+ A("UYVY"),
+ A("UYNV"),
+ A("Y422"),
+ A("2vuy"),
+ A("2Vuy"),
+ A("AVUI"),
+ B(VLC_CODEC_VYUY, "Packed YUV 4:2:2, V:Y:U:Y"),
+ A("VYUY"),
+ B(VLC_CODEC_YUYV, "Packed YUV 4:2:2, Y:U:Y:V"),
+ A("YUY2"),
+ A("YUYV"),
+ A("YUNV"),
+ B(VLC_CODEC_YVYU, "Packed YUV 4:2:2, Y:V:Y:U"),
+ A("YVYU"),
+
+ B(VLC_CODEC_Y211, "Packed YUV 2:1:1, Y:U:Y:V "),
+ A("Y211"),
+ B(VLC_CODEC_YMGA, "Planar Y, packed UV, from Matrox"),
+ A("YMGA"),
+ B(VLC_CODEC_CYUV, "Creative Packed YUV 4:2:2, U:Y:V:Y, reverted"),
+ A("cyuv"),
+ A("CYUV"),
+
+ B(VLC_CODEC_V210, "10-bit 4:2:2 Component YCbCr"),
+ A("v210"),
+
+ /* Videogames Codecs */
+
+ /* Interplay MVE */
+ B(VLC_CODEC_INTERPLAY, "Interplay MVE Video"),
+ A("imve"),
+ A("INPV"),
+
+ /* Id Quake II CIN */
+ B(VLC_CODEC_IDCIN, "Id Quake II CIN Video"),
+ A("IDCI"),
+
+ /* 4X Technologies */
+ B(VLC_CODEC_4XM, "4X Technologies Video"),
+ A("4XMV"),
+ A("4xmv"),
+
+ /* Id RoQ */
+ B(VLC_CODEC_ROQ, "Id RoQ Video"),
+ A("RoQv"),
+
+ /* Sony Playstation MDEC */
+ B(VLC_CODEC_MDEC, "PSX MDEC Video"),
+ A("MDEC"),
+
+ /* Sierra VMD */
+ B(VLC_CODEC_VMDVIDEO, "Sierra VMD Video"),
+ A("VMDV"),
+ A("vmdv"),
+
+ B(VLC_CODEC_DIRAC, "Dirac" ),
+ A("drac"),
+
+ /* Image */
+ B(VLC_CODEC_PNG, "PNG Image"),
+ A("png "),
+
+ B(VLC_CODEC_PPM, "PPM Image"),
+ A("ppm "),
+
+ B(VLC_CODEC_PGM, "PGM Image"),
+ A("pgm "),
+
+ B(VLC_CODEC_PGMYUV, "PGM YUV Image"),
+ A("pgmy"),
+
+ B(VLC_CODEC_PAM, "PAM Image"),
+ A("pam "),
+
+ B(VLC_CODEC_JPEGLS, "Lossless JPEG"),
+ A("MJLS"),
+
+ B(VLC_CODEC_JPEG, "JPEG"),
+ A("jpeg"),
+ A("JPEG"),
+
+ B(VLC_CODEC_BMP, "BMP Image"),
+ A("bmp "),
+
+ B(VLC_CODEC_TIFF, "TIFF Image"),
+ A("tiff"),
+
+ B(VLC_CODEC_GIF, "GIF Image"),
+ A("gif "),
+
+
+ B(VLC_CODEC_TARGA, "Truevision Targa Image"),
+ A("tga "),
+ A("mtga"),
+ A("MTGA"),
+
+ B(VLC_CODEC_SGI, "SGI Image"),
+ A("sgi "),
+
+ B(VLC_CODEC_PNM, "Portable Anymap Image"),
+ A("pnm "),
+
+ B(VLC_CODEC_PCX, "Personal Computer Exchange Image"),
+ A("pcx "),
+
+ B(0, "")
+};
+static const entry_t p_list_audio[] = {
+
+ /* Windows Media Audio 1 */
+ B(VLC_CODEC_WMA1, "Windows Media Audio 1"),
+ A("WMA1"),
+ A("wma1"),
+
+ /* Windows Media Audio 2 */
+ B(VLC_CODEC_WMA2, "Windows Media Audio 2"),
+ A("WMA2"),
+ A("wma2"),
+ A("wma "),
+
+ /* Windows Media Audio Professional */
+ B(VLC_CODEC_WMAP, "Windows Media Audio Professional"),
+ A("WMAP"),
+ A("wmap"),
+
+ /* Windows Media Audio Lossless */
+ B(VLC_CODEC_WMAL, "Windows Media Audio Lossless"),
+ A("WMAL"),
+ A("wmal"),
+
+ /* Windows Media Audio Speech */
+ B(VLC_CODEC_WMAS, "Windows Media Audio Speech"),
+ A("WMAS"),
+ A("wmas"),
+
+ /* DV Audio */
+ B(VLC_CODEC_DVAUDIO, "DV Audio"),
+ A("dvau"),
+ A("vdva"),
+ A("dvca"),
+ A("RADV"),
+
+ /* MACE-3 Audio */
+ B(VLC_CODEC_MACE3, "MACE-3 Audio"),
+ A("MAC3"),
+
+ /* MACE-6 Audio */
+ B(VLC_CODEC_MACE6, "MACE-6 Audio"),
+ A("MAC6"),
+
+ /* MUSEPACK7 Audio */
+ B(VLC_CODEC_MUSEPACK7, "MUSEPACK7 Audio"),
+ A("MPC "),
+
+ /* MUSEPACK8 Audio */
+ B(VLC_CODEC_MUSEPACK8, "MUSEPACK8 Audio"),
+ A("MPCK"),
+ A("MPC8"),
+
+ /* RealAudio 1.0 */
+ B(VLC_CODEC_RA_144, "RealAudio 1.0"),
+ A("14_4"),
+ A("lpcJ"),
+
+ /* RealAudio 2.0 */
+ B(VLC_CODEC_RA_288, "RealAudio 2.0"),
+ A("28_8"),
+
+ /* MPEG Audio layer 1/2/3 */
+ B(VLC_CODEC_MPGA, "MPEG Audio layer 1/2/3"),
+ A("mpga"),
+ A("mp3 "),
+ A(".mp3"),
+ A("MP3 "),
+ A("LAME"),
+ A("ms\x00\x50"),
+ A("ms\x00\x55"),
+
+ /* A52 Audio (aka AC3) */
+ B(VLC_CODEC_A52, "A52 Audio (aka AC3)"),
+ A("a52 "),
+ A("a52b"),
+ A("ac-3"),
+ A("ms\x20\x00"),
+
+ B(VLC_CODEC_EAC3, "A/52 B Audio (aka E-AC3)"),
+ A("eac3"),
+
+ /* DTS Audio */
+ B(VLC_CODEC_DTS, "DTS Audio"),
+ A("dts "),
+ A("dtsb"),
+ A("ms\x20\x01"),
+
+ /* AAC audio */
+ B(VLC_CODEC_MP4A, "MPEG AAC Audio"),
+ A("mp4a"),
+ A("aac "),
+
+ /* 4X Technologies */
+ B(VLC_CODEC_ADPCM_4XM, "4X Technologies Audio"),
+ A("4xma"),
+
+ /* EA ADPCM */
+ B(VLC_CODEC_ADPCM_EA, "EA ADPCM Audio"),
+ A("ADEA"),
+
+ /* Interplay DPCM */
+ B(VLC_CODEC_INTERPLAY_DPCM, "Interplay DPCM Audio"),
+ A("idpc"),
+
+ /* Id RoQ */
+ B(VLC_CODEC_ROQ_DPCM, "Id RoQ DPCM Audio"),
+ A("RoQa"),
+
+ /* DCIN Audio */
+ B(VLC_CODEC_DSICINAUDIO, "Delphine CIN Audio"),
+ A("DCIA"),
+
+ /* Sony Playstation XA ADPCM */
+ B(VLC_CODEC_ADPCM_XA, "PSX XA ADPCM Audio"),
+ A("xa "),
+
+ /* ADX ADPCM */
+ B(VLC_CODEC_ADPCM_ADX, "ADX ADPCM Audio"),
+ A("adx "),
+
+ /* Westwood ADPCM */
+ B(VLC_CODEC_ADPCM_IMA_WS, "Westwood IMA ADPCM audio"),
+ A("AIWS"),
+
+ /* Sierra VMD */
+ B(VLC_CODEC_VMDAUDIO, "Sierra VMD Audio"),
+ A("vmda"),
+
+ /* G.726 ADPCM */
+ B(VLC_CODEC_ADPCM_G726, "G.726 ADPCM Audio"),
+ A("g726"),
+
+ /* AMR */
+ B(VLC_CODEC_AMR_NB, "AMR narrow band"),
+ A("samr"),
+
+ B(VLC_CODEC_AMR_WB, "AMR wide band"),
+ A("sawb"),
+
+ /* FLAC */
+ B(VLC_CODEC_FLAC, "FLAC (Free Lossless Audio Codec)"),
+ A("flac"),
+
+ /* ALAC */
+ B(VLC_CODEC_ALAC, "Apple Lossless Audio Codec"),
+ A("alac"),
+
+ /* QDM2 */
+ B(VLC_CODEC_QDM2, "QDM2 Audio"),
+ A("QDM2"),
+
+ /* COOK */
+ B(VLC_CODEC_COOK, "Cook Audio"),
+ A("cook"),
+
+ /* TTA: The Lossless True Audio */
+ B(VLC_CODEC_TTA, "The Lossless True Audio"),
+ A("TTA1"),
+
+ /* Shorten */
+ B(VLC_CODEC_SHORTEN, "Shorten Lossless Audio"),
+ A("shn "),
+ A("shrn"),
+
+ B(VLC_CODEC_WAVPACK, "WavPack"),
+ A("WVPK"),
+ A("wvpk"),
+
+ B(VLC_CODEC_GSM, "GSM Audio"),
+ A("gsm "),
+
+ B(VLC_CODEC_GSM_MS, "Microsoft GSM Audio"),
+ A("agsm"),
+
+ B(VLC_CODEC_ATRAC3, "atrac 3"),
+ A("atrc"),
+ A("\x70\x02\x00\x00"),
+
+ B(VLC_CODEC_SONIC, "Sonic"),
+ A("SONC"),
+
+ B(VLC_CODEC_IMC, "IMC" ),
+ A("\x01\x04\x00\x00"),
+
+ B(VLC_CODEC_TRUESPEECH,"TrueSpeech"),
+ A("\x22\x00\x00\x00"),
+
+ B(VLC_CODEC_NELLYMOSER, "NellyMoser ASAO"),
+ A("NELL"),
+
+ B(VLC_CODEC_APE, "Monkey's Audio"),
+ A("APE "),
+
+ B(VLC_CODEC_MLP, "MLP/TrueHD Audio"),
+ A("mlp "),
+
+ B(VLC_CODEC_QCELP, "QCELP Audio"),
+ A("Qclp"),
+
+ B(VLC_CODEC_SPEEX, "Speex Audio"),
+ A("spx "),
+ A("spxr"),
+
+ B(VLC_CODEC_VORBIS, "Vorbis Audio"),
+ A("vorb"),
+
+ B(VLC_CODEC_302M, "302M Audio"),
+ A("302m"),
+
+ B(VLC_CODEC_DVD_LPCM, "DVD LPCM Audio"),
+ A("lpcm"),
+
+ B(VLC_CODEC_BD_LPCM, "BD LPCM Audio"),
+ A("bpcm"),
+
+ B(VLC_CODEC_SDDS, "SDDS Audio"),
+ A("sdds"),
+ A("sddb"),
+
+ B(VLC_CODEC_MIDI, "MIDI Audio"),
+ A("MIDI"),
+
+ /* PCM */
+ B(VLC_CODEC_S8, "PCM S8"),
+ A("s8 "),
+
+ B(VLC_CODEC_U8, "PCM U8"),
+ A("u8 "),
+
+ B(VLC_CODEC_S16L, "PCM S16 LE"),
+ A("s16l"),
+
+ B(VLC_CODEC_S16B, "PCM S16 BE"),
+ A("s16b"),
+
+ B(VLC_CODEC_U16L, "PCM U16 LE"),
+ A("u16l"),
+
+ B(VLC_CODEC_U16B, "PCM U16 BE"),
+ A("u16b"),
+
+ B(VLC_CODEC_S24L, "PCM S24 LE"),
+ A("s24l"),
+ A("42ni"), /* Quicktime */
+
+ B(VLC_CODEC_S24B, "PCM S24 BE"),
+ A("s24b"),
+ A("in24"), /* Quicktime */
+
+ B(VLC_CODEC_U24L, "PCM U24 LE"),
+ A("u24l"),
+
+ B(VLC_CODEC_U24B, "PCM U24 BE"),
+ A("u24b"),
+
+ B(VLC_CODEC_S32L, "PCM S32 LE"),
+ A("s32l"),
+ A("23ni"), /* Quicktime */
+
+ B(VLC_CODEC_S32B, "PCM S32 BE"),
+ A("s32b"),
+ A("in32"), /* Quicktime */
+
+ B(VLC_CODEC_U32L, "PCM U32 LE"),
+ A("u32l"),
+
+ B(VLC_CODEC_U32B, "PCM U32 BE"),
+ A("u32b"),
+
+ B(VLC_CODEC_ALAW, "PCM ALAW"),
+ A("alaw"),
+
+ B(VLC_CODEC_MULAW, "PCM MU-LAW"),
+ A("mlaw"),
+ A("ulaw"),
+
+ B(VLC_CODEC_S24DAUD, "PCM DAUD"),
+ A("daud"),
+
+ B(VLC_CODEC_FI32, "32 bits fixed float"),
+ A("fi32"),
+
+ B(VLC_CODEC_FL32, "32 bits float"),
+ A("fl32"),
+
+ B(VLC_CODEC_FL32, "64 bits float"),
+ A("fl64"),
+
+ B(0, "")
+};
+static const entry_t p_list_spu[] = {
+
+ B(VLC_CODEC_SPU, "DVD Subtitles"),
+ A("spu "),
+ A("spub"),
+
+ B(VLC_CODEC_DVBS, "DVB Subtitles"),
+ A("dvbs"),
+
+ B(VLC_CODEC_SUBT, "Text subtitles with various tags"),
+ A("subt"),
+
+ B(VLC_CODEC_XSUB, "DivX XSUB subtitles"),
+ A("XSUB"),
+ A("xsub"),
+
+ B(VLC_CODEC_SSA, "SubStation Alpha subtitles"),
+ A("ssa "),
+
+ B(VLC_CODEC_TEXT, "Plain text subtitles"),
+ A("TEXT"),
+
+ B(VLC_CODEC_TELETEXT, "Teletext"),
+ A("telx"),
+
+ B(VLC_CODEC_TELETEXT, "Kate subtiles"),
+ A("kate"),
+
+ B(VLC_CODEC_CMML, "CMML annotations/metadata"),
+ A("cmml"),
+
+ B(VLC_CODEC_ITU_T140, "ITU T.140 subtitles"),
+ A("t140"),
+
+ B(VLC_CODEC_ITU_T140, "ITU T.140 subtitles"),
+ A("t140"),
+
+ B(VLC_CODEC_USF, "USF subtitles"),
+ A("usf "),
+
+ B(VLC_CODEC_OGT, "OGT subtitles"),
+ A("ogt "),
+
+ B(VLC_CODEC_CVD, "CVD subtitles"),
+ A("cvd "),
+
+ B(0, "")
+};
+
+/* Create a fourcc from a string.
+ * XXX it assumes that the string is at least four bytes */
+static inline vlc_fourcc_t CreateFourcc( const char *psz_fourcc )
+{
+ return VLC_FOURCC( psz_fourcc[0], psz_fourcc[1],
+ psz_fourcc[2], psz_fourcc[3] );
+}
+
+/* */
+static entry_t Lookup( const entry_t p_list[], vlc_fourcc_t i_fourcc )
+{
+ const char *p_class = NULL;
+ const char *psz_description = NULL;
+
+ entry_t e = B(0, "");
+
+ for( int i = 0; ; i++ )
+ {
+ const entry_t *p = &p_list[i];
+ const vlc_fourcc_t i_entry_fourcc = CreateFourcc( p->p_fourcc );
+ const vlc_fourcc_t i_entry_class = CreateFourcc( p->p_class );
+
+ if( i_entry_fourcc == 0 )
+ break;
+
+ if( i_entry_class != 0 )
+ {
+ p_class = p->p_class;
+ psz_description = p->psz_description;
+ }
+
+ if( i_entry_fourcc == i_fourcc )
+ {
+ assert( p_class != NULL );
+
+ memcpy( e.p_class, p_class, 4 );
+ memcpy( e.p_fourcc, p->p_fourcc, 4 );
+ e.psz_description = p->psz_description ?: psz_description;
+ break;
+ }
+ }
+ return e;
+}
+
+/* */
+static entry_t Find( int i_cat, vlc_fourcc_t i_fourcc )
+{
+ entry_t e;
+
+ switch( i_cat )
+ {
+ case VIDEO_ES:
+ return Lookup( p_list_video, i_fourcc );
+ case AUDIO_ES:
+ return Lookup( p_list_audio, i_fourcc );
+ case SPU_ES:
+ return Lookup( p_list_spu, i_fourcc );
+
+ default:
+ e = Find( VIDEO_ES, i_fourcc );
+ if( CreateFourcc( e.p_class ) == 0 )
+ e = Find( AUDIO_ES, i_fourcc );
+ if( CreateFourcc( e.p_class ) == 0 )
+ e = Find( SPU_ES, i_fourcc );
+ return e;
+ }
+}
+
+/* */
+vlc_fourcc_t vlc_fourcc_GetCodec( int i_cat, vlc_fourcc_t i_fourcc )
+{
+ entry_t e = Find( i_cat, i_fourcc );
+
+ if( CreateFourcc( e.p_class ) == 0 )
+ return i_fourcc;
+ return CreateFourcc( e.p_class );
+}
+
+vlc_fourcc_t vlc_fourcc_GetCodecFromString( int i_cat, const char *psz_fourcc )
+{
+ if( !psz_fourcc || strlen(psz_fourcc) != 4 )
+ return 0;
+ return vlc_fourcc_GetCodec( i_cat,
+ VLC_FOURCC( psz_fourcc[0], psz_fourcc[1],
+ psz_fourcc[2], psz_fourcc[3] ) );
+}
+
+vlc_fourcc_t vlc_fourcc_GetCodecAudio( vlc_fourcc_t i_fourcc, int i_bits )
+{
+ const int i_bytes = ( i_bits + 7 ) / 8;
+
+ if( i_fourcc == VLC_FOURCC( 'a', 'f', 'l', 't' ) )
+ {
+ switch( i_bytes )
+ {
+ case 4:
+ return VLC_CODEC_FL32;
+ case 8:
+ return VLC_CODEC_FL64;
+ default:
+ return 0;
+ }
+ }
+ else if( i_fourcc == VLC_FOURCC( 'a', 'r', 'a', 'w' ) ||
+ i_fourcc == VLC_FOURCC( 'p', 'c', 'm', ' ' ) )
+ {
+ switch( i_bytes )
+ {
+ case 1:
+ return VLC_CODEC_U8;
+ case 2:
+ return VLC_CODEC_S16L;
+ case 3:
+ return VLC_CODEC_S24L;
+ break;
+ case 4:
+ return VLC_CODEC_S32L;
+ default:
+ return 0;
+ }
+ }
+ else if( i_fourcc == VLC_FOURCC( 't', 'w', 'o', 's' ) )
+ {
+ switch( i_bytes )
+ {
+ case 1:
+ return VLC_CODEC_S8;
+ case 2:
+ return VLC_CODEC_S16B;
+ case 3:
+ return VLC_CODEC_S24B;
+ case 4:
+ return VLC_CODEC_S32B;
+ default:
+ return 0;
+ }
+ }
+ else if( i_fourcc == VLC_FOURCC( 's', 'o', 'w', 't' ) )
+ {
+ switch( i_bytes )
+ {
+ case 1:
+ return VLC_CODEC_S8;
+ case 2:
+ return VLC_CODEC_S16L;
+ case 3:
+ return VLC_CODEC_S24L;
+ case 4:
+ return VLC_CODEC_S32L;
+ default:
+ return 0;
+ }
+ }
+ else
+ {
+ return vlc_fourcc_GetCodec( AUDIO_ES, i_fourcc );
+ }
+}
+
+/* */
+const char *vlc_fourcc_GetDescription( int i_cat, vlc_fourcc_t i_fourcc )
+{
+ entry_t e = Find( i_cat, i_fourcc );
+
+ return e.psz_description;
+}
+
} ext_table[] =
{
- { VLC_FOURCC('j','p','e','g'), "jpeg" },
- { VLC_FOURCC('j','p','e','g'), "jpg" },
- { VLC_FOURCC('l','j','p','g'), "ljpg" },
- { VLC_FOURCC('p','n','g',' '), "png" },
- { VLC_FOURCC('p','g','m',' '), "pgm" },
- { VLC_FOURCC('p','g','m','y'), "pgmyuv" },
+ { VLC_CODEC_JPEG, "jpeg" },
+ { VLC_CODEC_JPEG, "jpg" },
+ { VLC_CODEC_JPEGLS, "ljpg" },
+ { VLC_CODEC_PNG, "png" },
+ { VLC_CODEC_PGM, "pgm" },
+ { VLC_CODEC_PGMYUV, "pgmyuv" },
{ VLC_FOURCC('p','b','m',' '), "pbm" },
{ VLC_FOURCC('p','a','m',' '), "pam" },
- { VLC_FOURCC('t','g','a',' '), "tga" },
- { VLC_FOURCC('b','m','p',' '), "bmp" },
- { VLC_FOURCC('p','n','m',' '), "pnm" },
+ { VLC_CODEC_TARGA, "tga" },
+ { VLC_CODEC_BMP, "bmp" },
+ { VLC_CODEC_PNM, "pnm" },
{ VLC_FOURCC('x','p','m',' '), "xpm" },
{ VLC_FOURCC('x','c','f',' '), "xcf" },
- { VLC_FOURCC('p','c','x',' '), "pcx" },
- { VLC_FOURCC('g','i','f',' '), "gif" },
- { VLC_FOURCC('t','i','f','f'), "tif" },
- { VLC_FOURCC('t','i','f','f'), "tiff" },
+ { VLC_CODEC_PCX, "pcx" },
+ { VLC_CODEC_GIF, "gif" },
+ { VLC_CODEC_TIFF, "tif" },
+ { VLC_CODEC_TIFF, "tiff" },
{ VLC_FOURCC('l','b','m',' '), "lbm" },
{ 0, NULL }
};
const char *psz_mime;
} mime_table[] =
{
- { VLC_FOURCC('b','m','p',' '), "image/bmp" },
- { VLC_FOURCC('b','m','p',' '), "image/x-bmp" },
- { VLC_FOURCC('b','m','p',' '), "image/x-bitmap" },
- { VLC_FOURCC('b','m','p',' '), "image/x-ms-bmp" },
- { VLC_FOURCC('p','n','m',' '), "image/x-portable-anymap" },
- { VLC_FOURCC('p','n','m',' '), "image/x-portable-bitmap" },
- { VLC_FOURCC('p','n','m',' '), "image/x-portable-graymap" },
- { VLC_FOURCC('p','n','m',' '), "image/x-portable-pixmap" },
- { VLC_FOURCC('g','i','f',' '), "image/gif" },
- { VLC_FOURCC('j','p','e','g'), "image/jpeg" },
- { VLC_FOURCC('p','c','x',' '), "image/pcx" },
- { VLC_FOURCC('p','n','g',' '), "image/png" },
- { VLC_FOURCC('t','i','f','f'), "image/tiff" },
- { VLC_FOURCC('t','g','a',' '), "iamge/x-tga" },
+ { VLC_CODEC_BMP, "image/bmp" },
+ { VLC_CODEC_BMP, "image/x-bmp" },
+ { VLC_CODEC_BMP, "image/x-bitmap" },
+ { VLC_CODEC_BMP, "image/x-ms-bmp" },
+ { VLC_CODEC_PNM, "image/x-portable-anymap" },
+ { VLC_CODEC_PNM, "image/x-portable-bitmap" },
+ { VLC_CODEC_PNM, "image/x-portable-graymap" },
+ { VLC_CODEC_PNM, "image/x-portable-pixmap" },
+ { VLC_CODEC_GIF, "image/gif" },
+ { VLC_CODEC_JPEG, "image/jpeg" },
+ { VLC_CODEC_PCX, "image/pcx" },
+ { VLC_CODEC_PNG, "image/png" },
+ { VLC_CODEC_TIFF, "image/tiff" },
+ { VLC_CODEC_TARGA, "iamge/x-tga" },
{ VLC_FOURCC('x','p','m',' '), "image/x-xpixmap" },
{ 0, NULL }
};
switch( i_type )
{
- case VLC_OBJECT_INTF:
- i_size = sizeof(intf_thread_t);
- psz_type = "interface";
- break;
case VLC_OBJECT_DECODER:
i_size = sizeof(decoder_t);
psz_type = "decoder";
break;
- case VLC_OBJECT_PACKETIZER:
- i_size = sizeof(decoder_t);
- psz_type = "packetizer";
- break;
case VLC_OBJECT_AOUT:
i_size = sizeof(aout_instance_t);
psz_type = "audio output";
--- /dev/null
+/*****************************************************************************
+ * pthread.c : pthread back-end for LibVLC
+ *****************************************************************************
+ * Copyright (C) 1999-2009 the VideoLAN team
+ *
+ * Authors: Jean-Marc Dressler <polux@via.ecp.fr>
+ * Samuel Hocevar <sam@zoy.org>
+ * Gildas Bazin <gbazin@netcourrier.com>
+ * Clément Sténac
+ * Rémi Denis-Courmont
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
+ *****************************************************************************/
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include <vlc_common.h>
+
+#include "libvlc.h"
+#include <stdarg.h>
+#include <assert.h>
+#include <unistd.h> /* fsync() */
+#include <signal.h>
+
+#include <sched.h>
+#ifdef __linux__
+# include <sys/syscall.h> /* SYS_gettid */
+#endif
+
+#ifdef HAVE_EXECINFO_H
+# include <execinfo.h>
+#endif
+
+#ifdef __APPLE__
+# include <sys/time.h> /* gettimeofday in vlc_cond_timedwait */
+#endif
+
+/**
+ * Print a backtrace to the standard error for debugging purpose.
+ */
+void vlc_trace (const char *fn, const char *file, unsigned line)
+{
+ fprintf (stderr, "at %s:%u in %s\n", file, line, fn);
+ fflush (stderr); /* needed before switch to low-level I/O */
+#ifdef HAVE_BACKTRACE
+ void *stack[20];
+ int len = backtrace (stack, sizeof (stack) / sizeof (stack[0]));
+ backtrace_symbols_fd (stack, len, 2);
+#endif
+ fsync (2);
+}
+
+static inline unsigned long vlc_threadid (void)
+{
+#if defined (__linux__)
+ /* glibc does not provide a call for this */
+ return syscall (SYS_gettid);
+
+#else
+ union { pthread_t th; unsigned long int i; } v = { };
+ v.th = pthread_self ();
+ return v.i;
+
+#endif
+}
+
+#ifndef NDEBUG
+/*****************************************************************************
+ * vlc_thread_fatal: Report an error from the threading layer
+ *****************************************************************************
+ * This is mostly meant for debugging.
+ *****************************************************************************/
+static void
+vlc_thread_fatal (const char *action, int error,
+ const char *function, const char *file, unsigned line)
+{
+ fprintf (stderr, "LibVLC fatal error %s (%d) in thread %lu ",
+ action, error, vlc_threadid ());
+ vlc_trace (function, file, line);
+
+ /* Sometimes strerror_r() crashes too, so make sure we print an error
+ * message before we invoke it */
+#ifdef __GLIBC__
+ /* Avoid the strerror_r() prototype brain damage in glibc */
+ errno = error;
+ fprintf (stderr, " Error message: %m\n");
+#else
+ char buf[1000];
+ const char *msg;
+
+ switch (strerror_r (error, buf, sizeof (buf)))
+ {
+ case 0:
+ msg = buf;
+ break;
+ case ERANGE: /* should never happen */
+ msg = "unknwon (too big to display)";
+ break;
+ default:
+ msg = "unknown (invalid error number)";
+ break;
+ }
+ fprintf (stderr, " Error message: %s\n", msg);
+#endif
+ fflush (stderr);
+
+ abort ();
+}
+
+# define VLC_THREAD_ASSERT( action ) \
+ if (val) vlc_thread_fatal (action, val, __func__, __FILE__, __LINE__)
+#else
+# define VLC_THREAD_ASSERT( action ) ((void)val)
+#endif
+
+#if defined (__GLIBC__) && (__GLIBC_MINOR__ < 6)
+/* This is not prototyped under glibc, though it exists. */
+int pthread_mutexattr_setkind_np( pthread_mutexattr_t *attr, int kind );
+#endif
+
+/*****************************************************************************
+ * vlc_mutex_init: initialize a mutex
+ *****************************************************************************/
+void vlc_mutex_init( vlc_mutex_t *p_mutex )
+{
+ pthread_mutexattr_t attr;
+
+ if( pthread_mutexattr_init( &attr ) )
+ abort();
+#ifndef NDEBUG
+ /* Create error-checking mutex to detect problems more easily. */
+# if defined (__GLIBC__) && (__GLIBC_MINOR__ < 6)
+ pthread_mutexattr_setkind_np( &attr, PTHREAD_MUTEX_ERRORCHECK_NP );
+# else
+ pthread_mutexattr_settype( &attr, PTHREAD_MUTEX_ERRORCHECK );
+# endif
+#endif
+ if( pthread_mutex_init( p_mutex, &attr ) )
+ abort();
+ pthread_mutexattr_destroy( &attr );
+}
+
+/*****************************************************************************
+ * vlc_mutex_init: initialize a recursive mutex (Do not use)
+ *****************************************************************************/
+void vlc_mutex_init_recursive( vlc_mutex_t *p_mutex )
+{
+ pthread_mutexattr_t attr;
+
+ pthread_mutexattr_init( &attr );
+#if defined (__GLIBC__) && (__GLIBC_MINOR__ < 6)
+ pthread_mutexattr_setkind_np( &attr, PTHREAD_MUTEX_RECURSIVE_NP );
+#else
+ pthread_mutexattr_settype( &attr, PTHREAD_MUTEX_RECURSIVE );
+#endif
+ if( pthread_mutex_init( p_mutex, &attr ) )
+ abort();
+ pthread_mutexattr_destroy( &attr );
+}
+
+
+/**
+ * Destroys a mutex. The mutex must not be locked.
+ *
+ * @param p_mutex mutex to destroy
+ * @return always succeeds
+ */
+void vlc_mutex_destroy (vlc_mutex_t *p_mutex)
+{
+ int val = pthread_mutex_destroy( p_mutex );
+ VLC_THREAD_ASSERT ("destroying mutex");
+}
+
+#ifndef NDEBUG
+# ifdef HAVE_VALGRIND_VALGRIND_H
+# include <valgrind/valgrind.h>
+# else
+# define RUNNING_ON_VALGRIND (0)
+# endif
+
+void vlc_assert_locked (vlc_mutex_t *p_mutex)
+{
+ if (RUNNING_ON_VALGRIND > 0)
+ return;
+ assert (pthread_mutex_lock (p_mutex) == EDEADLK);
+}
+#endif
+
+/**
+ * Acquires a mutex. If needed, waits for any other thread to release it.
+ * Beware of deadlocks when locking multiple mutexes at the same time,
+ * or when using mutexes from callbacks.
+ * This function is not a cancellation-point.
+ *
+ * @param p_mutex mutex initialized with vlc_mutex_init() or
+ * vlc_mutex_init_recursive()
+ */
+void vlc_mutex_lock (vlc_mutex_t *p_mutex)
+{
+ int val = pthread_mutex_lock( p_mutex );
+ VLC_THREAD_ASSERT ("locking mutex");
+}
+
+/**
+ * Acquires a mutex if and only if it is not currently held by another thread.
+ * This function never sleeps and can be used in delay-critical code paths.
+ * This function is not a cancellation-point.
+ *
+ * <b>Beware</b>: If this function fails, then the mutex is held... by another
+ * thread. The calling thread must deal with the error appropriately. That
+ * typically implies postponing the operations that would have required the
+ * mutex. If the thread cannot defer those operations, then it must use
+ * vlc_mutex_lock(). If in doubt, use vlc_mutex_lock() instead.
+ *
+ * @param p_mutex mutex initialized with vlc_mutex_init() or
+ * vlc_mutex_init_recursive()
+ * @return 0 if the mutex could be acquired, an error code otherwise.
+ */
+int vlc_mutex_trylock (vlc_mutex_t *p_mutex)
+{
+ int val = pthread_mutex_trylock( p_mutex );
+
+ if (val != EBUSY)
+ VLC_THREAD_ASSERT ("locking mutex");
+ return val;
+}
+
+/**
+ * Releases a mutex (or crashes if the mutex is not locked by the caller).
+ * @param p_mutex mutex locked with vlc_mutex_lock().
+ */
+void vlc_mutex_unlock (vlc_mutex_t *p_mutex)
+{
+ int val = pthread_mutex_unlock( p_mutex );
+ VLC_THREAD_ASSERT ("unlocking mutex");
+}
+
+/*****************************************************************************
+ * vlc_cond_init: initialize a condition variable
+ *****************************************************************************/
+void vlc_cond_init( vlc_cond_t *p_condvar )
+{
+ pthread_condattr_t attr;
+
+ if (pthread_condattr_init (&attr))
+ abort ();
+#if !defined (_POSIX_CLOCK_SELECTION)
+ /* Fairly outdated POSIX support (that was defined in 2001) */
+# define _POSIX_CLOCK_SELECTION (-1)
+#endif
+#if (_POSIX_CLOCK_SELECTION >= 0)
+ /* NOTE: This must be the same clock as the one in mtime.c */
+ pthread_condattr_setclock (&attr, CLOCK_MONOTONIC);
+#endif
+
+ if (pthread_cond_init (p_condvar, &attr))
+ abort ();
+ pthread_condattr_destroy (&attr);
+}
+
+/**
+ * Destroys a condition variable. No threads shall be waiting or signaling the
+ * condition.
+ * @param p_condvar condition variable to destroy
+ */
+void vlc_cond_destroy (vlc_cond_t *p_condvar)
+{
+ int val = pthread_cond_destroy( p_condvar );
+ VLC_THREAD_ASSERT ("destroying condition");
+}
+
+/**
+ * Wakes up one thread waiting on a condition variable, if any.
+ * @param p_condvar condition variable
+ */
+void vlc_cond_signal (vlc_cond_t *p_condvar)
+{
+ int val = pthread_cond_signal( p_condvar );
+ VLC_THREAD_ASSERT ("signaling condition variable");
+}
+
+/**
+ * Wakes up all threads (if any) waiting on a condition variable.
+ * @param p_cond condition variable
+ */
+void vlc_cond_broadcast (vlc_cond_t *p_condvar)
+{
+ pthread_cond_broadcast (p_condvar);
+}
+
+/**
+ * Waits for a condition variable. The calling thread will be suspended until
+ * another thread calls vlc_cond_signal() or vlc_cond_broadcast() on the same
+ * condition variable, the thread is cancelled with vlc_cancel(), or the
+ * system causes a "spurious" unsolicited wake-up.
+ *
+ * A mutex is needed to wait on a condition variable. It must <b>not</b> be
+ * a recursive mutex. Although it is possible to use the same mutex for
+ * multiple condition, it is not valid to use different mutexes for the same
+ * condition variable at the same time from different threads.
+ *
+ * In case of thread cancellation, the mutex is always locked before
+ * cancellation proceeds.
+ *
+ * The canonical way to use a condition variable to wait for event foobar is:
+ @code
+ vlc_mutex_lock (&lock);
+ mutex_cleanup_push (&lock); // release the mutex in case of cancellation
+
+ while (!foobar)
+ vlc_cond_wait (&wait, &lock);
+
+ --- foobar is now true, do something about it here --
+
+ vlc_cleanup_run (); // release the mutex
+ @endcode
+ *
+ * @param p_condvar condition variable to wait on
+ * @param p_mutex mutex which is unlocked while waiting,
+ * then locked again when waking up.
+ * @param deadline <b>absolute</b> timeout
+ *
+ * @return 0 if the condition was signaled, an error code in case of timeout.
+ */
+void vlc_cond_wait (vlc_cond_t *p_condvar, vlc_mutex_t *p_mutex)
+{
+ int val = pthread_cond_wait( p_condvar, p_mutex );
+ VLC_THREAD_ASSERT ("waiting on condition");
+}
+
+/**
+ * Waits for a condition variable up to a certain date.
+ * This works like vlc_cond_wait(), except for the additional timeout.
+ *
+ * @param p_condvar condition variable to wait on
+ * @param p_mutex mutex which is unlocked while waiting,
+ * then locked again when waking up.
+ * @param deadline <b>absolute</b> timeout
+ *
+ * @return 0 if the condition was signaled, an error code in case of timeout.
+ */
+int vlc_cond_timedwait (vlc_cond_t *p_condvar, vlc_mutex_t *p_mutex,
+ mtime_t deadline)
+{
+#ifdef __APPLE__
+ /* mdate() is mac_absolute_time on OSX, which we must convert to do
+ * the same base than gettimeofday() which pthread_cond_timedwait
+ * relies on. */
+ mtime_t oldbase = mdate();
+ struct timeval tv;
+ gettimeofday(&tv, NULL);
+ mtime_t newbase = (mtime_t)tv.tv_sec * 1000000 + (mtime_t) tv.tv_usec;
+ deadline = deadline - oldbase + newbase;
+#endif
+ lldiv_t d = lldiv( deadline, CLOCK_FREQ );
+ struct timespec ts = { d.quot, d.rem * (1000000000 / CLOCK_FREQ) };
+
+ int val = pthread_cond_timedwait (p_condvar, p_mutex, &ts);
+ if (val != ETIMEDOUT)
+ VLC_THREAD_ASSERT ("timed-waiting on condition");
+ return val;
+}
+
+/**
+ * Allocates a thread-specific variable.
+ * @param key where to store the thread-specific variable handle
+ * @param destr a destruction callback. It is called whenever a thread exits
+ * and the thread-specific variable has a non-NULL value.
+ * @return 0 on success, a system error code otherwise. This function can
+ * actually fail because there is a fixed limit on the number of
+ * thread-specific variable in a process on most systems.
+ */
+int vlc_threadvar_create (vlc_threadvar_t *key, void (*destr) (void *))
+{
+ return pthread_key_create (key, destr);
+}
+
+void vlc_threadvar_delete (vlc_threadvar_t *p_tls)
+{
+ pthread_key_delete (*p_tls);
+}
+
+/**
+ * Sets a thread-specific variable.
+ * @param key thread-local variable key (created with vlc_threadvar_create())
+ * @param value new value for the variable for the calling thread
+ * @return 0 on success, a system error code otherwise.
+ */
+int vlc_threadvar_set (vlc_threadvar_t key, void *value)
+{
+ return pthread_setspecific (key, value);
+}
+
+/**
+ * Gets the value of a thread-local variable for the calling thread.
+ * This function cannot fail.
+ * @return the value associated with the given variable for the calling
+ * or NULL if there is no value.
+ */
+void *vlc_threadvar_get (vlc_threadvar_t key)
+{
+ return pthread_getspecific (key);
+}
+
+/**
+ * Creates and starts new thread.
+ *
+ * @param p_handle [OUT] pointer to write the handle of the created thread to
+ * @param entry entry point for the thread
+ * @param data data parameter given to the entry point
+ * @param priority thread priority value
+ * @return 0 on success, a standard error code on error.
+ */
+int vlc_clone (vlc_thread_t *p_handle, void * (*entry) (void *), void *data,
+ int priority)
+{
+ int ret;
+
+ pthread_attr_t attr;
+ pthread_attr_init (&attr);
+
+ /* Block the signals that signals interface plugin handles.
+ * If the LibVLC caller wants to handle some signals by itself, it should
+ * block these before whenever invoking LibVLC. And it must obviously not
+ * start the VLC signals interface plugin.
+ *
+ * LibVLC will normally ignore any interruption caused by an asynchronous
+ * signal during a system call. But there may well be some buggy cases
+ * where it fails to handle EINTR (bug reports welcome). Some underlying
+ * libraries might also not handle EINTR properly.
+ */
+ sigset_t oldset;
+ {
+ sigset_t set;
+ sigemptyset (&set);
+ sigdelset (&set, SIGHUP);
+ sigaddset (&set, SIGINT);
+ sigaddset (&set, SIGQUIT);
+ sigaddset (&set, SIGTERM);
+
+ sigaddset (&set, SIGPIPE); /* We don't want this one, really! */
+ pthread_sigmask (SIG_BLOCK, &set, &oldset);
+ }
+
+#if defined (_POSIX_PRIORITY_SCHEDULING) && (_POSIX_PRIORITY_SCHEDULING >= 0) \
+ && defined (_POSIX_THREAD_PRIORITY_SCHEDULING) \
+ && (_POSIX_THREAD_PRIORITY_SCHEDULING >= 0)
+ {
+ struct sched_param sp = { .sched_priority = priority, };
+ int policy;
+
+ if (sp.sched_priority <= 0)
+ sp.sched_priority += sched_get_priority_max (policy = SCHED_OTHER);
+ else
+ sp.sched_priority += sched_get_priority_min (policy = SCHED_RR);
+
+ pthread_attr_setschedpolicy (&attr, policy);
+ pthread_attr_setschedparam (&attr, &sp);
+ }
+#else
+ (void) priority;
+#endif
+
+ /* The thread stack size.
+ * The lower the value, the less address space per thread, the highest
+ * maximum simultaneous threads per process. Too low values will cause
+ * stack overflows and weird crashes. Set with caution. Also keep in mind
+ * that 64-bits platforms consume more stack than 32-bits one.
+ *
+ * Thanks to on-demand paging, thread stack size only affects address space
+ * consumption. In terms of memory, threads only use what they need
+ * (rounded up to the page boundary).
+ *
+ * For example, on Linux i386, the default is 2 mega-bytes, which supports
+ * about 320 threads per processes. */
+#define VLC_STACKSIZE (128 * sizeof (void *) * 1024)
+
+#ifdef VLC_STACKSIZE
+ ret = pthread_attr_setstacksize (&attr, VLC_STACKSIZE);
+ assert (ret == 0); /* fails iif VLC_STACKSIZE is invalid */
+#endif
+
+ ret = pthread_create (p_handle, &attr, entry, data);
+ pthread_sigmask (SIG_SETMASK, &oldset, NULL);
+ pthread_attr_destroy (&attr);
+ return ret;
+}
+
+/**
+ * Marks a thread as cancelled. Next time the target thread reaches a
+ * cancellation point (while not having disabled cancellation), it will
+ * run its cancellation cleanup handler, the thread variable destructors, and
+ * terminate. vlc_join() must be used afterward regardless of a thread being
+ * cancelled or not.
+ */
+void vlc_cancel (vlc_thread_t thread_id)
+{
+ pthread_cancel (thread_id);
+}
+
+/**
+ * Waits for a thread to complete (if needed), and destroys it.
+ * This is a cancellation point; in case of cancellation, the join does _not_
+ * occur.
+ *
+ * @param handle thread handle
+ * @param p_result [OUT] pointer to write the thread return value or NULL
+ * @return 0 on success, a standard error code otherwise.
+ */
+void vlc_join (vlc_thread_t handle, void **result)
+{
+ int val = pthread_join (handle, result);
+ VLC_THREAD_ASSERT ("joining thread");
+}
+
+/**
+ * Save the current cancellation state (enabled or disabled), then disable
+ * cancellation for the calling thread.
+ * This function must be called before entering a piece of code that is not
+ * cancellation-safe, unless it can be proven that the calling thread will not
+ * be cancelled.
+ * @return Previous cancellation state (opaque value for vlc_restorecancel()).
+ */
+int vlc_savecancel (void)
+{
+ int state;
+ int val = pthread_setcancelstate (PTHREAD_CANCEL_DISABLE, &state);
+
+ VLC_THREAD_ASSERT ("saving cancellation");
+ return state;
+}
+
+/**
+ * Restore the cancellation state for the calling thread.
+ * @param state previous state as returned by vlc_savecancel().
+ * @return Nothing, always succeeds.
+ */
+void vlc_restorecancel (int state)
+{
+#ifndef NDEBUG
+ int oldstate, val;
+
+ val = pthread_setcancelstate (state, &oldstate);
+ /* This should fail if an invalid value for given for state */
+ VLC_THREAD_ASSERT ("restoring cancellation");
+
+ if (oldstate != PTHREAD_CANCEL_DISABLE)
+ vlc_thread_fatal ("restoring cancellation while not disabled", EINVAL,
+ __func__, __FILE__, __LINE__);
+#else
+ pthread_setcancelstate (state, NULL);
+#endif
+}
+
+/**
+ * Issues an explicit deferred cancellation point.
+ * This has no effect if thread cancellation is disabled.
+ * This can be called when there is a rather slow non-sleeping operation.
+ * This is also used to force a cancellation point in a function that would
+ * otherwise "not always" be a one (block_FifoGet() is an example).
+ */
+void vlc_testcancel (void)
+{
+ pthread_testcancel ();
+}
+
+void vlc_control_cancel (int cmd, ...)
+{
+ (void) cmd;
+ assert (0);
+}
#include <vlc_common.h>
#include "libvlc.h"
-#include <stdarg.h>
#include <assert.h>
#ifdef HAVE_UNISTD_H
# include <unistd.h>
#endif
-#include <signal.h>
#if defined( LIBVLC_USE_PTHREAD )
# include <sched.h>
-# ifdef __linux__
-# include <sys/syscall.h> /* SYS_gettid */
-# endif
-#else
-static vlc_threadvar_t cancel_key;
-#endif
-
-#ifdef HAVE_EXECINFO_H
-# include <execinfo.h>
-#endif
-
-#ifdef __APPLE__
-# include <sys/time.h> /* gettimeofday in vlc_cond_timedwait */
-#endif
-
-/**
- * Print a backtrace to the standard error for debugging purpose.
- */
-void vlc_trace (const char *fn, const char *file, unsigned line)
-{
- fprintf (stderr, "at %s:%u in %s\n", file, line, fn);
- fflush (stderr); /* needed before switch to low-level I/O */
-#ifdef HAVE_BACKTRACE
- void *stack[20];
- int len = backtrace (stack, sizeof (stack) / sizeof (stack[0]));
- backtrace_symbols_fd (stack, len, 2);
-#endif
-#ifndef WIN32
- fsync (2);
-#endif
-}
-
-static inline unsigned long vlc_threadid (void)
-{
-#if defined (LIBVLC_USE_PTHREAD)
-# if defined (__linux__)
- return syscall (SYS_gettid);
-
-# else
- union { pthread_t th; unsigned long int i; } v = { };
- v.th = pthread_self ();
- return v.i;
-
-#endif
-#elif defined (WIN32)
- return GetCurrentThreadId ();
-
-#else
- return 0;
-
-#endif
-}
-
-#ifndef NDEBUG
-/*****************************************************************************
- * vlc_thread_fatal: Report an error from the threading layer
- *****************************************************************************
- * This is mostly meant for debugging.
- *****************************************************************************/
-static void
-vlc_thread_fatal (const char *action, int error,
- const char *function, const char *file, unsigned line)
-{
- fprintf (stderr, "LibVLC fatal error %s (%d) in thread %lu ",
- action, error, vlc_threadid ());
- vlc_trace (function, file, line);
-
- /* Sometimes strerror_r() crashes too, so make sure we print an error
- * message before we invoke it */
-#ifdef __GLIBC__
- /* Avoid the strerror_r() prototype brain damage in glibc */
- errno = error;
- fprintf (stderr, " Error message: %m\n");
-#elif !defined (WIN32)
- char buf[1000];
- const char *msg;
-
- switch (strerror_r (error, buf, sizeof (buf)))
- {
- case 0:
- msg = buf;
- break;
- case ERANGE: /* should never happen */
- msg = "unknwon (too big to display)";
- break;
- default:
- msg = "unknown (invalid error number)";
- break;
- }
- fprintf (stderr, " Error message: %s\n", msg);
-#endif
- fflush (stderr);
-
- abort ();
-}
-
-# define VLC_THREAD_ASSERT( action ) \
- if (val) vlc_thread_fatal (action, val, __func__, __FILE__, __LINE__)
-#else
-# define VLC_THREAD_ASSERT( action ) ((void)val)
-#endif
-
-/**
- * Per-thread cancellation data
- */
-#ifndef LIBVLC_USE_PTHREAD_CANCEL
-typedef struct vlc_cancel_t
-{
- vlc_cleanup_t *cleaners;
- bool killable;
- bool killed;
-# ifdef UNDER_CE
- HANDLE cancel_event;
-# endif
-} vlc_cancel_t;
-
-# ifndef UNDER_CE
-# define VLC_CANCEL_INIT { NULL, true, false }
-# else
-# define VLC_CANCEL_INIT { NULL, true, false, NULL }
-# endif
-#endif
-
-#ifdef UNDER_CE
-static void CALLBACK vlc_cancel_self (ULONG_PTR dummy);
-
-static DWORD vlc_cancelable_wait (DWORD count, const HANDLE *handles,
- DWORD delay)
-{
- vlc_cancel_t *nfo = vlc_threadvar_get (cancel_key);
- if (nfo == NULL)
- {
- /* Main thread - cannot be cancelled anyway */
- return WaitForMultipleObjects (count, handles, FALSE, delay);
- }
- HANDLE new_handles[count + 1];
- memcpy(new_handles, handles, count * sizeof(HANDLE));
- new_handles[count] = nfo->cancel_event;
- DWORD result = WaitForMultipleObjects (count + 1, new_handles, FALSE,
- delay);
- if (result == WAIT_OBJECT_0 + count)
- {
- vlc_cancel_self (NULL);
- return WAIT_IO_COMPLETION;
- }
- else
- {
- return result;
- }
-}
-
-DWORD SleepEx (DWORD dwMilliseconds, BOOL bAlertable)
-{
- if (bAlertable)
- {
- DWORD result = vlc_cancelable_wait (0, NULL, dwMilliseconds);
- return (result == WAIT_TIMEOUT) ? 0 : WAIT_IO_COMPLETION;
- }
- else
- {
- Sleep(dwMilliseconds);
- return 0;
- }
-}
-
-DWORD WaitForSingleObjectEx (HANDLE hHandle, DWORD dwMilliseconds,
- BOOL bAlertable)
-{
- if (bAlertable)
- {
- /* The MSDN documentation specifies different return codes,
- * but in practice they are the same. We just check that it
- * remains so. */
-#if WAIT_ABANDONED != WAIT_ABANDONED_0
-# error Windows headers changed, code needs to be rewritten!
-#endif
- return vlc_cancelable_wait (1, &hHandle, dwMilliseconds);
- }
- else
- {
- return WaitForSingleObject (hHandle, dwMilliseconds);
- }
-}
-
-DWORD WaitForMultipleObjectsEx (DWORD nCount, const HANDLE *lpHandles,
- BOOL bWaitAll, DWORD dwMilliseconds,
- BOOL bAlertable)
-{
- if (bAlertable)
- {
- /* We do not support the bWaitAll case */
- assert (! bWaitAll);
- return vlc_cancelable_wait (nCount, lpHandles, dwMilliseconds);
- }
- else
- {
- return WaitForMultipleObjects (nCount, lpHandles, bWaitAll,
- dwMilliseconds);
- }
-}
-#endif
-
-#ifdef WIN32
-static vlc_mutex_t super_mutex;
-
-BOOL WINAPI DllMain (HINSTANCE hinstDll, DWORD fdwReason, LPVOID lpvReserved)
-{
- (void) hinstDll;
- (void) lpvReserved;
-
- switch (fdwReason)
- {
- case DLL_PROCESS_ATTACH:
- vlc_mutex_init (&super_mutex);
- vlc_threadvar_create (&cancel_key, free);
- break;
-
- case DLL_PROCESS_DETACH:
- vlc_threadvar_delete( &cancel_key );
- vlc_mutex_destroy (&super_mutex);
- break;
- }
- return TRUE;
-}
-#endif
-
-#if defined (__GLIBC__) && (__GLIBC_MINOR__ < 6)
-/* This is not prototyped under glibc, though it exists. */
-int pthread_mutexattr_setkind_np( pthread_mutexattr_t *attr, int kind );
-#endif
-
-/*****************************************************************************
- * vlc_mutex_init: initialize a mutex
- *****************************************************************************/
-int vlc_mutex_init( vlc_mutex_t *p_mutex )
-{
-#if defined( LIBVLC_USE_PTHREAD )
- pthread_mutexattr_t attr;
- int i_result;
-
- pthread_mutexattr_init( &attr );
-
-# ifndef NDEBUG
- /* Create error-checking mutex to detect problems more easily. */
-# if defined (__GLIBC__) && (__GLIBC_MINOR__ < 6)
- pthread_mutexattr_setkind_np( &attr, PTHREAD_MUTEX_ERRORCHECK_NP );
-# else
- pthread_mutexattr_settype( &attr, PTHREAD_MUTEX_ERRORCHECK );
-# endif
-# endif
- i_result = pthread_mutex_init( p_mutex, &attr );
- pthread_mutexattr_destroy( &attr );
- return i_result;
-
-#elif defined( WIN32 )
- /* This creates a recursive mutex. This is OK as fast mutexes have
- * no defined behavior in case of recursive locking. */
- InitializeCriticalSection (&p_mutex->mutex);
- p_mutex->initialized = 1;
- return 0;
-
-#endif
-}
-
-/*****************************************************************************
- * vlc_mutex_init: initialize a recursive mutex (Do not use)
- *****************************************************************************/
-int vlc_mutex_init_recursive( vlc_mutex_t *p_mutex )
-{
-#if defined( LIBVLC_USE_PTHREAD )
- pthread_mutexattr_t attr;
- int i_result;
-
- pthread_mutexattr_init( &attr );
-# if defined (__GLIBC__) && (__GLIBC_MINOR__ < 6)
- pthread_mutexattr_setkind_np( &attr, PTHREAD_MUTEX_RECURSIVE_NP );
-# else
- pthread_mutexattr_settype( &attr, PTHREAD_MUTEX_RECURSIVE );
-# endif
- i_result = pthread_mutex_init( p_mutex, &attr );
- pthread_mutexattr_destroy( &attr );
- return( i_result );
-
-#elif defined( WIN32 )
- InitializeCriticalSection( &p_mutex->mutex );
- p_mutex->initialized = 1;
- return 0;
-
-#endif
-}
-
-
-/**
- * Destroys a mutex. The mutex must not be locked.
- *
- * @param p_mutex mutex to destroy
- * @return always succeeds
- */
-void vlc_mutex_destroy (vlc_mutex_t *p_mutex)
-{
-#if defined( LIBVLC_USE_PTHREAD )
- int val = pthread_mutex_destroy( p_mutex );
- VLC_THREAD_ASSERT ("destroying mutex");
-
-#elif defined( WIN32 )
- assert (InterlockedExchange (&p_mutex->initialized, -1) == 1);
- DeleteCriticalSection (&p_mutex->mutex);
-
-#endif
-}
-
-#if defined(LIBVLC_USE_PTHREAD) && !defined(NDEBUG)
-# ifdef HAVE_VALGRIND_VALGRIND_H
-# include <valgrind/valgrind.h>
-# else
-# define RUNNING_ON_VALGRIND (0)
-# endif
-
-void vlc_assert_locked (vlc_mutex_t *p_mutex)
-{
- if (RUNNING_ON_VALGRIND > 0)
- return;
- assert (pthread_mutex_lock (p_mutex) == EDEADLK);
-}
-#endif
-
-/**
- * Acquires a mutex. If needed, waits for any other thread to release it.
- * Beware of deadlocks when locking multiple mutexes at the same time,
- * or when using mutexes from callbacks.
- * This function is not a cancellation-point.
- *
- * @param p_mutex mutex initialized with vlc_mutex_init() or
- * vlc_mutex_init_recursive()
- */
-void vlc_mutex_lock (vlc_mutex_t *p_mutex)
-{
-#if defined(LIBVLC_USE_PTHREAD)
- int val = pthread_mutex_lock( p_mutex );
- VLC_THREAD_ASSERT ("locking mutex");
-
-#elif defined( WIN32 )
- if (InterlockedCompareExchange (&p_mutex->initialized, 0, 0) == 0)
- { /* ^^ We could also lock super_mutex all the time... sluggish */
- assert (p_mutex != &super_mutex); /* this one cannot be static */
-
- vlc_mutex_lock (&super_mutex);
- if (InterlockedCompareExchange (&p_mutex->initialized, 0, 0) == 0)
- vlc_mutex_init (p_mutex);
- /* FIXME: destroy the mutex some time... */
- vlc_mutex_unlock (&super_mutex);
- }
- assert (InterlockedExchange (&p_mutex->initialized, 1) == 1);
- EnterCriticalSection (&p_mutex->mutex);
-
-#endif
-}
-
-/**
- * Acquires a mutex if and only if it is not currently held by another thread.
- * This function never sleeps and can be used in delay-critical code paths.
- * This function is not a cancellation-point.
- *
- * <b>Beware</b>: If this function fails, then the mutex is held... by another
- * thread. The calling thread must deal with the error appropriately. That
- * typically implies postponing the operations that would have required the
- * mutex. If the thread cannot defer those operations, then it must use
- * vlc_mutex_lock(). If in doubt, use vlc_mutex_lock() instead.
- *
- * @param p_mutex mutex initialized with vlc_mutex_init() or
- * vlc_mutex_init_recursive()
- * @return 0 if the mutex could be acquired, an error code otherwise.
- */
-int vlc_mutex_trylock (vlc_mutex_t *p_mutex)
-{
-#if defined(LIBVLC_USE_PTHREAD)
- int val = pthread_mutex_trylock( p_mutex );
-
- if (val != EBUSY)
- VLC_THREAD_ASSERT ("locking mutex");
- return val;
-
-#elif defined( WIN32 )
- if (InterlockedCompareExchange (&p_mutex->initialized, 0, 0) == 0)
- { /* ^^ We could also lock super_mutex all the time... sluggish */
- assert (p_mutex != &super_mutex); /* this one cannot be static */
-
- vlc_mutex_lock (&super_mutex);
- if (InterlockedCompareExchange (&p_mutex->initialized, 0, 0) == 0)
- vlc_mutex_init (p_mutex);
- /* FIXME: destroy the mutex some time... */
- vlc_mutex_unlock (&super_mutex);
- }
- assert (InterlockedExchange (&p_mutex->initialized, 1) == 1);
- return TryEnterCriticalSection (&p_mutex->mutex) ? 0 : EBUSY;
-
-#endif
-}
-
-/**
- * Releases a mutex (or crashes if the mutex is not locked by the caller).
- * @param p_mutex mutex locked with vlc_mutex_lock().
- */
-void vlc_mutex_unlock (vlc_mutex_t *p_mutex)
-{
-#if defined(LIBVLC_USE_PTHREAD)
- int val = pthread_mutex_unlock( p_mutex );
- VLC_THREAD_ASSERT ("unlocking mutex");
-
-#elif defined( WIN32 )
- assert (InterlockedExchange (&p_mutex->initialized, 1) == 1);
- LeaveCriticalSection (&p_mutex->mutex);
-
-#endif
-}
-
-/*****************************************************************************
- * vlc_cond_init: initialize a condition variable
- *****************************************************************************/
-int vlc_cond_init( vlc_cond_t *p_condvar )
-{
-#if defined( LIBVLC_USE_PTHREAD )
- pthread_condattr_t attr;
- int ret;
-
- ret = pthread_condattr_init (&attr);
- if (ret)
- return ret;
-
-# if !defined (_POSIX_CLOCK_SELECTION)
- /* Fairly outdated POSIX support (that was defined in 2001) */
-# define _POSIX_CLOCK_SELECTION (-1)
-# endif
-# if (_POSIX_CLOCK_SELECTION >= 0)
- /* NOTE: This must be the same clock as the one in mtime.c */
- pthread_condattr_setclock (&attr, CLOCK_MONOTONIC);
-# endif
-
- ret = pthread_cond_init (p_condvar, &attr);
- pthread_condattr_destroy (&attr);
- return ret;
-
-#elif defined( WIN32 )
- /* Create a manual-reset event (manual reset is needed for broadcast). */
- *p_condvar = CreateEvent( NULL, TRUE, FALSE, NULL );
- return *p_condvar ? 0 : ENOMEM;
-
-#endif
-}
-
-/**
- * Destroys a condition variable. No threads shall be waiting or signaling the
- * condition.
- * @param p_condvar condition variable to destroy
- */
-void vlc_cond_destroy (vlc_cond_t *p_condvar)
-{
-#if defined( LIBVLC_USE_PTHREAD )
- int val = pthread_cond_destroy( p_condvar );
- VLC_THREAD_ASSERT ("destroying condition");
-
-#elif defined( WIN32 )
- CloseHandle( *p_condvar );
-
-#endif
-}
-
-/**
- * Wakes up one thread waiting on a condition variable, if any.
- * @param p_condvar condition variable
- */
-void vlc_cond_signal (vlc_cond_t *p_condvar)
-{
-#if defined(LIBVLC_USE_PTHREAD)
- int val = pthread_cond_signal( p_condvar );
- VLC_THREAD_ASSERT ("signaling condition variable");
-
-#elif defined( WIN32 )
- /* NOTE: This will cause a broadcast, that is wrong.
- * This will also wake up the next waiting thread if no thread are yet
- * waiting, which is also wrong. However both of these issues are allowed
- * by the provision for spurious wakeups. Better have too many wakeups
- * than too few (= deadlocks). */
- SetEvent (*p_condvar);
-
-#endif
-}
-
-/**
- * Wakes up all threads (if any) waiting on a condition variable.
- * @param p_cond condition variable
- */
-void vlc_cond_broadcast (vlc_cond_t *p_condvar)
-{
-#if defined (LIBVLC_USE_PTHREAD)
- pthread_cond_broadcast (p_condvar);
-
-#elif defined (WIN32)
- SetEvent (*p_condvar);
-
-#endif
-}
-
-/**
- * Waits for a condition variable. The calling thread will be suspended until
- * another thread calls vlc_cond_signal() or vlc_cond_broadcast() on the same
- * condition variable, the thread is cancelled with vlc_cancel(), or the
- * system causes a "spurious" unsolicited wake-up.
- *
- * A mutex is needed to wait on a condition variable. It must <b>not</b> be
- * a recursive mutex. Although it is possible to use the same mutex for
- * multiple condition, it is not valid to use different mutexes for the same
- * condition variable at the same time from different threads.
- *
- * In case of thread cancellation, the mutex is always locked before
- * cancellation proceeds.
- *
- * The canonical way to use a condition variable to wait for event foobar is:
- @code
- vlc_mutex_lock (&lock);
- mutex_cleanup_push (&lock); // release the mutex in case of cancellation
-
- while (!foobar)
- vlc_cond_wait (&wait, &lock);
-
- --- foobar is now true, do something about it here --
-
- vlc_cleanup_run (); // release the mutex
- @endcode
- *
- * @param p_condvar condition variable to wait on
- * @param p_mutex mutex which is unlocked while waiting,
- * then locked again when waking up.
- * @param deadline <b>absolute</b> timeout
- *
- * @return 0 if the condition was signaled, an error code in case of timeout.
- */
-void vlc_cond_wait (vlc_cond_t *p_condvar, vlc_mutex_t *p_mutex)
-{
-#if defined(LIBVLC_USE_PTHREAD)
- int val = pthread_cond_wait( p_condvar, p_mutex );
- VLC_THREAD_ASSERT ("waiting on condition");
-
-#elif defined( WIN32 )
- DWORD result;
-
- do
- {
- vlc_testcancel ();
- LeaveCriticalSection (&p_mutex->mutex);
- result = WaitForSingleObjectEx (*p_condvar, INFINITE, TRUE);
- EnterCriticalSection (&p_mutex->mutex);
- }
- while (result == WAIT_IO_COMPLETION);
-
- assert (result != WAIT_ABANDONED); /* another thread failed to cleanup! */
- assert (result != WAIT_FAILED);
- ResetEvent (*p_condvar);
-
-#endif
-}
-
-/**
- * Waits for a condition variable up to a certain date.
- * This works like vlc_cond_wait(), except for the additional timeout.
- *
- * @param p_condvar condition variable to wait on
- * @param p_mutex mutex which is unlocked while waiting,
- * then locked again when waking up.
- * @param deadline <b>absolute</b> timeout
- *
- * @return 0 if the condition was signaled, an error code in case of timeout.
- */
-int vlc_cond_timedwait (vlc_cond_t *p_condvar, vlc_mutex_t *p_mutex,
- mtime_t deadline)
-{
-#if defined(LIBVLC_USE_PTHREAD)
-#ifdef __APPLE__
- /* mdate() is mac_absolute_time on osx, which we must convert to do
- * the same base than gettimeofday() on which pthread_cond_timedwait
- * counts on. */
- mtime_t oldbase = mdate();
- struct timeval tv;
- gettimeofday(&tv, NULL);
- mtime_t newbase = (mtime_t)tv.tv_sec * 1000000 + (mtime_t) tv.tv_usec;
- deadline = deadline - oldbase + newbase;
-#endif
- lldiv_t d = lldiv( deadline, CLOCK_FREQ );
- struct timespec ts = { d.quot, d.rem * (1000000000 / CLOCK_FREQ) };
-
- int val = pthread_cond_timedwait (p_condvar, p_mutex, &ts);
- if (val != ETIMEDOUT)
- VLC_THREAD_ASSERT ("timed-waiting on condition");
- return val;
-
-#elif defined( WIN32 )
- DWORD result;
-
- do
- {
- vlc_testcancel ();
-
- mtime_t total = (deadline - mdate ())/1000;
- if( total < 0 )
- total = 0;
-
- DWORD delay = (total > 0x7fffffff) ? 0x7fffffff : total;
- LeaveCriticalSection (&p_mutex->mutex);
- result = WaitForSingleObjectEx (*p_condvar, delay, TRUE);
- EnterCriticalSection (&p_mutex->mutex);
- }
- while (result == WAIT_IO_COMPLETION);
-
- assert (result != WAIT_ABANDONED);
- assert (result != WAIT_FAILED);
- ResetEvent (*p_condvar);
-
- return (result == WAIT_OBJECT_0) ? 0 : ETIMEDOUT;
-
-#endif
-}
-
-/*****************************************************************************
- * vlc_tls_create: create a thread-local variable
- *****************************************************************************/
-int vlc_threadvar_create( vlc_threadvar_t *p_tls, void (*destr) (void *) )
-{
- int i_ret;
-
-#if defined( LIBVLC_USE_PTHREAD )
- i_ret = pthread_key_create( p_tls, destr );
-#elif defined( WIN32 )
- /* FIXME: remember/use the destr() callback and stop leaking whatever */
- *p_tls = TlsAlloc();
- i_ret = (*p_tls == TLS_OUT_OF_INDEXES) ? EAGAIN : 0;
-#else
-# error Unimplemented!
-#endif
- return i_ret;
-}
-
-void vlc_threadvar_delete (vlc_threadvar_t *p_tls)
-{
-#if defined( LIBVLC_USE_PTHREAD )
- pthread_key_delete (*p_tls);
-#elif defined( WIN32 )
- TlsFree (*p_tls);
-#else
-# error Unimplemented!
-#endif
-}
-
-/**
- * Sets a thread-local variable.
- * @param key thread-local variable key (created with vlc_threadvar_create())
- * @param value new value for the variable for the calling thread
- * @return 0 on success, a system error code otherwise.
- */
-int vlc_threadvar_set (vlc_threadvar_t key, void *value)
-{
-#if defined(LIBVLC_USE_PTHREAD)
- return pthread_setspecific (key, value);
-#elif defined( UNDER_CE ) || defined( WIN32 )
- return TlsSetValue (key, value) ? ENOMEM : 0;
-#else
-# error Unimplemented!
-#endif
-}
-
-/**
- * Gets the value of a thread-local variable for the calling thread.
- * This function cannot fail.
- * @return the value associated with the given variable for the calling
- * or NULL if there is no value.
- */
-void *vlc_threadvar_get (vlc_threadvar_t key)
-{
-#if defined(LIBVLC_USE_PTHREAD)
- return pthread_getspecific (key);
-#elif defined( UNDER_CE ) || defined( WIN32 )
- return TlsGetValue (key);
-#else
-# error Unimplemented!
-#endif
-}
-
-#if defined (LIBVLC_USE_PTHREAD)
-#elif defined (WIN32)
-static unsigned __stdcall vlc_entry (void *data)
-{
- vlc_cancel_t cancel_data = VLC_CANCEL_INIT;
- vlc_thread_t self = data;
-#ifdef UNDER_CE
- cancel_data.cancel_event = self->cancel_event;
-#endif
-
- vlc_threadvar_set (cancel_key, &cancel_data);
- self->data = self->entry (self->data);
- return 0;
-}
-#endif
-
-/**
- * Creates and starts new thread.
- *
- * @param p_handle [OUT] pointer to write the handle of the created thread to
- * @param entry entry point for the thread
- * @param data data parameter given to the entry point
- * @param priority thread priority value
- * @return 0 on success, a standard error code on error.
- */
-int vlc_clone (vlc_thread_t *p_handle, void * (*entry) (void *), void *data,
- int priority)
-{
- int ret;
-
-#if defined( LIBVLC_USE_PTHREAD )
- pthread_attr_t attr;
- pthread_attr_init (&attr);
-
- /* Block the signals that signals interface plugin handles.
- * If the LibVLC caller wants to handle some signals by itself, it should
- * block these before whenever invoking LibVLC. And it must obviously not
- * start the VLC signals interface plugin.
- *
- * LibVLC will normally ignore any interruption caused by an asynchronous
- * signal during a system call. But there may well be some buggy cases
- * where it fails to handle EINTR (bug reports welcome). Some underlying
- * libraries might also not handle EINTR properly.
- */
- sigset_t oldset;
- {
- sigset_t set;
- sigemptyset (&set);
- sigdelset (&set, SIGHUP);
- sigaddset (&set, SIGINT);
- sigaddset (&set, SIGQUIT);
- sigaddset (&set, SIGTERM);
-
- sigaddset (&set, SIGPIPE); /* We don't want this one, really! */
- pthread_sigmask (SIG_BLOCK, &set, &oldset);
- }
-
-#if defined (_POSIX_PRIORITY_SCHEDULING) && (_POSIX_PRIORITY_SCHEDULING >= 0) \
- && defined (_POSIX_THREAD_PRIORITY_SCHEDULING) \
- && (_POSIX_THREAD_PRIORITY_SCHEDULING >= 0)
- {
- struct sched_param sp = { .sched_priority = priority, };
- int policy;
-
- if (sp.sched_priority <= 0)
- sp.sched_priority += sched_get_priority_max (policy = SCHED_OTHER);
- else
- sp.sched_priority += sched_get_priority_min (policy = SCHED_RR);
-
- pthread_attr_setschedpolicy (&attr, policy);
- pthread_attr_setschedparam (&attr, &sp);
- }
-#else
- (void) priority;
-#endif
-
- /* The thread stack size.
- * The lower the value, the less address space per thread, the highest
- * maximum simultaneous threads per process. Too low values will cause
- * stack overflows and weird crashes. Set with caution. Also keep in mind
- * that 64-bits platforms consume more stack than 32-bits one.
- *
- * Thanks to on-demand paging, thread stack size only affects address space
- * consumption. In terms of memory, threads only use what they need
- * (rounded up to the page boundary).
- *
- * For example, on Linux i386, the default is 2 mega-bytes, which supports
- * about 320 threads per processes. */
-#define VLC_STACKSIZE (128 * sizeof (void *) * 1024)
-
-#ifdef VLC_STACKSIZE
- ret = pthread_attr_setstacksize (&attr, VLC_STACKSIZE);
- assert (ret == 0); /* fails iif VLC_STACKSIZE is invalid */
-#endif
-
- ret = pthread_create (p_handle, &attr, entry, data);
- pthread_sigmask (SIG_SETMASK, &oldset, NULL);
- pthread_attr_destroy (&attr);
-
-#elif defined( WIN32 ) || defined( UNDER_CE )
- /* When using the MSVCRT C library you have to use the _beginthreadex
- * function instead of CreateThread, otherwise you'll end up with
- * memory leaks and the signal functions not working (see Microsoft
- * Knowledge Base, article 104641) */
- HANDLE hThread;
- vlc_thread_t th = malloc (sizeof (*th));
-
- if (th == NULL)
- return ENOMEM;
-
- th->data = data;
- th->entry = entry;
-#if defined( UNDER_CE )
- th->cancel_event = CreateEvent (NULL, FALSE, FALSE, NULL);
- if (th->cancel_event == NULL)
- {
- free(th);
- return errno;
- }
- hThread = CreateThread (NULL, 128*1024, vlc_entry, th, CREATE_SUSPENDED, NULL);
-#else
- hThread = (HANDLE)(uintptr_t)
- _beginthreadex (NULL, 0, vlc_entry, th, CREATE_SUSPENDED, NULL);
-#endif
-
- if (hThread)
- {
-#ifndef UNDER_CE
- /* Thread closes the handle when exiting, duplicate it here
- * to be on the safe side when joining. */
- if (!DuplicateHandle (GetCurrentProcess (), hThread,
- GetCurrentProcess (), &th->handle, 0, FALSE,
- DUPLICATE_SAME_ACCESS))
- {
- CloseHandle (hThread);
- free (th);
- return ENOMEM;
- }
-#else
- th->handle = hThread;
-#endif
-
- ResumeThread (hThread);
- if (priority)
- SetThreadPriority (hThread, priority);
-
- ret = 0;
- *p_handle = th;
- }
- else
- {
- ret = errno;
- free (th);
- }
-
-#endif
- return ret;
-}
-
-#if defined (WIN32)
-/* APC procedure for thread cancellation */
-static void CALLBACK vlc_cancel_self (ULONG_PTR dummy)
-{
- (void)dummy;
- vlc_control_cancel (VLC_DO_CANCEL);
-}
-#endif
-
-/**
- * Marks a thread as cancelled. Next time the target thread reaches a
- * cancellation point (while not having disabled cancellation), it will
- * run its cancellation cleanup handler, the thread variable destructors, and
- * terminate. vlc_join() must be used afterward regardless of a thread being
- * cancelled or not.
- */
-void vlc_cancel (vlc_thread_t thread_id)
-{
-#if defined (LIBVLC_USE_PTHREAD_CANCEL)
- pthread_cancel (thread_id);
-#elif defined (UNDER_CE)
- SetEvent (thread_id->cancel_event);
-#elif defined (WIN32)
- QueueUserAPC (vlc_cancel_self, thread_id->handle, 0);
-#else
-# warning vlc_cancel is not implemented!
-#endif
-}
-
-/**
- * Waits for a thread to complete (if needed), and destroys it.
- * This is a cancellation point; in case of cancellation, the join does _not_
- * occur.
- *
- * @param handle thread handle
- * @param p_result [OUT] pointer to write the thread return value or NULL
- * @return 0 on success, a standard error code otherwise.
- */
-void vlc_join (vlc_thread_t handle, void **result)
-{
-#if defined( LIBVLC_USE_PTHREAD )
- int val = pthread_join (handle, result);
- VLC_THREAD_ASSERT ("joining thread");
-
-#elif defined( UNDER_CE ) || defined( WIN32 )
- do
- vlc_testcancel ();
- while (WaitForSingleObjectEx (handle->handle, INFINITE, TRUE)
- == WAIT_IO_COMPLETION);
-
- CloseHandle (handle->handle);
- if (result)
- *result = handle->data;
-#if defined( UNDER_CE )
- CloseHandle (handle->cancel_event);
-#endif
- free (handle);
-
-#endif
-}
-
-/**
- * Save the current cancellation state (enabled or disabled), then disable
- * cancellation for the calling thread.
- * This function must be called before entering a piece of code that is not
- * cancellation-safe, unless it can be proven that the calling thread will not
- * be cancelled.
- * @return Previous cancellation state (opaque value for vlc_restorecancel()).
- */
-int vlc_savecancel (void)
-{
- int state;
-
-#if defined (LIBVLC_USE_PTHREAD_CANCEL)
- int val = pthread_setcancelstate (PTHREAD_CANCEL_DISABLE, &state);
- VLC_THREAD_ASSERT ("saving cancellation");
-
-#else
- vlc_cancel_t *nfo = vlc_threadvar_get (cancel_key);
- if (nfo == NULL)
- return false; /* Main thread - cannot be cancelled anyway */
-
- state = nfo->killable;
- nfo->killable = false;
-
-#endif
- return state;
-}
-
-/**
- * Restore the cancellation state for the calling thread.
- * @param state previous state as returned by vlc_savecancel().
- * @return Nothing, always succeeds.
- */
-void vlc_restorecancel (int state)
-{
-#if defined (LIBVLC_USE_PTHREAD_CANCEL)
-# ifndef NDEBUG
- int oldstate, val;
-
- val = pthread_setcancelstate (state, &oldstate);
- /* This should fail if an invalid value for given for state */
- VLC_THREAD_ASSERT ("restoring cancellation");
-
- if (oldstate != PTHREAD_CANCEL_DISABLE)
- vlc_thread_fatal ("restoring cancellation while not disabled", EINVAL,
- __func__, __FILE__, __LINE__);
-# else
- pthread_setcancelstate (state, NULL);
-# endif
-
-#else
- vlc_cancel_t *nfo = vlc_threadvar_get (cancel_key);
- assert (state == false || state == true);
-
- if (nfo == NULL)
- return; /* Main thread - cannot be cancelled anyway */
-
- assert (!nfo->killable);
- nfo->killable = state != 0;
-
#endif
-}
-
-/**
- * Issues an explicit deferred cancellation point.
- * This has no effect if thread cancellation is disabled.
- * This can be called when there is a rather slow non-sleeping operation.
- * This is also used to force a cancellation point in a function that would
- * otherwise "not always" be a one (block_FifoGet() is an example).
- */
-void vlc_testcancel (void)
-{
-#if defined (LIBVLC_USE_PTHREAD_CANCEL)
- pthread_testcancel ();
-
-#else
- vlc_cancel_t *nfo = vlc_threadvar_get (cancel_key);
- if (nfo == NULL)
- return; /* Main thread - cannot be cancelled anyway */
-
- if (nfo->killable && nfo->killed)
- {
- for (vlc_cleanup_t *p = nfo->cleaners; p != NULL; p = p->next)
- p->proc (p->data);
-# if defined (LIBVLC_USE_PTHREAD)
- pthread_exit (PTHREAD_CANCELLED);
-# elif defined (UNDER_CE)
- ExitThread(0);
-# elif defined (WIN32)
- _endthread ();
-# else
-# error Not implemented!
-# endif
- }
-#endif
-}
struct vlc_thread_boot
if (priv->b_thread)
vlc_cancel (priv->thread_id);
}
-
-void vlc_control_cancel (int cmd, ...)
-{
- /* NOTE: This function only modifies thread-specific data, so there is no
- * need to lock anything. */
-#ifdef LIBVLC_USE_PTHREAD_CANCEL
- (void) cmd;
- assert (0);
-#else
- va_list ap;
-
- vlc_cancel_t *nfo = vlc_threadvar_get (cancel_key);
- if (nfo == NULL)
- {
-#ifdef WIN32
- /* Main thread - cannot be cancelled anyway */
- return;
-#else
- nfo = malloc (sizeof (*nfo));
- if (nfo == NULL)
- return; /* Uho! Expect problems! */
- *nfo = VLC_CANCEL_INIT;
- vlc_threadvar_set (cancel_key, nfo);
-#endif
- }
-
- va_start (ap, cmd);
- switch (cmd)
- {
- case VLC_DO_CANCEL:
- nfo->killed = true;
- break;
-
- case VLC_CLEANUP_PUSH:
- {
- /* cleaner is a pointer to the caller stack, no need to allocate
- * and copy anything. As a nice side effect, this cannot fail. */
- vlc_cleanup_t *cleaner = va_arg (ap, vlc_cleanup_t *);
- cleaner->next = nfo->cleaners;
- nfo->cleaners = cleaner;
- break;
- }
-
- case VLC_CLEANUP_POP:
- {
- nfo->cleaners = nfo->cleaners->next;
- break;
- }
- }
- va_end (ap);
-#endif
-}
}
}
break;
- case VLC_VAR_FREELIST:
- FreeList( p_val );
- if( p_val2 && p_val2->p_list )
- {
- for( i = 0; i < p_val2->p_list->i_count; i++ )
- free( p_val2->p_list->p_values[i].psz_string );
- if( p_val2->p_list->i_count )
- {
- free( p_val2->p_list->p_values );
- free( p_val2->p_list->pi_types );
- }
- free( p_val2->p_list );
- }
- break;
case VLC_VAR_SETTEXT:
free( p_var->psz_text );
if( p_val && p_val->psz_string )
return i_ret;
}
+
+
+/**
+ * Free a list and the associated strings
+ * @param p_val: the list variable
+ * @param p_val2: the variable associated or NULL
+ */
+void var_FreeList( vlc_value_t *p_val, vlc_value_t *p_val2 )
+{
+ FreeList( p_val );
+ if( p_val2 && p_val2->p_list )
+ {
+ for( int i = 0; i < p_val2->p_list->i_count; i++ )
+ free( p_val2->p_list->p_values[i].psz_string );
+ if( p_val2->p_list->i_count )
+ {
+ free( p_val2->p_list->p_values );
+ free( p_val2->p_list->pi_types );
+ }
+ free( p_val2->p_list );
+ }
+}
--- /dev/null
+/*****************************************************************************
+ * w32thread.c : Win32 back-end for LibVLC
+ *****************************************************************************
+ * Copyright (C) 1999-2009 the VideoLAN team
+ * $Id$
+ *
+ * Authors: Jean-Marc Dressler <polux@via.ecp.fr>
+ * Samuel Hocevar <sam@zoy.org>
+ * Gildas Bazin <gbazin@netcourrier.com>
+ * Clément Sténac
+ * Rémi Denis-Courmont
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
+ *****************************************************************************/
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include <vlc_common.h>
+
+#include "libvlc.h"
+#include <stdarg.h>
+#include <assert.h>
+
+static vlc_threadvar_t cancel_key;
+
+/**
+ * Per-thread cancellation data
+ */
+typedef struct vlc_cancel_t
+{
+ vlc_cleanup_t *cleaners;
+#ifdef UNDER_CE
+ HANDLE cancel_event;
+#endif
+ bool killable;
+ bool killed;
+} vlc_cancel_t;
+
+#ifndef UNDER_CE
+# define VLC_CANCEL_INIT { NULL, true, false }
+#else
+# define VLC_CANCEL_INIT { NULL, NULL; true, false }
+#endif
+
+#ifdef UNDER_CE
+static void CALLBACK vlc_cancel_self (ULONG_PTR dummy);
+
+static DWORD vlc_cancelable_wait (DWORD count, const HANDLE *handles,
+ DWORD delay)
+{
+ vlc_cancel_t *nfo = vlc_threadvar_get (cancel_key);
+ if (nfo == NULL)
+ {
+ /* Main thread - cannot be cancelled anyway */
+ return WaitForMultipleObjects (count, handles, FALSE, delay);
+ }
+ HANDLE new_handles[count + 1];
+ memcpy(new_handles, handles, count * sizeof(HANDLE));
+ new_handles[count] = nfo->cancel_event;
+ DWORD result = WaitForMultipleObjects (count + 1, new_handles, FALSE,
+ delay);
+ if (result == WAIT_OBJECT_0 + count)
+ {
+ vlc_cancel_self (NULL);
+ return WAIT_IO_COMPLETION;
+ }
+ else
+ {
+ return result;
+ }
+}
+
+DWORD SleepEx (DWORD dwMilliseconds, BOOL bAlertable)
+{
+ if (bAlertable)
+ {
+ DWORD result = vlc_cancelable_wait (0, NULL, dwMilliseconds);
+ return (result == WAIT_TIMEOUT) ? 0 : WAIT_IO_COMPLETION;
+ }
+ else
+ {
+ Sleep(dwMilliseconds);
+ return 0;
+ }
+}
+
+DWORD WaitForSingleObjectEx (HANDLE hHandle, DWORD dwMilliseconds,
+ BOOL bAlertable)
+{
+ if (bAlertable)
+ {
+ /* The MSDN documentation specifies different return codes,
+ * but in practice they are the same. We just check that it
+ * remains so. */
+#if WAIT_ABANDONED != WAIT_ABANDONED_0
+# error Windows headers changed, code needs to be rewritten!
+#endif
+ return vlc_cancelable_wait (1, &hHandle, dwMilliseconds);
+ }
+ else
+ {
+ return WaitForSingleObject (hHandle, dwMilliseconds);
+ }
+}
+
+DWORD WaitForMultipleObjectsEx (DWORD nCount, const HANDLE *lpHandles,
+ BOOL bWaitAll, DWORD dwMilliseconds,
+ BOOL bAlertable)
+{
+ if (bAlertable)
+ {
+ /* We do not support the bWaitAll case */
+ assert (! bWaitAll);
+ return vlc_cancelable_wait (nCount, lpHandles, dwMilliseconds);
+ }
+ else
+ {
+ return WaitForMultipleObjects (nCount, lpHandles, bWaitAll,
+ dwMilliseconds);
+ }
+}
+#endif
+
+static vlc_mutex_t super_mutex;
+
+BOOL WINAPI DllMain (HINSTANCE hinstDll, DWORD fdwReason, LPVOID lpvReserved)
+{
+ (void) hinstDll;
+ (void) lpvReserved;
+
+ switch (fdwReason)
+ {
+ case DLL_PROCESS_ATTACH:
+ vlc_mutex_init (&super_mutex);
+ vlc_threadvar_create (&cancel_key, free);
+ break;
+
+ case DLL_PROCESS_DETACH:
+ vlc_threadvar_delete( &cancel_key );
+ vlc_mutex_destroy (&super_mutex);
+ break;
+ }
+ return TRUE;
+}
+
+/*** Mutexes ***/
+void vlc_mutex_init( vlc_mutex_t *p_mutex )
+{
+ /* This creates a recursive mutex. This is OK as fast mutexes have
+ * no defined behavior in case of recursive locking. */
+ InitializeCriticalSection (&p_mutex->mutex);
+ p_mutex->initialized = 1;
+ return 0;
+}
+
+void vlc_mutex_init_recursive( vlc_mutex_t *p_mutex )
+{
+ InitializeCriticalSection( &p_mutex->mutex );
+ p_mutex->initialized = 1;
+ return 0;
+}
+
+
+void vlc_mutex_destroy (vlc_mutex_t *p_mutex)
+{
+ assert (InterlockedExchange (&p_mutex->initialized, -1) == 1);
+ DeleteCriticalSection (&p_mutex->mutex);
+}
+
+void vlc_mutex_lock (vlc_mutex_t *p_mutex)
+{
+ if (InterlockedCompareExchange (&p_mutex->initialized, 0, 0) == 0)
+ { /* ^^ We could also lock super_mutex all the time... sluggish */
+ assert (p_mutex != &super_mutex); /* this one cannot be static */
+
+ vlc_mutex_lock (&super_mutex);
+ if (InterlockedCompareExchange (&p_mutex->initialized, 0, 0) == 0)
+ vlc_mutex_init (p_mutex);
+ /* FIXME: destroy the mutex some time... */
+ vlc_mutex_unlock (&super_mutex);
+ }
+ assert (InterlockedExchange (&p_mutex->initialized, 1) == 1);
+ EnterCriticalSection (&p_mutex->mutex);
+}
+
+int vlc_mutex_trylock (vlc_mutex_t *p_mutex)
+{
+ if (InterlockedCompareExchange (&p_mutex->initialized, 0, 0) == 0)
+ { /* ^^ We could also lock super_mutex all the time... sluggish */
+ assert (p_mutex != &super_mutex); /* this one cannot be static */
+
+ vlc_mutex_lock (&super_mutex);
+ if (InterlockedCompareExchange (&p_mutex->initialized, 0, 0) == 0)
+ vlc_mutex_init (p_mutex);
+ /* FIXME: destroy the mutex some time... */
+ vlc_mutex_unlock (&super_mutex);
+ }
+ assert (InterlockedExchange (&p_mutex->initialized, 1) == 1);
+ return TryEnterCriticalSection (&p_mutex->mutex) ? 0 : EBUSY;
+}
+
+void vlc_mutex_unlock (vlc_mutex_t *p_mutex)
+{
+ assert (InterlockedExchange (&p_mutex->initialized, 1) == 1);
+ LeaveCriticalSection (&p_mutex->mutex);
+}
+
+/*** Condition variables ***/
+void vlc_cond_init( vlc_cond_t *p_condvar )
+{
+ /* Create a manual-reset event (manual reset is needed for broadcast). */
+ *p_condvar = CreateEvent (NULL, TRUE, FALSE, NULL);
+ if (!*p_condvar)
+ abort();
+}
+
+void vlc_cond_destroy (vlc_cond_t *p_condvar)
+{
+ CloseHandle (*p_condvar);
+}
+
+void vlc_cond_signal (vlc_cond_t *p_condvar)
+{
+ /* NOTE: This will cause a broadcast, that is wrong.
+ * This will also wake up the next waiting thread if no threads are yet
+ * waiting, which is also wrong. However both of these issues are allowed
+ * by the provision for spurious wakeups. Better have too many wakeups
+ * than too few (= deadlocks). */
+ SetEvent (*p_condvar);
+}
+
+void vlc_cond_broadcast (vlc_cond_t *p_condvar)
+{
+ SetEvent (*p_condvar);
+}
+
+void vlc_cond_wait (vlc_cond_t *p_condvar, vlc_mutex_t *p_mutex)
+{
+ DWORD result;
+
+ do
+ {
+ vlc_testcancel ();
+ LeaveCriticalSection (&p_mutex->mutex);
+ result = WaitForSingleObjectEx (*p_condvar, INFINITE, TRUE);
+ EnterCriticalSection (&p_mutex->mutex);
+ }
+ while (result == WAIT_IO_COMPLETION);
+
+ assert (result != WAIT_ABANDONED); /* another thread failed to cleanup! */
+ assert (result != WAIT_FAILED);
+ ResetEvent (*p_condvar);
+}
+
+int vlc_cond_timedwait (vlc_cond_t *p_condvar, vlc_mutex_t *p_mutex,
+ mtime_t deadline)
+{
+ DWORD result;
+
+ do
+ {
+ vlc_testcancel ();
+
+ mtime_t total = (deadline - mdate ())/1000;
+ if( total < 0 )
+ total = 0;
+
+ DWORD delay = (total > 0x7fffffff) ? 0x7fffffff : total;
+ LeaveCriticalSection (&p_mutex->mutex);
+ result = WaitForSingleObjectEx (*p_condvar, delay, TRUE);
+ EnterCriticalSection (&p_mutex->mutex);
+ }
+ while (result == WAIT_IO_COMPLETION);
+
+ assert (result != WAIT_ABANDONED);
+ assert (result != WAIT_FAILED);
+ ResetEvent (*p_condvar);
+
+ return (result == WAIT_OBJECT_0) ? 0 : ETIMEDOUT;
+}
+
+/*** Thread-specific variables (TLS) ***/
+int vlc_threadvar_create (vlc_threadvar_t *p_tls, void (*destr) (void *))
+{
+#warning FIXME: use destr() callback and stop leaking!
+ *p_tls = TlsAlloc();
+ return (*p_tls == TLS_OUT_OF_INDEXES) ? EAGAIN : 0;
+}
+
+void vlc_threadvar_delete (vlc_threadvar_t *p_tls)
+{
+ TlsFree (*p_tls);
+}
+
+/**
+ * Sets a thread-local variable.
+ * @param key thread-local variable key (created with vlc_threadvar_create())
+ * @param value new value for the variable for the calling thread
+ * @return 0 on success, a system error code otherwise.
+ */
+int vlc_threadvar_set (vlc_threadvar_t key, void *value)
+{
+ return TlsSetValue (key, value) ? ENOMEM : 0;
+}
+
+/**
+ * Gets the value of a thread-local variable for the calling thread.
+ * This function cannot fail.
+ * @return the value associated with the given variable for the calling
+ * or NULL if there is no value.
+ */
+void *vlc_threadvar_get (vlc_threadvar_t key)
+{
+ return TlsGetValue (key);
+}
+
+
+/*** Threads ***/
+static unsigned __stdcall vlc_entry (void *data)
+{
+ vlc_cancel_t cancel_data = VLC_CANCEL_INIT;
+ vlc_thread_t self = data;
+#ifdef UNDER_CE
+ cancel_data.cancel_event = self->cancel_event;
+#endif
+
+ vlc_threadvar_set (cancel_key, &cancel_data);
+ self->data = self->entry (self->data);
+ return 0;
+}
+
+int vlc_clone (vlc_thread_t *p_handle, void * (*entry) (void *), void *data,
+ int priority)
+{
+ /* When using the MSVCRT C library you have to use the _beginthreadex
+ * function instead of CreateThread, otherwise you'll end up with
+ * memory leaks and the signal functions not working (see Microsoft
+ * Knowledge Base, article 104641) */
+ HANDLE hThread;
+ vlc_thread_t th = malloc (sizeof (*th));
+
+ if (th == NULL)
+ return ENOMEM;
+
+ th->data = data;
+ th->entry = entry;
+#if defined( UNDER_CE )
+ th->cancel_event = CreateEvent (NULL, FALSE, FALSE, NULL);
+ if (th->cancel_event == NULL)
+ {
+ free(th);
+ return errno;
+ }
+ hThread = CreateThread (NULL, 128*1024, vlc_entry, th, CREATE_SUSPENDED, NULL);
+#else
+ hThread = (HANDLE)(uintptr_t)
+ _beginthreadex (NULL, 0, vlc_entry, th, CREATE_SUSPENDED, NULL);
+#endif
+
+ if (hThread)
+ {
+#ifndef UNDER_CE
+ /* Thread closes the handle when exiting, duplicate it here
+ * to be on the safe side when joining. */
+ if (!DuplicateHandle (GetCurrentProcess (), hThread,
+ GetCurrentProcess (), &th->handle, 0, FALSE,
+ DUPLICATE_SAME_ACCESS))
+ {
+ CloseHandle (hThread);
+ free (th);
+ return ENOMEM;
+ }
+#else
+ th->handle = hThread;
+#endif
+
+ ResumeThread (hThread);
+ if (priority)
+ SetThreadPriority (hThread, priority);
+
+ *p_handle = th;
+ return 0;
+ }
+ free (th);
+ return errno;
+}
+
+void vlc_join (vlc_thread_t handle, void **result)
+{
+ do
+ vlc_testcancel ();
+ while (WaitForSingleObjectEx (handle->handle, INFINITE, TRUE)
+ == WAIT_IO_COMPLETION);
+
+ CloseHandle (handle->handle);
+ if (result)
+ *result = handle->data;
+#ifdef UNDER_CE
+ CloseHandle (handle->cancel_event);
+#endif
+ free (handle);
+}
+
+
+/*** Thread cancellation ***/
+
+/* APC procedure for thread cancellation */
+static void CALLBACK vlc_cancel_self (ULONG_PTR dummy)
+{
+ (void)dummy;
+ vlc_control_cancel (VLC_DO_CANCEL);
+}
+
+void vlc_cancel (vlc_thread_t thread_id)
+{
+#ifndef UNDER_CE
+ QueueUserAPC (vlc_cancel_self, thread_id->handle, 0);
+#else
+ SetEvent (thread_id->cancel_event);
+#endif
+}
+
+int vlc_savecancel (void)
+{
+ int state;
+
+ vlc_cancel_t *nfo = vlc_threadvar_get (cancel_key);
+ if (nfo == NULL)
+ return false; /* Main thread - cannot be cancelled anyway */
+
+ state = nfo->killable;
+ nfo->killable = false;
+ return state;
+}
+
+void vlc_restorecancel (int state)
+{
+ vlc_cancel_t *nfo = vlc_threadvar_get (cancel_key);
+ assert (state == false || state == true);
+
+ if (nfo == NULL)
+ return; /* Main thread - cannot be cancelled anyway */
+
+ assert (!nfo->killable);
+ nfo->killable = state != 0;
+}
+
+void vlc_testcancel (void)
+{
+ vlc_cancel_t *nfo = vlc_threadvar_get (cancel_key);
+ if (nfo == NULL)
+ return; /* Main thread - cannot be cancelled anyway */
+
+ if (nfo->killable && nfo->killed)
+ {
+ for (vlc_cleanup_t *p = nfo->cleaners; p != NULL; p = p->next)
+ p->proc (p->data);
+#ifndef UNDER_CE
+ _endthread ();
+#else
+ ExitThread(0);
+#endif
+ }
+}
+
+void vlc_control_cancel (int cmd, ...)
+{
+ /* NOTE: This function only modifies thread-specific data, so there is no
+ * need to lock anything. */
+ va_list ap;
+
+ vlc_cancel_t *nfo = vlc_threadvar_get (cancel_key);
+ if (nfo == NULL)
+ return; /* Main thread - cannot be cancelled anyway */
+
+ va_start (ap, cmd);
+ switch (cmd)
+ {
+ case VLC_DO_CANCEL:
+ nfo->killed = true;
+ break;
+
+ case VLC_CLEANUP_PUSH:
+ {
+ /* cleaner is a pointer to the caller stack, no need to allocate
+ * and copy anything. As a nice side effect, this cannot fail. */
+ vlc_cleanup_t *cleaner = va_arg (ap, vlc_cleanup_t *);
+ cleaner->next = nfo->cleaners;
+ nfo->cleaners = cleaner;
+ break;
+ }
+
+ case VLC_CLEANUP_POP:
+ {
+ nfo->cleaners = nfo->cleaners->next;
+ break;
+ }
+ }
+ va_end (ap);
+}
* \param p_spu pointer to the subpicture queue the text is to be showed on
* \param i_channel Subpicture channel
* \param psz_string The text to be shown
- * \param p_style Pointer to a struct with text style info
+ * \param p_style Pointer to a struct with text style info (it is duplicated)
* \param i_flags flags for alignment and such
* \param i_hmargin horizontal margin in pixels
* \param i_vmargin vertical margin in pixels
* \param i_duration Amount of time the text is to be shown.
*/
int osd_ShowTextRelative( spu_t *p_spu, int i_channel,
- const char *psz_string, text_style_t *p_style,
+ const char *psz_string, const text_style_t *p_style,
int i_flags, int i_hmargin, int i_vmargin,
mtime_t i_duration )
{
* \param p_spu pointer to the subpicture queue the text is to be showed on
* \param i_channel Subpicture channel
* \param psz_string The text to be shown
- * \param p_style Pointer to a struct with text style info
+ * \param p_style Pointer to a struct with text style info (it is duplicated)
* \param i_flags flags for alignment and such
* \param i_hmargin horizontal margin in pixels
* \param i_vmargin vertical margin in pixels
* is about to be shown
*/
int osd_ShowTextAbsolute( spu_t *p_spu_channel, int i_channel,
- const char *psz_string, text_style_t *p_style,
+ const char *psz_string, const text_style_t *p_style,
int i_flags, int i_hmargin, int i_vmargin,
mtime_t i_start, mtime_t i_stop )
{
/* Create a new subpicture region */
memset( &fmt, 0, sizeof(video_format_t) );
- fmt.i_chroma = VLC_FOURCC('T','E','X','T');
+ fmt.i_chroma = VLC_CODEC_TEXT;
fmt.i_aspect = 0;
fmt.i_width = fmt.i_height = 0;
fmt.i_x_offset = fmt.i_y_offset = 0;
/* Create a new subpicture region */
memset( &fmt, 0, sizeof(video_format_t) );
- fmt.i_chroma = VLC_FOURCC('Y','U','V','A');
+ fmt.i_chroma = VLC_CODEC_YUVA;
fmt.i_aspect = 0;
fmt.i_width = fmt.i_visible_width = i_width;
fmt.i_height = fmt.i_visible_height = i_height;
var_Create( p_playlist, "intf-change", VLC_VAR_BOOL );
var_SetBool( p_playlist, "intf-change", true );
- var_Create( p_playlist, "item-change", VLC_VAR_INTEGER );
- var_SetInteger( p_playlist, "item-change", -1 );
+ var_Create( p_playlist, "item-change", VLC_VAR_ADDRESS );
var_Create( p_playlist, "playlist-item-deleted", VLC_VAR_INTEGER );
var_SetInteger( p_playlist, "playlist-item-deleted", -1 );
var_Create( p_playlist, "playlist-item-append", VLC_VAR_ADDRESS );
- var_Create( p_playlist, "item-current", VLC_VAR_INTEGER );
- var_SetInteger( p_playlist, "item-current", -1 );
+ var_Create( p_playlist, "item-current", VLC_VAR_ADDRESS );
var_Create( p_playlist, "activity", VLC_VAR_INTEGER );
var_SetInteger( p_playlist, "activity", 0 );
{
PL_DEBUG( "found art for %s in cache", psz_name );
input_item_SetArtFetched( p_item, true );
- var_SetInteger( p_playlist, "item-change", p_item->i_id );
+ var_SetAddress( p_playlist, "item-change", p_item );
}
else
{
* listening using the onelevel and the category representent
* (Because of the playlist design) */
p_child_in_category = playlist_ItemFindFromInputAndRoot(
- p_playlist, p_child->i_id,
+ p_playlist, p_child,
p_playlist->p_root_category,
false /* Only non-node */ );
{
/* Then, transform to a node if needed */
p_item_in_category = playlist_ItemFindFromInputAndRoot(
- p_playlist, p_parent->i_id,
+ p_playlist, p_parent,
p_playlist->p_root_category,
false /* Only non-node */ );
if( !p_item_in_category )
{
playlist_item_t *p_item = user_data;
VLC_UNUSED( p_event );
- var_SetInteger( p_item->p_playlist, "item-change", p_item->p_input->i_id );
+ var_SetAddress( p_item->p_playlist, "item-change", p_item->p_input );
}
/*****************************************************************************
*
* Remove an input item when it appears from a root playlist item
* \param p_playlist playlist object
- * \param i_input_id id of the input to delete
+ * \param p_input the input to delete
* \param p_root root playlist item
* \param b_do_stop must stop or not the playlist
* \return VLC_SUCCESS or VLC_EGENERIC
*/
-static int DeleteFromInput( playlist_t *p_playlist, int i_input_id,
+static int DeleteFromInput( playlist_t *p_playlist, input_item_t *p_input,
playlist_item_t *p_root, bool b_do_stop )
{
int i;
for( i = 0 ; i< p_root->i_children ; i++ )
{
if( p_root->pp_children[i]->i_children == -1 &&
- p_root->pp_children[i]->p_input->i_id == i_input_id )
+ p_root->pp_children[i]->p_input == p_input )
{
DeleteInner( p_playlist, p_root->pp_children[i], b_do_stop );
return VLC_SUCCESS;
}
else if( p_root->pp_children[i]->i_children >= 0 )
{
- int i_ret = DeleteFromInput( p_playlist, i_input_id,
+ int i_ret = DeleteFromInput( p_playlist, p_input,
p_root->pp_children[i], b_do_stop );
if( i_ret == VLC_SUCCESS ) return VLC_SUCCESS;
}
*
* Remove an input item when it appears from a root playlist item
* \param p_playlist playlist object
- * \param i_input_id id of the input to delete
+ * \param p_input the input to delete
* \param p_root root playlist item
* \param b_locked TRUE if the playlist is locked
* \return VLC_SUCCESS or VLC_EGENERIC
*/
-int playlist_DeleteFromInputInParent( playlist_t *p_playlist, int i_input_id,
+int playlist_DeleteFromInputInParent( playlist_t *p_playlist,
+ input_item_t *p_item,
playlist_item_t *p_root, bool b_locked )
{
int i_ret;
PL_LOCK_IF( !b_locked );
- i_ret = DeleteFromInput( p_playlist, i_input_id,
- p_root, true );
+ i_ret = DeleteFromInput( p_playlist, p_item, p_root, true );
PL_UNLOCK_IF( !b_locked );
return i_ret;
}
*
* Remove an input item from ONELEVEL and CATEGORY
* \param p_playlist playlist object
- * \param i_input_id id of the input to delete
+ * \param p_input the input to delete
* \param b_locked TRUE if the playlist is locked
* \return VLC_SUCCESS or VLC_ENOITEM
*/
-int playlist_DeleteFromInput( playlist_t *p_playlist, int i_input_id,
+int playlist_DeleteFromInput( playlist_t *p_playlist, input_item_t *p_input,
bool b_locked )
{
int i_ret1, i_ret2;
PL_LOCK_IF( !b_locked );
- i_ret1 = DeleteFromInput( p_playlist, i_input_id,
+ i_ret1 = DeleteFromInput( p_playlist, p_input,
p_playlist->p_root_category, true );
- i_ret2 = DeleteFromInput( p_playlist, i_input_id,
+ i_ret2 = DeleteFromInput( p_playlist, p_input,
p_playlist->p_root_onelevel, true );
PL_UNLOCK_IF( !b_locked );
return ( i_ret1 == VLC_SUCCESS || i_ret2 == VLC_SUCCESS ) ?
* regardless of its size
* \param b_playlist TRUE for playlist, FALSE for media library
* \param b_locked TRUE if the playlist is locked
- * \return The id of the playlist item
+ * \return VLC_SUCCESS or a VLC error code
*/
int playlist_Add( playlist_t *p_playlist, const char *psz_uri,
const char *psz_name, int i_mode, int i_pos,
* \param i_option_flags options flags
* \param b_playlist TRUE for playlist, FALSE for media library
* \param b_locked TRUE if the playlist is locked
- * \return The id of the playlist item
+ * \return VLC_SUCCESS or a VLC error code
*/
int playlist_AddExt( playlist_t *p_playlist, const char * psz_uri,
const char *psz_name, int i_mode, int i_pos,
mtime_t i_duration,
- int i_options, const char *const *ppsz_options, unsigned i_option_flags,
+ int i_options, const char *const *ppsz_options,
+ unsigned i_option_flags,
bool b_playlist, bool b_locked )
{
int i_ret;
- input_item_t *p_input = input_item_NewExt( p_playlist, psz_uri, psz_name,
- i_options, ppsz_options, i_option_flags,
- i_duration );
+ input_item_t *p_input;
+ p_input = input_item_NewExt( p_playlist, psz_uri, psz_name,
+ i_options, ppsz_options, i_option_flags,
+ i_duration );
+ if( p_input == NULL )
+ return VLC_ENOMEM;
i_ret = playlist_AddInput( p_playlist, p_input, i_mode, i_pos, b_playlist,
b_locked );
- int i_id = (i_ret == VLC_SUCCESS) ? p_input->i_id : -1;
-
vlc_gc_decref( p_input );
-
- return i_id;
+ return i_ret;
}
/**
}
for( i_top = 0 ; i_top < p_playlist->p_root_onelevel->i_children; i_top++ )
{
- if( p_playlist->p_root_onelevel->pp_children[i_top]->p_input->i_id ==
- p_up->p_input->i_id )
+ if( p_playlist->p_root_onelevel->pp_children[i_top]->p_input ==
+ p_up->p_input )
{
AddItem( p_playlist, p_item_one,
p_playlist->p_root_onelevel->pp_children[i_top],
/** \todo First look if we don't already have it */
p_item_in_category = playlist_ItemFindFromInputAndRoot(
- p_playlist, p_item->p_input->i_id,
+ p_playlist, p_item->p_input,
p_playlist->p_root_category,
true );
if( p_item_in_category )
{
playlist_item_t *p_item_in_one = playlist_ItemFindFromInputAndRoot(
- p_playlist, p_item->p_input->i_id,
+ p_playlist, p_item->p_input,
p_playlist->p_root_onelevel,
true );
assert( p_item_in_one );
if( p_prev_status_item )
set_current_status_item( p_playlist, p_prev_status_item );
}
- DeleteFromInput( p_playlist, p_item_in_one->p_input->i_id,
+ DeleteFromInput( p_playlist, p_item_in_one->p_input,
p_playlist->p_root_onelevel, false );
}
pl_priv(p_playlist)->b_reset_currently_playing = true;
vlc_cond_signal( &pl_priv(p_playlist)->signal );
- var_SetInteger( p_playlist, "item-change", p_item_in_category->p_input->i_id );
+ var_SetAddress( p_playlist, "item-change", p_item_in_category->p_input );
PL_UNLOCK_IF( !b_locked );
return p_item_in_category;
}
* Find an item within a root, given its input id.
*
* \param p_playlist the playlist object
- * \param i_input_id id of the input
+ * \param p_item the input item
* \param p_root root playlist item
* \param b_items_only TRUE if we want the item himself
* \return the first found item, or NULL if not found
*/
playlist_item_t *playlist_ItemFindFromInputAndRoot( playlist_t *p_playlist,
- int i_input_id,
+ input_item_t *p_item,
playlist_item_t *p_root,
bool b_items_only )
{
for( i = 0 ; i< p_root->i_children ; i++ )
{
if( ( b_items_only ? p_root->pp_children[i]->i_children == -1 : 1 ) &&
- p_root->pp_children[i]->p_input->i_id == i_input_id )
+ p_root->pp_children[i]->p_input == p_item )
{
return p_root->pp_children[i];
}
else if( p_root->pp_children[i]->i_children >= 0 )
{
playlist_item_t *p_search =
- playlist_ItemFindFromInputAndRoot( p_playlist, i_input_id,
+ playlist_ItemFindFromInputAndRoot( p_playlist, p_item,
p_root->pp_children[i],
b_items_only );
if( p_search ) return p_search;
playlist_item_t *p_node_onelevel;
playlist_item_t *p_item_onelevel;
p_node_onelevel = playlist_ItemFindFromInputAndRoot( p_playlist,
- p_node->p_input->i_id,
+ p_node->p_input,
p_playlist->p_root_onelevel,
false );
p_item_onelevel = playlist_ItemFindFromInputAndRoot( p_playlist,
- p_item->p_input->i_id,
+ p_item->p_input,
p_playlist->p_root_onelevel,
false );
if( p_node_onelevel && p_item_onelevel )
playlist_item_t *p_node_category;
playlist_item_t *p_item_category;
p_node_category = playlist_ItemFindFromInputAndRoot( p_playlist,
- p_node->p_input->i_id,
+ p_node->p_input,
p_playlist->p_root_category,
false );
p_item_category = playlist_ItemFindFromInputAndRoot( p_playlist,
- p_item->p_input->i_id,
+ p_item->p_input,
p_playlist->p_root_category,
false );
if( p_node_category && p_item_category )
/* Tree walking */
playlist_item_t *playlist_ItemFindFromInputAndRoot( playlist_t *p_playlist,
- int i_input_id, playlist_item_t *p_root,
- bool );
+ input_item_t *p_input, playlist_item_t *p_root,
+ bool );
-int playlist_DeleteFromInputInParent( playlist_t *, int, playlist_item_t *, bool );
+int playlist_DeleteFromInputInParent( playlist_t *, input_item_t *,
+ playlist_item_t *, bool );
int playlist_DeleteFromItemId( playlist_t*, int );
int playlist_ItemRelease( playlist_item_t * );
input_Preparse( VLC_OBJECT(p_playlist), p_item );
input_item_SetPreparsed( p_item, true );
- var_SetInteger( p_playlist, "item-change", p_item->i_id );
+ var_SetAddress( p_playlist, "item-change", p_item );
}
stats_TimerStop( p_playlist, STATS_TIMER_PREPARSE );
/** \todo Check if this is always incremental and whether we can bsearch */
for( i = 0 ; i < p_playlist->all_items.i_size; i++ )
{
- if( ARRAY_VAL(p_playlist->all_items, i)->p_input->i_id == p_item->i_id )
+ if( ARRAY_VAL(p_playlist->all_items, i)->p_input == p_item )
{
return ARRAY_VAL(p_playlist->all_items, i);
}
}
-/**
- * Get input by item id
- *
- * Find the playlist item matching the input id under the given node
- * \param p_playlist the playlist
- * \param i_input_id the id of the input to find
- * \param p_root the root node of the search
- * \return the playlist item or NULL on failure
- */
-playlist_item_t * playlist_ItemGetByInputId( playlist_t *p_playlist,
- int i_input_id,
- playlist_item_t *p_root )
-{
- int i;
- PL_ASSERT_LOCKED;
- assert( p_root != NULL );
- for( i = 0 ; i< p_root->i_children ; i++ )
- {
- if( p_root->pp_children[i]->p_input &&
- p_root->pp_children[i]->p_input->i_id == i_input_id )
- {
- return p_root->pp_children[i];
- }
- else if( p_root->pp_children[i]->i_children >= 0 )
- {
- return playlist_ItemGetByInputId( p_playlist, i_input_id,
- p_root->pp_children[i] );
- }
- }
- return NULL;
-}
-
/***************************************************************************
* Live search handling
***************************************************************************/
* XXX: Why don't we have a function to ensure that in the playlist code ? */
playlist_Lock( p_parent->p_playlist );
p_pl_item = playlist_ItemFindFromInputAndRoot( p_parent->p_playlist,
- p_input->i_id, p_parent, false );
+ p_input, p_parent, false );
if( p_pl_item && p_pl_item->i_children > -1 )
playlist_NodeDelete( p_parent->p_playlist, p_pl_item, true, false );
else
/* Delete the non-node item normally */
- playlist_DeleteFromInputInParent( p_parent->p_playlist, p_input->i_id,
+ playlist_DeleteFromInputInParent( p_parent->p_playlist, p_input,
p_parent, pl_Locked );
playlist_Unlock( p_parent->p_playlist );
}
PL_UNLOCK;
- var_SetInteger( p_playlist, "item-current", p_input->i_id );
+ var_SetAddress( p_playlist, "item-current", p_input );
PL_LOCK;
return VLC_SUCCESS;
return p_node;
for( i = 0 ; i< p_playlist->p_root_onelevel->i_children; i++ )
{
- if( p_playlist->p_root_onelevel->pp_children[i]->p_input->i_id ==
- p_node->p_input->i_id )
+ if( p_playlist->p_root_onelevel->pp_children[i]->p_input ==
+ p_node->p_input )
return p_playlist->p_root_onelevel->pp_children[i];
}
}
return p_node;
for( i = 0 ; i< p_playlist->p_root_category->i_children; i++ )
{
- if( p_playlist->p_root_category->pp_children[i]->p_input->i_id ==
- p_node->p_input->i_id )
+ if( p_playlist->p_root_category->pp_children[i]->p_input ==
+ p_node->p_input )
return p_playlist->p_root_category->pp_children[i];
}
}
#include "input/input_interface.h"
+#define VLC_CODEC_NULL VLC_FOURCC( 'n', 'u', 'l', 'l' )
+
#undef DEBUG_BUFFER
/*****************************************************************************
* Local prototypes
msg_Dbg( p_sout, "adding a new sout input (sout_input:%p)", p_input );
- if( p_fmt->i_codec == VLC_FOURCC( 'n', 'u', 'l', 'l' ) )
+ if( p_fmt->i_codec == VLC_CODEC_NULL )
{
vlc_object_release( p_sout );
return p_input;
msg_Dbg( p_sout, "removing a sout input (sout_input:%p)", p_input );
- if( p_input->p_fmt->i_codec != VLC_FOURCC( 'n', 'u', 'l', 'l' ) )
+ if( p_input->p_fmt->i_codec != VLC_CODEC_NULL )
{
vlc_mutex_lock( &p_sout->lock );
p_sout->p_stream->pf_del( p_sout->p_stream, p_input->id );
sout_instance_t *p_sout = p_input->p_sout;
int i_ret;
- if( p_input->p_fmt->i_codec == VLC_FOURCC( 'n', 'u', 'l', 'l' ) )
+ if( p_input->p_fmt->i_codec == VLC_CODEC_NULL )
{
block_Release( p_buffer );
return VLC_SUCCESS;
test_block \
test_dictionary \
test_i18n_atof \
+ test_keys \
test_url \
test_utf8 \
test_xmlent \
test_block_SOURCES = test_block.c ../misc/block.c
test_dictionary_SOURCES = dictionary.c
test_i18n_atof_SOURCES = i18n_atof.c
+test_keys_SOURCES = keys.c
test_url_SOURCES = url.c
test_utf8_SOURCES = utf8.c
test_xmlent_SOURCES = xmlent.c
--- /dev/null
+/*****************************************************************************
+ * keys.c: test for key support
+ *****************************************************************************
+ * Copyright (C) 2009 Rémi Denis-Courmont
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
+ *****************************************************************************/
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include <stdio.h>
+#include <stdint.h>
+#include <stdbool.h>
+
+#include <vlc_common.h>
+#include <vlc_keys.h>
+
+int main (void)
+{
+ bool ok = true;
+
+ /* Make sure keys are sorted properly, so that bsearch() works */
+ for (size_t i = 1; i < vlc_num_keys; i++)
+ if (vlc_keys[i].i_key_code < vlc_keys[i - 1].i_key_code)
+ {
+ fprintf (stderr,
+ "%s (%06"PRIx32") should be before %s (%06"PRIx32")\n",
+ vlc_keys[i].psz_key_string, vlc_keys[i].i_key_code,
+ vlc_keys[i - 1].psz_key_string,
+ vlc_keys[i - 1].i_key_code);
+ ok = false;
+ }
+
+ return !ok;
+}
test (make_URI, in, out);
}
+static inline void test_current_directory_path (const char *in, const char *cwd, const char *out)
+{
+ char * expected_result = NULL;
+ int val = asprintf(&expected_result, "file://%s/%s", cwd, out);
+ assert (val != -1);
+
+ test (make_URI, in, expected_result);
+}
+
int main (void)
{
int val;
assert (fd != -1);*/
val = chdir ("/tmp");
assert (val != -1);
- test_path ("movie.ogg", "file:///tmp/movie.ogg");
- test_path (".", "file:///tmp/.");
- test_path ("", "file:///tmp/");
+
+ char buf[256];
+ char * tmpdir;
+ tmpdir = getcwd(buf, sizeof(buf)/sizeof(*buf));
+ assert (tmpdir);
+
+ test_current_directory_path ("movie.ogg", tmpdir, "movie.ogg");
+ test_current_directory_path (".", tmpdir, ".");
+ test_current_directory_path ("", tmpdir, "");
+
/*val = fchdir (fd);
assert (val != -1);*/
free( psz_filter_chain );
}
- if( p_vout->fmt_render.i_chroma != p_fmt->i_chroma ||
+ if( p_vout->fmt_render.i_chroma != vlc_fourcc_GetCodec( VIDEO_ES, p_fmt->i_chroma ) ||
p_vout->fmt_render.i_width != p_fmt->i_width ||
p_vout->fmt_render.i_height != p_fmt->i_height ||
p_vout->p->b_filter_change )
unsigned int i_width = p_fmt->i_width;
unsigned int i_height = p_fmt->i_height;
- vlc_fourcc_t i_chroma = p_fmt->i_chroma;
+ vlc_fourcc_t i_chroma = vlc_fourcc_GetCodec( VIDEO_ES, p_fmt->i_chroma );
unsigned int i_aspect = p_fmt->i_aspect;
config_chain_t *p_cfg;
if( !vout_ChromaCmp( p_output->i_chroma, p_render->i_chroma ) )
return false;
- if( p_output->i_chroma != FOURCC_RV15 &&
- p_output->i_chroma != FOURCC_RV16 &&
- p_output->i_chroma != FOURCC_RV24 &&
- p_output->i_chroma != FOURCC_RV32 )
+ if( p_output->i_chroma != VLC_CODEC_RGB15 &&
+ p_output->i_chroma != VLC_CODEC_RGB16 &&
+ p_output->i_chroma != VLC_CODEC_RGB24 &&
+ p_output->i_chroma != VLC_CODEC_RGB32 )
return true;
return p_output->i_rmask == p_render->i_rmask &&
}
}
- /* Link pictures back to their heap */
- for( i = 0 ; i < I_RENDERPICTURES ; i++ )
- {
- PP_RENDERPICTURE[ i ]->p_heap = &p_vout->render;
- }
-
- for( i = 0 ; i < I_OUTPUTPICTURES ; i++ )
- {
- PP_OUTPUTPICTURE[ i ]->p_heap = &p_vout->output;
- }
-
return VLC_SUCCESS;
}
* \param p_vout pointer to the vout the text is to be showed on
* \param i_channel Subpicture channel
* \param psz_string The text to be shown
- * \param p_style Pointer to a struct with text style info
+ * \param p_style Pointer to a struct with text style info (it is duplicated if non NULL)
* \param i_flags flags for alignment and such
* \param i_hmargin horizontal margin in pixels
* \param i_vmargin vertical margin in pixels
* \param i_duration Amount of time the text is to be shown.
*/
int vout_ShowTextRelative( vout_thread_t *p_vout, int i_channel,
- char *psz_string, text_style_t *p_style,
+ char *psz_string, const text_style_t *p_style,
int i_flags, int i_hmargin, int i_vmargin,
mtime_t i_duration )
{
* \param p_vout pointer to the vout the text is to be showed on
* \param i_channel Subpicture channel
* \param psz_string The text to be shown
- * \param p_style Pointer to a struct with text style info
+ * \param p_style Pointer to a struct with text style info (it is duplicated if non NULL)
* \param i_flags flags for alignment and such
* \param i_hmargin horizontal margin in pixels
* \param i_vmargin vertical margin in pixels
* is about to be shown
*/
int vout_ShowTextAbsolute( vout_thread_t *p_vout, int i_channel,
- const char *psz_string, text_style_t *p_style,
+ const char *psz_string, const text_style_t *p_style,
int i_flags, int i_hmargin, int i_vmargin,
mtime_t i_start, mtime_t i_stop )
{
- (void)p_style;
subpicture_t *p_spu;
video_format_t fmt;
- /* (void)p_style; FIXME: <-- why ask for this if it's unused?!? */
if( !psz_string ) return VLC_EGENERIC;
/* Create a new subpicture region */
memset( &fmt, 0, sizeof(video_format_t) );
- fmt.i_chroma = VLC_FOURCC('T','E','X','T');
+ fmt.i_chroma = VLC_CODEC_TEXT;
fmt.i_aspect = 0;
fmt.i_width = fmt.i_height = 0;
fmt.i_x_offset = fmt.i_y_offset = 0;
p_spu->p_region->i_align = i_flags & SUBPICTURE_ALIGN_MASK;
p_spu->p_region->i_x = i_hmargin;
p_spu->p_region->i_y = i_vmargin;
+ if( p_style )
+ p_spu->p_region->p_style = text_style_Duplicate( p_style );
spu_DisplaySubpicture( p_vout->p_spu, p_spu );
va_end( args );
}
}
+
+/* */
+text_style_t *text_style_New( void )
+{
+ text_style_t *p_style = calloc( 1, sizeof(*p_style) );
+ if( !p_style )
+ return NULL;
+
+ /* initialize to default text style */
+ p_style->psz_fontname = NULL;
+ p_style->i_font_size = 22;
+ p_style->i_font_color = 0xffffff;
+ p_style->i_font_alpha = 0xff;
+ p_style->i_style_flags = STYLE_OUTLINE;
+ p_style->i_outline_color = 0x000000;
+ p_style->i_outline_alpha = 0xff;
+ p_style->i_shadow_color = 0x000000;
+ p_style->i_shadow_alpha = 0xff;
+ p_style->i_background_color = 0xffffff;
+ p_style->i_background_alpha = 0x80;
+ p_style->i_karaoke_background_color = 0xffffff;
+ p_style->i_karaoke_background_alpha = 0xff;
+ p_style->i_outline_width = 1;
+ p_style->i_shadow_width = 0;
+ p_style->i_spacing = -1;
+
+ return p_style;
+}
+
+text_style_t *text_style_Copy( text_style_t *p_dst, const text_style_t *p_src )
+{
+ if( !p_src )
+ return p_dst;
+
+ /* */
+ if( p_dst->psz_fontname )
+ free( p_dst->psz_fontname );
+
+ /* */
+ *p_dst = *p_src;
+
+ /* */
+ if( p_dst->psz_fontname )
+ p_dst->psz_fontname = strdup( p_dst->psz_fontname );
+
+ return p_dst;
+}
+
+text_style_t *text_style_Duplicate( const text_style_t *p_src )
+{
+ if( !p_src )
+ return NULL;
+
+ text_style_t *p_dst = calloc( 1, sizeof(*p_dst) );
+ if( p_dst )
+ text_style_Copy( p_dst, p_src );
+ return p_dst;
+}
+
+void text_style_Delete( text_style_t *p_style )
+{
+ if( p_style )
+ free( p_style->psz_fontname );
+ free( p_style );
+}
+
/* */
memset( &fmt_out, 0, sizeof(fmt_out) );
fmt_out = fmt_in;
- fmt_out.i_chroma = VLC_FOURCC('Y','U','V','A');
+ fmt_out.i_chroma = VLC_CODEC_YUVA;
/* */
image_handler_t *p_image = image_HandlerCreate( p_vout );
if( pp_image )
{
- vlc_fourcc_t i_format = VLC_FOURCC('p','n','g',' ');
+ vlc_fourcc_t i_format = VLC_CODEC_PNG;
if( psz_format && image_Type2Fourcc( psz_format ) )
i_format = image_Type2Fourcc( psz_format );
p_vout->fmt_out.i_aspect );
p_tmp_pic->i_type = MEMORY_PICTURE;
p_tmp_pic->i_status = RESERVED_PICTURE;
- /* some modules (such as blend) needs to know the extra information in picture heap */
- p_tmp_pic->p_heap = &p_vout->output;
}
/* Convert image to the first direct buffer */
i_width_aligned = (i_width + 15) >> 4 << 4;
i_height_aligned = (i_height + 15) >> 4 << 4;
- if( vout_InitPicture( p_this, p_pic, i_chroma,
- i_width, i_height, i_aspect ) != VLC_SUCCESS )
+ if( picture_Setup( p_pic, i_chroma,
+ i_width, i_height, i_aspect ) != VLC_SUCCESS )
{
p_pic->i_planes = 0;
return VLC_EGENERIC;
return VLC_SUCCESS;
}
-/**
- * Initialise the video format fields given chroma/size.
- *
- * This function initializes all the video_frame_format_t fields given the
- * static properties of a picture (chroma and size).
- * \param p_format Pointer to the format structure to initialize
- * \param i_chroma Chroma to set
- * \param i_width Width to set
- * \param i_height Height to set
- * \param i_aspect Aspect ratio
- */
-void vout_InitFormat( video_frame_format_t *p_format, vlc_fourcc_t i_chroma,
- int i_width, int i_height, int i_aspect )
-{
- p_format->i_chroma = i_chroma;
- p_format->i_width = p_format->i_visible_width = i_width;
- p_format->i_height = p_format->i_visible_height = i_height;
- p_format->i_x_offset = p_format->i_y_offset = 0;
- p_format->i_aspect = i_aspect;
-
-#if 0
- /* Assume we have square pixels */
- if( i_width && i_height )
- p_format->i_aspect = i_width * VOUT_ASPECT_FACTOR / i_height;
- else
- p_format->i_aspect = 0;
-#endif
-
- switch( i_chroma )
- {
- case FOURCC_YUVA:
- p_format->i_bits_per_pixel = 32;
- break;
- case FOURCC_I444:
- case FOURCC_J444:
- p_format->i_bits_per_pixel = 24;
- break;
- case FOURCC_I422:
- case FOURCC_YUY2:
- case FOURCC_UYVY:
- case FOURCC_J422:
- p_format->i_bits_per_pixel = 16;
- break;
- case FOURCC_I440:
- case FOURCC_J440:
- p_format->i_bits_per_pixel = 16;
- break;
- case FOURCC_I411:
- case FOURCC_YV12:
- case FOURCC_I420:
- case FOURCC_J420:
- case FOURCC_IYUV:
- p_format->i_bits_per_pixel = 12;
- break;
- case FOURCC_I410:
- case FOURCC_YVU9:
- p_format->i_bits_per_pixel = 9;
- break;
- case FOURCC_Y211:
- p_format->i_bits_per_pixel = 8;
- break;
- case FOURCC_YUVP:
- p_format->i_bits_per_pixel = 8;
- break;
-
- case FOURCC_RV32:
- case FOURCC_RGBA:
- p_format->i_bits_per_pixel = 32;
- break;
- case FOURCC_RV24:
- p_format->i_bits_per_pixel = 24;
- break;
- case FOURCC_RV15:
- case FOURCC_RV16:
- p_format->i_bits_per_pixel = 16;
- break;
- case FOURCC_RGB2:
- p_format->i_bits_per_pixel = 8;
- break;
-
- case FOURCC_GREY:
- case FOURCC_Y800:
- case FOURCC_Y8:
- case FOURCC_RGBP:
- p_format->i_bits_per_pixel = 8;
- break;
-
- default:
- p_format->i_bits_per_pixel = 0;
- break;
- }
-}
-
-/**
- * Initialise the picture_t fields given chroma/size.
- *
- * This function initializes most of the picture_t fields given a chroma and
- * size. It makes the assumption that stride == width.
- * \param p_this The calling object
- * \param p_pic Pointer to the picture to initialize
- * \param i_chroma The chroma fourcc to set
- * \param i_width The width of the picture
- * \param i_height The height of the picture
- * \param i_aspect The aspect ratio of the picture
- */
-int __vout_InitPicture( vlc_object_t *p_this, picture_t *p_pic,
- vlc_fourcc_t i_chroma,
- int i_width, int i_height, int i_aspect )
-{
- int i_index, i_width_aligned, i_height_aligned;
-
- /* Store default values */
- for( i_index = 0; i_index < VOUT_MAX_PLANES; i_index++ )
- {
- p_pic->p[i_index].p_pixels = NULL;
- p_pic->p[i_index].i_pixel_pitch = 1;
- }
-
- p_pic->pf_release = NULL;
- p_pic->pf_lock = NULL;
- p_pic->pf_unlock = NULL;
- p_pic->i_refcount = 0;
-
- p_pic->i_qtype = QTYPE_NONE;
- p_pic->i_qstride = 0;
- p_pic->p_q = NULL;
-
- vout_InitFormat( &p_pic->format, i_chroma, i_width, i_height, i_aspect );
-
- /* Make sure the real dimensions are a multiple of 16 */
- i_width_aligned = (i_width + 15) >> 4 << 4;
- i_height_aligned = (i_height + 15) >> 4 << 4;
-
- /* Calculate coordinates */
- switch( i_chroma )
- {
- case FOURCC_I411:
- p_pic->p[ Y_PLANE ].i_lines = i_height_aligned;
- p_pic->p[ Y_PLANE ].i_visible_lines = i_height;
- p_pic->p[ Y_PLANE ].i_pitch = i_width_aligned;
- p_pic->p[ Y_PLANE ].i_visible_pitch = i_width;
- p_pic->p[ U_PLANE ].i_lines = i_height_aligned;
- p_pic->p[ U_PLANE ].i_visible_lines = i_height;
- p_pic->p[ U_PLANE ].i_pitch = i_width_aligned / 4;
- p_pic->p[ U_PLANE ].i_visible_pitch = i_width / 4;
- p_pic->p[ V_PLANE ].i_lines = i_height_aligned;
- p_pic->p[ V_PLANE ].i_visible_lines = i_height;
- p_pic->p[ V_PLANE ].i_pitch = i_width_aligned / 4;
- p_pic->p[ V_PLANE ].i_visible_pitch = i_width / 4;
- p_pic->i_planes = 3;
- break;
-
- case FOURCC_I410:
- case FOURCC_YVU9:
- p_pic->p[ Y_PLANE ].i_lines = i_height_aligned;
- p_pic->p[ Y_PLANE ].i_visible_lines = i_height;
- p_pic->p[ Y_PLANE ].i_pitch = i_width_aligned;
- p_pic->p[ Y_PLANE ].i_visible_pitch = i_width;
- p_pic->p[ U_PLANE ].i_lines = i_height_aligned / 4;
- p_pic->p[ U_PLANE ].i_visible_lines = i_height / 4;
- p_pic->p[ U_PLANE ].i_pitch = i_width_aligned / 4;
- p_pic->p[ U_PLANE ].i_visible_pitch = i_width / 4;
- p_pic->p[ V_PLANE ].i_lines = i_height_aligned / 4;
- p_pic->p[ V_PLANE ].i_visible_lines = i_height / 4;
- p_pic->p[ V_PLANE ].i_pitch = i_width_aligned / 4;
- p_pic->p[ V_PLANE ].i_visible_pitch = i_width / 4;
- p_pic->i_planes = 3;
- break;
-
- case FOURCC_YV12:
- case FOURCC_I420:
- case FOURCC_IYUV:
- case FOURCC_J420:
- p_pic->p[ Y_PLANE ].i_lines = i_height_aligned;
- p_pic->p[ Y_PLANE ].i_visible_lines = i_height;
- p_pic->p[ Y_PLANE ].i_pitch = i_width_aligned;
- p_pic->p[ Y_PLANE ].i_visible_pitch = i_width;
- p_pic->p[ U_PLANE ].i_lines = i_height_aligned / 2;
- p_pic->p[ U_PLANE ].i_visible_lines = i_height / 2;
- p_pic->p[ U_PLANE ].i_pitch = i_width_aligned / 2;
- p_pic->p[ U_PLANE ].i_visible_pitch = i_width / 2;
- p_pic->p[ V_PLANE ].i_lines = i_height_aligned / 2;
- p_pic->p[ V_PLANE ].i_visible_lines = i_height / 2;
- p_pic->p[ V_PLANE ].i_pitch = i_width_aligned / 2;
- p_pic->p[ V_PLANE ].i_visible_pitch = i_width / 2;
- p_pic->i_planes = 3;
- break;
-
- case FOURCC_I422:
- case FOURCC_J422:
- p_pic->p[ Y_PLANE ].i_lines = i_height_aligned;
- p_pic->p[ Y_PLANE ].i_visible_lines = i_height;
- p_pic->p[ Y_PLANE ].i_pitch = i_width_aligned;
- p_pic->p[ Y_PLANE ].i_visible_pitch = i_width;
- p_pic->p[ U_PLANE ].i_lines = i_height_aligned;
- p_pic->p[ U_PLANE ].i_visible_lines = i_height;
- p_pic->p[ U_PLANE ].i_pitch = i_width_aligned / 2;
- p_pic->p[ U_PLANE ].i_visible_pitch = i_width / 2;
- p_pic->p[ V_PLANE ].i_lines = i_height_aligned;
- p_pic->p[ V_PLANE ].i_visible_lines = i_height;
- p_pic->p[ V_PLANE ].i_pitch = i_width_aligned / 2;
- p_pic->p[ V_PLANE ].i_visible_pitch = i_width / 2;
- p_pic->i_planes = 3;
- break;
-
- case FOURCC_I440:
- case FOURCC_J440:
- p_pic->p[ Y_PLANE ].i_lines = i_height_aligned;
- p_pic->p[ Y_PLANE ].i_visible_lines = i_height;
- p_pic->p[ Y_PLANE ].i_pitch = i_width_aligned;
- p_pic->p[ Y_PLANE ].i_visible_pitch = i_width;
- p_pic->p[ U_PLANE ].i_lines = i_height_aligned / 2;
- p_pic->p[ U_PLANE ].i_visible_lines = i_height / 2;
- p_pic->p[ U_PLANE ].i_pitch = i_width_aligned;
- p_pic->p[ U_PLANE ].i_visible_pitch = i_width;
- p_pic->p[ V_PLANE ].i_lines = i_height_aligned / 2;
- p_pic->p[ V_PLANE ].i_visible_lines = i_height / 2;
- p_pic->p[ V_PLANE ].i_pitch = i_width_aligned;
- p_pic->p[ V_PLANE ].i_visible_pitch = i_width;
- p_pic->i_planes = 3;
- break;
-
- case FOURCC_I444:
- case FOURCC_J444:
- p_pic->p[ Y_PLANE ].i_lines = i_height_aligned;
- p_pic->p[ Y_PLANE ].i_visible_lines = i_height;
- p_pic->p[ Y_PLANE ].i_pitch = i_width_aligned;
- p_pic->p[ Y_PLANE ].i_visible_pitch = i_width;
- p_pic->p[ U_PLANE ].i_lines = i_height_aligned;
- p_pic->p[ U_PLANE ].i_visible_lines = i_height;
- p_pic->p[ U_PLANE ].i_pitch = i_width_aligned;
- p_pic->p[ U_PLANE ].i_visible_pitch = i_width;
- p_pic->p[ V_PLANE ].i_lines = i_height_aligned;
- p_pic->p[ V_PLANE ].i_visible_lines = i_height;
- p_pic->p[ V_PLANE ].i_pitch = i_width_aligned;
- p_pic->p[ V_PLANE ].i_visible_pitch = i_width;
- p_pic->i_planes = 3;
- break;
-
- case FOURCC_YUVA:
- p_pic->p[ Y_PLANE ].i_lines = i_height_aligned;
- p_pic->p[ Y_PLANE ].i_visible_lines = i_height;
- p_pic->p[ Y_PLANE ].i_pitch = i_width_aligned;
- p_pic->p[ Y_PLANE ].i_visible_pitch = i_width;
- p_pic->p[ U_PLANE ].i_lines = i_height_aligned;
- p_pic->p[ U_PLANE ].i_visible_lines = i_height;
- p_pic->p[ U_PLANE ].i_pitch = i_width_aligned;
- p_pic->p[ U_PLANE ].i_visible_pitch = i_width;
- p_pic->p[ V_PLANE ].i_lines = i_height_aligned;
- p_pic->p[ V_PLANE ].i_visible_lines = i_height;
- p_pic->p[ V_PLANE ].i_pitch = i_width_aligned;
- p_pic->p[ V_PLANE ].i_visible_pitch = i_width;
- p_pic->p[ A_PLANE ].i_lines = i_height_aligned;
- p_pic->p[ A_PLANE ].i_visible_lines = i_height;
- p_pic->p[ A_PLANE ].i_pitch = i_width_aligned;
- p_pic->p[ A_PLANE ].i_visible_pitch = i_width;
- p_pic->i_planes = 4;
- break;
-
- case FOURCC_YUVP:
- p_pic->p->i_lines = i_height_aligned;
- p_pic->p->i_visible_lines = i_height;
- p_pic->p->i_pitch = i_width_aligned;
- p_pic->p->i_visible_pitch = i_width;
- p_pic->p->i_pixel_pitch = 8;
- p_pic->i_planes = 1;
- break;
-
- case FOURCC_Y211:
- p_pic->p->i_lines = i_height_aligned;
- p_pic->p->i_visible_lines = i_height;
- p_pic->p->i_pitch = i_width_aligned;
- p_pic->p->i_visible_pitch = i_width;
- p_pic->p->i_pixel_pitch = 4;
- p_pic->i_planes = 1;
- break;
-
- case FOURCC_UYVY:
- case FOURCC_YUY2:
- p_pic->p->i_lines = i_height_aligned;
- p_pic->p->i_visible_lines = i_height;
- p_pic->p->i_pitch = i_width_aligned * 2;
- p_pic->p->i_visible_pitch = i_width * 2;
- p_pic->p->i_pixel_pitch = 4;
- p_pic->i_planes = 1;
- break;
-
- case FOURCC_RGB2:
- p_pic->p->i_lines = i_height_aligned;
- p_pic->p->i_visible_lines = i_height;
- p_pic->p->i_pitch = i_width_aligned;
- p_pic->p->i_visible_pitch = i_width;
- p_pic->p->i_pixel_pitch = 1;
- p_pic->i_planes = 1;
- break;
-
- case FOURCC_RV15:
- p_pic->p->i_lines = i_height_aligned;
- p_pic->p->i_visible_lines = i_height;
- p_pic->p->i_pitch = i_width_aligned * 2;
- p_pic->p->i_visible_pitch = i_width * 2;
- p_pic->p->i_pixel_pitch = 2;
- p_pic->i_planes = 1;
- break;
-
- case FOURCC_RV16:
- p_pic->p->i_lines = i_height_aligned;
- p_pic->p->i_visible_lines = i_height;
- p_pic->p->i_pitch = i_width_aligned * 2;
- p_pic->p->i_visible_pitch = i_width * 2;
- p_pic->p->i_pixel_pitch = 2;
- p_pic->i_planes = 1;
- break;
-
- case FOURCC_RV24:
- p_pic->p->i_lines = i_height_aligned;
- p_pic->p->i_visible_lines = i_height;
- p_pic->p->i_pitch = i_width_aligned * 3;
- p_pic->p->i_visible_pitch = i_width * 3;
- p_pic->p->i_pixel_pitch = 3;
- p_pic->i_planes = 1;
- break;
-
- case FOURCC_RV32:
- case FOURCC_RGBA:
- p_pic->p->i_lines = i_height_aligned;
- p_pic->p->i_visible_lines = i_height;
- p_pic->p->i_pitch = i_width_aligned * 4;
- p_pic->p->i_visible_pitch = i_width * 4;
- p_pic->p->i_pixel_pitch = 4;
- p_pic->i_planes = 1;
- break;
-
- case FOURCC_GREY:
- case FOURCC_Y800:
- case FOURCC_Y8:
- case FOURCC_RGBP:
- p_pic->p->i_lines = i_height_aligned;
- p_pic->p->i_visible_lines = i_height;
- p_pic->p->i_pitch = i_width_aligned;
- p_pic->p->i_visible_pitch = i_width;
- p_pic->p->i_pixel_pitch = 1;
- p_pic->i_planes = 1;
- break;
-
- default:
- if( p_this )
- msg_Err( p_this, "unknown chroma type 0x%.8x (%4.4s)",
- i_chroma, (char*)&i_chroma );
- p_pic->i_planes = 0;
- return VLC_EGENERIC;
- }
-
- return VLC_SUCCESS;
-}
-
/**
* Compare two chroma values
*
int vout_ChromaCmp( vlc_fourcc_t i_chroma, vlc_fourcc_t i_amorhc )
{
static const vlc_fourcc_t p_I420[] = {
- FOURCC_I420, FOURCC_IYUV, FOURCC_YV12, FOURCC_J420, 0
+ VLC_CODEC_I420, VLC_CODEC_YV12, VLC_CODEC_J420, 0
};
static const vlc_fourcc_t p_I422[] = {
- FOURCC_I422, FOURCC_J422, 0
+ VLC_CODEC_I422, VLC_CODEC_J422, 0
};
static const vlc_fourcc_t p_I440[] = {
- FOURCC_I440, FOURCC_J440, 0
+ VLC_CODEC_I440, VLC_CODEC_J440, 0
};
static const vlc_fourcc_t p_I444[] = {
- FOURCC_I444, FOURCC_J444, 0
- };
- static const vlc_fourcc_t p_UYVY[] = {
- FOURCC_UYVY, FOURCC_UYNV, FOURCC_Y422, 0
- };
- static const vlc_fourcc_t p_YUYV[] = {
- FOURCC_YUY2, FOURCC_YUNV, 0
- };
- static const vlc_fourcc_t p_GREY[] = {
- FOURCC_GREY, FOURCC_Y800, FOURCC_Y8, 0
+ VLC_CODEC_I444, VLC_CODEC_J444, 0
};
static const vlc_fourcc_t *pp_fcc[] = {
- p_I420, p_I422, p_I440, p_I444, p_UYVY, p_YUYV, p_GREY, NULL
+ p_I420, p_I422, p_I440, p_I444, NULL
};
+ /* */
+ i_chroma = vlc_fourcc_GetCodec( VIDEO_ES, i_chroma );
+ i_amorhc = vlc_fourcc_GetCodec( VIDEO_ES, i_amorhc );
+
/* If they are the same, they are the same ! */
if( i_chroma == i_amorhc )
return 1;
return;
picture_Delete( p_picture );
}
+
+/*****************************************************************************
+ *
+ *****************************************************************************/
+int picture_Setup( picture_t *p_picture, vlc_fourcc_t i_chroma, int i_width, int i_height, int i_aspect )
+{
+ int i_index, i_width_aligned, i_height_aligned;
+
+ /* Store default values */
+ for( i_index = 0; i_index < VOUT_MAX_PLANES; i_index++ )
+ {
+ p_picture->p[i_index].p_pixels = NULL;
+ p_picture->p[i_index].i_pixel_pitch = 1;
+ }
+
+ p_picture->pf_release = NULL;
+ p_picture->p_release_sys = NULL;
+ p_picture->pf_lock = NULL;
+ p_picture->pf_unlock = NULL;
+ p_picture->i_refcount = 0;
+
+ p_picture->i_qtype = QTYPE_NONE;
+ p_picture->i_qstride = 0;
+ p_picture->p_q = NULL;
+
+ video_format_Setup( &p_picture->format, i_chroma, i_width, i_height, i_aspect );
+
+ /* Make sure the real dimensions are a multiple of 16 */
+ i_width_aligned = (i_width + 15) >> 4 << 4;
+ i_height_aligned = (i_height + 15) >> 4 << 4;
+
+ /* Calculate coordinates */
+ switch( vlc_fourcc_GetCodec( VIDEO_ES, i_chroma ) )
+ {
+ case VLC_CODEC_I411:
+ p_picture->p[ Y_PLANE ].i_lines = i_height_aligned;
+ p_picture->p[ Y_PLANE ].i_visible_lines = i_height;
+ p_picture->p[ Y_PLANE ].i_pitch = i_width_aligned;
+ p_picture->p[ Y_PLANE ].i_visible_pitch = i_width;
+ p_picture->p[ U_PLANE ].i_lines = i_height_aligned;
+ p_picture->p[ U_PLANE ].i_visible_lines = i_height;
+ p_picture->p[ U_PLANE ].i_pitch = i_width_aligned / 4;
+ p_picture->p[ U_PLANE ].i_visible_pitch = i_width / 4;
+ p_picture->p[ V_PLANE ].i_lines = i_height_aligned;
+ p_picture->p[ V_PLANE ].i_visible_lines = i_height;
+ p_picture->p[ V_PLANE ].i_pitch = i_width_aligned / 4;
+ p_picture->p[ V_PLANE ].i_visible_pitch = i_width / 4;
+ p_picture->i_planes = 3;
+ break;
+
+ case VLC_CODEC_I410:
+ p_picture->p[ Y_PLANE ].i_lines = i_height_aligned;
+ p_picture->p[ Y_PLANE ].i_visible_lines = i_height;
+ p_picture->p[ Y_PLANE ].i_pitch = i_width_aligned;
+ p_picture->p[ Y_PLANE ].i_visible_pitch = i_width;
+ p_picture->p[ U_PLANE ].i_lines = i_height_aligned / 4;
+ p_picture->p[ U_PLANE ].i_visible_lines = i_height / 4;
+ p_picture->p[ U_PLANE ].i_pitch = i_width_aligned / 4;
+ p_picture->p[ U_PLANE ].i_visible_pitch = i_width / 4;
+ p_picture->p[ V_PLANE ].i_lines = i_height_aligned / 4;
+ p_picture->p[ V_PLANE ].i_visible_lines = i_height / 4;
+ p_picture->p[ V_PLANE ].i_pitch = i_width_aligned / 4;
+ p_picture->p[ V_PLANE ].i_visible_pitch = i_width / 4;
+ p_picture->i_planes = 3;
+ break;
+
+ case VLC_CODEC_YV12:
+ case VLC_CODEC_I420:
+ case VLC_CODEC_J420:
+ p_picture->p[ Y_PLANE ].i_lines = i_height_aligned;
+ p_picture->p[ Y_PLANE ].i_visible_lines = i_height;
+ p_picture->p[ Y_PLANE ].i_pitch = i_width_aligned;
+ p_picture->p[ Y_PLANE ].i_visible_pitch = i_width;
+ p_picture->p[ U_PLANE ].i_lines = i_height_aligned / 2;
+ p_picture->p[ U_PLANE ].i_visible_lines = i_height / 2;
+ p_picture->p[ U_PLANE ].i_pitch = i_width_aligned / 2;
+ p_picture->p[ U_PLANE ].i_visible_pitch = i_width / 2;
+ p_picture->p[ V_PLANE ].i_lines = i_height_aligned / 2;
+ p_picture->p[ V_PLANE ].i_visible_lines = i_height / 2;
+ p_picture->p[ V_PLANE ].i_pitch = i_width_aligned / 2;
+ p_picture->p[ V_PLANE ].i_visible_pitch = i_width / 2;
+ p_picture->i_planes = 3;
+ break;
+
+ case VLC_CODEC_I422:
+ case VLC_CODEC_J422:
+ p_picture->p[ Y_PLANE ].i_lines = i_height_aligned;
+ p_picture->p[ Y_PLANE ].i_visible_lines = i_height;
+ p_picture->p[ Y_PLANE ].i_pitch = i_width_aligned;
+ p_picture->p[ Y_PLANE ].i_visible_pitch = i_width;
+ p_picture->p[ U_PLANE ].i_lines = i_height_aligned;
+ p_picture->p[ U_PLANE ].i_visible_lines = i_height;
+ p_picture->p[ U_PLANE ].i_pitch = i_width_aligned / 2;
+ p_picture->p[ U_PLANE ].i_visible_pitch = i_width / 2;
+ p_picture->p[ V_PLANE ].i_lines = i_height_aligned;
+ p_picture->p[ V_PLANE ].i_visible_lines = i_height;
+ p_picture->p[ V_PLANE ].i_pitch = i_width_aligned / 2;
+ p_picture->p[ V_PLANE ].i_visible_pitch = i_width / 2;
+ p_picture->i_planes = 3;
+ break;
+
+ case VLC_CODEC_I440:
+ case VLC_CODEC_J440:
+ p_picture->p[ Y_PLANE ].i_lines = i_height_aligned;
+ p_picture->p[ Y_PLANE ].i_visible_lines = i_height;
+ p_picture->p[ Y_PLANE ].i_pitch = i_width_aligned;
+ p_picture->p[ Y_PLANE ].i_visible_pitch = i_width;
+ p_picture->p[ U_PLANE ].i_lines = i_height_aligned / 2;
+ p_picture->p[ U_PLANE ].i_visible_lines = i_height / 2;
+ p_picture->p[ U_PLANE ].i_pitch = i_width_aligned;
+ p_picture->p[ U_PLANE ].i_visible_pitch = i_width;
+ p_picture->p[ V_PLANE ].i_lines = i_height_aligned / 2;
+ p_picture->p[ V_PLANE ].i_visible_lines = i_height / 2;
+ p_picture->p[ V_PLANE ].i_pitch = i_width_aligned;
+ p_picture->p[ V_PLANE ].i_visible_pitch = i_width;
+ p_picture->i_planes = 3;
+ break;
+
+ case VLC_CODEC_I444:
+ case VLC_CODEC_J444:
+ p_picture->p[ Y_PLANE ].i_lines = i_height_aligned;
+ p_picture->p[ Y_PLANE ].i_visible_lines = i_height;
+ p_picture->p[ Y_PLANE ].i_pitch = i_width_aligned;
+ p_picture->p[ Y_PLANE ].i_visible_pitch = i_width;
+ p_picture->p[ U_PLANE ].i_lines = i_height_aligned;
+ p_picture->p[ U_PLANE ].i_visible_lines = i_height;
+ p_picture->p[ U_PLANE ].i_pitch = i_width_aligned;
+ p_picture->p[ U_PLANE ].i_visible_pitch = i_width;
+ p_picture->p[ V_PLANE ].i_lines = i_height_aligned;
+ p_picture->p[ V_PLANE ].i_visible_lines = i_height;
+ p_picture->p[ V_PLANE ].i_pitch = i_width_aligned;
+ p_picture->p[ V_PLANE ].i_visible_pitch = i_width;
+ p_picture->i_planes = 3;
+ break;
+
+ case VLC_CODEC_YUVA:
+ p_picture->p[ Y_PLANE ].i_lines = i_height_aligned;
+ p_picture->p[ Y_PLANE ].i_visible_lines = i_height;
+ p_picture->p[ Y_PLANE ].i_pitch = i_width_aligned;
+ p_picture->p[ Y_PLANE ].i_visible_pitch = i_width;
+ p_picture->p[ U_PLANE ].i_lines = i_height_aligned;
+ p_picture->p[ U_PLANE ].i_visible_lines = i_height;
+ p_picture->p[ U_PLANE ].i_pitch = i_width_aligned;
+ p_picture->p[ U_PLANE ].i_visible_pitch = i_width;
+ p_picture->p[ V_PLANE ].i_lines = i_height_aligned;
+ p_picture->p[ V_PLANE ].i_visible_lines = i_height;
+ p_picture->p[ V_PLANE ].i_pitch = i_width_aligned;
+ p_picture->p[ V_PLANE ].i_visible_pitch = i_width;
+ p_picture->p[ A_PLANE ].i_lines = i_height_aligned;
+ p_picture->p[ A_PLANE ].i_visible_lines = i_height;
+ p_picture->p[ A_PLANE ].i_pitch = i_width_aligned;
+ p_picture->p[ A_PLANE ].i_visible_pitch = i_width;
+ p_picture->i_planes = 4;
+ break;
+
+ case VLC_CODEC_YUVP:
+ p_picture->p->i_lines = i_height_aligned;
+ p_picture->p->i_visible_lines = i_height;
+ p_picture->p->i_pitch = i_width_aligned;
+ p_picture->p->i_visible_pitch = i_width;
+ p_picture->p->i_pixel_pitch = 8;
+ p_picture->i_planes = 1;
+ break;
+
+ case VLC_CODEC_Y211:
+ p_picture->p->i_lines = i_height_aligned;
+ p_picture->p->i_visible_lines = i_height;
+ p_picture->p->i_pitch = i_width_aligned;
+ p_picture->p->i_visible_pitch = i_width;
+ p_picture->p->i_pixel_pitch = 4;
+ p_picture->i_planes = 1;
+ break;
+
+ case VLC_CODEC_UYVY:
+ case VLC_CODEC_VYUY:
+ case VLC_CODEC_YUYV:
+ case VLC_CODEC_YVYU:
+ p_picture->p->i_lines = i_height_aligned;
+ p_picture->p->i_visible_lines = i_height;
+ p_picture->p->i_pitch = i_width_aligned * 2;
+ p_picture->p->i_visible_pitch = i_width * 2;
+ p_picture->p->i_pixel_pitch = 4;
+ p_picture->i_planes = 1;
+ break;
+
+ case VLC_CODEC_RGB8:
+ p_picture->p->i_lines = i_height_aligned;
+ p_picture->p->i_visible_lines = i_height;
+ p_picture->p->i_pitch = i_width_aligned;
+ p_picture->p->i_visible_pitch = i_width;
+ p_picture->p->i_pixel_pitch = 1;
+ p_picture->i_planes = 1;
+ break;
+
+ case VLC_CODEC_RGB15:
+ p_picture->p->i_lines = i_height_aligned;
+ p_picture->p->i_visible_lines = i_height;
+ p_picture->p->i_pitch = i_width_aligned * 2;
+ p_picture->p->i_visible_pitch = i_width * 2;
+ p_picture->p->i_pixel_pitch = 2;
+ p_picture->i_planes = 1;
+ break;
+
+ case VLC_CODEC_RGB16:
+ p_picture->p->i_lines = i_height_aligned;
+ p_picture->p->i_visible_lines = i_height;
+ p_picture->p->i_pitch = i_width_aligned * 2;
+ p_picture->p->i_visible_pitch = i_width * 2;
+ p_picture->p->i_pixel_pitch = 2;
+ p_picture->i_planes = 1;
+ break;
+
+ case VLC_CODEC_RGB24:
+ p_picture->p->i_lines = i_height_aligned;
+ p_picture->p->i_visible_lines = i_height;
+ p_picture->p->i_pitch = i_width_aligned * 3;
+ p_picture->p->i_visible_pitch = i_width * 3;
+ p_picture->p->i_pixel_pitch = 3;
+ p_picture->i_planes = 1;
+ break;
+
+ case VLC_CODEC_RGB32:
+ case VLC_CODEC_RGBA:
+ p_picture->p->i_lines = i_height_aligned;
+ p_picture->p->i_visible_lines = i_height;
+ p_picture->p->i_pitch = i_width_aligned * 4;
+ p_picture->p->i_visible_pitch = i_width * 4;
+ p_picture->p->i_pixel_pitch = 4;
+ p_picture->i_planes = 1;
+ break;
+
+ case VLC_CODEC_GREY:
+ case VLC_CODEC_RGBP:
+ p_picture->p->i_lines = i_height_aligned;
+ p_picture->p->i_visible_lines = i_height;
+ p_picture->p->i_pitch = i_width_aligned;
+ p_picture->p->i_visible_pitch = i_width;
+ p_picture->p->i_pixel_pitch = 1;
+ p_picture->i_planes = 1;
+ break;
+
+ default:
+ p_picture->i_planes = 0;
+ return VLC_EGENERIC;
+ }
+
+ return VLC_SUCCESS;
+}
+
/*****************************************************************************
*
*****************************************************************************/
void picture_Delete( picture_t *p_picture )
{
assert( p_picture && p_picture->i_refcount == 0 );
+ assert( p_picture->p_release_sys == NULL );
free( p_picture->p_q );
free( p_picture->p_data_orig );
/*****************************************************************************
*
*****************************************************************************/
-
* Fourcc definitions that we can handle internally
*****************************************************************************/
-/* Packed RGB for 8bpp */
-#define FOURCC_BI_RGB 0x00000000
-#define FOURCC_RGB2 VLC_FOURCC('R','G','B','2')
-
-/* Packed RGB for 16, 24, 32bpp */
-#define FOURCC_BI_BITFIELDS 0x00000003
-
-/* Packed RGB 15bpp, usually 0x7c00, 0x03e0, 0x001f */
-#define FOURCC_RV15 VLC_FOURCC('R','V','1','5')
-
-/* Packed RGB 16bpp, usually 0xf800, 0x07e0, 0x001f */
-#define FOURCC_RV16 VLC_FOURCC('R','V','1','6')
-
-/* Packed RGB 24bpp, usually 0x00ff0000, 0x0000ff00, 0x000000ff */
-#define FOURCC_RV24 VLC_FOURCC('R','V','2','4')
-
-/* Packed RGB 32bpp, usually 0x00ff0000, 0x0000ff00, 0x000000ff */
-#define FOURCC_RV32 VLC_FOURCC('R','V','3','2')
-
-/* Packed RGBA 32bpp, like RV32 with 0xff000000 used for alpha */
-#define FOURCC_RGBA VLC_FOURCC('R','G','B','A')
-
-/* Planar YUV 4:2:0, Y:U:V */
-#define FOURCC_I420 VLC_FOURCC('I','4','2','0')
-#define FOURCC_IYUV VLC_FOURCC('I','Y','U','V')
-#define FOURCC_J420 VLC_FOURCC('J','4','2','0')
-
-/* Planar YUV 4:2:0, Y:V:U */
-#define FOURCC_YV12 VLC_FOURCC('Y','V','1','2')
-
-/* Packed YUV 4:2:2, U:Y:V:Y, interlaced */
-#define FOURCC_IUYV VLC_FOURCC('I','U','Y','V')
-
-/* Packed YUV 4:2:2, U:Y:V:Y */
-#define FOURCC_UYVY VLC_FOURCC('U','Y','V','Y')
-#define FOURCC_UYNV VLC_FOURCC('U','Y','N','V')
-#define FOURCC_Y422 VLC_FOURCC('Y','4','2','2')
-
-/* Packed YUV 4:2:2, U:Y:V:Y, reverted */
-#define FOURCC_cyuv VLC_FOURCC('c','y','u','v')
-
-/* Packed YUV 4:2:2, Y:U:Y:V */
-#define FOURCC_YUY2 VLC_FOURCC('Y','U','Y','2')
-#define FOURCC_YUNV VLC_FOURCC('Y','U','N','V')
-
-/* Packed YUV 4:2:2, Y:V:Y:U */
-#define FOURCC_YVYU VLC_FOURCC('Y','V','Y','U')
-
-/* Packed YUV 2:1:1, Y:U:Y:V */
-#define FOURCC_Y211 VLC_FOURCC('Y','2','1','1')
-
-/* Planar YUV 4:1:1, Y:U:V */
-#define FOURCC_I411 VLC_FOURCC('I','4','1','1')
-
-/* Planar YUV 4:1:0, Y:U:V */
-#define FOURCC_I410 VLC_FOURCC('I','4','1','0')
-#define FOURCC_YVU9 VLC_FOURCC('Y','V','U','9')
-
-/* Planar Y, packed UV, from Matrox */
-#define FOURCC_YMGA VLC_FOURCC('Y','M','G','A')
-
-/* Planar 4:2:2, Y:U:V */
-#define FOURCC_I422 VLC_FOURCC('I','4','2','2')
-#define FOURCC_J422 VLC_FOURCC('J','4','2','2')
-
-/* Planar 4:4:0, Y:U:V */
-#define FOURCC_I440 VLC_FOURCC('I','4','4','0')
-#define FOURCC_J440 VLC_FOURCC('J','4','4','0')
-
-/* Planar 4:4:4, Y:U:V */
-#define FOURCC_I444 VLC_FOURCC('I','4','4','4')
-#define FOURCC_J444 VLC_FOURCC('J','4','4','4')
-
-/* Planar 4:4:4:4 Y:U:V:A */
-#define FOURCC_YUVA VLC_FOURCC('Y','U','V','A')
-
-/* Palettized YUV with palette element Y:U:V:A */
-#define FOURCC_YUVP VLC_FOURCC('Y','U','V','P')
-
-/* Palettized RGB with palette element R:G:B */
-#define FOURCC_RGBP VLC_FOURCC('R','G','B','P')
-
-
-/* Planar 8-bit grayscale */
-#define FOURCC_GREY VLC_FOURCC('G','R','E','Y')
-#define FOURCC_Y800 VLC_FOURCC('Y','8','0','0')
-#define FOURCC_Y8 VLC_FOURCC('Y','8',' ',' ')
-
/* Alignment of critical dynamic data structure
*
* Not all platforms support memalign so we provide a vlc_memalign wrapper
/* Number of simultaneous subpictures */
#define VOUT_MAX_SUBPICTURES (VOUT_MAX_PICTURES)
-#define VLC_FOURCC_YUVP VLC_FOURCC('Y','U','V','P')
-#define VLC_FOURCC_YUVA VLC_FOURCC('Y','U','V','A')
-#define VLC_FOURCC_RGBA VLC_FOURCC('R','G','B','A')
-#define VLC_FOURCC_TEXT VLC_FOURCC('T','E','X','T')
-
/* */
typedef struct
{
p_region->fmt = *p_fmt;
p_region->fmt.p_palette = NULL;
- if( p_fmt->i_chroma == VLC_FOURCC_YUVP )
+ if( p_fmt->i_chroma == VLC_CODEC_YUVP )
{
p_region->fmt.p_palette = calloc( 1, sizeof(*p_region->fmt.p_palette) );
if( p_fmt->p_palette )
p_region->p_style = NULL;
p_region->p_picture = NULL;
- if( p_fmt->i_chroma == VLC_FOURCC_TEXT )
+ if( p_fmt->i_chroma == VLC_CODEC_TEXT )
return p_region;
p_region->p_picture = picture_New( p_fmt->i_chroma, p_fmt->i_width, p_fmt->i_height,
free( p_region->psz_text );
free( p_region->psz_html );
- //free( p_region->p_style ); FIXME --fenrir plugin does not allocate the memory for it. I think it might lead to segfault, video renderer can live longer than the decoder
+ if( p_region->p_style )
+ text_style_Delete( p_region->p_style );
free( p_region );
}
/* XXX p_spu->p_scale is used for all conversion/scaling except yuvp to
* yuva/rgba */
p_spu->p->p_scale = CreateAndLoadScale( VLC_OBJECT(p_spu),
- VLC_FOURCC_YUVA, VLC_FOURCC_YUVA, true );
+ VLC_CODEC_YUVA, VLC_CODEC_YUVA, true );
/* This one is used for YUVP to YUVA/RGBA without scaling
* FIXME rename it */
p_spu->p->p_scale_yuvp = CreateAndLoadScale( VLC_OBJECT(p_spu),
- VLC_FOURCC_YUVP, VLC_FOURCC_YUVA, false );
+ VLC_CODEC_YUVP, VLC_CODEC_YUVA, false );
}
static void SpuRenderText( spu_t *p_spu, bool *pb_rerender_text,
{
filter_t *p_text = p_spu->p->p_text;
- assert( p_region->fmt.i_chroma == VLC_FOURCC_TEXT );
+ assert( p_region->fmt.i_chroma == VLC_CODEC_TEXT );
if( !p_text || !p_text->p_module )
goto exit;
*p_area = spu_area_create( 0,0, 0,0, scale_size );
/* Render text region */
- if( p_region->fmt.i_chroma == VLC_FOURCC_TEXT )
+ if( p_region->fmt.i_chroma == VLC_CODEC_TEXT )
{
const int i_min_scale_ratio = SCALE_UNIT; /* FIXME what is the right value? (scale_size is not) */
SpuRenderText( p_spu, &b_rerender_text, p_subpic, p_region, i_min_scale_ratio );
b_restore_format = b_rerender_text;
/* Check if the rendering has failed ... */
- if( p_region->fmt.i_chroma == VLC_FOURCC_TEXT )
+ if( p_region->fmt.i_chroma == VLC_CODEC_TEXT )
goto exit;
}
* FIXME b_force_palette and b_force_crop are applied to all subpictures using palette
* instead of only the right one (being the dvd spu).
*/
- const bool b_using_palette = p_region->fmt.i_chroma == VLC_FOURCC_YUVP;
+ const bool b_using_palette = p_region->fmt.i_chroma == VLC_CODEC_YUVP;
const bool b_force_palette = b_using_palette && p_sys->b_force_palette;
const bool b_force_crop = b_force_palette && p_sys->b_force_crop;
bool b_changed_palette = false;
/* TODO converting to RGBA for RGB video output is better */
p_scale_yuvp->fmt_out.video = p_region->fmt;
- p_scale_yuvp->fmt_out.video.i_chroma = VLC_FOURCC_YUVA;
+ p_scale_yuvp->fmt_out.video.i_chroma = VLC_CODEC_YUVA;
p_picture = p_scale_yuvp->pf_video_filter( p_scale_yuvp, p_picture );
if( !p_picture )
test_libvlc_events \
test_libvlc_media_list \
test_libvlc_media_list_player \
- $(NULL)
-EXTRA_PROGRAMS = \
test_libvlc_media_player \
+ $(NULL)
+
+# Disabled test:
+# meta: No suitable test file
+EXTRA_PROGRAMS = \
test_libvlc_meta \
+ test_dummy \
$(NULL)
+
#check_DATA = samples/test.sample samples/meta.sample
EXTRA_DIST = samples/empty.voc
curl $(SAMPLES_SERVER)/metadata/id3tag/Wesh-Bonneville.mp3 > $@
CFLAGS_tests = `$(VLC_CONFIG) --cflags libvlc` -DSRCDIR=\"$(srcdir)\"
+LDFLAGS_tests = -no-install -static
test_libvlc_core_SOURCES = libvlc/core.c
test_libvlc_core_LDADD = $(top_builddir)/src/libvlc.la
test_libvlc_core_CFLAGS = $(CFLAGS_tests)
+test_libvlc_core_LDFLAGS = $(LDFLAGS_tests)
test_libvlc_events_SOURCES = libvlc/events.c
test_libvlc_events_LDADD = $(top_builddir)/src/libvlc.la
test_libvlc_events_CFLAGS = $(CFLAGS_tests)
+test_libvlc_events_LDFLAGS = $(LDFLAGS_tests)
test_libvlc_media_list_player_SOURCES = libvlc/media_list_player.c
test_libvlc_media_list_player_LDADD = $(top_builddir)/src/libvlc.la
test_libvlc_media_list_player_CFLAGS = $(CFLAGS_tests)
+test_libvlc_media_list_player_LDFLAGS = $(LDFLAGS_tests)
test_libvlc_media_list_SOURCES = libvlc/media_list.c
test_libvlc_media_list_LDADD = $(top_builddir)/src/libvlc.la
test_libvlc_media_list_CFLAGS = $(CFLAGS_tests)
+test_libvlc_media_list_LDFLAGS = $(LDFLAGS_tests)
test_libvlc_media_player_SOURCES = libvlc/media_player.c
test_libvlc_media_player_LDADD = $(top_builddir)/src/libvlc.la
test_libvlc_media_player_CFLAGS = $(CFLAGS_tests)
+test_libvlc_media_player_LDFLAGS = $(LDFLAGS_tests)
test_libvlc_meta_SOURCES = libvlc/meta.c
test_libvlc_meta_LDADD = $(top_builddir)/src/libvlc.la
test_libvlc_meta_CFLAGS = $(CFLAGS_tests)
+test_libvlc_meta_LDFLAGS = $(LDFLAGS_tests)
+
+test_dummy_SOURCES = libvlc/test.c
+test_dummy_LDADD = $(top_builddir)/src/libvlc.la
+test_dummy_CFLAGS = $(CFLAGS_tests)
+test_dummy_LDFLAGS = $(LDFLAGS_tests)
checkall:
$(MAKE) check_PROGRAMS="$(check_PROGRAMS) $(EXTRA_PROGRAMS)" check
vlc = libvlc_new (argc, argv, &ex);
catch ();
- libvlc_playlist_clear (vlc, &ex);
- catch ();
-
- id = libvlc_playlist_add_extended (vlc, "/dev/null", "Test", 0, NULL,
- &ex);
- catch ();
-
- libvlc_playlist_clear (vlc, &ex);
- catch ();
-
libvlc_retain (vlc);
libvlc_release (vlc);
libvlc_release (vlc);
#include "test.h"
+static void media_list_add_file_path(libvlc_instance_t *vlc, libvlc_media_list_t *ml, const char * file_path)
+{
+ libvlc_media_t *md = libvlc_media_new (vlc, file_path, &ex);
+ catch ();
+
+ libvlc_media_list_add_media (ml, md, &ex);
+ catch ();
+
+ libvlc_media_release (md);
+}
+
+static void test_media_list_player_next(const char** argv, int argc)
+{
+ libvlc_instance_t *vlc;
+ libvlc_media_t *md;
+ libvlc_media_list_t *ml;
+ libvlc_media_list_player_t *mlp;
+
+ const char * file = test_default_sample;
+
+ log ("Testing media player next()\n");
+
+ libvlc_exception_init (&ex);
+ vlc = libvlc_new (argc, argv, &ex);
+ catch ();
+
+ md = libvlc_media_new (vlc, file, &ex);
+ catch ();
+
+ ml = libvlc_media_list_new (vlc, &ex);
+ catch ();
+
+ mlp = libvlc_media_list_player_new (vlc, &ex);
+ catch ();
+
+ libvlc_media_list_add_media (ml, md, &ex);
+ catch ();
+
+ // Add three media
+ media_list_add_file_path (vlc, ml, file);
+ media_list_add_file_path (vlc, ml, file);
+ media_list_add_file_path (vlc, ml, file);
+
+ libvlc_media_list_player_set_media_list (mlp, ml, &ex);
+
+ libvlc_media_list_player_play_item (mlp, md, &ex);
+ catch ();
+
+ libvlc_media_release (md);
+
+ usleep(500000);
+
+ libvlc_media_list_player_next (mlp, &ex);
+ catch ();
+
+ libvlc_media_list_player_pause (mlp, &ex);
+ catch();
+
+ usleep(500000);
+
+ libvlc_media_list_player_next (mlp, &ex);
+ catch ();
+
+ libvlc_media_list_player_stop (mlp, &ex);
+ catch ();
+
+ usleep(500000);
+
+ libvlc_media_list_player_next (mlp, &ex);
+ catch ();
+
+ libvlc_media_list_player_release (mlp);
+ catch ();
+
+ libvlc_release (vlc);
+ catch ();
+}
+
static void test_media_list_player_pause_stop(const char** argv, int argc)
{
libvlc_instance_t *vlc;
const char * file = test_default_sample;
- log ("Testing play and pause of %s using the media list.\n", file);
+ log ("Testing play_item_at_index of %s using the media list.\n", file);
libvlc_exception_init (&ex);
vlc = libvlc_new (argc, argv, &ex);
test_media_list_player_pause_stop (test_defaults_args, test_defaults_nargs);
test_media_list_player_play_item_at_index (test_defaults_args, test_defaults_nargs);
+ if(0) // Core hangs here, because it doesn't support callback removal from callbacks (variable)
+ test_media_list_player_next (test_defaults_args, test_defaults_nargs);
+
return 0;
}
catch ();
} while( state != libvlc_Playing &&
state != libvlc_Error &&
- state != libvlc_MediaPlayerEndReached );
+ state != libvlc_Ended );
- assert( state == libvlc_Playing || state == libvlc_MediaPlayerEndReached );
+ assert( state == libvlc_Playing || state == libvlc_Ended );
libvlc_media_player_stop (mi, &ex);
catch ();
libvlc_media_player_t *mi;
const char * file = test_default_sample;
- log ("Testing play and pause of %s\n", file);
+ log ("Testing pause and stop of %s\n", file);
libvlc_exception_init (&ex);
vlc = libvlc_new (argc, argv, &ex);
libvlc_media_player_play (mi, &ex);
catch ();
+ log ("Waiting for playing\n");
+
/* Wait a correct state */
libvlc_state_t state;
do {
catch ();
} while( state != libvlc_Playing &&
state != libvlc_Error &&
- state != libvlc_MediaPlayerEndReached );
+ state != libvlc_Ended );
- assert( state == libvlc_Playing || state == libvlc_MediaPlayerEndReached );
+ assert( state == libvlc_Playing || state == libvlc_Ended );
+#if 0
+ /* This can't work because under some condition (short file, this is the case) this will be
+ * equivalent to a play() */
libvlc_media_player_pause (mi, &ex);
- assert( libvlc_media_player_get_state (mi, &ex) == libvlc_Paused );
catch();
+ log ("Waiting for pause\n");
+
+ /* Wait a correct state */
+ do {
+ state = libvlc_media_player_get_state (mi, &ex);
+ catch ();
+ } while( state != libvlc_Paused &&
+ state != libvlc_Error &&
+ state != libvlc_Ended );
+
+ assert( state == libvlc_Paused || state == libvlc_Ended );
+ catch();
+#endif
+
libvlc_media_player_stop (mi, &ex);
catch ();
* http://www.gnu.org/copyleft/gpl.html *
**********************************************************************/
+#include <strings.h>
+
#include "test.h"
static void test_meta (const char ** argv, int argc)
while (!libvlc_media_is_preparsed (media, &ex))
{
catch ();
- msleep (10000);
+ usleep (10000);
}
artist = libvlc_media_get_meta (media, libvlc_meta_Artist, &ex);
static libvlc_exception_t ex;
static const char * test_defaults_args[] = {
- "-vvv",
+ "-v",
"--ignore-config",
"-I",
"dummy",