]> git.sesse.net Git - vlc/commitdiff
Merge branch '1.0-bugfix'
authorRémi Duraffort <ivoire@videolan.org>
Tue, 26 May 2009 10:58:18 +0000 (12:58 +0200)
committerRémi Duraffort <ivoire@videolan.org>
Tue, 26 May 2009 11:15:26 +0000 (13:15 +0200)
556 files changed:
Makefile.am
NEWS
THANKS
bindings/python/MANIFEST.in [new file with mode: 0644]
bindings/python/setup-internal.py [deleted file]
bindings/python/setup.py
bindings/python/vlc_internal.c [deleted file]
bindings/python/vlc_internal.h [deleted file]
bindings/python/vlcwrapper.py [deleted file]
configure.ac
extras/contrib/Makefile
extras/contrib/src/Patches/gettext-win32.patch
extras/package/macosx/Info.plist.in
extras/package/macosx/Resources/English.lproj/MainMenu.nib/classes.nib [deleted file]
extras/package/macosx/Resources/English.lproj/MainMenu.nib/designable.nib [new file with mode: 0644]
extras/package/macosx/Resources/English.lproj/MainMenu.nib/info.nib [deleted file]
extras/package/macosx/Resources/English.lproj/MainMenu.nib/keyedobjects.nib
extras/package/macosx/Resources/English.lproj/VLM.nib/classes.nib [new file with mode: 0644]
extras/package/macosx/Resources/English.lproj/VLM.nib/info.nib [new file with mode: 0644]
extras/package/macosx/Resources/English.lproj/VLM.nib/keyedobjects.nib [new file with mode: 0644]
extras/package/macosx/Resources/a52.icns [deleted file]
extras/package/macosx/Resources/aac.icns [deleted file]
extras/package/macosx/Resources/aiff.icns [new file with mode: 0644]
extras/package/macosx/Resources/asf.icns [deleted file]
extras/package/macosx/Resources/asx.icns [deleted file]
extras/package/macosx/Resources/audio.icns [new file with mode: 0644]
extras/package/macosx/Resources/avi.icns [changed mode: 0755->0644]
extras/package/macosx/Resources/backward_big.png [new file with mode: 0644]
extras/package/macosx/Resources/backward_big_down.png [new file with mode: 0644]
extras/package/macosx/Resources/bin.icns [deleted file]
extras/package/macosx/Resources/cue.icns [deleted file]
extras/package/macosx/Resources/dat.icns [deleted file]
extras/package/macosx/Resources/divx.icns [deleted file]
extras/package/macosx/Resources/dv.icns [deleted file]
extras/package/macosx/Resources/eq_sm.pdf [new file with mode: 0644]
extras/package/macosx/Resources/flv.icns [new file with mode: 0644]
extras/package/macosx/Resources/forward_big.png [new file with mode: 0644]
extras/package/macosx/Resources/forward_big_down.png [new file with mode: 0644]
extras/package/macosx/Resources/fs_sm.pdf [new file with mode: 0644]
extras/package/macosx/Resources/generic.icns
extras/package/macosx/Resources/list_sm.pdf [new file with mode: 0644]
extras/package/macosx/Resources/m3u.icns [deleted file]
extras/package/macosx/Resources/m4a.icns [new file with mode: 0644]
extras/package/macosx/Resources/m4v.icns [new file with mode: 0644]
extras/package/macosx/Resources/mkv.icns [new file with mode: 0644]
extras/package/macosx/Resources/mov.icns [changed mode: 0755->0644]
extras/package/macosx/Resources/movie.icns [new file with mode: 0644]
extras/package/macosx/Resources/mp3.icns [changed mode: 0755->0644]
extras/package/macosx/Resources/mp4.icns [deleted file]
extras/package/macosx/Resources/mpeg.icns
extras/package/macosx/Resources/mpeg1.icns [deleted file]
extras/package/macosx/Resources/mpeg2.icns [deleted file]
extras/package/macosx/Resources/mpeg4.icns [deleted file]
extras/package/macosx/Resources/mpg.icns [deleted file]
extras/package/macosx/Resources/next_sm.pdf [new file with mode: 0644]
extras/package/macosx/Resources/ogg.icns [changed mode: 0755->0644]
extras/package/macosx/Resources/ogm.icns [deleted file]
extras/package/macosx/Resources/pause_big.png [new file with mode: 0644]
extras/package/macosx/Resources/pause_big_down.png [new file with mode: 0644]
extras/package/macosx/Resources/play_big.png [new file with mode: 0644]
extras/package/macosx/Resources/play_big_down.png [new file with mode: 0644]
extras/package/macosx/Resources/playlist.icns [new file with mode: 0644]
extras/package/macosx/Resources/pls.icns [deleted file]
extras/package/macosx/Resources/prev_sm.pdf [new file with mode: 0644]
extras/package/macosx/Resources/rm.icns [new file with mode: 0644]
extras/package/macosx/Resources/sidebarAdd.png [new file with mode: 0644]
extras/package/macosx/Resources/sidebarRepeat.png [new file with mode: 0644]
extras/package/macosx/Resources/sidebarRepeatOn.png [new file with mode: 0644]
extras/package/macosx/Resources/sidebarRepeatOneOn.png [new file with mode: 0644]
extras/package/macosx/Resources/sidebarResizeWidget.png [new file with mode: 0644]
extras/package/macosx/Resources/sidebarShuffle.png [new file with mode: 0644]
extras/package/macosx/Resources/sidebarShuffleOn.png [new file with mode: 0644]
extras/package/macosx/Resources/sidebarStatusAreaBackground.png [new file with mode: 0644]
extras/package/macosx/Resources/srt.icns [deleted file]
extras/package/macosx/Resources/stop_sm.pdf [new file with mode: 0644]
extras/package/macosx/Resources/sub.icns [deleted file]
extras/package/macosx/Resources/subtitle.icns [new file with mode: 0644]
extras/package/macosx/Resources/vob.icns [changed mode: 0755->0644]
extras/package/macosx/Resources/wav.icns [new file with mode: 0644]
extras/package/macosx/Resources/wma.icns [changed mode: 0755->0644]
extras/package/macosx/Resources/wmv.icns [changed mode: 0755->0644]
extras/package/macosx/vlc.xcodeproj/project.pbxproj
include/vlc/deprecated.h
include/vlc/libvlc.h
include/vlc/libvlc_events.h
include/vlc/libvlc_media.h [new file with mode: 0644]
include/vlc/libvlc_media_discoverer.h [new file with mode: 0644]
include/vlc/libvlc_media_library.h [new file with mode: 0644]
include/vlc/libvlc_media_list.h
include/vlc/libvlc_media_list_player.h [new file with mode: 0644]
include/vlc/libvlc_media_list_view.h [new file with mode: 0644]
include/vlc/libvlc_media_player.h [new file with mode: 0644]
include/vlc/libvlc_structures.h
include/vlc/vlc.h
include/vlc_aout.h
include/vlc_arrays.h
include/vlc_codec.h
include/vlc_codecs.h
include/vlc_common.h
include/vlc_es.h
include/vlc_filter.h
include/vlc_fourcc.h [new file with mode: 0644]
include/vlc_gcrypt.h
include/vlc_input.h
include/vlc_interface.h
include/vlc_keys.h
include/vlc_osd.h
include/vlc_picture.h [new file with mode: 0644]
include/vlc_playlist.h
include/vlc_subpicture.h [new file with mode: 0644]
include/vlc_threads.h
include/vlc_variables.h
include/vlc_vout.h
modules/access/alsa.c
modules/access/dc1394.c
modules/access/dshow/crossbar.cpp
modules/access/dshow/dshow.cpp
modules/access/dshow/filter.cpp
modules/access/dv.c
modules/access/jack.c
modules/access/oss.c
modules/access/qtcapture.m
modules/access/rtp/rtp.c
modules/access/rtp/xiph.c
modules/access/rtsp/real.c
modules/access/rtsp/real_sdpplin.c
modules/access/screen/beos.cpp
modules/access/screen/mac.c
modules/access/screen/screen.c
modules/access/screen/win32.c
modules/access/screen/x11.c
modules/access/v4l.c
modules/access/v4l2.c
modules/access/vcdx/Modules.am
modules/access/vcdx/access.c
modules/access/vcdx/access.h [new file with mode: 0644]
modules/access/vcdx/demux.c [deleted file]
modules/access/vcdx/info.c
modules/access/vcdx/info.h
modules/access/vcdx/intf.c [deleted file]
modules/access/vcdx/vcd.c
modules/access/vcdx/vcd.h
modules/access/vcdx/vcdplayer.c
modules/audio_filter/channel_mixer/dolby.c
modules/audio_filter/channel_mixer/headphone.c
modules/audio_filter/channel_mixer/mono.c
modules/audio_filter/channel_mixer/simple.c
modules/audio_filter/channel_mixer/trivial.c
modules/audio_filter/converter/a52tofloat32.c
modules/audio_filter/converter/a52tospdif.c
modules/audio_filter/converter/dtstofloat32.c
modules/audio_filter/converter/dtstospdif.c
modules/audio_filter/converter/fixed.c
modules/audio_filter/converter/float.c
modules/audio_filter/converter/mpgatofixed32.c
modules/audio_filter/equalizer.c
modules/audio_filter/format.c
modules/audio_filter/normvol.c
modules/audio_filter/param_eq.c
modules/audio_filter/resampler/bandlimited.c
modules/audio_filter/resampler/linear.c
modules/audio_filter/resampler/trivial.c
modules/audio_filter/resampler/ugly.c
modules/audio_filter/scaletempo.c
modules/audio_filter/spatializer/spatializer.cpp
modules/audio_mixer/float32.c
modules/audio_mixer/trivial.c
modules/audio_output/alsa.c
modules/audio_output/auhal.c
modules/audio_output/directx.c
modules/audio_output/file.c
modules/audio_output/hd1000a.cpp
modules/audio_output/jack.c
modules/audio_output/oss.c
modules/audio_output/portaudio.c
modules/audio_output/pulse.c
modules/audio_output/sdl.c
modules/audio_output/waveout.c
modules/codec/a52.c
modules/codec/adpcm.c
modules/codec/aes3.c
modules/codec/araw.c
modules/codec/avcodec/audio.c
modules/codec/avcodec/chroma.c
modules/codec/avcodec/deinterlace.c
modules/codec/avcodec/encoder.c
modules/codec/avcodec/fourcc.c
modules/codec/avcodec/video.c
modules/codec/cc.c
modules/codec/cdg.c
modules/codec/cmml/cmml.c
modules/codec/cmml/intf.c
modules/codec/csri.c
modules/codec/cvdsub.c
modules/codec/dirac.c
modules/codec/dmo/buffer.c
modules/codec/dmo/dmo.c
modules/codec/dts.c
modules/codec/dvbsub.c
modules/codec/faad.c
modules/codec/fake.c
modules/codec/flac.c
modules/codec/fluidsynth.c
modules/codec/invmem.c
modules/codec/kate.c
modules/codec/libass.c
modules/codec/libmpeg2.c
modules/codec/lpcm.c
modules/codec/mash.cpp
modules/codec/mpeg_audio.c
modules/codec/png.c
modules/codec/quicktime.c
modules/codec/rawvideo.c
modules/codec/realaudio.c
modules/codec/realvideo.c
modules/codec/schroedinger.c
modules/codec/sdl_image.c
modules/codec/shine/shine_mod.c
modules/codec/speex.c
modules/codec/spudec/parse.c
modules/codec/spudec/spudec.c
modules/codec/subtitles/subsass.c
modules/codec/subtitles/subsdec.c
modules/codec/subtitles/subsdec.h
modules/codec/subtitles/subsusf.c
modules/codec/subtitles/t140.c
modules/codec/svcdsub.c
modules/codec/tarkin.c
modules/codec/telx.c
modules/codec/theora.c
modules/codec/twolame.c
modules/codec/vorbis.c
modules/codec/wmafixed/wma.c
modules/codec/x264.c
modules/codec/xvmc/xxmc.c
modules/codec/zvbi.c
modules/control/dbus.c
modules/control/gestures.c
modules/control/hotkeys.c
modules/control/http/macro.c
modules/control/http/mvar.c
modules/control/http/rpn.c
modules/control/http/util.c
modules/control/ntservice.c
modules/control/rc.c
modules/demux/Modules.am
modules/demux/asf/asf.c
modules/demux/au.c
modules/demux/avformat/Modules.am
modules/demux/avformat/demux.c
modules/demux/avformat/mux.c
modules/demux/avi/avi.c
modules/demux/avi/libavi.h
modules/demux/cdg.c
modules/demux/dirac.c
modules/demux/flac.c
modules/demux/live555.cpp
modules/demux/mjpeg.c
modules/demux/mkv/Modules.am
modules/demux/mkv/matroska_segment.cpp
modules/demux/mpc.c
modules/demux/mpeg/es.c
modules/demux/mpeg/h264.c
modules/demux/mpeg/mpgv.c
modules/demux/nuv.c
modules/demux/ogg.c
modules/demux/ps.c
modules/demux/ps.h
modules/demux/pva.c
modules/demux/rawaud.c
modules/demux/rawdv.c
modules/demux/rawvid.c
modules/demux/smf.c
modules/demux/subtitle.c
modules/demux/subtitle_asa.c
modules/demux/ts.c
modules/demux/tta.c
modules/demux/ty.c
modules/demux/vc1.c
modules/demux/vobsub.c
modules/demux/vobsub.h [new file with mode: 0644]
modules/demux/voc.c
modules/demux/wav.c
modules/gui/beos/AudioOutput.cpp
modules/gui/beos/InterfaceWindow.cpp
modules/gui/beos/VideoWindow.h
modules/gui/fbosd.c
modules/gui/macosx/Modules.am
modules/gui/macosx/controls.h
modules/gui/macosx/controls.m
modules/gui/macosx/embeddedwindow.h
modules/gui/macosx/embeddedwindow.m
modules/gui/macosx/equalizer.h
modules/gui/macosx/equalizer.m
modules/gui/macosx/intf.h
modules/gui/macosx/intf.m
modules/gui/macosx/misc.m
modules/gui/macosx/playlist.h
modules/gui/macosx/playlist.m
modules/gui/macosx/playlistinfo.m
modules/gui/macosx/sidebarview.h [moved from modules/access/vcdx/intf.h with 55% similarity]
modules/gui/macosx/sidebarview.m [new file with mode: 0644]
modules/gui/macosx/sidestatusview.h [new file with mode: 0644]
modules/gui/macosx/sidestatusview.m [new file with mode: 0644]
modules/gui/macosx/simple_prefs.m
modules/gui/macosx/vlm.h [new file with mode: 0644]
modules/gui/macosx/vlm.m [new file with mode: 0644]
modules/gui/ncurses.c
modules/gui/pda/pda_callbacks.c
modules/gui/qnx/aout.c
modules/gui/qnx/vout.c
modules/gui/qt4/Modules.am
modules/gui/qt4/components/extended_panels.cpp
modules/gui/qt4/components/extended_panels.hpp
modules/gui/qt4/components/info_panels.hpp
modules/gui/qt4/components/interface_widgets.cpp
modules/gui/qt4/components/interface_widgets.hpp
modules/gui/qt4/components/playlist/playlist_model.cpp
modules/gui/qt4/dialogs/external.cpp
modules/gui/qt4/dialogs/external.hpp
modules/gui/qt4/dialogs/mediainfo.cpp
modules/gui/qt4/dialogs_provider.cpp
modules/gui/qt4/input_manager.cpp
modules/gui/qt4/input_manager.hpp
modules/gui/qt4/main_interface.cpp
modules/gui/qt4/main_interface.hpp
modules/gui/qt4/menus.cpp
modules/gui/qt4/qt4.cpp
modules/gui/qt4/qt4.hpp
modules/gui/qt4/recents.cpp
modules/gui/qt4/variables.cpp [new file with mode: 0644]
modules/gui/qt4/variables.hpp [new file with mode: 0644]
modules/gui/skins2/src/file_bitmap.cpp
modules/gui/skins2/src/skin_main.cpp
modules/gui/skins2/src/vlcproc.cpp
modules/gui/skins2/vars/playtree.cpp
modules/gui/wince/menus.cpp
modules/gui/wince/playlist.cpp
modules/gui/wince/preferences.cpp
modules/gui/wince/preferences_widgets.cpp
modules/misc/dummy/aout.c
modules/misc/dummy/vout.c
modules/misc/freetype.c
modules/misc/lua/libs/playlist.c
modules/misc/lua/libs/variables.c
modules/misc/notify/telepathy.c
modules/misc/osd/osd_menu.c
modules/misc/quartztext.c
modules/misc/rtsp.c
modules/misc/screensaver.c
modules/misc/stats/decoder.c
modules/misc/stats/encoder.c
modules/misc/stats/vout.c
modules/misc/svg.c
modules/misc/testsuite/test4.c
modules/misc/win32text.c
modules/mux/asf.c
modules/mux/avi.c
modules/mux/mp4.c
modules/mux/mpeg/pes.c
modules/mux/mpeg/ps.c
modules/mux/mpeg/ts.c
modules/mux/mpjpeg.c
modules/mux/ogg.c
modules/mux/wav.c
modules/packetizer/copy.c
modules/packetizer/dirac.c
modules/packetizer/h264.c
modules/packetizer/mlp.c
modules/packetizer/mpeg4audio.c
modules/packetizer/mpeg4video.c
modules/packetizer/mpegvideo.c
modules/packetizer/vc1.c
modules/stream_out/mosaic_bridge.c
modules/stream_out/raop.c
modules/stream_out/record.c
modules/stream_out/rtp.c
modules/stream_out/switcher.c
modules/stream_out/transcode.c
modules/stream_out/transrate/transrate.c
modules/video_chroma/grey_yuv.c
modules/video_chroma/i420_rgb.c
modules/video_chroma/i420_rgb16.c
modules/video_chroma/i420_rgb8.c
modules/video_chroma/i420_ymga.c
modules/video_chroma/i420_yuy2.c
modules/video_chroma/i422_i420.c
modules/video_chroma/i422_yuy2.c
modules/video_chroma/yuy2_i420.c
modules/video_chroma/yuy2_i422.c
modules/video_filter/adjust.c
modules/video_filter/alphamask.c
modules/video_filter/atmo/AtmoThread.cpp
modules/video_filter/atmo/atmo.cpp
modules/video_filter/blend.c
modules/video_filter/blendbench.c
modules/video_filter/bluescreen.c
modules/video_filter/canvas.c
modules/video_filter/chain.c
modules/video_filter/colorthres.c
modules/video_filter/crop.c
modules/video_filter/croppadd.c
modules/video_filter/deinterlace.c
modules/video_filter/dynamicoverlay/dynamicoverlay.c
modules/video_filter/dynamicoverlay/dynamicoverlay.h
modules/video_filter/dynamicoverlay/dynamicoverlay_commands.c
modules/video_filter/erase.c
modules/video_filter/extract.c
modules/video_filter/filter_picture.h
modules/video_filter/gaussianblur.c
modules/video_filter/gradient.c
modules/video_filter/grain.c
modules/video_filter/invert.c
modules/video_filter/logo.c
modules/video_filter/magnify.c
modules/video_filter/marq.c
modules/video_filter/mosaic.c
modules/video_filter/motionblur.c
modules/video_filter/motiondetect.c
modules/video_filter/noise.c
modules/video_filter/opencv_example.cpp
modules/video_filter/opencv_wrapper.c
modules/video_filter/osdmenu.c
modules/video_filter/panoramix.c
modules/video_filter/postproc.c
modules/video_filter/psychedelic.c
modules/video_filter/remoteosd.c
modules/video_filter/ripple.c
modules/video_filter/rotate.c
modules/video_filter/rss.c
modules/video_filter/rv32.c
modules/video_filter/scale.c
modules/video_filter/scene.c
modules/video_filter/sharpen.c
modules/video_filter/swscale.c
modules/video_filter/swscale_maemo.c
modules/video_filter/transform.c
modules/video_filter/wave.c
modules/video_filter/yuvp.c
modules/video_output/aa.c
modules/video_output/caca.c
modules/video_output/directfb.c
modules/video_output/fb.c
modules/video_output/ggi.c
modules/video_output/hd1000v.cpp
modules/video_output/mga.c
modules/video_output/msw/direct3d.c
modules/video_output/msw/directx.c
modules/video_output/msw/events.c
modules/video_output/msw/glwin32.c
modules/video_output/msw/vout.h
modules/video_output/msw/wingdi.c
modules/video_output/omapfb.c
modules/video_output/opengl.c
modules/video_output/opengllayer.m
modules/video_output/qte/qte.cpp
modules/video_output/sdl.c
modules/video_output/snapshot.c
modules/video_output/svgalib.c
modules/video_output/vmem.c
modules/video_output/x11/xcommon.c
modules/video_output/xcb/x11.c
modules/video_output/xcb/xvideo.c
modules/video_output/yuv.c
modules/visualization/galaktos/plugin.c
modules/visualization/goom.c
modules/visualization/visual/visual.c
projects/activex/README.TXT
projects/activex/dataobject.cpp
projects/activex/plugin.cpp
projects/activex/utils.cpp
projects/activex/vlccontrol.cpp
projects/activex/vlccontrol.h
projects/activex/vlccontrol2.cpp
projects/activex/vlccontrol2.h
projects/mozilla/control/npolibvlc.cpp
projects/mozilla/control/nporuntime.cpp
projects/mozilla/control/nporuntime.h
projects/mozilla/vlcplugin.cpp
projects/mozilla/vlcshell.cpp
src/Makefile.am
src/audio_output/common.c
src/audio_output/output.c
src/config/file.c
src/control/audio.c
src/control/event.c
src/control/flat_media_list_view.c
src/control/hierarchical_media_list_view.c
src/control/hierarchical_node_media_list_view.c
src/control/libvlc_internal.h
src/control/media.c
src/control/media_discoverer.c
src/control/media_internal.h [new file with mode: 0644]
src/control/media_library.c
src/control/media_list.c
src/control/media_list_internal.h [new file with mode: 0644]
src/control/media_list_path.h
src/control/media_list_player.c
src/control/media_list_view.c
src/control/media_list_view_internal.h [new file with mode: 0644]
src/control/media_player.c
src/control/media_player_internal.h [new file with mode: 0644]
src/control/mediacontrol_audio_video.c
src/control/playlist.c
src/control/video.c
src/control/vlm.c
src/input/control.c
src/input/decoder.c
src/input/demux.c
src/input/es_out.c
src/input/event.c
src/input/event.h
src/input/input.c
src/input/item.c
src/interface/interface.c
src/libvlc.c
src/libvlc.h
src/libvlc.sym
src/libvlccore.sym
src/misc/es_format.c
src/misc/fourcc.c [new file with mode: 0644]
src/misc/image.c
src/misc/objects.c
src/misc/pthread.c [new file with mode: 0644]
src/misc/threads.c
src/misc/variables.c
src/misc/w32thread.c [new file with mode: 0644]
src/modules/modules.c
src/osd/osd_text.c
src/osd/osd_widgets.c
src/playlist/engine.c
src/playlist/fetcher.c
src/playlist/item.c
src/playlist/playlist_internal.h
src/playlist/preparser.c
src/playlist/search.c
src/playlist/services_discovery.c
src/playlist/thread.c
src/playlist/tree.c
src/stream_output/stream_output.c
src/test/Makefile.am
src/test/headers.c
src/test/keys.c [new file with mode: 0644]
src/test/url.c
src/video_output/video_output.c
src/video_output/video_text.c
src/video_output/vout_intf.c
src/video_output/vout_pictures.c
src/video_output/vout_pictures.h
src/video_output/vout_subpictures.c
test/Makefile.am
test/libvlc/core.c
test/libvlc/media_list_player.c
test/libvlc/media_player.c
test/libvlc/meta.c
test/libvlc/test.h

index 398a5efc5ddcd10c71a6cf2b90ce4d32ce7194a7..fa3a571c88978eb1d335800f875a0127b0be65f8 100644 (file)
@@ -93,8 +93,7 @@ ChangeLog: Makefile.am
 ###############################################################################
 
 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 \
@@ -127,33 +126,25 @@ EXTRA_DIST += \
        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 \
@@ -251,6 +242,28 @@ EXTRA_DIST += \
        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 \
@@ -319,7 +332,10 @@ MAINTAINERCLEANFILES = ChangeLog
 # 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
diff --git a/NEWS b/NEWS
index 06ff7e1ae3cffb81dd4ccf2aa650c18a39d2561d..4e2610655c2f0b8843a1a3297207fd60553a57bc 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,10 @@
+Changes between 1.0.0-rc2 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-rc2:
 ------------------------------------
 
@@ -5,6 +12,7 @@ Important notes:
 ----------------
  * 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
@@ -101,8 +109,8 @@ Windows CE Port:
  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
diff --git a/THANKS b/THANKS
index 92204bcb3086b3aaf55924546b097b1206e77556..1a36daf488936a9355231339fdf5694ca9a82ddd 100644 (file)
--- a/THANKS
+++ b/THANKS
@@ -87,11 +87,13 @@ Dennis Lou <dlou99 at yahoo dot com> - ATSC support in the DVB module, MPEG2 sup
 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
diff --git a/bindings/python/MANIFEST.in b/bindings/python/MANIFEST.in
new file mode 100644 (file)
index 0000000..5e74474
--- /dev/null
@@ -0,0 +1,7 @@
+include vlcglue.h
+include vlc_mediacontrol.c
+include vlc_position.c
+include vlc_instance.c
+include vlc_mediaplayer.c
+include vlc_media.c
+include vlcwidget.py
diff --git a/bindings/python/setup-internal.py b/bindings/python/setup-internal.py
deleted file mode 100644 (file)
index 63009d2..0000000
+++ /dev/null
@@ -1,105 +0,0 @@
-from distutils.core import setup, Extension
-import os
-
-# Get build variables (buildir, srcdir)
-try:
-    top_builddir=os.environ['top_builddir']
-except KeyError:
-    # Note: do not initialize here, so that we get
-    # a correct default value if the env. var is
-    # defined but empty
-    top_builddir=None
-if not top_builddir:
-    top_builddir = os.path.join( '..', '..' )
-    os.environ['top_builddir'] = top_builddir
-
-try:
-    srcdir=os.environ['srcdir']
-except KeyError:
-    # Note: same as above
-    srcdir=None
-if not srcdir:
-    srcdir = '.'
-
-def get_vlcconfig():
-    vlcconfig=None
-    for n in ( 'vlc-config',
-               os.path.join( top_builddir, 'vlc-config' )):
-        if os.path.exists(n):
-            vlcconfig=n
-            break
-    if vlcconfig is None:
-        print "*** Warning *** Cannot find vlc-config"
-    elif os.sys.platform == 'win32':
-        # Win32 does not know how to invoke the shell itself.
-        vlcconfig="sh %s" % vlcconfig
-    return vlcconfig
-
-def get_vlc_version():
-    vlcconfig=get_vlcconfig()
-    if vlcconfig is None:
-        return ""
-    else:
-        version=os.popen('%s --version' % vlcconfig, 'r').readline().strip()
-        return version
-    
-def get_cflags():
-    vlcconfig=get_vlcconfig()
-    if vlcconfig is None:
-        return []
-    else:
-        cflags=os.popen('%s --cflags vlc' % vlcconfig, 'r').readline().rstrip().split()
-        return cflags
-
-def get_ldflags():
-    vlcconfig=get_vlcconfig()
-    if vlcconfig is None:
-        return []
-    else:
-       ldflags = []
-       if os.sys.platform == 'darwin':
-           ldflags = "-read_only_relocs warning".split()
-        ldflags.extend(os.popen('%s --libs vlc external' % vlcconfig,
-                               'r').readline().rstrip().split())
-       if os.sys.platform == 'darwin':
-           ldflags.append('-lstdc++')
-        return ldflags
-
-#source_files = [ 'vlc_module.c', 'vlc_object.c', 'vlc_mediacontrol.c',
-#                 'vlc_position.c', 'vlc_instance.c', 'vlc_input.c' ]
-source_files = [ 'vlc_internal.c' ]
-
-# To compile in a local vlc tree
-vlclocal = Extension('vlcinternal',
-                     sources = [ os.path.join( srcdir, f ) for f in source_files ],
-                     include_dirs = [ top_builddir,
-                                      os.path.join( srcdir, '..', '..', 'include' ),
-                                      srcdir,
-                                      '/usr/win32/include' ],
-                extra_objects = [ ],
-                extra_compile_args = get_cflags(),
-               extra_link_args = [ '-L' + os.path.join(top_builddir, 'src', '.libs') ]  + get_ldflags(),
-                )
-
-setup (name = 'VLC Internal Bindings',
-       version = get_vlc_version(),
-       #scripts = [ os.path.join( srcdir, 'vlcwrapper.py') ],
-       keywords = [ 'vlc', 'video' ],
-       license = "GPL", 
-       description = """VLC internal bindings for python.
-
-This module provides an Object type, which gives a low-level access to
-the vlc objects and their variables.
-
-Example session:
-
-import vlcinternal
-
-# Access lowlevel objets
-o=vlcinternal.Object(1)
-o.info()
-i=o.find_object('input')
-i.list()
-i.get('time')
-       """,
-       ext_modules = [ vlclocal ])
index 018e0809e03f72efc10a3cc557da36fb356ebad2..e26f71528d629b9c14ef5cb48a6deb187ada4a67 100644 (file)
@@ -1,5 +1,6 @@
 from distutils.core import setup, Extension
 import os
+import commands
 
 # Get build variables (buildir, srcdir)
 top_builddir = os.path.join( '..', '..' )
@@ -31,8 +32,11 @@ def get_vlcconfig():
         if os.path.exists(n):
             vlcconfig=n
             break
+    status, output = commands.getstatusoutput('pkg-config libvlc --exists')
+    if status == 0:
+        vlcconfig="pkg-config libvlc"
     if vlcconfig is None:
-        print "*** Warning *** Cannot find vlc-config"
+        print "*** Warning *** Cannot find vlc-config. Will try sane defaults."
     elif os.sys.platform == 'win32':
         # Win32 does not know how to invoke the shell itself.
         vlcconfig="sh %s" % vlcconfig
@@ -43,15 +47,15 @@ def get_vlc_version():
     if vlcconfig is None:
         return ""
     else:
-        version=os.popen('%s --version' % vlcconfig, 'r').readline().strip()
+        version=os.popen('%s --modversion' % vlcconfig, 'r').readline().strip()
         return version
-    
+
 def get_cflags():
     vlcconfig=get_vlcconfig()
     if vlcconfig is None:
         return []
     else:
-        cflags=os.popen('%s --cflags vlc' % vlcconfig, 'r').readline().rstrip().split()
+        cflags=os.popen('%s --cflags ' % vlcconfig, 'r').readline().strip()
         return cflags
 
 def get_ldflags():
@@ -62,14 +66,10 @@ def get_ldflags():
        ldflags = []
        if os.sys.platform == 'darwin':
            ldflags = "-read_only_relocs warning".split()
-        ldflags.extend(os.popen('%s --libs external' % vlcconfig,
-                               'r').readline().rstrip().split())
+        ldflags.extend(os.popen('%s --libs ' % vlcconfig,
+                                'r').readline().rstrip().split())
        if os.sys.platform == 'darwin':
            ldflags.append('-lstdc++')
-        if not libtool:
-            # vlc-config is broken and gives a -lvlc which
-            # does not exist if libtool is disabled.
-            ldflags.remove('-lvlc')
         return ldflags
 
 #source_files = [ 'vlc_module.c', 'vlc_mediacontrol.c',
@@ -78,33 +78,35 @@ source_files = [ 'vlc_module.c' ]
 
 # To compile in a local vlc tree
 vlclocal = Extension('vlc',
-               sources = [ os.path.join( srcdir, f ) for f in source_files ],
-               include_dirs = [ top_builddir,
-                             os.path.join( srcdir, '..', '..', 'include' ),
-                             srcdir,
-                             '/usr/win32/include' ],
-               extra_objects = [ ],
-                extra_compile_args = get_cflags(),
-               extra_link_args = linkargs + get_ldflags(),
-                )
-
-setup (name = 'VLC Bindings',
-       version = get_vlc_version(),
-       #scripts = [ os.path.join( srcdir, 'vlcwrapper.py') ],
+                     sources = [ os.path.join( srcdir, f ) for f in source_files ],
+                     include_dirs = [ top_builddir,
+                                      srcdir ],
+                     extra_objects = [ ],
+                     extra_compile_args = get_cflags(),
+                     extra_link_args = linkargs + get_ldflags(),
+                     )
+
+setup (name = 'python-vlc',
+       version = '1.0.0.90',
+       author='Olivier Aubert',
+       author_email='olivier.aubert@liris.cnrs.fr',
+       url='http://wiki.videolan.org/PythonBinding',
+       py_modules=['vlcwidget'],
        keywords = [ 'vlc', 'video' ],
-       license = "GPL", 
-       description = """VLC bindings for python.
+       license = "GPL",
+       description = "VLC bindings for python.",
+       long_description = """VLC bindings for python.
 
 This module provides bindings for the native libvlc API of the VLC
-video player. Documentation can be found on the VLC wiki : 
-http://wiki.videolan.org/index.php/ExternalAPI
+video player. Documentation can be found on the VLC wiki :
+http://wiki.videolan.org/ExternalAPI
 
 This module also provides a MediaControl object, which implements an
 API inspired from the OMG Audio/Video Stream 1.0 specification.
 Documentation can be found on the VLC wiki :
-http://wiki.videolan.org/index.php/PythonBinding
+http://wiki.videolan.org/PythonBinding
 
-Example session:
+Example session (for the MediaControl API):
 
 import vlc
 mc=vlc.MediaControl(['--verbose', '1'])
diff --git a/bindings/python/vlc_internal.c b/bindings/python/vlc_internal.c
deleted file mode 100644 (file)
index 073c001..0000000
+++ /dev/null
@@ -1,739 +0,0 @@
-/*****************************************************************************
- * vlc_internal.c: vlcinternal python binding module
- *****************************************************************************
- * Copyright (C) 2006 the VideoLAN team
- * $Id$
- *
- * Authors: Olivier Aubert <oaubert at bat710.univ-lyon1.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.
- *****************************************************************************/
-
-#include "vlc_internal.h"
-#include "../../src/libvlc.h"
-
-/**************************************************************************
- * VLC Module
- **************************************************************************/
-
-#ifndef vlcinternalMODINIT_FUNC /* declarations for DLL import/export */
-#define vlcinternalMODINIT_FUNC void
-#endif
-
-static PyMethodDef vlcinternal_methods[] = {
-    { NULL }  /* Sentinel */
-};
-
-vlcinternalMODINIT_FUNC
-initvlcinternal( void )
-{
-    PyObject* p_module;
-
-    p_module = Py_InitModule3( "vlcinternal", vlcinternal_methods,
-                               "VLC media player internal module" );
-
-    if( !p_module )
-      return;
-
-    if( PyType_Ready( &vlcObject_Type ) < 0 )
-        return;
-
-    /* Types */
-    Py_INCREF( &vlcObject_Type );
-    PyModule_AddObject( p_module, "Object",
-                        ( PyObject * )&vlcObject_Type );
-}
-
-
-/* Make libpostproc happy... */
-void * fast_memcpy( void * to, const void * from, size_t len )
-{
-  return memcpy( to, from, len );
-}
-
-/*****************************************************************************
- * VLCObject implementation
- *****************************************************************************/
-
-static PyObject
-*vlcObject_new( PyTypeObject *p_type, PyObject *p_args, PyObject *p_kwds )
-{
-    vlcObject *self;
-    vlc_object_t *p_object;
-    int i_id;
-
-    self = PyObject_New( vlcObject, &vlcObject_Type );
-
-    if( !PyArg_ParseTuple( p_args, "i", &i_id ) )
-      return NULL;
-
-    /* Maybe we were already initialized */
-    p_object = ( vlc_object_t* )vlc_current_object( i_id );
-
-    if( !p_object )
-    {
-        /* Try to initialize */
-        i_id = VLC_Create();
-        if( i_id < 0 )
-        {
-            PyErr_SetString( PyExc_StandardError, "Unable to create a VLC instance." );
-            return NULL;
-        }
-        p_object = ( vlc_object_t* )vlc_current_object( i_id );
-    }
-
-    if( !p_object )
-    {
-        PyErr_SetString( PyExc_StandardError, "Unable to get object." );
-        return NULL;
-    }
-
-    self->p_object = p_object;
-    self->b_released = 0;
-
-    Py_INCREF(  self ); /* Ah bon ? */
-    return ( PyObject * )self;
-}
-
-static PyObject *
-vlcObject_release(  PyObject *self, PyObject *p_args )
-{
-    if( (vlcObject*)self->b_released == 0 )
-    {
-        vlc_object_release( VLCOBJ(self) );
-        (vlcObject*)self->b_released = 1;
-    }
-    Py_INCREF(  Py_None );
-    return Py_None;
-}
-
-static void
-vlcObject_dealloc( PyObject *self )
-{
-    vlcObject_release( self, NULL );
-    PyObject_DEL( self );
-}
-
-static PyObject *
-vlcObject_find_object( PyObject *self, PyObject *args )
-{
-    vlcObject *p_retval;
-    vlc_object_t *p_obj;
-    char *psz_name;
-    int i_object_type;
-
-    if( !PyArg_ParseTuple( args, "s", &psz_name ) )
-        return NULL;
-
-    /* psz_name is in
-       ( aout, decoder, input, httpd, intf, playlist, root, vlc, vout )
-    */
-    if( !strncmp( psz_name, "aout", 4 ) )
-    {
-        i_object_type = VLC_OBJECT_AOUT;
-    }
-    else if (! strncmp( psz_name, "decoder", 7 ) )
-    {
-        i_object_type = VLC_OBJECT_DECODER;
-    }
-    else if (! strncmp( psz_name, "httpd", 5 ) )
-    {
-            i_object_type = VLC_OBJECT_HTTPD;
-    }
-    else if (! strncmp( psz_name, "intf", 4 ) )
-    {
-        i_object_type = VLC_OBJECT_INTF;
-    }
-    else if (! strncmp( psz_name, "input", 5 ) )
-    {
-        i_object_type = VLC_OBJECT_INPUT;
-    }
-    else if (! strncmp( psz_name, "playlist", 8 ) )
-    {
-        i_object_type = VLC_OBJECT_PLAYLIST;
-    }
-    else if (! strncmp( psz_name, "libvlc", 6 ) )
-    {
-        i_object_type = VLC_OBJECT_LIBVLC;
-    }
-    else if (! strncmp( psz_name, "vout", 4 ) )
-    {
-        i_object_type = VLC_OBJECT_VOUT;
-    }
-    else if (! strncmp( psz_name, "sout", 4 ) )
-    {
-        i_object_type = VLC_OBJECT_SOUT;
-    }
-    else if (! strncmp( psz_name, "global", 6 ) )
-    {
-        i_object_type = VLC_OBJECT_GLOBAL;
-    }
-    else if (! strncmp( psz_name, "packetizer", 10 ) )
-    {
-        i_object_type = VLC_OBJECT_PACKETIZER;
-    }
-    else if (! strncmp( psz_name, "encoder", 7 ) )
-    {
-        i_object_type = VLC_OBJECT_ENCODER;
-    }
-    else if (! strncmp( psz_name, "vlm", 3 ) )
-    {
-        i_object_type = VLC_OBJECT_VLM;
-    }
-    else if (! strncmp( psz_name, "announce", 8 ) )
-    {
-        i_object_type = VLC_OBJECT_ANNOUNCE;
-    }
-    else if (! strncmp( psz_name, "demux", 5 ) )
-    {
-        i_object_type = VLC_OBJECT_DEMUX;
-    }
-    else if (! strncmp( psz_name, "access", 6 ) )
-    {
-        i_object_type = VLC_OBJECT_ACCESS;
-    }
-    else if (! strncmp( psz_name, "stream", 6 ) )
-    {
-        i_object_type = VLC_OBJECT_STREAM;
-    }
-    else if (! strncmp( psz_name, "filter", 6 ) )
-    {
-        i_object_type = VLC_OBJECT_FILTER;
-    }
-    else if (! strncmp( psz_name, "vod", 3 ) )
-    {
-        i_object_type = VLC_OBJECT_VOD;
-    }
-    else if (! strncmp( psz_name, "xml", 3 ) )
-    {
-        i_object_type = VLC_OBJECT_XML;
-    }
-    else if (! strncmp( psz_name, "osdmenu", 7 ) )
-    {
-        i_object_type = VLC_OBJECT_OSDMENU;
-    }
-    else if (! strncmp( psz_name, "stats", 5 ) )
-    {
-        i_object_type = VLC_OBJECT_STATS;
-    }
-    else if (! strncmp( psz_name, "metaengine", 10 ) )
-    {
-        i_object_type = VLC_OBJECT_META_ENGINE;
-    }
-    else
-    {
-        /* FIXME: raise an exception ? */
-        Py_INCREF( Py_None );
-        return Py_None;
-    }
-
-    p_obj = vlc_object_find( VLCOBJ(self), i_object_type, FIND_ANYWHERE );
-
-    if( !p_obj )
-    {
-        Py_INCREF( Py_None );
-        return Py_None;
-    }
-
-    p_retval = PyObject_New( vlcObject, &vlcObject_Type );
-
-    p_retval->p_object = p_obj;
-
-    return ( PyObject * )p_retval;
-}
-
-static PyObject *
-vlcObject_find_name( PyObject *self, PyObject *args )
-{
-    vlcObject *p_retval;
-    vlc_object_t *p_obj;
-    char *psz_name;
-
-    if( !PyArg_ParseTuple( args, "s", &psz_name ) )
-        return NULL;
-
-    p_obj = vlc_object_find_name( VLCOBJ(self), psz_name, FIND_ANYWHERE );
-
-    if( !p_obj )
-    {
-        Py_INCREF( Py_None );
-        return Py_None;
-    }
-
-    p_retval = PyObject_New( vlcObject, &vlcObject_Type );
-
-    p_retval->p_object = p_obj;
-
-    return ( PyObject * )p_retval;
-}
-
-static PyObject *
-vlcObject_info( PyObject *self, PyObject *args )
-{
-    PyObject *p_retval;
-    vlc_object_t *p_obj;
-    vlc_object_internals_t *p_priv;
-    
-    p_obj = VLCOBJ(self);
-    p_priv = vlc_internals( p_obj );
-
-    /* Return information about the object as a dict. */
-    p_retval = PyDict_New();
-
-    PyDict_SetItemString( p_retval, "object-id",
-                          Py_BuildValue( "l", p_obj->i_object_id ) );
-    PyDict_SetItemString( p_retval, "object-type",
-                          Py_BuildValue( "s", p_obj->psz_object_type ) );
-    PyDict_SetItemString( p_retval, "object-name",
-                          Py_BuildValue( "s", p_obj->psz_object_name ) );
-    PyDict_SetItemString( p_retval, "thread",
-                          PyBool_FromLong( p_priv->b_thread ) );
-    PyDict_SetItemString( p_retval, "thread-id",
-                          PyLong_FromLongLong( p_priv->thread_id ) );
-    PyDict_SetItemString( p_retval, "refcount",
-                          PyInt_FromLong( p_priv->i_refcount ) );
-    return p_retval;
-}
-
-static PyObject *
-vlcObject_find_id( PyObject *self, PyObject *args )
-{
-    vlcObject *p_retval;
-    vlc_object_t* p_object;
-    int i_id;
-
-    if( !PyArg_ParseTuple( args, "i", &i_id ) )
-        return NULL;
-
-    p_object = ( vlc_object_t* )vlc_current_object( i_id );
-
-    if( !p_object )
-    {
-        Py_INCREF( Py_None );
-        return Py_None;
-    }
-
-    p_retval = PyObject_NEW( vlcObject, &vlcObject_Type );
-
-    p_retval->p_object = p_object;
-
-    return ( PyObject * )p_retval;
-}
-
-/* Do a var_Get call on the object. Parameter: the variable name. */
-static PyObject *
-vlcObject_var_get( PyObject *self, PyObject *args )
-{
-    PyObject *p_retval;
-    vlc_value_t value;
-    char *psz_name;
-    int i_type;
-
-    if( !PyArg_ParseTuple( args, "s", &psz_name ) )
-        return NULL;
-
-    if( var_Get( VLCOBJ(self), psz_name, &value ) != VLC_SUCCESS )
-    {
-        PyErr_SetString( PyExc_StandardError,
-                         "Error: variable does not exist.\n" );
-        return NULL;
-    }
-
-    i_type = var_Type ( VLCOBJ(self), psz_name );
-
-    switch ( i_type )
-    {
-    case VLC_VAR_VOID      :
-        p_retval = PyString_FromString( "A void variable" );
-        break;
-    case VLC_VAR_BOOL      :
-        p_retval = PyBool_FromLong( value.b_bool );
-        break;
-    case VLC_VAR_INTEGER   :
-        p_retval = PyInt_FromLong( ( long )value.i_int );
-        break;
-    case VLC_VAR_HOTKEY    :
-        p_retval = PyString_FromFormat( "A hotkey variable ( %d )", value.i_int );
-        break;
-    case VLC_VAR_FILE      :
-    case VLC_VAR_STRING    :
-    case VLC_VAR_DIRECTORY :
-    case VLC_VAR_VARIABLE  :
-        p_retval = PyString_FromString( value.psz_string );
-        break;
-    case VLC_VAR_MODULE   :
-        p_retval = ( PyObject* )PyObject_New( vlcObject, &vlcObject_Type );
-        ( ( vlcObject* )p_retval )->p_object = value.p_object;
-        break;
-    case VLC_VAR_FLOAT     :
-        p_retval = PyFloat_FromDouble( ( double )value.f_float );
-        break;
-    case VLC_VAR_TIME      :
-        p_retval = PyLong_FromLongLong( value.i_time );
-        break;
-    case VLC_VAR_ADDRESS   :
-        p_retval = PyString_FromString( "A VLC address ( not handled yet )" );
-        break;
-    case VLC_VAR_LIST      :
-        p_retval = PyString_FromString( "A VLC list ( not handled yet )" );
-        break;
-    case VLC_VAR_MUTEX :
-        p_retval = PyString_FromString( "A mutex" );
-        break;
-    default:
-        p_retval = Py_None;
-    }
-
-    Py_INCREF( p_retval );
-    return p_retval;
-}
-
-static PyObject *
-vlcObject_var_type( PyObject *self, PyObject *args )
-{
-    char *psz_name;
-    PyObject *p_retval;
-    int i_type;
-
-    if( !PyArg_ParseTuple( args, "s", &psz_name ) )
-        return NULL;
-
-    i_type = var_Type( VLCOBJ(self), psz_name );
-
-    switch ( i_type )
-    {
-    case VLC_VAR_VOID   :
-        p_retval = PyString_FromString( "Void" );
-        break;
-    case VLC_VAR_BOOL      :
-        p_retval = PyString_FromString( "Boolean" );
-        break;
-    case VLC_VAR_INTEGER   :
-        p_retval = PyString_FromString( "Integer" );
-        break;
-    case VLC_VAR_HOTKEY   :
-        p_retval = PyString_FromString( "Hotkey" );
-        break;
-    case VLC_VAR_FILE      :
-        p_retval = PyString_FromString( "File" );
-        break;
-    case VLC_VAR_STRING    :
-        p_retval = PyString_FromString( "String" );
-        break;
-    case VLC_VAR_DIRECTORY :
-        p_retval = PyString_FromString( "Directory" );
-        break;
-    case VLC_VAR_VARIABLE  :
-        p_retval = PyString_FromString( "Variable" );
-        break;
-    case VLC_VAR_MODULE   :
-        p_retval = PyString_FromString( "Module" );
-        break;
-    case VLC_VAR_FLOAT     :
-        p_retval = PyString_FromString( "Float" );
-        break;
-    case VLC_VAR_TIME      :
-        p_retval = PyString_FromString( "Time" );
-        break;
-    case VLC_VAR_ADDRESS   :
-        p_retval = PyString_FromString( "Address" );
-        break;
-    case VLC_VAR_LIST      :
-        p_retval = PyString_FromString( "List" );
-        break;
-    case VLC_VAR_MUTEX :
-        p_retval = PyString_FromString( "Mutex" );
-        break;
-    default:
-        p_retval = PyString_FromString( "Unknown" );
-    }
-    return p_retval;
-}
-
-/* Do a var_Set call on the object. Parameter: the variable name. */
-static PyObject *
-vlcObject_var_set( PyObject *self, PyObject *args )
-{
-    vlc_value_t value;
-    char *psz_name;
-    PyObject *py_value;
-    int i_type;
-    vlc_object_t *p_obj;
-
-    if( !PyArg_ParseTuple( args, "sO", &psz_name, &py_value ) )
-        return NULL;
-
-    p_obj = VLCOBJ(self);
-    i_type = var_Type( p_obj, psz_name );
-
-    switch ( i_type )
-    {
-    case VLC_VAR_VOID   :
-        break;
-    case VLC_VAR_BOOL      :
-        value.b_bool = PyInt_AsLong( py_value );
-        break;
-    case VLC_VAR_INTEGER   :
-    case VLC_VAR_HOTKEY   :
-        value.i_int = PyInt_AsLong( py_value );
-        break;
-    case VLC_VAR_FILE      :
-    case VLC_VAR_STRING    :
-    case VLC_VAR_DIRECTORY :
-    case VLC_VAR_VARIABLE  :
-        value.psz_string = strdup( PyString_AsString( py_value ) );
-        break;
-    case VLC_VAR_MODULE   :
-        /* FIXME: we should check the PyObject type and get its p_object */
-        value.p_object = ( ( vlcObject* )p_obj )->p_object;
-        break;
-    case VLC_VAR_FLOAT     :
-        value.f_float = PyFloat_AsDouble( py_value );
-        break;
-    case VLC_VAR_TIME      :
-        value.i_time = PyLong_AsLongLong( py_value );
-        break;
-    case VLC_VAR_ADDRESS   :
-        value.p_address = ( char* )PyLong_AsVoidPtr( py_value );
-        break;
-    case VLC_VAR_LIST      :
-        /* FIXME */
-        value.p_list = NULL;
-        break;
-    case VLC_VAR_MUTEX :
-        break;
-    }
-
-    var_Set( p_obj, psz_name, value );
-
-    Py_INCREF( Py_None );
-    return Py_None;
-}
-
-static PyObject *
-vlcObject_var_list( PyObject *self, PyObject *args )
-{
-    PyObject *p_retval;
-    Py_ssize_t i_size;
-    Py_ssize_t i_index;
-    vlc_object_internals_t *p_priv;
-
-    p_priv = vlc_internals( VLCOBJ(self) );
-    i_size = p_priv->i_vars;
-    p_retval = PyTuple_New( i_size );
-
-
-    for ( i_index = 0 ; i_index < i_size ; i_index++ )
-    {
-        PyTuple_SetItem( p_retval, i_index,
-                         Py_BuildValue( "s", p_priv->p_vars[i_index].psz_name ) );
-    }
-
-    return p_retval;
-}
-
-/* Do a config_Get call on the object. Parameter: the variable name. */
-static PyObject *
-vlcObject_config_get( PyObject *self, PyObject *args )
-{
-    PyObject *p_retval;
-    vlc_value_t value;
-    char *psz_name;
-    module_config_t *p_config;
-
-    if( !PyArg_ParseTuple( args, "s", &psz_name ) )
-        return NULL;
-
-    p_config = config_FindConfig( VLCOBJ(self), psz_name );
-
-    if( !p_config )
-    {
-        PyErr_SetString( PyExc_StandardError,
-                         "Error: config variable does not exist.\n" );
-        return NULL;
-    }
-
-    switch ( p_config->i_type )
-    {
-    case CONFIG_ITEM_BOOL      :
-        p_retval = PyBool_FromLong( p_config->value.i );
-        break;
-    case CONFIG_ITEM_INTEGER   :
-        p_retval = PyInt_FromLong( ( long )p_config->value.i );
-        break;
-    case CONFIG_ITEM_KEY   :
-        p_retval = PyString_FromFormat( "A hotkey variable ( %d )", p_config->value.i );
-        break;
-    case CONFIG_ITEM_FILE      :
-    case CONFIG_ITEM_STRING    :
-    case CONFIG_ITEM_DIRECTORY :
-    case CONFIG_ITEM_MODULE    :
-        vlc_mutex_lock( p_config->p_lock );
-        if( p_config->value.psz )
-            p_retval = PyString_FromString( p_config->value.psz );
-        else
-            p_retval = PyString_FromString( "" );
-        vlc_mutex_unlock( p_config->p_lock );
-        break;
-        p_retval = ( PyObject* )PyObject_New( vlcObject, &vlcObject_Type );
-        ( ( vlcObject* )p_retval )->p_object = value.p_object;
-        break;
-    case CONFIG_ITEM_FLOAT     :
-        p_retval = PyFloat_FromDouble( ( double )p_config->value.f );
-        break;
-    default:
-        p_retval = Py_None;
-        Py_INCREF( p_retval );
-    }
-
-    return p_retval;
-}
-
-/* Do a config_put* call on the object. Parameter: the variable name. */
-static PyObject *
-vlcObject_config_set( PyObject *self, PyObject *args )
-{
-    char *psz_name;
-    PyObject *py_value;
-    vlc_object_t *p_obj;
-    module_config_t *p_config;
-
-
-    if( !PyArg_ParseTuple( args, "sO", &psz_name, &py_value ) )
-        return NULL;
-
-    p_obj = VLCOBJ(self);
-    p_config = config_FindConfig( p_obj, psz_name );
-    /* sanity checks */
-    if( !p_config )
-    {
-        PyErr_SetString( PyExc_StandardError,
-                         "Error: option does not exist.\n" );
-        return NULL;
-    }
-
-    switch ( p_config->i_type )
-    {
-    case CONFIG_ITEM_BOOL      :
-    case CONFIG_ITEM_INTEGER   :
-    case CONFIG_ITEM_KEY       :
-        config_PutInt( p_obj, psz_name, PyInt_AsLong( py_value ) );
-        break;
-    case CONFIG_ITEM_FILE      :
-    case CONFIG_ITEM_STRING    :
-    case CONFIG_ITEM_DIRECTORY :
-    case CONFIG_ITEM_MODULE   :
-        config_PutPsz( p_obj, psz_name, PyString_AsString( py_value ) );
-        break;
-    case CONFIG_ITEM_FLOAT     :
-        config_PutFloat( p_obj, psz_name, PyFloat_AsDouble( py_value ) );
-        break;
-    }
-    Py_INCREF( Py_None );
-    return Py_None;
-}
-
-static PyObject *
-vlcObject_children( PyObject *self, PyObject *args )
-{
-    PyObject *p_retval;
-    Py_ssize_t i_size;
-    Py_ssize_t i_index;
-
-    i_size = VLCOBJ(self)->i_children;
-    p_retval = PyTuple_New( i_size );
-
-    for ( i_index = 0 ; i_index < i_size ; i_index++ )
-    {
-        PyTuple_SetItem( p_retval, i_index, Py_BuildValue( "i",
-            VLCOBJ(self)->pp_children[i_index]->i_object_id ) );
-    }
-
-    return p_retval;
-}
-
-
-/* Method table */
-static PyMethodDef vlcObject_methods[] =
-{
-    { "get", vlcObject_var_get, METH_VARARGS,
-      "get( str ) -> value   Get a variable value."},
-    { "set", vlcObject_var_set, METH_VARARGS,
-      "set( str, value )     Set a variable value" },
-    { "config_get", vlcObject_config_get, METH_VARARGS,
-      "config_get( str ) -> value   Get a configuration option." },
-    { "config_set", vlcObject_config_set, METH_VARARGS,
-      "config_set( str, value )     Set a configuration option" },
-    { "type", vlcObject_var_type, METH_VARARGS,
-      "type( str ) -> str     Get a variable type" },
-    { "list", vlcObject_var_list, METH_NOARGS,
-      "list( )             List the available variables" },
-    { "children", vlcObject_children, METH_NOARGS,
-      "children( )             List the children ids" },
-    { "find_object", vlcObject_find_object, METH_VARARGS,
-      "find_object( str ) -> Object     Find the object of a given type.\n\nAvailable types are : aout, decoder, input, httpd, intf, playlist, root, vlc, vout"},
-    { "find_id", vlcObject_find_id, METH_VARARGS,
-      "find_id( int ) -> Object      Find an object by id" },
-    { "find_name", vlcObject_find_name, METH_VARARGS,
-      "find_name( str ) -> Object      Find an object by name" },
-    { "info", vlcObject_info, METH_NOARGS,
-       "info( ) -> dict    Return information about the object" },
-    { "release", vlcObject_release, METH_NOARGS,
-      "release( ) ->     Release the VLC Object" },
-    { NULL, NULL, 0, NULL },
-};
-
-static PyTypeObject vlcObject_Type =
-{
-    PyObject_HEAD_INIT( NULL )
-    0,                         /*ob_size*/
-    "vlc.Object",       /*tp_name*/
-    sizeof( vlcObject_Type ), /*tp_basicsize*/
-    0,                         /*tp_itemsize*/
-    ( destructor )vlcObject_dealloc,      /*tp_dealloc*/
-    0,                         /*tp_print*/
-    0,                         /*tp_getattr*/
-    0,                         /*tp_setattr*/
-    0,                         /*tp_compare*/
-    0,                         /*tp_repr*/
-    0,                         /*tp_as_number*/
-    0,                         /*tp_as_sequence*/
-    0,                         /*tp_as_mapping*/
-    0,                         /*tp_hash */
-    0,                         /*tp_call*/
-    0,                         /*tp_str*/
-    0,                         /*tp_getattro*/
-    0,                         /*tp_setattro*/
-    0,                         /*tp_as_buffer*/
-    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, /*tp_flags*/
-    "Expose VLC object internal infrastructure.\n\nConstructor: vlc.Object(object_id)\n\nPLEASE BE AWARE that accessing internal features of VLC voids the guarantee for the product and is not advised except if you know what you are doing.",  /* tp_doc */
-    0,                     /* tp_traverse */
-    0,                     /* tp_clear */
-    0,                     /* tp_richcompare */
-    0,                     /* tp_weaklistoffset */
-    0,                     /* tp_iter */
-    0,                     /* tp_iternext */
-    vlcObject_methods,             /* tp_methods */
-    0,             /* tp_members */
-    0,                         /* tp_getset */
-    0,                         /* tp_base */
-    0,                         /* tp_dict */
-    0,                         /* tp_descr_get */
-    0,                         /* tp_descr_set */
-    0,                         /* tp_dictoffset */
-    0,                         /* tp_init */
-    0,                         /* tp_alloc */
-    vlcObject_new,          /* tp_new */
-};
diff --git a/bindings/python/vlc_internal.h b/bindings/python/vlc_internal.h
deleted file mode 100644 (file)
index 44f1260..0000000
+++ /dev/null
@@ -1,71 +0,0 @@
-/*****************************************************************************
- * vlc_internal.h: Header for the Python vlcinternal binding
- *****************************************************************************
- * Copyright (C) 1998-2004 the VideoLAN team
- * $Id$
- *
- * Authors: Olivier Aubert <oaubert at bat710.univ-lyon1.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.
- *****************************************************************************/
-#ifndef _VLCINTERNAL_H
-#define _VLCINTERNAL_H 1
-
-/* We need to access some internal features of VLC (for vlc_object) */
-/* This is gruik as we are not libvlc at all */
-#define __LIBVLC__
-
-#include <Python.h>
-#include "structmember.h"
-
-#include <stdio.h>
-#include <vlc/vlc.h>
-#include <vlc/libvlc.h>
-/* Even gruiker ! We access variable_t ! */
-#include "../../src/misc/variables.h"
-
-/* Python 2.5 64-bit support compatibility define */
-#if PY_VERSION_HEX < 0x02050000 && !defined(PY_SSIZE_T_MIN)
-typedef int Py_ssize_t;
-#define PY_SSIZE_T_MAX INT_MAX
-#define PY_SSIZE_T_MIN INT_MIN
-#endif
-
-/**********************************************************************
- * VLC Object
- **********************************************************************/
-#define VLCOBJ(self) (((vlcObject*)self)->p_object)
-
-/**********************************************************************
- * VLCObject Object
- **********************************************************************/
-typedef struct
-{
-    PyObject_HEAD
-    vlc_object_t* p_object;
-    int b_released;
-} vlcObject;
-
-/* Forward declarations */
-staticforward PyTypeObject vlcObject_Type;
-
-/* Long long conversion on Mac os X/ppc */
-#if defined (__ppc__) || defined(__ppc64__)
-#define ntohll(x) ((long long) x >> 64)
-#else
-#define ntohll(x) (x)
-#endif
-
-#endif
diff --git a/bindings/python/vlcwrapper.py b/bindings/python/vlcwrapper.py
deleted file mode 100644 (file)
index 9770aef..0000000
+++ /dev/null
@@ -1,79 +0,0 @@
-"""Wrapper around vlc module in order to ease the use of vlc.Object
-class (completion in ipython, access variable as attributes, etc).
-
-$Id$
-"""
-import vlc
-import vlcinternal
-
-class VLCObject(object):
-    def __init__(self, id):
-        object.__setattr__(self, '_o', vlcinternal.Object(id))
-
-    def find(self, typ):
-       """Returns a VLCObject for the given child.
-
-       See vlc.Object.find_object.__doc__ for the different values of typ.
-       """
-        t=self._o.find_object(typ)
-        if t is not None:
-            return VLCObject(t.info()['object-id'])
-        else:
-            return None
-
-    def __str__(self):
-       """Returns a string representation of the object.
-       """
-        i=self._o.info()
-        return "VLCObject %d (%s) : %s" % (i['object-id'],
-                                           i['object-type'],
-                                           i['object-name'])
-
-    def tree(self, prefix=" "):
-        """Displays all children as a tree of VLCObject
-       """
-        res=prefix + str(self) + "\n"
-        for i in self._o.children():
-            t=VLCObject(i)
-            res += t.tree(prefix=prefix + " ")
-        return res
-
-    def __getattribute__(self, attr):
-       """Converts attribute access to access to variables.
-       """
-        if attr == '__members__':
-           # Return the list of variables
-            o=object.__getattribute__(self, '_o')
-            l=dir(o)
-            l.extend([ n.replace('-','_') for n in o.list() ])
-            return l
-        try:
-            return object.__getattribute__ (self, attr)
-        except AttributeError, e:
-            try:
-                return self._o.__getattribute__ (attr)
-            except AttributeError, e:
-                attr=attr.replace('_', '-')
-                if attr in self._o.list():
-                    return self._o.get(attr)
-                else:
-                    raise e
-
-    def __setattr__(self, name, value):
-       """Handle attribute assignment.
-       """
-        n=name.replace('_', '-')
-        if n in self._o.list():
-            self._o.set(n, value)
-        else:
-            object.__setattr__(self, name, value)
-
-def test(f='/tmp/k.mpg'):
-    global mc,o
-    mc=vlc.MediaControl()
-    mc.playlist_add_item(f)
-    mc.start(0)
-    mc.pause(0)
-    o=VLCObject(0)
-    v=o.find('vout')
-
index 434da55102d8ee0f3490b3b705eabae61eadd68c..8603f46c58f8a63541261acac075fda34627f80a 100644 (file)
@@ -2,11 +2,11 @@ dnl Autoconf settings for vlc
 
 AC_COPYRIGHT([Copyright 2002-2009 the VideoLAN team])
 
-AC_INIT(vlc, 1.0.0-rc2)
+AC_INIT(vlc, 1.1.0-git)
 VERSION_MAJOR="1"
-VERSION_MINOR="0"
+VERSION_MINOR="1"
 VERSION_REVISION="0"
-VERSION_EXTRA="-rc2"
+VERSION_EXTRA="-git"
 PKGDIR="vlc"
 AC_SUBST(PKGDIR)
 
@@ -265,6 +265,8 @@ case "${host_os}" in
         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"
@@ -2024,28 +2026,28 @@ AC_ARG_ENABLE(dc1394,
   [  --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
@@ -2055,120 +2057,28 @@ AC_ARG_ENABLE(dv,
 [  --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
@@ -3990,7 +3900,7 @@ 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"
   ], [
@@ -4078,7 +3988,7 @@ dnl  XVMC module
 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"], [
@@ -4159,31 +4069,45 @@ CPPFLAGS="${CPPFLAGS_save}"
 
 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)
@@ -5024,7 +4948,7 @@ then
     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"],[
@@ -5043,7 +4967,7 @@ AC_ARG_ENABLE(qt4,
   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"
@@ -5373,18 +5297,6 @@ then
   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:])
 
index 4cc2aabba3f216fd545b182d8579b04c104bc909..c2f4391f0367c8a7f688b0985c0bfa2623c46e7e 100644 (file)
@@ -44,7 +44,7 @@ src: using-src
 
 ifdef HAVE_DARWIN_OS
 
-CONTRIBREV=1.0
+CONTRIBREV=7
 contrib-macosx-$(ARCH)-$(CONTRIBREV).tar.bz2:
        $(WGET) ftp://ftp.videolan.org/pub/videolan/testing/contrib/$@
 
index aafdd662f388080d495d9a4ae944df62ce01fe20..bd9c45d857398e0fff05b05c514703370f2eb0cf 100644 (file)
 -        "-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"
index f39248bd559f1ad209b16f17799215d99e9debc7..acd5cf01c55576ae0f10a1967baaefc8df0c0b0b 100644 (file)
@@ -22,7 +22,7 @@
                                <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>
@@ -34,7 +34,7 @@
                                <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>
@@ -46,7 +46,7 @@
                                <string>flac</string>
                        </array>
                        <key>CFBundleTypeIconFile</key>
-                       <string>generic.icns</string>
+                       <string>audio.icns</string>
                        <key>CFBundleTypeMIMETypes</key>
                        <array>
                                <string>audio/flac</string>
@@ -62,7 +62,7 @@
                                <string>xspf</string>
                        </array>
                        <key>CFBundleTypeIconFile</key>
-                       <string>Generic.icns</string>
+                       <string>playlist.icns</string>
                        <key>CFBundleTypeMIMETypes</key>
                        <array>
                                <string>application/xspf+xml</string>
@@ -79,7 +79,7 @@
                                <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>
diff --git a/extras/package/macosx/Resources/English.lproj/MainMenu.nib/classes.nib b/extras/package/macosx/Resources/English.lproj/MainMenu.nib/classes.nib
deleted file mode 100644 (file)
index 9da6695..0000000
+++ /dev/null
@@ -1,451 +0,0 @@
-{
-    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;
-                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_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
diff --git a/extras/package/macosx/Resources/English.lproj/MainMenu.nib/designable.nib b/extras/package/macosx/Resources/English.lproj/MainMenu.nib/designable.nib
new file mode 100644 (file)
index 0000000..a639d2a
--- /dev/null
@@ -0,0 +1,15819 @@
+<?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>
diff --git a/extras/package/macosx/Resources/English.lproj/MainMenu.nib/info.nib b/extras/package/macosx/Resources/English.lproj/MainMenu.nib/info.nib
deleted file mode 100644 (file)
index bf7d8ae..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-<?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>2709</integer>
-               <integer>2197</integer>
-               <integer>21</integer>
-               <integer>29</integer>
-               <integer>2416</integer>
-               <integer>3568</integer>
-       </array>
-       <key>IBSystem Version</key>
-       <string>9J61</string>
-       <key>targetFramework</key>
-       <string>IBCocoaFramework</string>
-</dict>
-</plist>
index a43ae8fdd863f6f168ec200db3d894ee2919b3ea..d530945d035e09cb3e5ec0e828844b01a146bc37 100644 (file)
Binary files a/extras/package/macosx/Resources/English.lproj/MainMenu.nib/keyedobjects.nib and b/extras/package/macosx/Resources/English.lproj/MainMenu.nib/keyedobjects.nib differ
diff --git a/extras/package/macosx/Resources/English.lproj/VLM.nib/classes.nib b/extras/package/macosx/Resources/English.lproj/VLM.nib/classes.nib
new file mode 100644 (file)
index 0000000..78fdd7b
--- /dev/null
@@ -0,0 +1,72 @@
+{
+    IBClasses =     (
+                {
+            CLASS = FirstResponder;
+            LANGUAGE = ObjC;
+            SUPERCLASS = NSObject;
+        },
+                {
+            CLASS = NSDatePicker;
+            LANGUAGE = ObjC;
+            SUPERCLASS = NSControl;
+        },
+                {
+            ACTIONS =             {
+                bcastButtonAction = id;
+                listDoubleClickAction = id;
+                schedButtonAction = id;
+                vodButtonAction = id;
+            };
+            CLASS = VLCVLMController;
+            LANGUAGE = ObjC;
+            OUTLETS =             {
+                "o_bcast_add_btn" = NSButton;
+                "o_bcast_box" = NSBox;
+                "o_bcast_cancel_btn" = NSButton;
+                "o_bcast_enable_ckb" = NSButton;
+                "o_bcast_input_btn" = NSButton;
+                "o_bcast_input_fld" = NSTextField;
+                "o_bcast_loop_ckb" = NSButton;
+                "o_bcast_name_fld" = NSTextField;
+                "o_bcast_output_btn" = NSButton;
+                "o_bcast_output_fld" = NSTextField;
+                "o_bcast_panel" = NSPanel;
+                "o_sched_add_btn" = id;
+                "o_sched_box" = id;
+                "o_sched_cancel_btn" = id;
+                "o_sched_date_datePicker" = NSDatePicker;
+                "o_sched_date_lbl" = NSTextField;
+                "o_sched_input_btn" = NSButton;
+                "o_sched_input_fld" = NSTextField;
+                "o_sched_input_lbl" = NSTextField;
+                "o_sched_name_fld" = NSTextField;
+                "o_sched_name_lbl" = NSTextField;
+                "o_sched_output_btn" = NSButton;
+                "o_sched_output_fld" = NSTextField;
+                "o_sched_output_lbl" = NSTextField;
+                "o_sched_panel" = NSPanel;
+                "o_sched_repeatDelay_datePicker" = NSDatePicker;
+                "o_sched_repeat_fld" = NSTextField;
+                "o_sched_repeat_lbl" = NSTextField;
+                "o_sched_time_box" = id;
+                "o_vlm_list" = NSTableView;
+                "o_vlm_win" = NSWindow;
+                "o_vod_add_btn" = NSButton;
+                "o_vod_box" = id;
+                "o_vod_cancel_btn" = NSButton;
+                "o_vod_input_btn" = NSButton;
+                "o_vod_input_fld" = NSTextField;
+                "o_vod_input_lbl" = NSTextField;
+                "o_vod_loop_ckb" = NSButton;
+                "o_vod_name_fld" = NSTextField;
+                "o_vod_name_lbl" = NSTextField;
+                "o_vod_output_btn" = NSButton;
+                "o_vod_output_fld" = NSTextField;
+                "o_vod_output_lbl" = NSTextField;
+                "o_vod_panel" = NSPanel;
+            };
+            SUPERCLASS = NSObject;
+        }
+    );
+    IBVersion = 1;
+}
\ No newline at end of file
diff --git a/extras/package/macosx/Resources/English.lproj/VLM.nib/info.nib b/extras/package/macosx/Resources/English.lproj/VLM.nib/info.nib
new file mode 100644 (file)
index 0000000..ea3c540
--- /dev/null
@@ -0,0 +1,19 @@
+<?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>609 119 356 240 0 0 1280 778 </string>
+       <key>IBFramework Version</key>
+       <string>489.0</string>
+       <key>IBOpenObjects</key>
+       <array>
+               <integer>5</integer>
+               <integer>106</integer>
+               <integer>65</integer>
+               <integer>30</integer>
+       </array>
+       <key>IBSystem Version</key>
+       <string>9E17</string>
+</dict>
+</plist>
diff --git a/extras/package/macosx/Resources/English.lproj/VLM.nib/keyedobjects.nib b/extras/package/macosx/Resources/English.lproj/VLM.nib/keyedobjects.nib
new file mode 100644 (file)
index 0000000..b078329
Binary files /dev/null and b/extras/package/macosx/Resources/English.lproj/VLM.nib/keyedobjects.nib differ
diff --git a/extras/package/macosx/Resources/a52.icns b/extras/package/macosx/Resources/a52.icns
deleted file mode 100755 (executable)
index d9eb679..0000000
Binary files a/extras/package/macosx/Resources/a52.icns and /dev/null differ
diff --git a/extras/package/macosx/Resources/aac.icns b/extras/package/macosx/Resources/aac.icns
deleted file mode 100755 (executable)
index 1f3940f..0000000
Binary files a/extras/package/macosx/Resources/aac.icns and /dev/null differ
diff --git a/extras/package/macosx/Resources/aiff.icns b/extras/package/macosx/Resources/aiff.icns
new file mode 100644 (file)
index 0000000..cadb183
Binary files /dev/null and b/extras/package/macosx/Resources/aiff.icns differ
diff --git a/extras/package/macosx/Resources/asf.icns b/extras/package/macosx/Resources/asf.icns
deleted file mode 100755 (executable)
index 863ae53..0000000
Binary files a/extras/package/macosx/Resources/asf.icns and /dev/null differ
diff --git a/extras/package/macosx/Resources/asx.icns b/extras/package/macosx/Resources/asx.icns
deleted file mode 100755 (executable)
index 723a57a..0000000
Binary files a/extras/package/macosx/Resources/asx.icns and /dev/null differ
diff --git a/extras/package/macosx/Resources/audio.icns b/extras/package/macosx/Resources/audio.icns
new file mode 100644 (file)
index 0000000..4cbd3a9
Binary files /dev/null and b/extras/package/macosx/Resources/audio.icns differ
old mode 100755 (executable)
new mode 100644 (file)
index e6f8343..639cde7
Binary files a/extras/package/macosx/Resources/avi.icns and b/extras/package/macosx/Resources/avi.icns differ
diff --git a/extras/package/macosx/Resources/backward_big.png b/extras/package/macosx/Resources/backward_big.png
new file mode 100644 (file)
index 0000000..99a8d47
Binary files /dev/null and b/extras/package/macosx/Resources/backward_big.png differ
diff --git a/extras/package/macosx/Resources/backward_big_down.png b/extras/package/macosx/Resources/backward_big_down.png
new file mode 100644 (file)
index 0000000..fd3a66d
Binary files /dev/null and b/extras/package/macosx/Resources/backward_big_down.png differ
diff --git a/extras/package/macosx/Resources/bin.icns b/extras/package/macosx/Resources/bin.icns
deleted file mode 100755 (executable)
index 78bfca7..0000000
Binary files a/extras/package/macosx/Resources/bin.icns and /dev/null differ
diff --git a/extras/package/macosx/Resources/cue.icns b/extras/package/macosx/Resources/cue.icns
deleted file mode 100755 (executable)
index f025cba..0000000
Binary files a/extras/package/macosx/Resources/cue.icns and /dev/null differ
diff --git a/extras/package/macosx/Resources/dat.icns b/extras/package/macosx/Resources/dat.icns
deleted file mode 100755 (executable)
index 43ded36..0000000
Binary files a/extras/package/macosx/Resources/dat.icns and /dev/null differ
diff --git a/extras/package/macosx/Resources/divx.icns b/extras/package/macosx/Resources/divx.icns
deleted file mode 100644 (file)
index c185bc5..0000000
Binary files a/extras/package/macosx/Resources/divx.icns and /dev/null differ
diff --git a/extras/package/macosx/Resources/dv.icns b/extras/package/macosx/Resources/dv.icns
deleted file mode 100755 (executable)
index fc7afca..0000000
Binary files a/extras/package/macosx/Resources/dv.icns and /dev/null differ
diff --git a/extras/package/macosx/Resources/eq_sm.pdf b/extras/package/macosx/Resources/eq_sm.pdf
new file mode 100644 (file)
index 0000000..7ed36d8
Binary files /dev/null and b/extras/package/macosx/Resources/eq_sm.pdf differ
diff --git a/extras/package/macosx/Resources/flv.icns b/extras/package/macosx/Resources/flv.icns
new file mode 100644 (file)
index 0000000..71d1bcd
Binary files /dev/null and b/extras/package/macosx/Resources/flv.icns differ
diff --git a/extras/package/macosx/Resources/forward_big.png b/extras/package/macosx/Resources/forward_big.png
new file mode 100644 (file)
index 0000000..34c8968
Binary files /dev/null and b/extras/package/macosx/Resources/forward_big.png differ
diff --git a/extras/package/macosx/Resources/forward_big_down.png b/extras/package/macosx/Resources/forward_big_down.png
new file mode 100644 (file)
index 0000000..b057270
Binary files /dev/null and b/extras/package/macosx/Resources/forward_big_down.png differ
diff --git a/extras/package/macosx/Resources/fs_sm.pdf b/extras/package/macosx/Resources/fs_sm.pdf
new file mode 100644 (file)
index 0000000..1c2312e
Binary files /dev/null and b/extras/package/macosx/Resources/fs_sm.pdf differ
index 11f979767b6d2dc20f39e2d96c79968fd9ed1158..0dfb2955fb34a40b02737834dbf05f02271b779f 100644 (file)
Binary files a/extras/package/macosx/Resources/generic.icns and b/extras/package/macosx/Resources/generic.icns differ
diff --git a/extras/package/macosx/Resources/list_sm.pdf b/extras/package/macosx/Resources/list_sm.pdf
new file mode 100644 (file)
index 0000000..a9951fc
Binary files /dev/null and b/extras/package/macosx/Resources/list_sm.pdf differ
diff --git a/extras/package/macosx/Resources/m3u.icns b/extras/package/macosx/Resources/m3u.icns
deleted file mode 100755 (executable)
index 81536d9..0000000
Binary files a/extras/package/macosx/Resources/m3u.icns and /dev/null differ
diff --git a/extras/package/macosx/Resources/m4a.icns b/extras/package/macosx/Resources/m4a.icns
new file mode 100644 (file)
index 0000000..048d476
Binary files /dev/null and b/extras/package/macosx/Resources/m4a.icns differ
diff --git a/extras/package/macosx/Resources/m4v.icns b/extras/package/macosx/Resources/m4v.icns
new file mode 100644 (file)
index 0000000..8fc8e8c
Binary files /dev/null and b/extras/package/macosx/Resources/m4v.icns differ
diff --git a/extras/package/macosx/Resources/mkv.icns b/extras/package/macosx/Resources/mkv.icns
new file mode 100644 (file)
index 0000000..cc5d13f
Binary files /dev/null and b/extras/package/macosx/Resources/mkv.icns differ
old mode 100755 (executable)
new mode 100644 (file)
index b5094f4..89d5525
Binary files a/extras/package/macosx/Resources/mov.icns and b/extras/package/macosx/Resources/mov.icns differ
diff --git a/extras/package/macosx/Resources/movie.icns b/extras/package/macosx/Resources/movie.icns
new file mode 100644 (file)
index 0000000..c4aca0c
Binary files /dev/null and b/extras/package/macosx/Resources/movie.icns differ
old mode 100755 (executable)
new mode 100644 (file)
index a9a3398..2e585a3
Binary files a/extras/package/macosx/Resources/mp3.icns and b/extras/package/macosx/Resources/mp3.icns differ
diff --git a/extras/package/macosx/Resources/mp4.icns b/extras/package/macosx/Resources/mp4.icns
deleted file mode 100755 (executable)
index 80fad12..0000000
Binary files a/extras/package/macosx/Resources/mp4.icns and /dev/null differ
index a3e984611101aac8ea7df9ba9ac2c41aed14fad2..38afbccf5168a8d4c8f161ea21f529c913a71492 100644 (file)
Binary files a/extras/package/macosx/Resources/mpeg.icns and b/extras/package/macosx/Resources/mpeg.icns differ
diff --git a/extras/package/macosx/Resources/mpeg1.icns b/extras/package/macosx/Resources/mpeg1.icns
deleted file mode 100644 (file)
index 96d1548..0000000
Binary files a/extras/package/macosx/Resources/mpeg1.icns and /dev/null differ
diff --git a/extras/package/macosx/Resources/mpeg2.icns b/extras/package/macosx/Resources/mpeg2.icns
deleted file mode 100644 (file)
index 11d0064..0000000
Binary files a/extras/package/macosx/Resources/mpeg2.icns and /dev/null differ
diff --git a/extras/package/macosx/Resources/mpeg4.icns b/extras/package/macosx/Resources/mpeg4.icns
deleted file mode 100644 (file)
index d0d5a97..0000000
Binary files a/extras/package/macosx/Resources/mpeg4.icns and /dev/null differ
diff --git a/extras/package/macosx/Resources/mpg.icns b/extras/package/macosx/Resources/mpg.icns
deleted file mode 100755 (executable)
index 2ec8d90..0000000
Binary files a/extras/package/macosx/Resources/mpg.icns and /dev/null differ
diff --git a/extras/package/macosx/Resources/next_sm.pdf b/extras/package/macosx/Resources/next_sm.pdf
new file mode 100644 (file)
index 0000000..92e1f5e
Binary files /dev/null and b/extras/package/macosx/Resources/next_sm.pdf differ
old mode 100755 (executable)
new mode 100644 (file)
index daab687..2d152ce
Binary files a/extras/package/macosx/Resources/ogg.icns and b/extras/package/macosx/Resources/ogg.icns differ
diff --git a/extras/package/macosx/Resources/ogm.icns b/extras/package/macosx/Resources/ogm.icns
deleted file mode 100755 (executable)
index efea453..0000000
Binary files a/extras/package/macosx/Resources/ogm.icns and /dev/null differ
diff --git a/extras/package/macosx/Resources/pause_big.png b/extras/package/macosx/Resources/pause_big.png
new file mode 100644 (file)
index 0000000..d348e77
Binary files /dev/null and b/extras/package/macosx/Resources/pause_big.png differ
diff --git a/extras/package/macosx/Resources/pause_big_down.png b/extras/package/macosx/Resources/pause_big_down.png
new file mode 100644 (file)
index 0000000..ec43de8
Binary files /dev/null and b/extras/package/macosx/Resources/pause_big_down.png differ
diff --git a/extras/package/macosx/Resources/play_big.png b/extras/package/macosx/Resources/play_big.png
new file mode 100644 (file)
index 0000000..6e70315
Binary files /dev/null and b/extras/package/macosx/Resources/play_big.png differ
diff --git a/extras/package/macosx/Resources/play_big_down.png b/extras/package/macosx/Resources/play_big_down.png
new file mode 100644 (file)
index 0000000..f11642d
Binary files /dev/null and b/extras/package/macosx/Resources/play_big_down.png differ
diff --git a/extras/package/macosx/Resources/playlist.icns b/extras/package/macosx/Resources/playlist.icns
new file mode 100644 (file)
index 0000000..0473b4b
Binary files /dev/null and b/extras/package/macosx/Resources/playlist.icns differ
diff --git a/extras/package/macosx/Resources/pls.icns b/extras/package/macosx/Resources/pls.icns
deleted file mode 100755 (executable)
index 7d759a5..0000000
Binary files a/extras/package/macosx/Resources/pls.icns and /dev/null differ
diff --git a/extras/package/macosx/Resources/prev_sm.pdf b/extras/package/macosx/Resources/prev_sm.pdf
new file mode 100644 (file)
index 0000000..83be8f4
Binary files /dev/null and b/extras/package/macosx/Resources/prev_sm.pdf differ
diff --git a/extras/package/macosx/Resources/rm.icns b/extras/package/macosx/Resources/rm.icns
new file mode 100644 (file)
index 0000000..8591996
Binary files /dev/null and b/extras/package/macosx/Resources/rm.icns differ
diff --git a/extras/package/macosx/Resources/sidebarAdd.png b/extras/package/macosx/Resources/sidebarAdd.png
new file mode 100644 (file)
index 0000000..836183d
Binary files /dev/null and b/extras/package/macosx/Resources/sidebarAdd.png differ
diff --git a/extras/package/macosx/Resources/sidebarRepeat.png b/extras/package/macosx/Resources/sidebarRepeat.png
new file mode 100644 (file)
index 0000000..cfde9b1
Binary files /dev/null and b/extras/package/macosx/Resources/sidebarRepeat.png differ
diff --git a/extras/package/macosx/Resources/sidebarRepeatOn.png b/extras/package/macosx/Resources/sidebarRepeatOn.png
new file mode 100644 (file)
index 0000000..4f2971b
Binary files /dev/null and b/extras/package/macosx/Resources/sidebarRepeatOn.png differ
diff --git a/extras/package/macosx/Resources/sidebarRepeatOneOn.png b/extras/package/macosx/Resources/sidebarRepeatOneOn.png
new file mode 100644 (file)
index 0000000..cb35ba6
Binary files /dev/null and b/extras/package/macosx/Resources/sidebarRepeatOneOn.png differ
diff --git a/extras/package/macosx/Resources/sidebarResizeWidget.png b/extras/package/macosx/Resources/sidebarResizeWidget.png
new file mode 100644 (file)
index 0000000..461fab4
Binary files /dev/null and b/extras/package/macosx/Resources/sidebarResizeWidget.png differ
diff --git a/extras/package/macosx/Resources/sidebarShuffle.png b/extras/package/macosx/Resources/sidebarShuffle.png
new file mode 100644 (file)
index 0000000..c469970
Binary files /dev/null and b/extras/package/macosx/Resources/sidebarShuffle.png differ
diff --git a/extras/package/macosx/Resources/sidebarShuffleOn.png b/extras/package/macosx/Resources/sidebarShuffleOn.png
new file mode 100644 (file)
index 0000000..154f84e
Binary files /dev/null and b/extras/package/macosx/Resources/sidebarShuffleOn.png differ
diff --git a/extras/package/macosx/Resources/sidebarStatusAreaBackground.png b/extras/package/macosx/Resources/sidebarStatusAreaBackground.png
new file mode 100644 (file)
index 0000000..cee17c3
Binary files /dev/null and b/extras/package/macosx/Resources/sidebarStatusAreaBackground.png differ
diff --git a/extras/package/macosx/Resources/srt.icns b/extras/package/macosx/Resources/srt.icns
deleted file mode 100755 (executable)
index 806e546..0000000
Binary files a/extras/package/macosx/Resources/srt.icns and /dev/null differ
diff --git a/extras/package/macosx/Resources/stop_sm.pdf b/extras/package/macosx/Resources/stop_sm.pdf
new file mode 100644 (file)
index 0000000..d45e0cc
Binary files /dev/null and b/extras/package/macosx/Resources/stop_sm.pdf differ
diff --git a/extras/package/macosx/Resources/sub.icns b/extras/package/macosx/Resources/sub.icns
deleted file mode 100755 (executable)
index 03b61d3..0000000
Binary files a/extras/package/macosx/Resources/sub.icns and /dev/null differ
diff --git a/extras/package/macosx/Resources/subtitle.icns b/extras/package/macosx/Resources/subtitle.icns
new file mode 100644 (file)
index 0000000..22daf4a
Binary files /dev/null and b/extras/package/macosx/Resources/subtitle.icns differ
old mode 100755 (executable)
new mode 100644 (file)
index 7581769..c5a05e1
Binary files a/extras/package/macosx/Resources/vob.icns and b/extras/package/macosx/Resources/vob.icns differ
diff --git a/extras/package/macosx/Resources/wav.icns b/extras/package/macosx/Resources/wav.icns
new file mode 100644 (file)
index 0000000..aec63ba
Binary files /dev/null and b/extras/package/macosx/Resources/wav.icns differ
old mode 100755 (executable)
new mode 100644 (file)
index e3ef361..42c51f1
Binary files a/extras/package/macosx/Resources/wma.icns and b/extras/package/macosx/Resources/wma.icns differ
old mode 100755 (executable)
new mode 100644 (file)
index 2b4f65d..3260773
Binary files a/extras/package/macosx/Resources/wmv.icns and b/extras/package/macosx/Resources/wmv.icns differ
index 6c1fa44e7efa2197bafda2f2e6b55547ed13873d..4d54cfae1a0d096a267468dc24e6cfd92ad2ba96 100644 (file)
                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 */
                                CC6EDD500B9CA2140096068A /* eyetv.m */,
                                CCB24D5E0D54BBAE004D780C /* simple_prefs.h */,
                                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 */,
index 2cb82e11034c42b79115efd043f41fdfd06aa1eb..93053490ec6c97ca53f7f33fb25a711b68ac0b16 100644 (file)
@@ -71,88 +71,6 @@ VLC_DEPRECATED_API void libvlc_media_player_set_drawable ( libvlc_media_player_t
 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)
  *****************************************************************************/
@@ -163,17 +81,6 @@ VLC_DEPRECATED_API int libvlc_video_destroy( libvlc_media_player_t *, libvlc_exc
  * @{
  */
 
-/**
- * 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.
  *
@@ -191,158 +98,6 @@ VLC_DEPRECATED_API void libvlc_playlist_loop( libvlc_instance_t* , int,
 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
index c4038a6ee91a9d41ae1f0545bf601108272d1f29..6a56774bb95eade041fcfc85962de338462add39 100644 (file)
@@ -58,6 +58,8 @@
 extern "C" {
 # endif
 
+#include <vlc/libvlc_structures.h>
+
 /*****************************************************************************
  * Exception handling
  *****************************************************************************/
@@ -233,1293 +235,72 @@ VLC_PUBLIC_API void libvlc_free( void *ptr );
 /** @}*/
 
 /*****************************************************************************
- * media
+ * Event handling
  *****************************************************************************/
-/** \defgroup libvlc_media libvlc_media
- * \ingroup libvlc
- * LibVLC Media
- * @{
- */
-
-/**
- * Create a media with the given MRL.
- *
- * \param p_instance the instance
- * \param psz_mrl the MRL to read
- * \param p_e an initialized exception pointer
- * \return the newly created media
- */
-VLC_PUBLIC_API libvlc_media_t * libvlc_media_new(
-                                   libvlc_instance_t *p_instance,
-                                   const char * psz_mrl,
-                                   libvlc_exception_t *p_e );
-
-/**
- * Create a media as an empty node with the passed name.
- *
- * \param p_instance the instance
- * \param psz_name the name of the node
- * \param p_e an initialized exception pointer
- * \return the new empty media
- */
-VLC_PUBLIC_API libvlc_media_t * libvlc_media_new_as_node(
-                                   libvlc_instance_t *p_instance,
-                                   const char * psz_name,
-                                   libvlc_exception_t *p_e );
-
-/**
- * Add an option to the media.
- *
- * This option will be used to determine how the media_player will
- * read the media. This allows to use VLC's advanced
- * reading/streaming options on a per-media basis.
- *
- * The options are detailed in vlc --long-help, for instance "--sout-all"
- *
- * \param p_instance the instance
- * \param ppsz_options the options (as a string)
- * \param p_e an initialized exception pointer
- */
-VLC_PUBLIC_API void libvlc_media_add_option(
-                                   libvlc_media_t * p_md,
-                                   const char * ppsz_options,
-                                   libvlc_exception_t * p_e );
-/**
- * Add an option to the media from an untrusted source.
- *
- * This option will be used to determine how the media_player will
- * read the media. This allows to use VLC's advanced
- * reading/streaming options on a per-media basis.
- *
- * The options are detailed in vlc --long-help, for instance "--sout-all"
- *
- * \param p_instance the instance
- * \param ppsz_options the options (as a string)
- * \param p_e an initialized exception pointer
- */
-VLC_PUBLIC_API void libvlc_media_add_option_untrusted(
-                                   libvlc_media_t * p_md,
-                                   const char * ppsz_options,
-                                   libvlc_exception_t * p_e );
-
-
-/**
- * Retain a reference to a media descriptor object (libvlc_media_t). Use
- * libvlc_media_release() to decrement the reference count of a
- * media descriptor object.
- *
- * \param p_meta_desc a media descriptor object.
- */
-VLC_PUBLIC_API void libvlc_media_retain(
-                                   libvlc_media_t *p_meta_desc );
-
-/**
- * Decrement the reference count of a media descriptor object. If the
- * reference count is 0, then libvlc_media_release() will release the
- * media descriptor object. It will send out an libvlc_MediaFreed event
- * to all listeners. If the media descriptor object has been released it
- * should not be used again.
- *
- * \param p_meta_desc a media descriptor object.
- */
-VLC_PUBLIC_API void libvlc_media_release(
-                                   libvlc_media_t *p_meta_desc );
-
-
-/**
- * Get the media resource locator (mrl) from a media descriptor object
- *
- * \param p_md a media descriptor object
- * \param p_e an initialized exception object
- * \return string with mrl of media descriptor object
- */
-VLC_PUBLIC_API char * libvlc_media_get_mrl( libvlc_media_t * p_md,
-                                                       libvlc_exception_t * p_e );
-
-/**
- * Duplicate a media descriptor object.
- *
- * \param p_meta_desc a media descriptor object.
- */
-VLC_PUBLIC_API libvlc_media_t * libvlc_media_duplicate( libvlc_media_t * );
-
-/**
- * Read the meta of the media.
- *
- * \param p_meta_desc the media to read
- * \param e_meta_desc the meta to read
- * \param p_e an initialized exception pointer
- * \return the media's meta
- */
-VLC_PUBLIC_API char * libvlc_media_get_meta(
-                                   libvlc_media_t *p_meta_desc,
-                                   libvlc_meta_t e_meta,
-                                   libvlc_exception_t *p_e );
-/**
- * Get current state of media descriptor object. Possible media states
- * are defined in libvlc_structures.c ( libvlc_NothingSpecial=0,
- * libvlc_Opening, libvlc_Buffering, libvlc_Playing, libvlc_Paused,
- * libvlc_Stopped, libvlc_Ended,
- * libvlc_Error).
- *
- * @see libvlc_state_t
- * \param p_meta_desc a media descriptor object
- * \param p_e an initialized exception object
- * \return state of media descriptor object
- */
-VLC_PUBLIC_API libvlc_state_t libvlc_media_get_state(
-                                   libvlc_media_t *p_meta_desc,
-                                   libvlc_exception_t *p_e );
-
-/**
- * Get subitems of media descriptor object. This will increment
- * the reference count of supplied media descriptor object. Use
- * libvlc_media_list_release() to decrement the reference counting.
- *
- * \param p_md media descriptor object
- * \param p_e initalized exception object
- * \return list of media descriptor subitems or NULL
- */
-VLC_PUBLIC_API libvlc_media_list_t *
-    libvlc_media_subitems( libvlc_media_t *p_md,
-                                      libvlc_exception_t *p_e );
-/**
- * Get event manager from media descriptor object.
- * NOTE: this function doesn't increment reference counting.
- *
- * \param p_md a media descriptor object
- * \param p_e an initialized exception object
- * \return event manager object
- */
-VLC_PUBLIC_API libvlc_event_manager_t *
-    libvlc_media_event_manager( libvlc_media_t * p_md,
-                                           libvlc_exception_t * p_e );
-
-/**
- * Get duration of media descriptor object item.
- *
- * \param p_md media descriptor object
- * \param p_e an initialized exception object
- * \return duration of media item
- */
-VLC_PUBLIC_API libvlc_time_t
-   libvlc_media_get_duration( libvlc_media_t * p_md,
-                                         libvlc_exception_t * p_e );
-
-/**
- * Get preparsed status for media descriptor object.
- *
- * \param p_md media descriptor object
- * \param p_e an initialized exception object
- * \return true if media object has been preparsed otherwise it returns false
- */
-VLC_PUBLIC_API int
-   libvlc_media_is_preparsed( libvlc_media_t * p_md,
-                                         libvlc_exception_t * p_e );
-
-/**
- * Sets media descriptor's user_data. user_data is specialized data
- * accessed by the host application, VLC.framework uses it as a pointer to
- * an native object that references a libvlc_media_t pointer
- *
- * \param p_md media descriptor object
- * \param p_new_user_data pointer to user data
- * \param p_e an initialized exception object
- */
-VLC_PUBLIC_API void
-    libvlc_media_set_user_data( libvlc_media_t * p_md,
-                                           void * p_new_user_data,
-                                           libvlc_exception_t * p_e);
-
-/**
- * Get media descriptor's user_data. user_data is specialized data
- * accessed by the host application, VLC.framework uses it as a pointer to
- * an native object that references a libvlc_media_t pointer
- *
- * \param p_md media descriptor object
- * \param p_e an initialized exception object
- */
-VLC_PUBLIC_API void *
-    libvlc_media_get_user_data( libvlc_media_t * p_md,
-                                           libvlc_exception_t * p_e);
-
-/** @}*/
 
-/*****************************************************************************
- * Media Player
- *****************************************************************************/
-/** \defgroup libvlc_media_player libvlc_media_player
- * \ingroup libvlc
- * LibVLC Media Player, object that let you play a media
- * in a custom drawable
+/** \defgroup libvlc_event libvlc_event
+ * \ingroup libvlc_core
+ * LibVLC Events
  * @{
  */
 
 /**
- * Create an empty Media Player object
- *
- * \param p_libvlc_instance the libvlc instance in which the Media Player
- *        should be created.
- * \param p_e an initialized exception pointer
- */
-VLC_PUBLIC_API libvlc_media_player_t * libvlc_media_player_new( libvlc_instance_t *, libvlc_exception_t * );
-
-/**
- * Create a Media Player object from a Media
- *
- * \param p_md the media. Afterwards the p_md can be safely
- *        destroyed.
- * \param p_e an initialized exception pointer
- */
-VLC_PUBLIC_API libvlc_media_player_t * libvlc_media_player_new_from_media( libvlc_media_t *, libvlc_exception_t * );
-
-/**
- * Release a media_player after use
- * Decrement the reference count of a media player object. If the
- * reference count is 0, then libvlc_media_player_release() will
- * release the media player object. If the media player object
- * has been released, then it should not be used again.
- *
- * \param p_mi the Media Player to free
- */
-VLC_PUBLIC_API void libvlc_media_player_release( libvlc_media_player_t * );
-
-/**
- * Retain a reference to a media player object. Use
- * libvlc_media_player_release() to decrement reference count.
- *
- * \param p_mi media player object
- */
-VLC_PUBLIC_API void libvlc_media_player_retain( libvlc_media_player_t * );
-
-/**
- * Set the media that will be used by the media_player. If any,
- * previous md will be released.
- *
- * \param p_mi the Media Player
- * \param p_md the Media. Afterwards the p_md can be safely
- *        destroyed.
- * \param p_e an initialized exception pointer
- */
-VLC_PUBLIC_API void libvlc_media_player_set_media( libvlc_media_player_t *, libvlc_media_t *, libvlc_exception_t * );
-
-/**
- * Get the media used by the media_player.
- *
- * \param p_mi the Media Player
- * \param p_e an initialized exception pointer
- * \return the media associated with p_mi, or NULL if no
- *         media is associated
- */
-VLC_PUBLIC_API libvlc_media_t * libvlc_media_player_get_media( libvlc_media_player_t *, libvlc_exception_t * );
-
-/**
- * Get the Event Manager from which the media player send event.
- *
- * \param p_mi the Media Player
- * \param p_e an initialized exception pointer
- * \return the event manager associated with p_mi
- */
-VLC_PUBLIC_API libvlc_event_manager_t * libvlc_media_player_event_manager ( libvlc_media_player_t *, libvlc_exception_t * );
-
-/**
- * is_playing
- *
- * \param p_mi the Media Player
- * \param p_e an initialized exception pointer
- * \return 1 if the media player is playing, 0 otherwise
- */
-VLC_PUBLIC_API int libvlc_media_player_is_playing ( libvlc_media_player_t *, libvlc_exception_t * );
-
-/**
- * Play
- *
- * \param p_mi the Media Player
- * \param p_e an initialized exception pointer
- */
-VLC_PUBLIC_API void libvlc_media_player_play ( libvlc_media_player_t *, libvlc_exception_t * );
-
-/**
- * Pause
- *
- * \param p_mi the Media Player
- * \param p_e an initialized exception pointer
- */
-VLC_PUBLIC_API void libvlc_media_player_pause ( libvlc_media_player_t *, libvlc_exception_t * );
-
-/**
- * Stop
- *
- * \param p_mi the Media Player
- * \param p_e an initialized exception pointer
- */
-VLC_PUBLIC_API void libvlc_media_player_stop ( libvlc_media_player_t *, libvlc_exception_t * );
-
-/**
- * Set the agl handler where the media player should render its video output.
- *
- * \param p_mi the Media Player
- * \param drawable the agl handler
- * \param p_e an initialized exception pointer
- */
-VLC_PUBLIC_API void libvlc_media_player_set_nsobject ( libvlc_media_player_t *p_mi, void * drawable, libvlc_exception_t *p_e );
-
-/**
- * Get the agl handler previously set with libvlc_media_player_set_agl().
- *
- * \return the agl handler or 0 if none where set
- */
-VLC_PUBLIC_API uint32_t libvlc_media_player_get_nsobject ( libvlc_media_player_t *p_mi );
-       
-/**
- * Set the agl handler where the media player should render its video output.
- *
- * \param p_mi the Media Player
- * \param drawable the agl handler
- * \param p_e an initialized exception pointer
- */
-VLC_PUBLIC_API void libvlc_media_player_set_agl ( libvlc_media_player_t *p_mi, uint32_t drawable, libvlc_exception_t *p_e );
-
-/**
- * Get the agl handler previously set with libvlc_media_player_set_agl().
- *
- * \return the agl handler or 0 if none where set
- */
-VLC_PUBLIC_API uint32_t libvlc_media_player_get_agl ( libvlc_media_player_t *p_mi );
-
-/**
- * Set an X Window System drawable where the media player should render its
- * video output. If LibVLC was built without X11 output support, then this has
- * no effects.
- *
- * The specified identifier must correspond to an existing Input/Output class
- * X11 window. Pixmaps are <b>not</b> supported. The caller shall ensure that
- * the X11 server is the same as the one the VLC instance has been configured
- * with.
- * If XVideo is <b>not</b> used, it is assumed that the drawable has the
- * following properties in common with the default X11 screen: depth, scan line
- * pad, black pixel. This is a bug.
- *
- * \param p_mi the Media Player
- * \param drawable the ID of the X window
- * \param p_e an initialized exception pointer
- */
-VLC_PUBLIC_API void libvlc_media_player_set_xwindow ( libvlc_media_player_t *p_mi, uint32_t drawable, libvlc_exception_t *p_e );
-
-/**
- * Get the X Window System window identifier previously set with
- * libvlc_media_player_set_xwindow(). Note that this will return the identifier
- * even if VLC is not currently using it (for instance if it is playing an
- * audio-only input).
- *
- * \return an X window ID, or 0 if none where set.
- */
-VLC_PUBLIC_API uint32_t libvlc_media_player_get_xwindow ( libvlc_media_player_t *p_mi );
-
-/**
- * Set a Win32/Win64 API window handle (HWND) where the media player should
- * render its video output. If LibVLC was built without Win32/Win64 API output
- * support, then this has no effects.
- *
- * \param p_mi the Media Player
- * \param drawable windows handle of the drawable
- * \param p_e an initialized exception pointer
- */
-VLC_PUBLIC_API void libvlc_media_player_set_hwnd ( libvlc_media_player_t *p_mi, void *drawable, libvlc_exception_t *p_e );
-
-/**
- * Get the Windows API window handle (HWND) previously set with
- * libvlc_media_player_set_hwnd(). The handle will be returned even if LibVLC
- * is not currently outputting any video to it.
- *
- * \return a window handle or NULL if there are none.
- */
-VLC_PUBLIC_API void *libvlc_media_player_get_hwnd ( libvlc_media_player_t *p_mi );
-
-
-
-/** \bug This might go away ... to be replaced by a broader system */
-
-/**
- * Get the current movie length (in ms).
- *
- * \param p_mi the Media Player
- * \param p_e an initialized exception pointer
- * \return the movie length (in ms).
- */
-VLC_PUBLIC_API libvlc_time_t libvlc_media_player_get_length( libvlc_media_player_t *, libvlc_exception_t *);
-
-/**
- * Get the current movie time (in ms).
- *
- * \param p_mi the Media Player
- * \param p_e an initialized exception pointer
- * \return the movie time (in ms).
- */
-VLC_PUBLIC_API libvlc_time_t libvlc_media_player_get_time( libvlc_media_player_t *, libvlc_exception_t *);
-
-/**
- * Set the movie time (in ms).
- *
- * \param p_mi the Media Player
- * \param the movie time (in ms).
- * \param p_e an initialized exception pointer
- */
-VLC_PUBLIC_API void libvlc_media_player_set_time( libvlc_media_player_t *, libvlc_time_t, libvlc_exception_t *);
-
-/**
- * Get movie position.
- *
- * \param p_mi the Media Player
- * \param p_e an initialized exception pointer
- * \return movie position
- */
-VLC_PUBLIC_API float libvlc_media_player_get_position( libvlc_media_player_t *, libvlc_exception_t *);
-
-/**
- * Set movie position.
- *
- * \param p_mi the Media Player
- * \param p_e an initialized exception pointer
- * \return movie position
- */
-VLC_PUBLIC_API void libvlc_media_player_set_position( libvlc_media_player_t *, float, libvlc_exception_t *);
-
-/**
- * Set movie chapter
- *
- * \param p_mi the Media Player
- * \param i_chapter chapter number to play
- * \param p_e an initialized exception pointer
- */
-VLC_PUBLIC_API void libvlc_media_player_set_chapter( libvlc_media_player_t *, int, libvlc_exception_t *);
-
-/**
- * Get movie chapter
- *
- * \param p_mi the Media Player
- * \param p_e an initialized exception pointer
- * \return chapter number currently playing
- */
-VLC_PUBLIC_API int libvlc_media_player_get_chapter( libvlc_media_player_t *, libvlc_exception_t * );
-
-/**
- * Get movie chapter count
- *
- * \param p_mi the Media Player
- * \param p_e an initialized exception pointer
- * \return number of chapters in movie
- */
-VLC_PUBLIC_API int libvlc_media_player_get_chapter_count( libvlc_media_player_t *, libvlc_exception_t *);
-VLC_PUBLIC_API int libvlc_media_player_will_play        ( libvlc_media_player_t *, libvlc_exception_t *);
-
-/**
- * Get title chapter count
- *
- * \param p_mi the Media Player
- * \param i_title title
- * \param p_e an initialized exception pointer
- * \return number of chapters in title
+ * Event manager that belongs to a libvlc object, and from whom events can
+ * be received.
  */
-VLC_PUBLIC_API int libvlc_media_player_get_chapter_count_for_title(
-                       libvlc_media_player_t *, int, libvlc_exception_t *);
 
+typedef struct libvlc_event_manager_t libvlc_event_manager_t;
+typedef struct libvlc_event_t libvlc_event_t;
+typedef uint32_t libvlc_event_type_t;
+    
 /**
- * Set movie title
- *
- * \param p_mi the Media Player
- * \param i_title title number to play
- * \param p_e an initialized exception pointer
+ * Callback function notification
+ * \param p_event the event triggering the callback
  */
-VLC_PUBLIC_API void libvlc_media_player_set_title( libvlc_media_player_t *, int, libvlc_exception_t *);
 
+typedef void ( *libvlc_callback_t )( const libvlc_event_t *, void * );
+    
 /**
- * Get movie title
+ * Register for an event notification.
  *
- * \param p_mi the Media Player
+ * \param p_event_manager the event manager to which you want to attach to.
+ *        Generally it is obtained by vlc_my_object_event_manager() where
+ *        my_object is the object you want to listen to.
+ * \param i_event_type the desired event to which we want to listen
+ * \param f_callback the function to call when i_event_type occurs
+ * \param user_data user provided data to carry with the event
  * \param p_e an initialized exception pointer
- * \return title number currently playing
  */
-VLC_PUBLIC_API int libvlc_media_player_get_title( libvlc_media_player_t *, libvlc_exception_t *);
+VLC_PUBLIC_API void libvlc_event_attach( libvlc_event_manager_t *p_event_manager,
+                                         libvlc_event_type_t i_event_type,
+                                         libvlc_callback_t f_callback,
+                                         void *user_data,
+                                         libvlc_exception_t *p_e );
 
 /**
- * Get movie title count
+ * Unregister an event notification.
  *
- * \param p_mi the Media Player
+ * \param p_event_manager the event manager
+ * \param i_event_type the desired event to which we want to unregister
+ * \param f_callback the function to call when i_event_type occurs
+ * \param p_user_data user provided data to carry with the event
  * \param p_e an initialized exception pointer
- * \return title number count
  */
-VLC_PUBLIC_API int libvlc_media_player_get_title_count( libvlc_media_player_t *, libvlc_exception_t *);
+VLC_PUBLIC_API void libvlc_event_detach( libvlc_event_manager_t *p_event_manager,
+                                         libvlc_event_type_t i_event_type,
+                                         libvlc_callback_t f_callback,
+                                         void *p_user_data,
+                                         libvlc_exception_t *p_e );
 
 /**
- * Set previous chapter
+ * Get an event's type name.
  *
- * \param p_mi the Media Player
- * \param p_e an initialized exception pointer
+ * \param i_event_type the desired event
  */
-VLC_PUBLIC_API void libvlc_media_player_previous_chapter( libvlc_media_player_t *, libvlc_exception_t *);
-
-/**
- * Set next chapter
- *
- * \param p_mi the Media Player
- * \param p_e an initialized exception pointer
- */
-VLC_PUBLIC_API void libvlc_media_player_next_chapter( libvlc_media_player_t *, libvlc_exception_t *);
-
-/**
- * Get movie play rate
- *
- * \param p_mi the Media Player
- * \param p_e an initialized exception pointer
- * \return movie play rate
- */
-VLC_PUBLIC_API float libvlc_media_player_get_rate( libvlc_media_player_t *, libvlc_exception_t *);
-
-/**
- * Set movie play rate
- *
- * \param p_mi the Media Player
- * \param movie play rate to set
- * \param p_e an initialized exception pointer
- */
-VLC_PUBLIC_API void libvlc_media_player_set_rate( libvlc_media_player_t *, float, libvlc_exception_t *);
-
-/**
- * Get current movie state
- *
- * \param p_mi the Media Player
- * \param p_e an initialized exception pointer
- * \return current movie state as libvlc_state_t
- */
-VLC_PUBLIC_API libvlc_state_t libvlc_media_player_get_state( libvlc_media_player_t *, libvlc_exception_t *);
-
-/**
- * Get movie fps rate
- *
- * \param p_mi the Media Player
- * \param p_e an initialized exception pointer
- * \return frames per second (fps) for this playing movie
- */
-VLC_PUBLIC_API float libvlc_media_player_get_fps( libvlc_media_player_t *, libvlc_exception_t *);
-
-/** end bug */
-
-/**
- * Does this media player have a video output?
- *
- * \param p_md the media player
- * \param p_e an initialized exception pointer
- */
-VLC_PUBLIC_API int  libvlc_media_player_has_vout( libvlc_media_player_t *, libvlc_exception_t *);
-
-/**
- * Is this media player seekable?
- *
- * \param p_input the input
- * \param p_e an initialized exception pointer
- */
-VLC_PUBLIC_API int libvlc_media_player_is_seekable( libvlc_media_player_t *p_mi, libvlc_exception_t *p_e );
-
-/**
- * Can this media player be paused?
- *
- * \param p_input the input
- * \param p_e an initialized exception pointer
- */
-VLC_PUBLIC_API int libvlc_media_player_can_pause( libvlc_media_player_t *p_mi, libvlc_exception_t *p_e );
-
-/**
- * Release (free) libvlc_track_description_t
- *
- * \param p_track_description the structure to release
- */
-VLC_PUBLIC_API void libvlc_track_description_release( libvlc_track_description_t *p_track_description );
-
-/** \defgroup libvlc_video libvlc_video
- * \ingroup libvlc_media_player
- * LibVLC Video handling
- * @{
- */
-
-/**
- * Toggle fullscreen status on video output.
- *
- * \param p_mediaplayer the media player
- * \param p_e an initialized exception pointer
- */
-VLC_PUBLIC_API void libvlc_toggle_fullscreen( libvlc_media_player_t *, libvlc_exception_t * );
-
-/**
- * Enable or disable fullscreen on a video output.
- *
- * \param p_mediaplayer the media player
- * \param b_fullscreen boolean for fullscreen status
- * \param p_e an initialized exception pointer
- */
-VLC_PUBLIC_API void libvlc_set_fullscreen( libvlc_media_player_t *, int, libvlc_exception_t * );
-
-/**
- * Get current fullscreen status.
- *
- * \param p_mediaplayer the media player
- * \param p_e an initialized exception pointer
- * \return the fullscreen status (boolean)
- */
-VLC_PUBLIC_API int libvlc_get_fullscreen( libvlc_media_player_t *, libvlc_exception_t * );
-
-/**
- * Get current video height.
- *
- * \param p_mediaplayer the media player
- * \param p_e an initialized exception pointer
- * \return the video height
- */
-VLC_PUBLIC_API int libvlc_video_get_height( libvlc_media_player_t *, libvlc_exception_t * );
-
-/**
- * Get current video width.
- *
- * \param p_mediaplayer the media player
- * \param p_e an initialized exception pointer
- * \return the video width
- */
-VLC_PUBLIC_API int libvlc_video_get_width( libvlc_media_player_t *, libvlc_exception_t * );
-
-/**
- * Get the current video scaling factor.
- * See also libvlc_video_set_scale().
- *
- * \param p_mediaplayer the media player
- * \return the currently configured zoom factor, or 0. if the video is set
- * to fit to the output window/drawable automatically.
- */
-VLC_PUBLIC_API float libvlc_video_get_scale( libvlc_media_player_t *,
-                                             libvlc_exception_t *p_e );
-
-/**
- * Set the video scaling factor. That is the ratio of the number of pixels on
- * screen to the number of pixels in the original decoded video in each
- * dimension. Zero is a special value; it will adjust the video to the output
- * window/drawable (in windowed mode) or the entire screen.
- *
- * Note that not all video outputs support scaling.
- *
- * \param p_mediaplayer the media player
- * \param i_factor the scaling factor, or zero
- */
-VLC_PUBLIC_API void libvlc_video_set_scale( libvlc_media_player_t *, float,
-                                            libvlc_exception_t *p_e );
-
-/**
- * Get current video aspect ratio.
- *
- * \param p_mediaplayer the media player
- * \param p_e an initialized exception pointer
- * \return the video aspect ratio
- */
-VLC_PUBLIC_API char *libvlc_video_get_aspect_ratio( libvlc_media_player_t *, libvlc_exception_t * );
-
-/**
- * Set new video aspect ratio.
- *
- * \param p_mediaplayer the media player
- * \param psz_aspect new video aspect-ratio
- * \param p_e an initialized exception pointer
- */
-VLC_PUBLIC_API void libvlc_video_set_aspect_ratio( libvlc_media_player_t *, char *, libvlc_exception_t * );
-
-/**
- * Get current video subtitle.
- *
- * \param p_mediaplayer the media player
- * \param p_e an initialized exception pointer
- * \return the video subtitle selected
- */
-VLC_PUBLIC_API int libvlc_video_get_spu( libvlc_media_player_t *, libvlc_exception_t * );
-
-/**
- * Get the number of available video subtitles.
- *
- * \param p_mediaplayer the media player
- * \param p_e an initialized exception pointer
- * \return the number of available video subtitles
- */
-VLC_PUBLIC_API int libvlc_video_get_spu_count( libvlc_media_player_t *, libvlc_exception_t * );
-
-/**
- * Get the description of available video subtitles.
- *
- * \param p_mediaplayer the media player
- * \param p_e an initialized exception pointer
- * \return list containing description of available video subtitles
- */
-VLC_PUBLIC_API libvlc_track_description_t *
-        libvlc_video_get_spu_description( libvlc_media_player_t *, libvlc_exception_t * );
-
-/**
- * Set new video subtitle.
- *
- * \param p_mediaplayer the media player
- * \param i_spu new video subtitle to select
- * \param p_e an initialized exception pointer
- */
-VLC_PUBLIC_API void libvlc_video_set_spu( libvlc_media_player_t *, int , libvlc_exception_t * );
-
-/**
- * Set new video subtitle file.
- *
- * \param p_mediaplayer the media player
- * \param psz_subtitle new video subtitle file
- * \param p_e an initialized exception pointer
- * \return the success status (boolean)
- */
-VLC_PUBLIC_API int libvlc_video_set_subtitle_file( libvlc_media_player_t *, char *, libvlc_exception_t * );
-
-/**
- * Get the description of available titles.
- *
- * \param p_mediaplayer the media player
- * \param p_e an initialized exception pointer
- * \return list containing description of available titles
- */
-VLC_PUBLIC_API libvlc_track_description_t *
-        libvlc_video_get_title_description( libvlc_media_player_t *, libvlc_exception_t * );
-
-/**
- * Get the description of available chapters for specific title.
- *
- * \param p_mediaplayer the media player
- * \param i_title selected title
- * \param p_e an initialized exception pointer
- * \return list containing description of available chapter for title i_title
- */
-VLC_PUBLIC_API libvlc_track_description_t *
-        libvlc_video_get_chapter_description( libvlc_media_player_t *, int, libvlc_exception_t * );
-
-/**
- * Get current crop filter geometry.
- *
- * \param p_mediaplayer the media player
- * \param p_e an initialized exception pointer
- * \return the crop filter geometry
- */
-VLC_PUBLIC_API char *libvlc_video_get_crop_geometry( libvlc_media_player_t *, libvlc_exception_t * );
-
-/**
- * Set new crop filter geometry.
- *
- * \param p_mediaplayer the media player
- * \param psz_geometry new crop filter geometry
- * \param p_e an initialized exception pointer
- */
-VLC_PUBLIC_API void libvlc_video_set_crop_geometry( libvlc_media_player_t *, char *, libvlc_exception_t * );
-
-/**
- * Toggle teletext transparent status on video output.
- *
- * \param p_mediaplayer the media player
- * \param p_e an initialized exception pointer
- */
-VLC_PUBLIC_API void libvlc_toggle_teletext( libvlc_media_player_t *, libvlc_exception_t * );
-
-/**
- * Get current teletext page requested.
- *
- * \param p_mediaplayer the media player
- * \param p_e an initialized exception pointer
- * \return the current teletext page requested.
- */
-VLC_PUBLIC_API int libvlc_video_get_teletext( libvlc_media_player_t *, libvlc_exception_t * );
-
-/**
- * Set new teletext page to retrieve.
- *
- * \param p_mediaplayer the media player
- * \param i_page teletex page number requested
- * \param p_e an initialized exception pointer
- */
-VLC_PUBLIC_API void libvlc_video_set_teletext( libvlc_media_player_t *, int, libvlc_exception_t * );
-
-/**
- * Get number of available video tracks.
- *
- * \param p_mi media player
- * \param p_e an initialized exception
- * \return the number of available video tracks (int)
- */
-VLC_PUBLIC_API int libvlc_video_get_track_count( libvlc_media_player_t *,  libvlc_exception_t * );
-
-/**
- * Get the description of available video tracks.
- *
- * \param p_mi media player
- * \param p_e an initialized exception
- * \return list with description of available video tracks
- */
-VLC_PUBLIC_API libvlc_track_description_t *
-        libvlc_video_get_track_description( libvlc_media_player_t *,  libvlc_exception_t * );
-
-/**
- * Get current video track.
- *
- * \param p_mi media player
- * \param p_e an initialized exception pointer
- * \return the video track (int)
- */
-VLC_PUBLIC_API int libvlc_video_get_track( libvlc_media_player_t *, libvlc_exception_t * );
-
-/**
- * Set video track.
- *
- * \param p_mi media player
- * \param i_track the track (int)
- * \param p_e an initialized exception pointer
- */
-VLC_PUBLIC_API void libvlc_video_set_track( libvlc_media_player_t *, int, libvlc_exception_t * );
-
-/**
- * Take a snapshot of the current video window.
- *
- * If i_width AND i_height is 0, original size is used.
- * If i_width XOR i_height is 0, original aspect-ratio is preserved.
- *
- * \param p_mi media player instance
- * \param psz_filepath the path where to save the screenshot to
- * \param i_width the snapshot's width
- * \param i_height the snapshot's height
- * \param p_e an initialized exception pointer
- */
-VLC_PUBLIC_API void libvlc_video_take_snapshot( libvlc_media_player_t *, const char *,unsigned int, unsigned int, libvlc_exception_t * );
-
-/** @} video */
-
-/** \defgroup libvlc_audio libvlc_audio
- * \ingroup libvlc_media_player
- * LibVLC Audio handling
- * @{
- */
-
-/**
- * Audio device types
- */
-typedef enum libvlc_audio_output_device_types_t {
-    libvlc_AudioOutputDevice_Error  = -1,
-    libvlc_AudioOutputDevice_Mono   =  1,
-    libvlc_AudioOutputDevice_Stereo =  2,
-    libvlc_AudioOutputDevice_2F2R   =  4,
-    libvlc_AudioOutputDevice_3F2R   =  5,
-    libvlc_AudioOutputDevice_5_1    =  6,
-    libvlc_AudioOutputDevice_6_1    =  7,
-    libvlc_AudioOutputDevice_7_1    =  8,
-    libvlc_AudioOutputDevice_SPDIF  = 10
-} libvlc_audio_output_device_types_t;
-
-/**
- * Audio channels
- */
-typedef enum libvlc_audio_output_channel_t {
-    libvlc_AudioChannel_Error   = -1,
-    libvlc_AudioChannel_Stereo  =  1,
-    libvlc_AudioChannel_RStereo =  2,
-    libvlc_AudioChannel_Left    =  3,
-    libvlc_AudioChannel_Right   =  4,
-    libvlc_AudioChannel_Dolbys  =  5
-} libvlc_audio_output_channel_t;
-
-
-/**
- * Get the list of available audio outputs
- *
- * \param p_instance libvlc instance
- * \param p_e an initialized exception pointer
- * \return list of available audio outputs, at the end free it with
-*          \see libvlc_audio_output_list_release \see libvlc_audio_output_t
- */
-VLC_PUBLIC_API libvlc_audio_output_t *
-        libvlc_audio_output_list_get( libvlc_instance_t *,
-                                      libvlc_exception_t * );
-
-/**
- * Free the list of available audio outputs
- *
- * \param p_list list with audio outputs for release
- */
-VLC_PUBLIC_API void libvlc_audio_output_list_release( libvlc_audio_output_t * );
-
-/**
- * Set the audio output.
- * Change will be applied after stop and play.
- *
- * \param p_instance libvlc instance
- * \param psz_name name of audio output,
- *               use psz_name of \see libvlc_audio_output_t
- * \return true if function succeded
- */
-VLC_PUBLIC_API int libvlc_audio_output_set( libvlc_instance_t *,
-                                            const char * );
-
-/**
- * Get count of devices for audio output, these devices are hardware oriented
- * like analor or digital output of sound card
- *
- * \param p_instance libvlc instance
- * \param psz_audio_output - name of audio output, \see libvlc_audio_output_t
- * \return number of devices
- */
-VLC_PUBLIC_API int libvlc_audio_output_device_count( libvlc_instance_t *,
-                                                     const char * );
-
-/**
- * Get long name of device, if not available short name given
- *
- * \param p_instance libvlc instance
- * \param psz_audio_output - name of audio output, \see libvlc_audio_output_t
- * \param i_device device index
- * \return long name of device
- */
-VLC_PUBLIC_API char * libvlc_audio_output_device_longname( libvlc_instance_t *,
-                                                           const char *,
-                                                           int );
-
-/**
- * Get id name of device
- *
- * \param p_instance libvlc instance
- * \param psz_audio_output - name of audio output, \see libvlc_audio_output_t
- * \param i_device device index
- * \return id name of device, use for setting device, need to be free after use
- */
-VLC_PUBLIC_API char * libvlc_audio_output_device_id( libvlc_instance_t *,
-                                                     const char *,
-                                                     int );
-
-/**
- * Set device for using
- *
- * \param p_instance libvlc instance
- * \param psz_audio_output - name of audio output, \see libvlc_audio_output_t
- * \param psz_device_id device
- */
-VLC_PUBLIC_API void libvlc_audio_output_device_set( libvlc_instance_t *,
-                                                    const char *,
-                                                    const char * );
-
-/**
- * Get current audio device type. Device type describes something like
- * character of output sound - stereo sound, 2.1, 5.1 etc
- *
- * \param p_instance vlc instance
- * \param p_e an initialized exception pointer
- * \return the audio devices type \see libvlc_audio_output_device_types_t
- */
-VLC_PUBLIC_API int libvlc_audio_output_get_device_type(
-        libvlc_instance_t *, libvlc_exception_t * );
-
-/**
- * Set current audio device type.
- *
- * \param p_instance vlc instance
- * \param device_type the audio device type,
-          according to \see libvlc_audio_output_device_types_t
- * \param p_e an initialized exception pointer
- */
-VLC_PUBLIC_API void libvlc_audio_output_set_device_type( libvlc_instance_t *,
-                                                         int,
-                                                         libvlc_exception_t * );
-
-
-/**
- * Toggle mute status.
- *
- * \param p_instance libvlc instance
- * \param p_e an initialized exception pointer
- */
-VLC_PUBLIC_API void libvlc_audio_toggle_mute( libvlc_instance_t *, libvlc_exception_t * );
-
-/**
- * Get current mute status.
- *
- * \param p_instance libvlc instance
- * \param p_e an initialized exception pointer
- * \return the mute status (boolean)
- */
-VLC_PUBLIC_API int libvlc_audio_get_mute( libvlc_instance_t *, libvlc_exception_t * );
-
-/**
- * Set mute status.
- *
- * \param p_instance libvlc instance
- * \param status If status is true then mute, otherwise unmute
- * \param p_e an initialized exception pointer
- */
-VLC_PUBLIC_API void libvlc_audio_set_mute( libvlc_instance_t *, int , libvlc_exception_t * );
-
-/**
- * Get current audio level.
- *
- * \param p_instance libvlc instance
- * \param p_e an initialized exception pointer
- * \return the audio level (int)
- */
-VLC_PUBLIC_API int libvlc_audio_get_volume( libvlc_instance_t *, libvlc_exception_t * );
-
-/**
- * Set current audio level.
- *
- * \param p_instance libvlc instance
- * \param i_volume the volume (int)
- * \param p_e an initialized exception pointer
- */
-VLC_PUBLIC_API void libvlc_audio_set_volume( libvlc_instance_t *, int, libvlc_exception_t *);
-
-/**
- * Get number of available audio tracks.
- *
- * \param p_mi media player
- * \param p_e an initialized exception
- * \return the number of available audio tracks (int)
- */
-VLC_PUBLIC_API int libvlc_audio_get_track_count( libvlc_media_player_t *,  libvlc_exception_t * );
-
- /**
- * Get the description of available audio tracks.
- *
- * \param p_mi media player
- * \param p_e an initialized exception
- * \return list with description of available audio tracks
- */
-VLC_PUBLIC_API libvlc_track_description_t *
-        libvlc_audio_get_track_description( libvlc_media_player_t *,  libvlc_exception_t * );
-
-/**
- * Get current audio track.
- *
- * \param p_mi media player
- * \param p_e an initialized exception pointer
- * \return the audio track (int)
- */
-VLC_PUBLIC_API int libvlc_audio_get_track( libvlc_media_player_t *, libvlc_exception_t * );
-
-/**
- * Set current audio track.
- *
- * \param p_mi media player
- * \param i_track the track (int)
- * \param p_e an initialized exception pointer
- */
-VLC_PUBLIC_API void libvlc_audio_set_track( libvlc_media_player_t *, int, libvlc_exception_t * );
-
-/**
- * Get current audio channel.
- *
- * \param p_instance vlc instance
- * \param p_e an initialized exception pointer
- * \return the audio channel \see libvlc_audio_output_channel_t
- */
-VLC_PUBLIC_API int
-    libvlc_audio_get_channel( libvlc_instance_t *, libvlc_exception_t * );
-
-/**
- * Set current audio channel.
- *
- * \param p_instance vlc instance
- * \param channel the audio channel, \see libvlc_audio_output_channel_t
- * \param p_e an initialized exception pointer
- */
-VLC_PUBLIC_API void libvlc_audio_set_channel( libvlc_instance_t *,
-                                              int,
-                                              libvlc_exception_t * );
-
-/** @} audio */
-
-/** @} media_player */
-
-/*****************************************************************************
- * Event handling
- *****************************************************************************/
-
-/** \defgroup libvlc_event libvlc_event
- * \ingroup libvlc_core
- * LibVLC Events
- * @{
- */
-
-/**
- * Register for an event notification.
- *
- * \param p_event_manager the event manager to which you want to attach to.
- *        Generally it is obtained by vlc_my_object_event_manager() where
- *        my_object is the object you want to listen to.
- * \param i_event_type the desired event to which we want to listen
- * \param f_callback the function to call when i_event_type occurs
- * \param user_data user provided data to carry with the event
- * \param p_e an initialized exception pointer
- */
-VLC_PUBLIC_API void libvlc_event_attach( libvlc_event_manager_t *p_event_manager,
-                                         libvlc_event_type_t i_event_type,
-                                         libvlc_callback_t f_callback,
-                                         void *user_data,
-                                         libvlc_exception_t *p_e );
-
-/**
- * Unregister an event notification.
- *
- * \param p_event_manager the event manager
- * \param i_event_type the desired event to which we want to unregister
- * \param f_callback the function to call when i_event_type occurs
- * \param p_user_data user provided data to carry with the event
- * \param p_e an initialized exception pointer
- */
-VLC_PUBLIC_API void libvlc_event_detach( libvlc_event_manager_t *p_event_manager,
-                                         libvlc_event_type_t i_event_type,
-                                         libvlc_callback_t f_callback,
-                                         void *p_user_data,
-                                         libvlc_exception_t *p_e );
-
-/**
- * Get an event's type name.
- *
- * \param i_event_type the desired event
- */
-VLC_PUBLIC_API const char * libvlc_event_type_name( libvlc_event_type_t event_type );
+VLC_PUBLIC_API const char * libvlc_event_type_name( libvlc_event_type_t event_type );
 
 /** @} */
 
-/*****************************************************************************
- * Media Library
- *****************************************************************************/
-/** \defgroup libvlc_media_library libvlc_media_library
- * \ingroup libvlc
- * LibVLC Media Library
- * @{
- */
-VLC_PUBLIC_API libvlc_media_library_t *
-    libvlc_media_library_new( libvlc_instance_t * p_inst,
-                              libvlc_exception_t * p_e );
-
-/**
- * Release media library object. This functions decrements the
- * reference count of the media library object. If it reaches 0,
- * then the object will be released.
- *
- * \param p_mlib media library object
- */
-VLC_PUBLIC_API void
-    libvlc_media_library_release( libvlc_media_library_t * p_mlib );
-
-/**
- * Retain a reference to a media library object. This function will
- * increment the reference counting for this object. Use
- * libvlc_media_library_release() to decrement the reference count.
- *
- * \param p_mlib media library object
- */
-VLC_PUBLIC_API void
-    libvlc_media_library_retain( libvlc_media_library_t * p_mlib );
-
-/**
- * Load media library.
- *
- * \param p_mlib media library object
- * \param p_e an initialized exception object.
- */
-VLC_PUBLIC_API void
-    libvlc_media_library_load( libvlc_media_library_t * p_mlib,
-                               libvlc_exception_t * p_e );
-
-/**
- * Save media library.
- *
- * \param p_mlib media library object
- * \param p_e an initialized exception object.
- */
-VLC_PUBLIC_API void
-    libvlc_media_library_save( libvlc_media_library_t * p_mlib,
-                               libvlc_exception_t * p_e );
-
-/**
- * Get media library subitems.
- *
- * \param p_mlib media library object
- * \param p_e an initialized exception object.
- * \return media list subitems
- */
-VLC_PUBLIC_API libvlc_media_list_t *
-    libvlc_media_library_media_list( libvlc_media_library_t * p_mlib,
-                                     libvlc_exception_t * p_e );
-
-
-/** @} */
-
-
-/*****************************************************************************
- * Services/Media Discovery
- *****************************************************************************/
-/** \defgroup libvlc_media_discoverer libvlc_media_discoverer
- * \ingroup libvlc
- * LibVLC Media Discoverer
- * @{
- */
-
-/**
- * Discover media service by name.
- *
- * \param p_inst libvlc instance
- * \param psz_name service name
- * \param p_e an initialized exception object
- * \return media discover object
- */
-VLC_PUBLIC_API libvlc_media_discoverer_t *
-libvlc_media_discoverer_new_from_name( libvlc_instance_t * p_inst,
-                                       const char * psz_name,
-                                       libvlc_exception_t * p_e );
-
-/**
- * Release media discover object. If the reference count reaches 0, then
- * the object will be released.
- *
- * \param p_mdis media service discover object
- */
-VLC_PUBLIC_API void   libvlc_media_discoverer_release( libvlc_media_discoverer_t * p_mdis );
-
-/**
- * Get media service discover object its localized name.
- *
- * \param media discover object
- * \return localized name
- */
-VLC_PUBLIC_API char * libvlc_media_discoverer_localized_name( libvlc_media_discoverer_t * p_mdis );
-
-/**
- * Get media service discover media list.
- *
- * \param p_mdis media service discover object
- * \return list of media items
- */
-VLC_PUBLIC_API libvlc_media_list_t * libvlc_media_discoverer_media_list( libvlc_media_discoverer_t * p_mdis );
-
-/**
- * Get event manager from media service discover object.
- *
- * \param p_mdis media service discover object
- * \return event manager object.
- */
-VLC_PUBLIC_API libvlc_event_manager_t *
-        libvlc_media_discoverer_event_manager( libvlc_media_discoverer_t * p_mdis );
-
-/**
- * Query if media service discover object is running.
- *
- * \param p_mdis media service discover object
- * \return true if running, false if not
- */
-VLC_PUBLIC_API int
-        libvlc_media_discoverer_is_running( libvlc_media_discoverer_t * p_mdis );
-
-/**@} */
-
-
 /*****************************************************************************
  * Message log handling
  *****************************************************************************/
index 1004989475794db3dfdd9eb986ed003b1ad9e65b..bf0e3a2ea28baaaa05d0c905dc568580f946c0e9 100644 (file)
@@ -44,7 +44,11 @@ extern "C" {
  * @{
  */
 
-typedef enum libvlc_event_type_t {
+#ifdef __cplusplus
+enum libvlc_event_type_e {
+#else
+enum libvlc_event_type_t {
+#endif
     /* Append new event types at the end.
      * Do not remove, insert or re-order any entry. */
     libvlc_MediaMetaChanged,
@@ -88,8 +92,9 @@ typedef enum libvlc_event_type_t {
 
     libvlc_MediaPlayerTitleChanged,
     libvlc_MediaPlayerSnapshotTaken,
+    libvlc_MediaPlayerLengthChanged,
     /* New event types HERE */
-} libvlc_event_type_t;
+};
 
 /**
  * An Event
@@ -98,7 +103,7 @@ typedef enum libvlc_event_type_t {
  * \param u Event dependent content
  */
 
-typedef struct libvlc_event_t
+struct libvlc_event_t
 {
     libvlc_event_type_t type;
     void * p_obj;
@@ -202,22 +207,14 @@ typedef struct libvlc_event_t
              char* psz_filename ;
         } media_player_snapshot_taken ;
 
+        /* Length changed */
+        struct
+        {
+            libvlc_time_t   new_length;
+        } media_player_length_changed;
     } u;
-} libvlc_event_t;
-
-/**
- * Event manager that belongs to a libvlc object, and from whom events can
- * be received.
- */
-
-typedef struct libvlc_event_manager_t libvlc_event_manager_t;
-
-/**
- * Callback function notification
- * \param p_event the event triggering the callback
- */
+};
 
-typedef void ( *libvlc_callback_t )( const libvlc_event_t *, void * );
 
 /**@} */
 
diff --git a/include/vlc/libvlc_media.h b/include/vlc/libvlc_media.h
new file mode 100644 (file)
index 0000000..18fcd21
--- /dev/null
@@ -0,0 +1,307 @@
+/*****************************************************************************
+ * libvlc.h:  libvlc external API
+ *****************************************************************************
+ * Copyright (C) 1998-2009 the VideoLAN team
+ * $Id$
+ *
+ * Authors: Clément Stenac <zorglub@videolan.org>
+ *          Jean-Paul Saman <jpsaman@videolan.org>
+ *          Pierre d'Herbemont <pdherbemont@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.
+ *****************************************************************************/
+
+/**
+ * \file
+ * This file defines libvlc_media external API
+ */
+
+#ifndef VLC_LIBVLC_MEDIA_H
+#define VLC_LIBVLC_MEDIA_H 1
+
+/*****************************************************************************
+ * media
+ *****************************************************************************/
+/** \defgroup libvlc_media libvlc_media
+ * \ingroup libvlc
+ * LibVLC Media
+ * @{
+ */
+
+typedef struct libvlc_media_t libvlc_media_t;
+
+/* Meta Handling */
+/** defgroup libvlc_meta libvlc_meta
+ * \ingroup libvlc_media
+ * LibVLC Media Meta
+ * @{
+ */
+
+typedef enum libvlc_meta_t {
+    libvlc_meta_Title,
+    libvlc_meta_Artist,
+    libvlc_meta_Genre,
+    libvlc_meta_Copyright,
+    libvlc_meta_Album,
+    libvlc_meta_TrackNumber,
+    libvlc_meta_Description,
+    libvlc_meta_Rating,
+    libvlc_meta_Date,
+    libvlc_meta_Setting,
+    libvlc_meta_URL,
+    libvlc_meta_Language,
+    libvlc_meta_NowPlaying,
+    libvlc_meta_Publisher,
+    libvlc_meta_EncodedBy,
+    libvlc_meta_ArtworkURL,
+    libvlc_meta_TrackID,
+    /* Add new meta types HERE */
+} libvlc_meta_t;
+
+/** @}*/
+
+/**
+ * Note the order of libvlc_state_t enum must match exactly the order of
+ * @see mediacontrol_PlayerStatus, @see input_state_e enums,
+ * and VideoLAN.LibVLC.State (at bindings/cil/src/media.cs).
+ *
+ * Expected states by web plugins are:
+ * IDLE/CLOSE=0, OPENING=1, BUFFERING=2, PLAYING=3, PAUSED=4,
+ * STOPPING=5, ENDED=6, ERROR=7
+ */
+typedef enum libvlc_state_t
+{
+    libvlc_NothingSpecial=0,
+    libvlc_Opening,
+    libvlc_Buffering,
+    libvlc_Playing,
+    libvlc_Paused,
+    libvlc_Stopped,
+    libvlc_Ended,
+    libvlc_Error
+} libvlc_state_t;
+
+/**
+ * Create a media with the given MRL.
+ *
+ * \param p_instance the instance
+ * \param psz_mrl the MRL to read
+ * \param p_e an initialized exception pointer
+ * \return the newly created media
+ */
+VLC_PUBLIC_API libvlc_media_t * libvlc_media_new(
+                                   libvlc_instance_t *p_instance,
+                                   const char * psz_mrl,
+                                   libvlc_exception_t *p_e );
+
+/**
+ * Create a media as an empty node with the passed name.
+ *
+ * \param p_instance the instance
+ * \param psz_name the name of the node
+ * \param p_e an initialized exception pointer
+ * \return the new empty media
+ */
+VLC_PUBLIC_API libvlc_media_t * libvlc_media_new_as_node(
+                                   libvlc_instance_t *p_instance,
+                                   const char * psz_name,
+                                   libvlc_exception_t *p_e );
+
+/**
+ * Add an option to the media.
+ *
+ * This option will be used to determine how the media_player will
+ * read the media. This allows to use VLC's advanced
+ * reading/streaming options on a per-media basis.
+ *
+ * The options are detailed in vlc --long-help, for instance "--sout-all"
+ *
+ * \param p_instance the instance
+ * \param ppsz_options the options (as a string)
+ * \param p_e an initialized exception pointer
+ */
+VLC_PUBLIC_API void libvlc_media_add_option(
+                                   libvlc_media_t * p_md,
+                                   const char * ppsz_options,
+                                   libvlc_exception_t * p_e );
+/**
+ * Add an option to the media from an untrusted source.
+ *
+ * This option will be used to determine how the media_player will
+ * read the media. This allows to use VLC's advanced
+ * reading/streaming options on a per-media basis.
+ *
+ * The options are detailed in vlc --long-help, for instance "--sout-all"
+ *
+ * \param p_instance the instance
+ * \param ppsz_options the options (as a string)
+ * \param p_e an initialized exception pointer
+ */
+VLC_PUBLIC_API void libvlc_media_add_option_untrusted(
+                                   libvlc_media_t * p_md,
+                                   const char * ppsz_options,
+                                   libvlc_exception_t * p_e );
+
+
+/**
+ * Retain a reference to a media descriptor object (libvlc_media_t). Use
+ * libvlc_media_release() to decrement the reference count of a
+ * media descriptor object.
+ *
+ * \param p_meta_desc a media descriptor object.
+ */
+VLC_PUBLIC_API void libvlc_media_retain(
+                                   libvlc_media_t *p_meta_desc );
+
+/**
+ * Decrement the reference count of a media descriptor object. If the
+ * reference count is 0, then libvlc_media_release() will release the
+ * media descriptor object. It will send out an libvlc_MediaFreed event
+ * to all listeners. If the media descriptor object has been released it
+ * should not be used again.
+ *
+ * \param p_meta_desc a media descriptor object.
+ */
+VLC_PUBLIC_API void libvlc_media_release(
+                                   libvlc_media_t *p_meta_desc );
+
+
+/**
+ * Get the media resource locator (mrl) from a media descriptor object
+ *
+ * \param p_md a media descriptor object
+ * \param p_e an initialized exception object
+ * \return string with mrl of media descriptor object
+ */
+VLC_PUBLIC_API char * libvlc_media_get_mrl( libvlc_media_t * p_md,
+                                                       libvlc_exception_t * p_e );
+
+/**
+ * Duplicate a media descriptor object.
+ *
+ * \param p_meta_desc a media descriptor object.
+ */
+VLC_PUBLIC_API libvlc_media_t * libvlc_media_duplicate( libvlc_media_t * );
+
+/**
+ * Read the meta of the media.
+ *
+ * \param p_meta_desc the media to read
+ * \param e_meta_desc the meta to read
+ * \param p_e an initialized exception pointer
+ * \return the media's meta
+ */
+VLC_PUBLIC_API char * libvlc_media_get_meta(
+                                   libvlc_media_t *p_meta_desc,
+                                   libvlc_meta_t e_meta,
+                                   libvlc_exception_t *p_e );
+/**
+ * Get current state of media descriptor object. Possible media states
+ * are defined in libvlc_structures.c ( libvlc_NothingSpecial=0,
+ * libvlc_Opening, libvlc_Buffering, libvlc_Playing, libvlc_Paused,
+ * libvlc_Stopped, libvlc_Ended,
+ * libvlc_Error).
+ *
+ * @see libvlc_state_t
+ * \param p_meta_desc a media descriptor object
+ * \param p_e an initialized exception object
+ * \return state of media descriptor object
+ */
+VLC_PUBLIC_API libvlc_state_t libvlc_media_get_state(
+                                   libvlc_media_t *p_meta_desc,
+                                   libvlc_exception_t *p_e );
+
+
+/**
+ * Get subitems of media descriptor object. This will increment
+ * the reference count of supplied media descriptor object. Use
+ * libvlc_media_list_release() to decrement the reference counting.
+ *
+ * \param p_md media descriptor object
+ * \param p_e initalized exception object
+ * \return list of media descriptor subitems or NULL
+ */
+
+/* This method uses libvlc_media_list_t, however, media_list usage is optionnal
+ * and this is here for convenience */
+#define VLC_FORWARD_DECLARE_OBJECT(a) struct a
+
+VLC_PUBLIC_API VLC_FORWARD_DECLARE_OBJECT(libvlc_media_list_t *)
+libvlc_media_subitems( libvlc_media_t *p_md,
+                      libvlc_exception_t *p_e );
+
+/**
+ * Get event manager from media descriptor object.
+ * NOTE: this function doesn't increment reference counting.
+ *
+ * \param p_md a media descriptor object
+ * \param p_e an initialized exception object
+ * \return event manager object
+ */
+VLC_PUBLIC_API libvlc_event_manager_t *
+    libvlc_media_event_manager( libvlc_media_t * p_md,
+                                           libvlc_exception_t * p_e );
+
+/**
+ * Get duration of media descriptor object item.
+ *
+ * \param p_md media descriptor object
+ * \param p_e an initialized exception object
+ * \return duration of media item
+ */
+VLC_PUBLIC_API libvlc_time_t
+   libvlc_media_get_duration( libvlc_media_t * p_md,
+                                         libvlc_exception_t * p_e );
+
+/**
+ * Get preparsed status for media descriptor object.
+ *
+ * \param p_md media descriptor object
+ * \param p_e an initialized exception object
+ * \return true if media object has been preparsed otherwise it returns false
+ */
+VLC_PUBLIC_API int
+   libvlc_media_is_preparsed( libvlc_media_t * p_md,
+                                         libvlc_exception_t * p_e );
+
+/**
+ * Sets media descriptor's user_data. user_data is specialized data
+ * accessed by the host application, VLC.framework uses it as a pointer to
+ * an native object that references a libvlc_media_t pointer
+ *
+ * \param p_md media descriptor object
+ * \param p_new_user_data pointer to user data
+ * \param p_e an initialized exception object
+ */
+VLC_PUBLIC_API void
+    libvlc_media_set_user_data( libvlc_media_t * p_md,
+                                           void * p_new_user_data,
+                                           libvlc_exception_t * p_e);
+
+/**
+ * Get media descriptor's user_data. user_data is specialized data
+ * accessed by the host application, VLC.framework uses it as a pointer to
+ * an native object that references a libvlc_media_t pointer
+ *
+ * \param p_md media descriptor object
+ * \param p_e an initialized exception object
+ */
+VLC_PUBLIC_API void *
+    libvlc_media_get_user_data( libvlc_media_t * p_md,
+                                           libvlc_exception_t * p_e);
+
+/** @}*/
+
+#endif /* VLC_LIBVLC_MEDIA_H */
diff --git a/include/vlc/libvlc_media_discoverer.h b/include/vlc/libvlc_media_discoverer.h
new file mode 100644 (file)
index 0000000..dabf51a
--- /dev/null
@@ -0,0 +1,102 @@
+/*****************************************************************************
+ * libvlc.h:  libvlc external API
+ *****************************************************************************
+ * Copyright (C) 1998-2009 the VideoLAN team
+ * $Id$
+ *
+ * Authors: Clément Stenac <zorglub@videolan.org>
+ *          Jean-Paul Saman <jpsaman@videolan.org>
+ *          Pierre d'Herbemont <pdherbemont@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.
+ *****************************************************************************/
+
+/**
+ * \file
+ * This file defines libvlc_media_discoverer external API
+ */
+
+#ifndef VLC_LIBVLC_MEDIA_DISCOVERER_H
+#define VLC_LIBVLC_MEDIA_DISCOVERER_H 1
+
+/*****************************************************************************
+ * Services/Media Discovery
+ *****************************************************************************/
+/** \defgroup libvlc_media_discoverer libvlc_media_discoverer
+ * \ingroup libvlc
+ * LibVLC Media Discoverer
+ * @{
+ */
+
+typedef struct libvlc_media_discoverer_t libvlc_media_discoverer_t;
+
+/**
+ * Discover media service by name.
+ *
+ * \param p_inst libvlc instance
+ * \param psz_name service name
+ * \param p_e an initialized exception object
+ * \return media discover object
+ */
+VLC_PUBLIC_API libvlc_media_discoverer_t *
+libvlc_media_discoverer_new_from_name( libvlc_instance_t * p_inst,
+                                       const char * psz_name,
+                                       libvlc_exception_t * p_e );
+
+/**
+ * Release media discover object. If the reference count reaches 0, then
+ * the object will be released.
+ *
+ * \param p_mdis media service discover object
+ */
+VLC_PUBLIC_API void   libvlc_media_discoverer_release( libvlc_media_discoverer_t * p_mdis );
+
+/**
+ * Get media service discover object its localized name.
+ *
+ * \param media discover object
+ * \return localized name
+ */
+VLC_PUBLIC_API char * libvlc_media_discoverer_localized_name( libvlc_media_discoverer_t * p_mdis );
+
+/**
+ * Get media service discover media list.
+ *
+ * \param p_mdis media service discover object
+ * \return list of media items
+ */
+VLC_PUBLIC_API libvlc_media_list_t * libvlc_media_discoverer_media_list( libvlc_media_discoverer_t * p_mdis );
+
+/**
+ * Get event manager from media service discover object.
+ *
+ * \param p_mdis media service discover object
+ * \return event manager object.
+ */
+VLC_PUBLIC_API libvlc_event_manager_t *
+        libvlc_media_discoverer_event_manager( libvlc_media_discoverer_t * p_mdis );
+
+/**
+ * Query if media service discover object is running.
+ *
+ * \param p_mdis media service discover object
+ * \return true if running, false if not
+ */
+VLC_PUBLIC_API int
+        libvlc_media_discoverer_is_running( libvlc_media_discoverer_t * p_mdis );
+
+/**@} */
+
+#endif /* <vlc/libvlc.h> */
diff --git a/include/vlc/libvlc_media_library.h b/include/vlc/libvlc_media_library.h
new file mode 100644 (file)
index 0000000..d2192bc
--- /dev/null
@@ -0,0 +1,103 @@
+/*****************************************************************************
+ * libvlc.h:  libvlc external API
+ *****************************************************************************
+ * Copyright (C) 1998-2009 the VideoLAN team
+ * $Id$
+ *
+ * Authors: Clément Stenac <zorglub@videolan.org>
+ *          Jean-Paul Saman <jpsaman@videolan.org>
+ *          Pierre d'Herbemont <pdherbemont@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.
+ *****************************************************************************/
+
+/**
+ * \file
+ * This file defines libvlc_media_library external API
+ */
+
+#ifndef VLC_LIBVLC_MEDIA_LIBRARY_H
+#define VLC_LIBVLC_MEDIA_LIBRARY_H 1
+
+/*****************************************************************************
+ * Media Library
+ *****************************************************************************/
+/** \defgroup libvlc_media_library libvlc_media_library
+ * \ingroup libvlc
+ * LibVLC Media Library
+ * @{
+ */
+
+typedef struct libvlc_media_library_t libvlc_media_library_t;
+
+VLC_PUBLIC_API libvlc_media_library_t *
+    libvlc_media_library_new( libvlc_instance_t * p_inst,
+                              libvlc_exception_t * p_e );
+
+/**
+ * Release media library object. This functions decrements the
+ * reference count of the media library object. If it reaches 0,
+ * then the object will be released.
+ *
+ * \param p_mlib media library object
+ */
+VLC_PUBLIC_API void
+    libvlc_media_library_release( libvlc_media_library_t * p_mlib );
+
+/**
+ * Retain a reference to a media library object. This function will
+ * increment the reference counting for this object. Use
+ * libvlc_media_library_release() to decrement the reference count.
+ *
+ * \param p_mlib media library object
+ */
+VLC_PUBLIC_API void
+    libvlc_media_library_retain( libvlc_media_library_t * p_mlib );
+
+/**
+ * Load media library.
+ *
+ * \param p_mlib media library object
+ * \param p_e an initialized exception object.
+ */
+VLC_PUBLIC_API void
+    libvlc_media_library_load( libvlc_media_library_t * p_mlib,
+                               libvlc_exception_t * p_e );
+
+/**
+ * Save media library.
+ *
+ * \param p_mlib media library object
+ * \param p_e an initialized exception object.
+ */
+VLC_PUBLIC_API void
+    libvlc_media_library_save( libvlc_media_library_t * p_mlib,
+                               libvlc_exception_t * p_e );
+
+/**
+ * Get media library subitems.
+ *
+ * \param p_mlib media library object
+ * \param p_e an initialized exception object.
+ * \return media list subitems
+ */
+VLC_PUBLIC_API libvlc_media_list_t *
+    libvlc_media_library_media_list( libvlc_media_library_t * p_mlib,
+                                     libvlc_exception_t * p_e );
+
+
+/** @} */
+
+#endif /* VLC_LIBVLC_MEDIA_LIBRARY_H */
index 94a4f7b956eb36ac805d6e2ec5b511dd98acbc93..102a23dd0c951914eb0a272903f759a1955475f7 100644 (file)
@@ -42,6 +42,9 @@ extern "C" {
  * @{
  */
 
+typedef struct libvlc_media_list_t libvlc_media_list_t;
+typedef struct libvlc_media_list_view_t libvlc_media_list_view_t;
+
 /**
  * Create an empty media list.
  *
@@ -242,259 +245,6 @@ VLC_PUBLIC_API libvlc_event_manager_t *
     libvlc_media_list_event_manager( libvlc_media_list_t *,
                                      libvlc_exception_t * );
 
-/*****************************************************************************
- * Media List View
- *****************************************************************************/
-/** \defgroup libvlc_media_list_view libvlc_media_list_view
- * \ingroup libvlc_media_list
- * LibVLC Media List View, represent a media_list using a different layout
- * @{ */
-
-/**
- * Retain reference to a media list view
- *
- * \param p_mlv a media list view created with libvlc_media_list_view_new()
- */
-VLC_PUBLIC_API void
-    libvlc_media_list_view_retain( libvlc_media_list_view_t * p_mlv );
-
-/**
- * Release reference to a media list view. If the refcount reaches 0, then
- * the object will be released.
- *
- * \param p_mlv a media list view created with libvlc_media_list_view_new()
- */
-VLC_PUBLIC_API void
-    libvlc_media_list_view_release( libvlc_media_list_view_t * p_mlv );
-
-/**
- * Get libvlc_event_manager from this media list view instance.
- * The p_event_manager is immutable, so you don't have to hold the lock
- *
- * \param p_mlv a media list view instance
- * \return libvlc_event_manager
- */
-VLC_PUBLIC_API libvlc_event_manager_t *
-    libvlc_media_list_view_event_manager( libvlc_media_list_view_t * p_mlv );
-
-/**
- * Get count on media list view items
- *
- * \param p_mlv a media list view instance
- * \param p_e initialized exception object
- * \return number of items in media list view
- */
-VLC_PUBLIC_API int
-    libvlc_media_list_view_count(  libvlc_media_list_view_t * p_mlv,
-                                   libvlc_exception_t * p_e );
-
-/**
- * List media instance in media list view at an index position
- *
- * \param p_mlv a media list view instance
- * \param i_index index position in array where to insert
- * \param p_e initialized exception object
- * \return media instance at position i_pos and libvlc_media_retain() has been called to increase the refcount on this object.
- */
-VLC_PUBLIC_API libvlc_media_t *
-    libvlc_media_list_view_item_at_index(  libvlc_media_list_view_t * p_mlv,
-                                           int i_index,
-                                           libvlc_exception_t * p_e );
-
-VLC_PUBLIC_API libvlc_media_list_view_t *
-    libvlc_media_list_view_children_at_index(  libvlc_media_list_view_t * p_mlv,
-                                           int index,
-                                           libvlc_exception_t * p_e );
-
-VLC_PUBLIC_API libvlc_media_list_view_t *
-    libvlc_media_list_view_children_for_item(  libvlc_media_list_view_t * p_mlv,
-                                           libvlc_media_t * p_md,
-                                           libvlc_exception_t * p_e );
-
-/**
- * Get index position of media instance in media list view.
- * The function will return the first occurence.
- *
- * \param p_mlv a media list view instance
- * \param p_md media instance
- * \param p_e initialized exception object
- * \return index position in array of p_md
- */
-VLC_PUBLIC_API int
-    libvlc_media_list_view_index_of_item(  libvlc_media_list_view_t * p_mlv,
-                                           libvlc_media_t * p_md,
-                                           libvlc_exception_t * p_e );
-
-/**
- * Insert media instance in media list view at index position
- *
- * \param p_mlv a media list view instance
- * \param p_md media instance
- * \param index position in array where to insert
- * \param p_e initialized exception object
- */
-VLC_PUBLIC_API void
-    libvlc_media_list_view_insert_at_index(  libvlc_media_list_view_t * p_mlv,
-                                             libvlc_media_t * p_md,
-                                             int index,
-                                             libvlc_exception_t * p_e );
-
-/**
- * Remove media instance in media list view from index position
- *
- * \param p_mlv a media list view instance
- * \param index position in array of media instance to remove
- * \param p_e initialized exception object
- */
-VLC_PUBLIC_API void
-    libvlc_media_list_view_remove_at_index(  libvlc_media_list_view_t * p_mlv,
-                                             int index,
-                                             libvlc_exception_t * p_e );
-
-VLC_PUBLIC_API void
-    libvlc_media_list_view_add_item(  libvlc_media_list_view_t * p_mlv,
-                                      libvlc_media_t * p_md,
-                                      libvlc_exception_t * p_e );
-
-VLC_PUBLIC_API libvlc_media_list_t *
-    libvlc_media_list_view_parent_media_list(  libvlc_media_list_view_t * p_mlv,
-                                               libvlc_exception_t * p_e );
-
-/** @} media_list_view */
-
-/*****************************************************************************
- * Media List Player
- *****************************************************************************/
-/** \defgroup libvlc_media_list_player libvlc_media_list_player
- * \ingroup libvlc_media_list_player
- * LibVLC Media List Player, play a media_list. You can see that as a media
- * instance subclass
- * @{
- */
-
-/**
- * Create new media_list_player.
- *
- * \param p_instance libvlc instance
- * \param p_e initialized exception instance
- * \return media list player instance
- */
-VLC_PUBLIC_API libvlc_media_list_player_t *
-    libvlc_media_list_player_new( libvlc_instance_t * p_instance,
-                                  libvlc_exception_t * p_e );
-
-/**
- * Release media_list_player.
- *
- * \param p_mlp media list player instance
- */
-VLC_PUBLIC_API void
-    libvlc_media_list_player_release( libvlc_media_list_player_t * p_mlp );
-
-/**
- * Replace media player in media_list_player with this instance.
- *
- * \param p_mlp media list player instance
- * \param p_mi media player instance
- * \param p_e initialized exception instance
- */
-VLC_PUBLIC_API void
-    libvlc_media_list_player_set_media_player(
-                                     libvlc_media_list_player_t * p_mlp,
-                                     libvlc_media_player_t * p_mi,
-                                     libvlc_exception_t * p_e );
-
-VLC_PUBLIC_API void
-    libvlc_media_list_player_set_media_list(
-                                     libvlc_media_list_player_t * p_mlp,
-                                     libvlc_media_list_t * p_mlist,
-                                     libvlc_exception_t * p_e );
-
-/**
- * Play media list
- *
- * \param p_mlp media list player instance
- * \param p_e initialized exception instance
- */
-VLC_PUBLIC_API void
-    libvlc_media_list_player_play( libvlc_media_list_player_t * p_mlp,
-                                   libvlc_exception_t * p_e );
-
-/**
- * Pause media list
- *
- * \param p_mlp media list player instance
- * \param p_e initialized exception instance
- */
-VLC_PUBLIC_API void
-    libvlc_media_list_player_pause( libvlc_media_list_player_t * p_mlp,
-                                   libvlc_exception_t * p_e );
-
-/**
- * Is media list playing?
- *
- * \param p_mlp media list player instance
- * \param p_e initialized exception instance
- * \return true for playing and false for not playing
- */
-VLC_PUBLIC_API int
-    libvlc_media_list_player_is_playing( libvlc_media_list_player_t * p_mlp,
-                                         libvlc_exception_t * p_e );
-
-/**
- * Get current libvlc_state of media list player
- *
- * \param p_mlp media list player instance
- * \param p_e initialized exception instance
- * \return libvlc_state_t for media list player
- */
-VLC_PUBLIC_API libvlc_state_t
-    libvlc_media_list_player_get_state( libvlc_media_list_player_t * p_mlp,
-                                        libvlc_exception_t * p_e );
-
-/**
- * Play media list item at position index
- *
- * \param p_mlp media list player instance
- * \param i_index index in media list to play
- * \param p_e initialized exception instance
- */
-VLC_PUBLIC_API void
-    libvlc_media_list_player_play_item_at_index(
-                                   libvlc_media_list_player_t * p_mlp,
-                                   int i_index,
-                                   libvlc_exception_t * p_e );
-
-VLC_PUBLIC_API void
-    libvlc_media_list_player_play_item(
-                                   libvlc_media_list_player_t * p_mlp,
-                                   libvlc_media_t * p_md,
-                                   libvlc_exception_t * p_e );
-
-/**
- * Stop playing media list
- *
- * \param p_mlp media list player instance
- * \param p_e initialized exception instance
- */
-VLC_PUBLIC_API void
-    libvlc_media_list_player_stop( libvlc_media_list_player_t * p_mlp,
-                                   libvlc_exception_t * p_e );
-
-/**
- * Play next item from media list
- *
- * \param p_mlp media list player instance
- * \param p_e initialized exception instance
- */
-VLC_PUBLIC_API void
-    libvlc_media_list_player_next( libvlc_media_list_player_t * p_mlp,
-                                   libvlc_exception_t * p_e );
-
-/* NOTE: shouldn't there also be a libvlc_media_list_player_prev() */
-
-/** @} media_list_player */
-
 /** @} media_list */
 
 # ifdef __cplusplus
diff --git a/include/vlc/libvlc_media_list_player.h b/include/vlc/libvlc_media_list_player.h
new file mode 100644 (file)
index 0000000..d2f2151
--- /dev/null
@@ -0,0 +1,175 @@
+/*****************************************************************************
+ * libvlc_media_list.h:  libvlc_media_list API
+ *****************************************************************************
+ * Copyright (C) 1998-2008 the VideoLAN team
+ * $Id$
+ *
+ * Authors: Pierre d'Herbemont
+ *
+ * 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 LIBVLC_MEDIA_LIST_PLAYER_H
+#define LIBVLC_MEDIA_LIST_PLAYER_H 1
+
+/**
+ * \file
+ * This file defines libvlc_media_list_player API
+ */
+
+# ifdef __cplusplus
+extern "C" {
+# endif
+
+/*****************************************************************************
+ * Media List Player
+ *****************************************************************************/
+/** \defgroup libvlc_media_list_player libvlc_media_list_player
+ * \ingroup libvlc
+ * LibVLC Media List Player, play a media_list. You can see that as a media
+ * instance subclass
+ * @{
+ */
+
+typedef struct libvlc_media_list_player_t libvlc_media_list_player_t;
+
+/**
+ * Create new media_list_player.
+ *
+ * \param p_instance libvlc instance
+ * \param p_e initialized exception instance
+ * \return media list player instance
+ */
+VLC_PUBLIC_API libvlc_media_list_player_t *
+    libvlc_media_list_player_new( libvlc_instance_t * p_instance,
+                                  libvlc_exception_t * p_e );
+
+/**
+ * Release media_list_player.
+ *
+ * \param p_mlp media list player instance
+ */
+VLC_PUBLIC_API void
+    libvlc_media_list_player_release( libvlc_media_list_player_t * p_mlp );
+
+/**
+ * Replace media player in media_list_player with this instance.
+ *
+ * \param p_mlp media list player instance
+ * \param p_mi media player instance
+ * \param p_e initialized exception instance
+ */
+VLC_PUBLIC_API void
+    libvlc_media_list_player_set_media_player(
+                                     libvlc_media_list_player_t * p_mlp,
+                                     libvlc_media_player_t * p_mi,
+                                     libvlc_exception_t * p_e );
+
+VLC_PUBLIC_API void
+    libvlc_media_list_player_set_media_list(
+                                     libvlc_media_list_player_t * p_mlp,
+                                     libvlc_media_list_t * p_mlist,
+                                     libvlc_exception_t * p_e );
+
+/**
+ * Play media list
+ *
+ * \param p_mlp media list player instance
+ * \param p_e initialized exception instance
+ */
+VLC_PUBLIC_API void
+    libvlc_media_list_player_play( libvlc_media_list_player_t * p_mlp,
+                                   libvlc_exception_t * p_e );
+
+/**
+ * Pause media list
+ *
+ * \param p_mlp media list player instance
+ * \param p_e initialized exception instance
+ */
+VLC_PUBLIC_API void
+    libvlc_media_list_player_pause( libvlc_media_list_player_t * p_mlp,
+                                   libvlc_exception_t * p_e );
+
+/**
+ * Is media list playing?
+ *
+ * \param p_mlp media list player instance
+ * \param p_e initialized exception instance
+ * \return true for playing and false for not playing
+ */
+VLC_PUBLIC_API int
+    libvlc_media_list_player_is_playing( libvlc_media_list_player_t * p_mlp,
+                                         libvlc_exception_t * p_e );
+
+/**
+ * Get current libvlc_state of media list player
+ *
+ * \param p_mlp media list player instance
+ * \param p_e initialized exception instance
+ * \return libvlc_state_t for media list player
+ */
+VLC_PUBLIC_API libvlc_state_t
+    libvlc_media_list_player_get_state( libvlc_media_list_player_t * p_mlp,
+                                        libvlc_exception_t * p_e );
+
+/**
+ * Play media list item at position index
+ *
+ * \param p_mlp media list player instance
+ * \param i_index index in media list to play
+ * \param p_e initialized exception instance
+ */
+VLC_PUBLIC_API void
+    libvlc_media_list_player_play_item_at_index(
+                                   libvlc_media_list_player_t * p_mlp,
+                                   int i_index,
+                                   libvlc_exception_t * p_e );
+
+VLC_PUBLIC_API void
+    libvlc_media_list_player_play_item(
+                                   libvlc_media_list_player_t * p_mlp,
+                                   libvlc_media_t * p_md,
+                                   libvlc_exception_t * p_e );
+
+/**
+ * Stop playing media list
+ *
+ * \param p_mlp media list player instance
+ * \param p_e initialized exception instance
+ */
+VLC_PUBLIC_API void
+    libvlc_media_list_player_stop( libvlc_media_list_player_t * p_mlp,
+                                   libvlc_exception_t * p_e );
+
+/**
+ * Play next item from media list
+ *
+ * \param p_mlp media list player instance
+ * \param p_e initialized exception instance
+ */
+VLC_PUBLIC_API void
+    libvlc_media_list_player_next( libvlc_media_list_player_t * p_mlp,
+                                   libvlc_exception_t * p_e );
+
+/* NOTE: shouldn't there also be a libvlc_media_list_player_prev() */
+
+/** @} media_list_player */
+
+# ifdef __cplusplus
+}
+# endif
+
+#endif /* LIBVLC_MEDIA_LIST_PLAYER_H */
diff --git a/include/vlc/libvlc_media_list_view.h b/include/vlc/libvlc_media_list_view.h
new file mode 100644 (file)
index 0000000..6834f4d
--- /dev/null
@@ -0,0 +1,160 @@
+/*****************************************************************************
+ * libvlc_media_list.h:  libvlc_media_list API
+ *****************************************************************************
+ * Copyright (C) 1998-2008 the VideoLAN team
+ * $Id$
+ *
+ * Authors: Pierre d'Herbemont
+ *
+ * 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 LIBVLC_MEDIA_LIST_VIEW_H
+#define LIBVLC_MEDIA_LIST_VIEW_H 1
+
+/**
+ * \file
+ * This file defines libvlc_media_list API
+ */
+
+# ifdef __cplusplus
+extern "C" {
+# endif
+
+/*****************************************************************************
+ * Media List View
+ *****************************************************************************/
+/** \defgroup libvlc_media_list_view libvlc_media_list_view
+ * \ingroup libvlc
+ * LibVLC Media List View, represent a media_list using a different layout
+ * @{ */
+
+/**
+ * Retain reference to a media list view
+ *
+ * \param p_mlv a media list view created with libvlc_media_list_view_new()
+ */
+VLC_PUBLIC_API void
+    libvlc_media_list_view_retain( libvlc_media_list_view_t * p_mlv );
+
+/**
+ * Release reference to a media list view. If the refcount reaches 0, then
+ * the object will be released.
+ *
+ * \param p_mlv a media list view created with libvlc_media_list_view_new()
+ */
+VLC_PUBLIC_API void
+    libvlc_media_list_view_release( libvlc_media_list_view_t * p_mlv );
+
+/**
+ * Get libvlc_event_manager from this media list view instance.
+ * The p_event_manager is immutable, so you don't have to hold the lock
+ *
+ * \param p_mlv a media list view instance
+ * \return libvlc_event_manager
+ */
+VLC_PUBLIC_API libvlc_event_manager_t *
+    libvlc_media_list_view_event_manager( libvlc_media_list_view_t * p_mlv );
+
+/**
+ * Get count on media list view items
+ *
+ * \param p_mlv a media list view instance
+ * \param p_e initialized exception object
+ * \return number of items in media list view
+ */
+VLC_PUBLIC_API int
+    libvlc_media_list_view_count(  libvlc_media_list_view_t * p_mlv,
+                                   libvlc_exception_t * p_e );
+
+/**
+ * List media instance in media list view at an index position
+ *
+ * \param p_mlv a media list view instance
+ * \param i_index index position in array where to insert
+ * \param p_e initialized exception object
+ * \return media instance at position i_pos and libvlc_media_retain() has been called to increase the refcount on this object.
+ */
+VLC_PUBLIC_API libvlc_media_t *
+    libvlc_media_list_view_item_at_index(  libvlc_media_list_view_t * p_mlv,
+                                           int i_index,
+                                           libvlc_exception_t * p_e );
+
+VLC_PUBLIC_API libvlc_media_list_view_t *
+    libvlc_media_list_view_children_at_index(  libvlc_media_list_view_t * p_mlv,
+                                           int index,
+                                           libvlc_exception_t * p_e );
+
+VLC_PUBLIC_API libvlc_media_list_view_t *
+    libvlc_media_list_view_children_for_item(  libvlc_media_list_view_t * p_mlv,
+                                           libvlc_media_t * p_md,
+                                           libvlc_exception_t * p_e );
+
+/**
+ * Get index position of media instance in media list view.
+ * The function will return the first occurence.
+ *
+ * \param p_mlv a media list view instance
+ * \param p_md media instance
+ * \param p_e initialized exception object
+ * \return index position in array of p_md
+ */
+VLC_PUBLIC_API int
+    libvlc_media_list_view_index_of_item(  libvlc_media_list_view_t * p_mlv,
+                                           libvlc_media_t * p_md,
+                                           libvlc_exception_t * p_e );
+
+/**
+ * Insert media instance in media list view at index position
+ *
+ * \param p_mlv a media list view instance
+ * \param p_md media instance
+ * \param index position in array where to insert
+ * \param p_e initialized exception object
+ */
+VLC_PUBLIC_API void
+    libvlc_media_list_view_insert_at_index(  libvlc_media_list_view_t * p_mlv,
+                                             libvlc_media_t * p_md,
+                                             int index,
+                                             libvlc_exception_t * p_e );
+
+/**
+ * Remove media instance in media list view from index position
+ *
+ * \param p_mlv a media list view instance
+ * \param index position in array of media instance to remove
+ * \param p_e initialized exception object
+ */
+VLC_PUBLIC_API void
+    libvlc_media_list_view_remove_at_index(  libvlc_media_list_view_t * p_mlv,
+                                             int index,
+                                             libvlc_exception_t * p_e );
+
+VLC_PUBLIC_API void
+    libvlc_media_list_view_add_item(  libvlc_media_list_view_t * p_mlv,
+                                      libvlc_media_t * p_md,
+                                      libvlc_exception_t * p_e );
+
+VLC_PUBLIC_API libvlc_media_list_t *
+    libvlc_media_list_view_parent_media_list(  libvlc_media_list_view_t * p_mlv,
+                                               libvlc_exception_t * p_e );
+
+/** @} media_list_view */
+
+# ifdef __cplusplus
+}
+# endif
+
+#endif /* LIBVLC_MEDIA_LIST_VIEW_H */
diff --git a/include/vlc/libvlc_media_player.h b/include/vlc/libvlc_media_player.h
new file mode 100644 (file)
index 0000000..4694698
--- /dev/null
@@ -0,0 +1,960 @@
+/*****************************************************************************
+ * libvlc_media_player.h:  libvlc_media_player external API
+ *****************************************************************************
+ * Copyright (C) 1998-2009 the VideoLAN team
+ * $Id$
+ *
+ * Authors: Clément Stenac <zorglub@videolan.org>
+ *          Jean-Paul Saman <jpsaman@videolan.org>
+ *          Pierre d'Herbemont <pdherbemont@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.
+ *****************************************************************************/
+
+/**
+ * \file
+ * This file defines libvlc_media_player external API
+ */
+
+#ifndef VLC_LIBVLC_MEDIA_PLAYER_H
+#define VLC_LIBVLC_MEDIA_PLAYER_H 1
+
+/*****************************************************************************
+ * Media Player
+ *****************************************************************************/
+/** \defgroup libvlc_media_player libvlc_media_player
+ * \ingroup libvlc
+ * LibVLC Media Player, object that let you play a media
+ * in a custom drawable
+ * @{
+ */
+
+typedef struct libvlc_media_player_t libvlc_media_player_t;
+
+/**
+ * Description for video, audio tracks and subtitles. It contains
+ * id, name (description string) and pointer to next record.
+ */
+typedef struct libvlc_track_description_t
+{
+    int   i_id;
+    char *psz_name;
+    struct libvlc_track_description_t *p_next;
+    
+} libvlc_track_description_t;
+
+/**
+ * Description for audio output. It contains
+ * name, description and pointer to next record.
+ */
+typedef struct libvlc_audio_output_t
+{
+    char *psz_name;
+    char *psz_description;
+    struct libvlc_audio_output_t *p_next;
+    
+} libvlc_audio_output_t;
+
+/**
+ * Rectangle type for video geometry
+ */
+typedef struct libvlc_rectangle_t
+{
+    int top, left;
+    int bottom, right;
+} libvlc_rectangle_t;
+
+
+/**
+ * Create an empty Media Player object
+ *
+ * \param p_libvlc_instance the libvlc instance in which the Media Player
+ *        should be created.
+ * \param p_e an initialized exception pointer
+ */
+VLC_PUBLIC_API libvlc_media_player_t * libvlc_media_player_new( libvlc_instance_t *, libvlc_exception_t * );
+
+/**
+ * Create a Media Player object from a Media
+ *
+ * \param p_md the media. Afterwards the p_md can be safely
+ *        destroyed.
+ * \param p_e an initialized exception pointer
+ */
+VLC_PUBLIC_API libvlc_media_player_t * libvlc_media_player_new_from_media( libvlc_media_t *, libvlc_exception_t * );
+
+/**
+ * Release a media_player after use
+ * Decrement the reference count of a media player object. If the
+ * reference count is 0, then libvlc_media_player_release() will
+ * release the media player object. If the media player object
+ * has been released, then it should not be used again.
+ *
+ * \param p_mi the Media Player to free
+ */
+VLC_PUBLIC_API void libvlc_media_player_release( libvlc_media_player_t * );
+
+/**
+ * Retain a reference to a media player object. Use
+ * libvlc_media_player_release() to decrement reference count.
+ *
+ * \param p_mi media player object
+ */
+VLC_PUBLIC_API void libvlc_media_player_retain( libvlc_media_player_t * );
+
+/**
+ * Set the media that will be used by the media_player. If any,
+ * previous md will be released.
+ *
+ * \param p_mi the Media Player
+ * \param p_md the Media. Afterwards the p_md can be safely
+ *        destroyed.
+ * \param p_e an initialized exception pointer
+ */
+VLC_PUBLIC_API void libvlc_media_player_set_media( libvlc_media_player_t *, libvlc_media_t *, libvlc_exception_t * );
+
+/**
+ * Get the media used by the media_player.
+ *
+ * \param p_mi the Media Player
+ * \param p_e an initialized exception pointer
+ * \return the media associated with p_mi, or NULL if no
+ *         media is associated
+ */
+VLC_PUBLIC_API libvlc_media_t * libvlc_media_player_get_media( libvlc_media_player_t *, libvlc_exception_t * );
+
+/**
+ * Get the Event Manager from which the media player send event.
+ *
+ * \param p_mi the Media Player
+ * \param p_e an initialized exception pointer
+ * \return the event manager associated with p_mi
+ */
+VLC_PUBLIC_API libvlc_event_manager_t * libvlc_media_player_event_manager ( libvlc_media_player_t *, libvlc_exception_t * );
+
+/**
+ * is_playing
+ *
+ * \param p_mi the Media Player
+ * \param p_e an initialized exception pointer
+ * \return 1 if the media player is playing, 0 otherwise
+ */
+VLC_PUBLIC_API int libvlc_media_player_is_playing ( libvlc_media_player_t *, libvlc_exception_t * );
+
+/**
+ * Play
+ *
+ * \param p_mi the Media Player
+ * \param p_e an initialized exception pointer
+ */
+VLC_PUBLIC_API void libvlc_media_player_play ( libvlc_media_player_t *, libvlc_exception_t * );
+
+/**
+ * Pause
+ *
+ * \param p_mi the Media Player
+ * \param p_e an initialized exception pointer
+ */
+VLC_PUBLIC_API void libvlc_media_player_pause ( libvlc_media_player_t *, libvlc_exception_t * );
+
+/**
+ * Stop
+ *
+ * \param p_mi the Media Player
+ * \param p_e an initialized exception pointer
+ */
+VLC_PUBLIC_API void libvlc_media_player_stop ( libvlc_media_player_t *, libvlc_exception_t * );
+
+/**
+ * Set the agl handler where the media player should render its video output.
+ *
+ * \param p_mi the Media Player
+ * \param drawable the agl handler
+ * \param p_e an initialized exception pointer
+ */
+VLC_PUBLIC_API void libvlc_media_player_set_nsobject ( libvlc_media_player_t *p_mi, void * drawable, libvlc_exception_t *p_e );
+
+/**
+ * Get the agl handler previously set with libvlc_media_player_set_agl().
+ *
+ * \return the agl handler or 0 if none where set
+ */
+VLC_PUBLIC_API void * libvlc_media_player_get_nsobject ( libvlc_media_player_t *p_mi );
+       
+/**
+ * Set the agl handler where the media player should render its video output.
+ *
+ * \param p_mi the Media Player
+ * \param drawable the agl handler
+ * \param p_e an initialized exception pointer
+ */
+VLC_PUBLIC_API void libvlc_media_player_set_agl ( libvlc_media_player_t *p_mi, uint32_t drawable, libvlc_exception_t *p_e );
+
+/**
+ * Get the agl handler previously set with libvlc_media_player_set_agl().
+ *
+ * \return the agl handler or 0 if none where set
+ */
+VLC_PUBLIC_API uint32_t libvlc_media_player_get_agl ( libvlc_media_player_t *p_mi );
+
+/**
+ * Set an X Window System drawable where the media player should render its
+ * video output. If LibVLC was built without X11 output support, then this has
+ * no effects.
+ *
+ * The specified identifier must correspond to an existing Input/Output class
+ * X11 window. Pixmaps are <b>not</b> supported. The caller shall ensure that
+ * the X11 server is the same as the one the VLC instance has been configured
+ * with.
+ * If XVideo is <b>not</b> used, it is assumed that the drawable has the
+ * following properties in common with the default X11 screen: depth, scan line
+ * pad, black pixel. This is a bug.
+ *
+ * \param p_mi the Media Player
+ * \param drawable the ID of the X window
+ * \param p_e an initialized exception pointer
+ */
+VLC_PUBLIC_API void libvlc_media_player_set_xwindow ( libvlc_media_player_t *p_mi, uint32_t drawable, libvlc_exception_t *p_e );
+
+/**
+ * Get the X Window System window identifier previously set with
+ * libvlc_media_player_set_xwindow(). Note that this will return the identifier
+ * even if VLC is not currently using it (for instance if it is playing an
+ * audio-only input).
+ *
+ * \return an X window ID, or 0 if none where set.
+ */
+VLC_PUBLIC_API uint32_t libvlc_media_player_get_xwindow ( libvlc_media_player_t *p_mi );
+
+/**
+ * Set a Win32/Win64 API window handle (HWND) where the media player should
+ * render its video output. If LibVLC was built without Win32/Win64 API output
+ * support, then this has no effects.
+ *
+ * \param p_mi the Media Player
+ * \param drawable windows handle of the drawable
+ * \param p_e an initialized exception pointer
+ */
+VLC_PUBLIC_API void libvlc_media_player_set_hwnd ( libvlc_media_player_t *p_mi, void *drawable, libvlc_exception_t *p_e );
+
+/**
+ * Get the Windows API window handle (HWND) previously set with
+ * libvlc_media_player_set_hwnd(). The handle will be returned even if LibVLC
+ * is not currently outputting any video to it.
+ *
+ * \return a window handle or NULL if there are none.
+ */
+VLC_PUBLIC_API void *libvlc_media_player_get_hwnd ( libvlc_media_player_t *p_mi );
+
+
+
+/** \bug This might go away ... to be replaced by a broader system */
+
+/**
+ * Get the current movie length (in ms).
+ *
+ * \param p_mi the Media Player
+ * \param p_e an initialized exception pointer
+ * \return the movie length (in ms).
+ */
+VLC_PUBLIC_API libvlc_time_t libvlc_media_player_get_length( libvlc_media_player_t *, libvlc_exception_t *);
+
+/**
+ * Get the current movie time (in ms).
+ *
+ * \param p_mi the Media Player
+ * \param p_e an initialized exception pointer
+ * \return the movie time (in ms).
+ */
+VLC_PUBLIC_API libvlc_time_t libvlc_media_player_get_time( libvlc_media_player_t *, libvlc_exception_t *);
+
+/**
+ * Set the movie time (in ms).
+ *
+ * \param p_mi the Media Player
+ * \param the movie time (in ms).
+ * \param p_e an initialized exception pointer
+ */
+VLC_PUBLIC_API void libvlc_media_player_set_time( libvlc_media_player_t *, libvlc_time_t, libvlc_exception_t *);
+
+/**
+ * Get movie position.
+ *
+ * \param p_mi the Media Player
+ * \param p_e an initialized exception pointer
+ * \return movie position
+ */
+VLC_PUBLIC_API float libvlc_media_player_get_position( libvlc_media_player_t *, libvlc_exception_t *);
+
+/**
+ * Set movie position.
+ *
+ * \param p_mi the Media Player
+ * \param p_e an initialized exception pointer
+ * \return movie position
+ */
+VLC_PUBLIC_API void libvlc_media_player_set_position( libvlc_media_player_t *, float, libvlc_exception_t *);
+
+/**
+ * Set movie chapter
+ *
+ * \param p_mi the Media Player
+ * \param i_chapter chapter number to play
+ * \param p_e an initialized exception pointer
+ */
+VLC_PUBLIC_API void libvlc_media_player_set_chapter( libvlc_media_player_t *, int, libvlc_exception_t *);
+
+/**
+ * Get movie chapter
+ *
+ * \param p_mi the Media Player
+ * \param p_e an initialized exception pointer
+ * \return chapter number currently playing
+ */
+VLC_PUBLIC_API int libvlc_media_player_get_chapter( libvlc_media_player_t *, libvlc_exception_t * );
+
+/**
+ * Get movie chapter count
+ *
+ * \param p_mi the Media Player
+ * \param p_e an initialized exception pointer
+ * \return number of chapters in movie
+ */
+VLC_PUBLIC_API int libvlc_media_player_get_chapter_count( libvlc_media_player_t *, libvlc_exception_t *);
+VLC_PUBLIC_API int libvlc_media_player_will_play        ( libvlc_media_player_t *, libvlc_exception_t *);
+
+/**
+ * Get title chapter count
+ *
+ * \param p_mi the Media Player
+ * \param i_title title
+ * \param p_e an initialized exception pointer
+ * \return number of chapters in title
+ */
+VLC_PUBLIC_API int libvlc_media_player_get_chapter_count_for_title(
+                       libvlc_media_player_t *, int, libvlc_exception_t *);
+
+/**
+ * Set movie title
+ *
+ * \param p_mi the Media Player
+ * \param i_title title number to play
+ * \param p_e an initialized exception pointer
+ */
+VLC_PUBLIC_API void libvlc_media_player_set_title( libvlc_media_player_t *, int, libvlc_exception_t *);
+
+/**
+ * Get movie title
+ *
+ * \param p_mi the Media Player
+ * \param p_e an initialized exception pointer
+ * \return title number currently playing
+ */
+VLC_PUBLIC_API int libvlc_media_player_get_title( libvlc_media_player_t *, libvlc_exception_t *);
+
+/**
+ * Get movie title count
+ *
+ * \param p_mi the Media Player
+ * \param p_e an initialized exception pointer
+ * \return title number count
+ */
+VLC_PUBLIC_API int libvlc_media_player_get_title_count( libvlc_media_player_t *, libvlc_exception_t *);
+
+/**
+ * Set previous chapter
+ *
+ * \param p_mi the Media Player
+ * \param p_e an initialized exception pointer
+ */
+VLC_PUBLIC_API void libvlc_media_player_previous_chapter( libvlc_media_player_t *, libvlc_exception_t *);
+
+/**
+ * Set next chapter
+ *
+ * \param p_mi the Media Player
+ * \param p_e an initialized exception pointer
+ */
+VLC_PUBLIC_API void libvlc_media_player_next_chapter( libvlc_media_player_t *, libvlc_exception_t *);
+
+/**
+ * Get movie play rate
+ *
+ * \param p_mi the Media Player
+ * \param p_e an initialized exception pointer
+ * \return movie play rate
+ */
+VLC_PUBLIC_API float libvlc_media_player_get_rate( libvlc_media_player_t *, libvlc_exception_t *);
+
+/**
+ * Set movie play rate
+ *
+ * \param p_mi the Media Player
+ * \param movie play rate to set
+ * \param p_e an initialized exception pointer
+ */
+VLC_PUBLIC_API void libvlc_media_player_set_rate( libvlc_media_player_t *, float, libvlc_exception_t *);
+
+/**
+ * Get current movie state
+ *
+ * \param p_mi the Media Player
+ * \param p_e an initialized exception pointer
+ * \return current movie state as libvlc_state_t
+ */
+VLC_PUBLIC_API libvlc_state_t libvlc_media_player_get_state( libvlc_media_player_t *, libvlc_exception_t *);
+
+/**
+ * Get movie fps rate
+ *
+ * \param p_mi the Media Player
+ * \param p_e an initialized exception pointer
+ * \return frames per second (fps) for this playing movie
+ */
+VLC_PUBLIC_API float libvlc_media_player_get_fps( libvlc_media_player_t *, libvlc_exception_t *);
+
+/** end bug */
+
+/**
+ * Does this media player have a video output?
+ *
+ * \param p_md the media player
+ * \param p_e an initialized exception pointer
+ */
+VLC_PUBLIC_API int  libvlc_media_player_has_vout( libvlc_media_player_t *, libvlc_exception_t *);
+
+/**
+ * Is this media player seekable?
+ *
+ * \param p_input the input
+ * \param p_e an initialized exception pointer
+ */
+VLC_PUBLIC_API int libvlc_media_player_is_seekable( libvlc_media_player_t *p_mi, libvlc_exception_t *p_e );
+
+/**
+ * Can this media player be paused?
+ *
+ * \param p_input the input
+ * \param p_e an initialized exception pointer
+ */
+VLC_PUBLIC_API int libvlc_media_player_can_pause( libvlc_media_player_t *p_mi, libvlc_exception_t *p_e );
+
+/**
+ * Release (free) libvlc_track_description_t
+ *
+ * \param p_track_description the structure to release
+ */
+VLC_PUBLIC_API void libvlc_track_description_release( libvlc_track_description_t *p_track_description );
+
+/** \defgroup libvlc_video libvlc_video
+ * \ingroup libvlc_media_player
+ * LibVLC Video handling
+ * @{
+ */
+
+/**
+ * Toggle fullscreen status on video output.
+ *
+ * \param p_mediaplayer the media player
+ * \param p_e an initialized exception pointer
+ */
+VLC_PUBLIC_API void libvlc_toggle_fullscreen( libvlc_media_player_t *, libvlc_exception_t * );
+
+/**
+ * Enable or disable fullscreen on a video output.
+ *
+ * \param p_mediaplayer the media player
+ * \param b_fullscreen boolean for fullscreen status
+ * \param p_e an initialized exception pointer
+ */
+VLC_PUBLIC_API void libvlc_set_fullscreen( libvlc_media_player_t *, int, libvlc_exception_t * );
+
+/**
+ * Get current fullscreen status.
+ *
+ * \param p_mediaplayer the media player
+ * \param p_e an initialized exception pointer
+ * \return the fullscreen status (boolean)
+ */
+VLC_PUBLIC_API int libvlc_get_fullscreen( libvlc_media_player_t *, libvlc_exception_t * );
+
+/**
+ * Get current video height.
+ *
+ * \param p_mediaplayer the media player
+ * \param p_e an initialized exception pointer
+ * \return the video height
+ */
+VLC_PUBLIC_API int libvlc_video_get_height( libvlc_media_player_t *, libvlc_exception_t * );
+
+/**
+ * Get current video width.
+ *
+ * \param p_mediaplayer the media player
+ * \param p_e an initialized exception pointer
+ * \return the video width
+ */
+VLC_PUBLIC_API int libvlc_video_get_width( libvlc_media_player_t *, libvlc_exception_t * );
+
+/**
+ * Get the current video scaling factor.
+ * See also libvlc_video_set_scale().
+ *
+ * \param p_mediaplayer the media player
+ * \return the currently configured zoom factor, or 0. if the video is set
+ * to fit to the output window/drawable automatically.
+ */
+VLC_PUBLIC_API float libvlc_video_get_scale( libvlc_media_player_t *,
+                                             libvlc_exception_t *p_e );
+
+/**
+ * Set the video scaling factor. That is the ratio of the number of pixels on
+ * screen to the number of pixels in the original decoded video in each
+ * dimension. Zero is a special value; it will adjust the video to the output
+ * window/drawable (in windowed mode) or the entire screen.
+ *
+ * Note that not all video outputs support scaling.
+ *
+ * \param p_mediaplayer the media player
+ * \param i_factor the scaling factor, or zero
+ */
+VLC_PUBLIC_API void libvlc_video_set_scale( libvlc_media_player_t *, float,
+                                            libvlc_exception_t *p_e );
+
+/**
+ * Get current video aspect ratio.
+ *
+ * \param p_mediaplayer the media player
+ * \param p_e an initialized exception pointer
+ * \return the video aspect ratio
+ */
+VLC_PUBLIC_API char *libvlc_video_get_aspect_ratio( libvlc_media_player_t *, libvlc_exception_t * );
+
+/**
+ * Set new video aspect ratio.
+ *
+ * \param p_mediaplayer the media player
+ * \param psz_aspect new video aspect-ratio
+ * \param p_e an initialized exception pointer
+ */
+VLC_PUBLIC_API void libvlc_video_set_aspect_ratio( libvlc_media_player_t *, char *, libvlc_exception_t * );
+
+/**
+ * Get current video subtitle.
+ *
+ * \param p_mediaplayer the media player
+ * \param p_e an initialized exception pointer
+ * \return the video subtitle selected
+ */
+VLC_PUBLIC_API int libvlc_video_get_spu( libvlc_media_player_t *, libvlc_exception_t * );
+
+/**
+ * Get the number of available video subtitles.
+ *
+ * \param p_mediaplayer the media player
+ * \param p_e an initialized exception pointer
+ * \return the number of available video subtitles
+ */
+VLC_PUBLIC_API int libvlc_video_get_spu_count( libvlc_media_player_t *, libvlc_exception_t * );
+
+/**
+ * Get the description of available video subtitles.
+ *
+ * \param p_mediaplayer the media player
+ * \param p_e an initialized exception pointer
+ * \return list containing description of available video subtitles
+ */
+VLC_PUBLIC_API libvlc_track_description_t *
+        libvlc_video_get_spu_description( libvlc_media_player_t *, libvlc_exception_t * );
+
+/**
+ * Set new video subtitle.
+ *
+ * \param p_mediaplayer the media player
+ * \param i_spu new video subtitle to select
+ * \param p_e an initialized exception pointer
+ */
+VLC_PUBLIC_API void libvlc_video_set_spu( libvlc_media_player_t *, int , libvlc_exception_t * );
+
+/**
+ * Set new video subtitle file.
+ *
+ * \param p_mediaplayer the media player
+ * \param psz_subtitle new video subtitle file
+ * \param p_e an initialized exception pointer
+ * \return the success status (boolean)
+ */
+VLC_PUBLIC_API int libvlc_video_set_subtitle_file( libvlc_media_player_t *, char *, libvlc_exception_t * );
+
+/**
+ * Get the description of available titles.
+ *
+ * \param p_mediaplayer the media player
+ * \param p_e an initialized exception pointer
+ * \return list containing description of available titles
+ */
+VLC_PUBLIC_API libvlc_track_description_t *
+        libvlc_video_get_title_description( libvlc_media_player_t *, libvlc_exception_t * );
+
+/**
+ * Get the description of available chapters for specific title.
+ *
+ * \param p_mediaplayer the media player
+ * \param i_title selected title
+ * \param p_e an initialized exception pointer
+ * \return list containing description of available chapter for title i_title
+ */
+VLC_PUBLIC_API libvlc_track_description_t *
+        libvlc_video_get_chapter_description( libvlc_media_player_t *, int, libvlc_exception_t * );
+
+/**
+ * Get current crop filter geometry.
+ *
+ * \param p_mediaplayer the media player
+ * \param p_e an initialized exception pointer
+ * \return the crop filter geometry
+ */
+VLC_PUBLIC_API char *libvlc_video_get_crop_geometry( libvlc_media_player_t *, libvlc_exception_t * );
+
+/**
+ * Set new crop filter geometry.
+ *
+ * \param p_mediaplayer the media player
+ * \param psz_geometry new crop filter geometry
+ * \param p_e an initialized exception pointer
+ */
+VLC_PUBLIC_API void libvlc_video_set_crop_geometry( libvlc_media_player_t *, char *, libvlc_exception_t * );
+
+/**
+ * Toggle teletext transparent status on video output.
+ *
+ * \param p_mediaplayer the media player
+ * \param p_e an initialized exception pointer
+ */
+VLC_PUBLIC_API void libvlc_toggle_teletext( libvlc_media_player_t *, libvlc_exception_t * );
+
+/**
+ * Get current teletext page requested.
+ *
+ * \param p_mediaplayer the media player
+ * \param p_e an initialized exception pointer
+ * \return the current teletext page requested.
+ */
+VLC_PUBLIC_API int libvlc_video_get_teletext( libvlc_media_player_t *, libvlc_exception_t * );
+
+/**
+ * Set new teletext page to retrieve.
+ *
+ * \param p_mediaplayer the media player
+ * \param i_page teletex page number requested
+ * \param p_e an initialized exception pointer
+ */
+VLC_PUBLIC_API void libvlc_video_set_teletext( libvlc_media_player_t *, int, libvlc_exception_t * );
+
+/**
+ * Get number of available video tracks.
+ *
+ * \param p_mi media player
+ * \param p_e an initialized exception
+ * \return the number of available video tracks (int)
+ */
+VLC_PUBLIC_API int libvlc_video_get_track_count( libvlc_media_player_t *,  libvlc_exception_t * );
+
+/**
+ * Get the description of available video tracks.
+ *
+ * \param p_mi media player
+ * \param p_e an initialized exception
+ * \return list with description of available video tracks
+ */
+VLC_PUBLIC_API libvlc_track_description_t *
+        libvlc_video_get_track_description( libvlc_media_player_t *,  libvlc_exception_t * );
+
+/**
+ * Get current video track.
+ *
+ * \param p_mi media player
+ * \param p_e an initialized exception pointer
+ * \return the video track (int)
+ */
+VLC_PUBLIC_API int libvlc_video_get_track( libvlc_media_player_t *, libvlc_exception_t * );
+
+/**
+ * Set video track.
+ *
+ * \param p_mi media player
+ * \param i_track the track (int)
+ * \param p_e an initialized exception pointer
+ */
+VLC_PUBLIC_API void libvlc_video_set_track( libvlc_media_player_t *, int, libvlc_exception_t * );
+
+/**
+ * Take a snapshot of the current video window.
+ *
+ * If i_width AND i_height is 0, original size is used.
+ * If i_width XOR i_height is 0, original aspect-ratio is preserved.
+ *
+ * \param p_mi media player instance
+ * \param psz_filepath the path where to save the screenshot to
+ * \param i_width the snapshot's width
+ * \param i_height the snapshot's height
+ * \param p_e an initialized exception pointer
+ */
+VLC_PUBLIC_API void libvlc_video_take_snapshot( libvlc_media_player_t *, const char *,unsigned int, unsigned int, libvlc_exception_t * );
+
+/** @} video */
+
+/** \defgroup libvlc_audio libvlc_audio
+ * \ingroup libvlc_media_player
+ * LibVLC Audio handling
+ * @{
+ */
+
+/**
+ * Audio device types
+ */
+typedef enum libvlc_audio_output_device_types_t {
+    libvlc_AudioOutputDevice_Error  = -1,
+    libvlc_AudioOutputDevice_Mono   =  1,
+    libvlc_AudioOutputDevice_Stereo =  2,
+    libvlc_AudioOutputDevice_2F2R   =  4,
+    libvlc_AudioOutputDevice_3F2R   =  5,
+    libvlc_AudioOutputDevice_5_1    =  6,
+    libvlc_AudioOutputDevice_6_1    =  7,
+    libvlc_AudioOutputDevice_7_1    =  8,
+    libvlc_AudioOutputDevice_SPDIF  = 10
+} libvlc_audio_output_device_types_t;
+
+/**
+ * Audio channels
+ */
+typedef enum libvlc_audio_output_channel_t {
+    libvlc_AudioChannel_Error   = -1,
+    libvlc_AudioChannel_Stereo  =  1,
+    libvlc_AudioChannel_RStereo =  2,
+    libvlc_AudioChannel_Left    =  3,
+    libvlc_AudioChannel_Right   =  4,
+    libvlc_AudioChannel_Dolbys  =  5
+} libvlc_audio_output_channel_t;
+
+
+/**
+ * Get the list of available audio outputs
+ *
+ * \param p_instance libvlc instance
+ * \param p_e an initialized exception pointer
+ * \return list of available audio outputs, at the end free it with
+*          \see libvlc_audio_output_list_release \see libvlc_audio_output_t
+ */
+VLC_PUBLIC_API libvlc_audio_output_t *
+        libvlc_audio_output_list_get( libvlc_instance_t *,
+                                      libvlc_exception_t * );
+
+/**
+ * Free the list of available audio outputs
+ *
+ * \param p_list list with audio outputs for release
+ */
+VLC_PUBLIC_API void libvlc_audio_output_list_release( libvlc_audio_output_t * );
+
+/**
+ * Set the audio output.
+ * Change will be applied after stop and play.
+ *
+ * \param p_instance libvlc instance
+ * \param psz_name name of audio output,
+ *               use psz_name of \see libvlc_audio_output_t
+ * \return true if function succeded
+ */
+VLC_PUBLIC_API int libvlc_audio_output_set( libvlc_instance_t *,
+                                            const char * );
+
+/**
+ * Get count of devices for audio output, these devices are hardware oriented
+ * like analor or digital output of sound card
+ *
+ * \param p_instance libvlc instance
+ * \param psz_audio_output - name of audio output, \see libvlc_audio_output_t
+ * \return number of devices
+ */
+VLC_PUBLIC_API int libvlc_audio_output_device_count( libvlc_instance_t *,
+                                                     const char * );
+
+/**
+ * Get long name of device, if not available short name given
+ *
+ * \param p_instance libvlc instance
+ * \param psz_audio_output - name of audio output, \see libvlc_audio_output_t
+ * \param i_device device index
+ * \return long name of device
+ */
+VLC_PUBLIC_API char * libvlc_audio_output_device_longname( libvlc_instance_t *,
+                                                           const char *,
+                                                           int );
+
+/**
+ * Get id name of device
+ *
+ * \param p_instance libvlc instance
+ * \param psz_audio_output - name of audio output, \see libvlc_audio_output_t
+ * \param i_device device index
+ * \return id name of device, use for setting device, need to be free after use
+ */
+VLC_PUBLIC_API char * libvlc_audio_output_device_id( libvlc_instance_t *,
+                                                     const char *,
+                                                     int );
+
+/**
+ * Set device for using
+ *
+ * \param p_instance libvlc instance
+ * \param psz_audio_output - name of audio output, \see libvlc_audio_output_t
+ * \param psz_device_id device
+ */
+VLC_PUBLIC_API void libvlc_audio_output_device_set( libvlc_instance_t *,
+                                                    const char *,
+                                                    const char * );
+
+/**
+ * Get current audio device type. Device type describes something like
+ * character of output sound - stereo sound, 2.1, 5.1 etc
+ *
+ * \param p_instance vlc instance
+ * \param p_e an initialized exception pointer
+ * \return the audio devices type \see libvlc_audio_output_device_types_t
+ */
+VLC_PUBLIC_API int libvlc_audio_output_get_device_type(
+        libvlc_instance_t *, libvlc_exception_t * );
+
+/**
+ * Set current audio device type.
+ *
+ * \param p_instance vlc instance
+ * \param device_type the audio device type,
+          according to \see libvlc_audio_output_device_types_t
+ * \param p_e an initialized exception pointer
+ */
+VLC_PUBLIC_API void libvlc_audio_output_set_device_type( libvlc_instance_t *,
+                                                         int,
+                                                         libvlc_exception_t * );
+
+
+/**
+ * Toggle mute status.
+ *
+ * \param p_instance libvlc instance
+ * \param p_e an initialized exception pointer
+ */
+VLC_PUBLIC_API void libvlc_audio_toggle_mute( libvlc_instance_t *, libvlc_exception_t * );
+
+/**
+ * Get current mute status.
+ *
+ * \param p_instance libvlc instance
+ * \param p_e an initialized exception pointer
+ * \return the mute status (boolean)
+ */
+VLC_PUBLIC_API int libvlc_audio_get_mute( libvlc_instance_t *, libvlc_exception_t * );
+
+/**
+ * Set mute status.
+ *
+ * \param p_instance libvlc instance
+ * \param status If status is true then mute, otherwise unmute
+ * \param p_e an initialized exception pointer
+ */
+VLC_PUBLIC_API void libvlc_audio_set_mute( libvlc_instance_t *, int , libvlc_exception_t * );
+
+/**
+ * Get current audio level.
+ *
+ * \param p_instance libvlc instance
+ * \param p_e an initialized exception pointer
+ * \return the audio level (int)
+ */
+VLC_PUBLIC_API int libvlc_audio_get_volume( libvlc_instance_t *, libvlc_exception_t * );
+
+/**
+ * Set current audio level.
+ *
+ * \param p_instance libvlc instance
+ * \param i_volume the volume (int)
+ * \param p_e an initialized exception pointer
+ */
+VLC_PUBLIC_API void libvlc_audio_set_volume( libvlc_instance_t *, int, libvlc_exception_t *);
+
+/**
+ * Get number of available audio tracks.
+ *
+ * \param p_mi media player
+ * \param p_e an initialized exception
+ * \return the number of available audio tracks (int)
+ */
+VLC_PUBLIC_API int libvlc_audio_get_track_count( libvlc_media_player_t *,  libvlc_exception_t * );
+
+ /**
+ * Get the description of available audio tracks.
+ *
+ * \param p_mi media player
+ * \param p_e an initialized exception
+ * \return list with description of available audio tracks
+ */
+VLC_PUBLIC_API libvlc_track_description_t *
+        libvlc_audio_get_track_description( libvlc_media_player_t *,  libvlc_exception_t * );
+
+/**
+ * Get current audio track.
+ *
+ * \param p_mi media player
+ * \param p_e an initialized exception pointer
+ * \return the audio track (int)
+ */
+VLC_PUBLIC_API int libvlc_audio_get_track( libvlc_media_player_t *, libvlc_exception_t * );
+
+/**
+ * Set current audio track.
+ *
+ * \param p_mi media player
+ * \param i_track the track (int)
+ * \param p_e an initialized exception pointer
+ */
+VLC_PUBLIC_API void libvlc_audio_set_track( libvlc_media_player_t *, int, libvlc_exception_t * );
+
+/**
+ * Get current audio channel.
+ *
+ * \param p_instance vlc instance
+ * \param p_e an initialized exception pointer
+ * \return the audio channel \see libvlc_audio_output_channel_t
+ */
+VLC_PUBLIC_API int
+    libvlc_audio_get_channel( libvlc_instance_t *, libvlc_exception_t * );
+
+/**
+ * Set current audio channel.
+ *
+ * \param p_instance vlc instance
+ * \param channel the audio channel, \see libvlc_audio_output_channel_t
+ * \param p_e an initialized exception pointer
+ */
+VLC_PUBLIC_API void libvlc_audio_set_channel( libvlc_instance_t *,
+                                              int,
+                                              libvlc_exception_t * );
+
+/** @} audio */
+
+/** @} media_player */
+
+#endif /* VLC_LIBVLC_MEDIA_PLAYER_H */
index 7ad8378dc45578779f51adef701f91a59106c07f..1f830d7e23c94115d5eb50842a2afb7d4f67e3ee 100644 (file)
@@ -79,116 +79,10 @@ typedef int64_t libvlc_time_t;
  * @{
  */
 
-/* Meta Handling */
-/** defgroup libvlc_meta libvlc_meta
- * \ingroup libvlc_media
- * LibVLC Media Meta
- * @{
- */
-
-typedef enum libvlc_meta_t {
-    libvlc_meta_Title,
-    libvlc_meta_Artist,
-    libvlc_meta_Genre,
-    libvlc_meta_Copyright,
-    libvlc_meta_Album,
-    libvlc_meta_TrackNumber,
-    libvlc_meta_Description,
-    libvlc_meta_Rating,
-    libvlc_meta_Date,
-    libvlc_meta_Setting,
-    libvlc_meta_URL,
-    libvlc_meta_Language,
-    libvlc_meta_NowPlaying,
-    libvlc_meta_Publisher,
-    libvlc_meta_EncodedBy,
-    libvlc_meta_ArtworkURL,
-    libvlc_meta_TrackID,
-    /* Add new meta types HERE */
-} libvlc_meta_t;
-
-/**@} */
-
-typedef struct libvlc_media_t libvlc_media_t;
 
 /**@} */
 
 
-/*****************************************************************************
- * Media Instance
- *****************************************************************************/
-/** \defgroup libvlc_media_player libvlc_media_player
- * \ingroup libvlc
- * LibVLC Media Instance handling
- * @{
- */
-
-typedef struct libvlc_media_player_t libvlc_media_player_t;
-
-/**
- * Note the order of libvlc_state_t enum must match exactly the order of
- * @see mediacontrol_PlayerStatus, @see input_state_e enums,
- * and VideoLAN.LibVLC.State (at bindings/cil/src/media.cs).
- *
- * Expected states by web plugins are:
- * IDLE/CLOSE=0, OPENING=1, BUFFERING=2, PLAYING=3, PAUSED=4,
- * STOPPING=5, ENDED=6, ERROR=7
- */
-typedef enum libvlc_state_t
-{
-    libvlc_NothingSpecial=0,
-    libvlc_Opening,
-    libvlc_Buffering,
-    libvlc_Playing,
-    libvlc_Paused,
-    libvlc_Stopped,
-    libvlc_Ended,
-    libvlc_Error
-} libvlc_state_t;
-
-/**@} */
-
-/*****************************************************************************
- * Media List
- *****************************************************************************/
-/** \defgroup libvlc_media_list libvlc_media_list
- * \ingroup libvlc
- * LibVLC Media List handling
- * @{
- */
-
-typedef struct libvlc_media_list_t libvlc_media_list_t;
-typedef struct libvlc_media_list_view_t libvlc_media_list_view_t;
-
-
-/*****************************************************************************
- * Media List Player
- *****************************************************************************/
-/** \defgroup libvlc_media_list_player libvlc_media_list_player
- * \ingroup libvlc_media_list
- * LibVLC Media List Player handling
- * @{
- */
-
-typedef struct libvlc_media_list_player_t libvlc_media_list_player_t;
-
-/**@} libvlc_media_list_player */
-
-/**@} libvlc_media_list */
-
-/*****************************************************************************
- * Media Library
- *****************************************************************************/
-/** \defgroup libvlc_media_library libvlc_media_library
- * \ingroup libvlc
- * LibVLC Media Library
- * @{
- */
-
-typedef struct libvlc_media_library_t libvlc_media_library_t;
-
-/**@} */
-
 /*****************************************************************************
  * Playlist
  *****************************************************************************/
@@ -209,88 +103,6 @@ typedef struct libvlc_playlist_item_t
 
 /**@} */
 
-/*****************************************************************************
- * Media Player
- *****************************************************************************/
-/** \defgroup libvlc_media_player libvlc_media_player
- * \ingroup libvlc
- * LibVLC Media Player, object that let you play a media
- * in a drawable
- * @{
- */
-
-/**
- * Description for video, audio tracks and subtitles. It contains
- * id, name (description string) and pointer to next record.
- */
-typedef struct libvlc_track_description_t
-{
-    int   i_id;
-    char *psz_name;
-    struct libvlc_track_description_t *p_next;
-
-} libvlc_track_description_t;
-
-/**@} */
-
-/*****************************************************************************
- * Audio
- *****************************************************************************/
-/** \defgroup libvlc_audio libvlc_audio
- * \ingroup libvlc_media_player
- * LibVLC Audio handling
- * @{
- */
-
-/**
- * Description for audio output. It contains
- * name, description and pointer to next record.
- */
-typedef struct libvlc_audio_output_t
-{
-    char *psz_name;
-    char *psz_description;
-    struct libvlc_audio_output_t *p_next;
-
-} libvlc_audio_output_t;
-
-/**@} */
-
-
-/*****************************************************************************
- * Video
- *****************************************************************************/
-/** \defgroup libvlc_video libvlc_video
- * \ingroup libvlc_media_player
- * LibVLC Video handling
- * @{
- */
-
-/**
-* Rectangle type for video geometry
-*/
-typedef struct libvlc_rectangle_t
-{
-    int top, left;
-    int bottom, right;
-}
-libvlc_rectangle_t;
-
-/**@} */
-
-
-/*****************************************************************************
- * Services/Media Discovery
- *****************************************************************************/
-/** \defgroup libvlc_media_discoverer libvlc_media_discoverer
- * \ingroup libvlc
- * LibVLC Media Discoverer
- * @{
- */
-
-typedef struct libvlc_media_discoverer_t libvlc_media_discoverer_t;
-
-/**@} */
 
 /*****************************************************************************
  * Message log handling
index 489b8d2f31ed43ee10e294717c80ab6e9497aa8a..0f34b57f3f53f2bfdaad3fdc544752c902d37461 100644 (file)
@@ -38,9 +38,15 @@ extern "C" {
 # endif
 
 #include <vlc/libvlc_structures.h>
-#include <vlc/libvlc_events.h>
 #include <vlc/libvlc.h>
+#include <vlc/libvlc_media.h>
+#include <vlc/libvlc_media_player.h>
 #include <vlc/libvlc_media_list.h>
+#include <vlc/libvlc_media_list_view.h>
+#include <vlc/libvlc_media_list_player.h>
+#include <vlc/libvlc_media_library.h>
+#include <vlc/libvlc_media_discoverer.h>
+#include <vlc/libvlc_events.h>
 #include <vlc/libvlc_vlm.h>
 #include <vlc/deprecated.h>
 
index 00b7e2e6b13cdf550528c25f8a06fe1014d17aa8..21b67fbdb6a47e4ed8a9a93ab569da508bed4cdc 100644 (file)
@@ -47,25 +47,14 @@ extern "C" {
       && ((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> */
 /*
index e085f0378b432ed56392241bc3017a57c6f81c85..90ef202247651ad6ea44bb50440ae3ae93d32fda 100644 (file)
  * This file defines functions, structures and macros for handling arrays in vlc
  */
 
+/* realloc() that never fails *if* downsizing */
+static inline void *realloc_down( void *ptr, size_t size )
+{
+    void *ret = realloc( ptr, size );
+    return ret ? ret : ptr;
+}
+
 /**
  * Simple dynamic array handling. Array is realloced at each insert/removal
  */
     }                                                                         \
     while( 0 )
 
-#define REMOVE_ELEM( p_ar, i_oldsize, i_pos )                                 \
+#define REMOVE_ELEM( p_ar, i_size, i_pos )                                    \
     do                                                                        \
     {                                                                         \
-        if( (i_oldsize) - (i_pos) - 1 )                                       \
+        if( (i_size) - (i_pos) - 1 )                                          \
         {                                                                     \
             memmove( (p_ar) + (i_pos),                                        \
                      (p_ar) + (i_pos) + 1,                                    \
-                     ((i_oldsize) - (i_pos) - 1) * sizeof( *(p_ar) ) );       \
-        }                                                                     \
-        if( i_oldsize > 1 )                                                   \
-        {                                                                     \
-            (p_ar) = realloc( p_ar, ((i_oldsize) - 1) * sizeof( *(p_ar) ) );  \
+                     ((i_size) - (i_pos) - 1) * sizeof( *(p_ar) ) );          \
         }                                                                     \
+        if( i_size > 1 )                                                      \
+            (p_ar) = realloc_down( p_ar, ((i_size) - 1) * sizeof( *(p_ar) ) );\
         else                                                                  \
         {                                                                     \
             free( p_ar );                                                     \
             (p_ar) = NULL;                                                    \
         }                                                                     \
-        (i_oldsize)--;                                                        \
+        (i_size)--;                                                           \
     }                                                                         \
     while( 0 )
 
index 291581c4731f74af61b310b4fe8cb3b673f310ba..512dcf3ae652faa9f9564a1e6ab1e67bddaa2e85 100644 (file)
@@ -26,6 +26,8 @@
 
 #include <vlc_block.h>
 #include <vlc_es.h>
+#include <vlc_picture.h>
+#include <vlc_subpicture.h>
 
 /**
  * \file
index 85176d02054cc44f179e77c6f05e034d605b3726..42362954694e23125866849148fa10d311cd5703 100644 (file)
@@ -24,6 +24,7 @@
 #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
@@ -302,35 +303,34 @@ wave_format_tag_to_fourcc[] =
     { 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" }
 };
 
@@ -393,31 +393,4 @@ static inline void sf_tag_to_fourcc( GUID *guid_tag,
     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" */
index 869bfc4945223fa15cd5eb9a1416461b07070eb7..88b938bc421b379ec818dcf6118c25cb054360b9 100644 (file)
@@ -176,12 +176,6 @@ typedef struct module_cache_t module_cache_t;
 
 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;
index 8744f20f733e05d67f7e20dff8926a62b23590b9..c315c5fb92e68f9b1c798f26053a8ccfdd49a37d 100644 (file)
@@ -27,6 +27,7 @@
 /* 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
@@ -98,14 +99,6 @@ struct audio_format_t
     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
  */
@@ -178,6 +171,12 @@ static inline void video_format_Clean( video_format_t *p_src )
     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
  */
@@ -227,8 +226,9 @@ typedef struct extra_languages_t
  */
 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
index a7404a74cee114d1ee4363977e7e5de4dc47ec0e..6dbb2f117ca115564918b3e12b8c530aa7516617 100644 (file)
@@ -26,6 +26,8 @@
 #define VLC_FILTER_H 1
 
 #include <vlc_es.h>
+#include <vlc_picture.h>
+#include <vlc_subpicture.h>
 
 /**
  * \file
diff --git a/include/vlc_fourcc.h b/include/vlc_fourcc.h
new file mode 100644 (file)
index 0000000..0fe0c2d
--- /dev/null
@@ -0,0 +1,353 @@
+/*****************************************************************************
+ * 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 */
+
index cd5ffd54572cefabaf9f07270041a4da4cc938f5..4d94344ef1e9951de5ff3977f6e8b6b8f9dbc890 100644 (file)
@@ -38,18 +38,13 @@ GCRY_THREAD_OPTION_PTHREAD_IMPL;
 
 static int gcry_vlc_mutex_init( void **p_sys )
 {
-    int i_val;
     vlc_mutex_t *p_lock = (vlc_mutex_t *)malloc( sizeof( vlc_mutex_t ) );
-
     if( p_lock == NULL)
         return ENOMEM;
 
-    i_val = vlc_mutex_init( p_lock );
-    if( i_val )
-        free( p_lock );
-    else
-        *p_sys = p_lock;
-    return i_val;
+    vlc_mutex_init( p_lock );
+    *p_sys = p_lock;
+    return VLC_SUCCESS;
 }
 
 static int gcry_vlc_mutex_destroy( void **p_sys )
index 06f6fc2bf33010d1c238bf601cb5171e897766f5..561a75396481dfedb7c86ca6564c6399105c05fb 100644 (file)
@@ -383,8 +383,11 @@ typedef enum input_event_type_e
     /* "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) */
index fae34b527e1f19ed359b5acbce0d526423b37cd3..46a88523991e1f486dcd0466c43dd17639eced32 100644 (file)
@@ -44,11 +44,14 @@ typedef struct intf_dialog_args_t intf_dialog_args_t;
  * @{
  */
 
+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;
@@ -60,14 +63,14 @@ struct intf_thread_t
 
     /** 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
@@ -96,10 +99,8 @@ struct intf_dialog_args_t
 /*****************************************************************************
  * 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 * ) );
index 450a6f3213cdc007a04675ad06f84a313460601d..4f7fe397a0f4e091644f0a66bbd7fedd055ca156 100644 (file)
@@ -1,7 +1,7 @@
 /*****************************************************************************
  * 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 }
@@ -108,40 +108,27 @@ static const struct key_descriptor_s vlc_modifiers[] =
     { "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' },
@@ -152,6 +139,19 @@ static const struct key_descriptor_s vlc_keys[] =
     { "7", '7' },
     { "8", '8' },
     { "9", '9' },
+    { ":", ':' },
+    { ";", ';' },
+    { "<", '<' },
+    { "=", '=' },
+    { ">", '>' },
+    { "?", '?' },
+    { "@", '@' },
+    { "[", '[' },
+    { "\\", '\\' },
+    { "]", ']' },
+    { "^", '^' },
+    { "_", '_' },
+    { "`", '`' },
     { "a", 'a' },
     { "b", 'b' },
     { "c", 'c' },
@@ -178,34 +178,34 @@ static const struct key_descriptor_s vlc_keys[] =
     { "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 },
@@ -219,26 +219,35 @@ static const struct key_descriptor_s vlc_keys[] =
     { "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 ))
         {
index df855f662e4fb643c955b753099255a3a68c609b..0aff210871579b4b731c49bac1a387e16ece3374 100644 (file)
@@ -265,8 +265,25 @@ struct text_style_t
 #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
@@ -590,8 +607,8 @@ static inline void osd_SetMenuUpdate( osd_menu_t *p_osd, bool b_value )
  * 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 ) );
 
 /**
@@ -611,34 +628,9 @@ VLC_EXPORT( int, osd_Icon, ( vlc_object_t *, spu_t *, int, int, int, int, int, s
  * 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,
diff --git a/include/vlc_picture.h b/include/vlc_picture.h
new file mode 100644 (file)
index 0000000..a1f4b9f
--- /dev/null
@@ -0,0 +1,309 @@
+/*****************************************************************************
+ * 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 */
index fc2b8089865178e0d2d7f31fdc1afa5b6c72324b..d8de71caa0d64265d1f7919abd53da825e831418 100644 (file)
@@ -111,7 +111,7 @@ TYPEDEF_ARRAY(playlist_item_t*, playlist_item_array_t);
  * 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
  *
  *
@@ -322,7 +322,7 @@ VLC_EXPORT( bool, playlist_IsServicesDiscoveryLoaded, ( playlist_t *,const char
  ********************************************************/
 
 /*************************** 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 ) );
@@ -333,7 +333,6 @@ VLC_EXPORT( int, playlist_BothAddInput, ( playlist_t *, input_item_t *,playlist_
 /********************************** 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 *) );
 
diff --git a/include/vlc_subpicture.h b/include/vlc_subpicture.h
new file mode 100644 (file)
index 0000000..26f0cf6
--- /dev/null
@@ -0,0 +1,181 @@
+/*****************************************************************************
+ * 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 */
index dd0bce783580ee79d9e3cacf82f9bdb636d44375..7ccafbbafce2890e507139c7ddee0bb4348df89e 100644 (file)
@@ -139,13 +139,13 @@ typedef DWORD   vlc_threadvar_t;
 /*****************************************************************************
  * 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 *) );
@@ -155,11 +155,11 @@ VLC_EXPORT( int, vlc_threadvar_create, (vlc_threadvar_t * , void (*) (void *) )
 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, ...));
@@ -242,9 +242,10 @@ typedef pthread_spinlock_t 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)
 {
-    return pthread_spin_init (spin, PTHREAD_PROCESS_PRIVATE);
+    if (pthread_spin_init (spin, PTHREAD_PROCESS_PRIVATE))
+        abort ();
 }
 
 /**
@@ -271,21 +272,17 @@ static inline void vlc_spin_destroy (vlc_spinlock_t *spin)
     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 ();
 }
 
 /**
@@ -317,9 +314,9 @@ static inline void vlc_spin_destroy (vlc_spinlock_t *spin)
 /* 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
index a7ce058cfdcdaf608eea9ce30501fcd0f3834875..2261c82e29f2daf5fb04a3d8c3ce5e87fb144189 100644 (file)
 #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
 
@@ -134,6 +133,8 @@ VLC_EXPORT( int, var_GetChecked, ( vlc_object_t *, const char *, int, vlc_value_
 #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.
  */
index 36b4b11de28c1f47e8d1572b75c0963321d0aa8c..4a706fcfd4172f5ea8183317685c033a76b228fe 100644 (file)
  * 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
@@ -255,205 +67,6 @@ struct picture_heap_t
     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
 
@@ -461,19 +74,6 @@ VLC_EXPORT( void,  subpicture_Delete, ( subpicture_t *p_subpic ) );
  * 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
@@ -704,7 +304,6 @@ VLC_EXPORT( int, vout_GetSnapshot, ( vout_thread_t *p_vout,
 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 * ) );
index 43bd16fe5a66897259d05eb752ad2b4e0093746e..d8b4b45759533f9b1c5e077360212bca9964de59 100644 (file)
@@ -44,7 +44,6 @@
 #include <vlc_access.h>
 #include <vlc_demux.h>
 #include <vlc_input.h>
-#include <vlc_vout.h>
 
 #include <ctype.h>
 #include <fcntl.h>
index 9fa05aa8f5dd7bf0ff7e99c02b41636b97d8ba1e..b79d38a50549071a892b11364812107e801a3c7b 100644 (file)
@@ -33,7 +33,6 @@
 #include <vlc_common.h>
 #include <vlc_plugin.h>
 #include <vlc_input.h>
-#include <vlc_vout.h>
 #include <vlc_demux.h>
 
 
@@ -215,7 +214,6 @@ static int Open( vlc_object_t *p_this )
     int i;
     int i_width;
     int i_height;
-    int i_aspect;
     int result = 0;
 
     if( strncmp(p_demux->psz_access, "dc1394", 6) != 0 )
@@ -477,12 +475,16 @@ static int Open( vlc_object_t *p_this )
     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;
@@ -498,11 +500,11 @@ static int Open( vlc_object_t *p_this )
         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 *
index c34b2902859926db148d870f363c4ff6a6771c30..653227ea6479610095cf2e5a3225e1f26f8667ec 100644 (file)
@@ -30,7 +30,6 @@
 #endif
 
 #include <vlc_common.h>
-#include <vlc_vout.h>
 
 #ifndef _MSC_VER
     /* Work-around a bug in w32api-2.5 */
index 5dbce84fa6923adae5298bd6e98d62eb1ef98436..79c77f642aaba39a94e9363db8a42e3d1455a057 100644 (file)
@@ -38,7 +38,6 @@
 #include <vlc_input.h>
 #include <vlc_access.h>
 #include <vlc_demux.h>
-#include <vlc_vout.h>
 #include <vlc_dialog.h>
 #include <vlc_charset.h>
 
@@ -349,7 +348,8 @@ static int CommonOpen( vlc_object_t *p_this, access_sys_t *p_sys,
 
     /* 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;
 
@@ -419,12 +419,9 @@ static int CommonOpen( vlc_object_t *p_this, access_sys_t *p_sys,
     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 );
@@ -488,11 +485,9 @@ static int CommonOpen( vlc_object_t *p_this, access_sys_t *p_sys,
         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;
 
@@ -668,7 +663,7 @@ static int DemuxOpen( vlc_object_t *p_this )
             }
 
             /* 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;
@@ -725,14 +720,12 @@ static int AccessOpen( vlc_object_t *p_this )
     /* 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" );
@@ -912,17 +905,17 @@ static int GetFourCCPriority( int i_fourcc )
 {
     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;
     }
 
@@ -1478,7 +1471,7 @@ static size_t EnumDeviceCaps( vlc_object_t *p_this, IBaseFilter *p_filter,
                                     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;
@@ -1655,7 +1648,7 @@ static size_t EnumDeviceCaps( vlc_object_t *p_this, IBaseFilter *p_filter,
                 {
                     // 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
@@ -1680,7 +1673,7 @@ static size_t EnumDeviceCaps( vlc_object_t *p_this, IBaseFilter *p_filter,
                             ((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;
index 456aa87597aad24cf0c62df4e7a6c5a90c78ce21..d061633d767726faa5a8593741bc0c76b97216c4 100644 (file)
@@ -30,7 +30,7 @@
 #endif
 
 #include <vlc_common.h>
-#include <vlc_vout.h>
+#include <vlc_fourcc.h>
 
 #ifndef _MSC_VER
     /* Work-around a bug in w32api-2.5 */
@@ -242,67 +242,67 @@ int GetFourCCFromMediaType( const AM_MEDIA_TYPE &media_type )
             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;
 
         }
     }
@@ -314,7 +314,7 @@ int GetFourCCFromMediaType( const AM_MEDIA_TYPE &media_type )
             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 )
index 638440377d426dcf3b9bb6d32b7e3982b472898c..f611a04f4423fdfbda47ffb4340cb8520c6bbcd5 100644 (file)
@@ -232,7 +232,7 @@ static int Open( vlc_object_t *p_this )
         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;
@@ -340,14 +340,6 @@ static block_t *Block( access_t *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 );
@@ -401,7 +393,7 @@ static int Raw1394Handler( raw1394handle_t handle, int channel, size_t length, q
     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 */
@@ -476,13 +468,13 @@ static int Raw1394GetNumPorts( access_t *p_access )
     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 );
@@ -500,21 +492,14 @@ static raw1394handle_t Raw1394Open( access_t *p_access, int port )
     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 );
@@ -522,7 +507,7 @@ static raw1394handle_t Raw1394Open( access_t *p_access, int port )
     }
 
     /* 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;
@@ -598,8 +583,8 @@ static int DiscoverAVC( access_t *p_access, int* port, uint64_t guid )
 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 )
@@ -627,7 +612,6 @@ static void AVCClose( access_t *p_access )
     }
 }
 
-
 static int AVCResetHandler( raw1394handle_t handle, unsigned int generation )
 {
     raw1394_update_generation( handle, generation );
index 8e05040d4a31b88256591ee4583e8dad96515b42..6b4c48994b0a13c56ce7913517d7e7494a91d5df 100644 (file)
@@ -41,7 +41,6 @@
 #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>
@@ -305,7 +304,7 @@ static int Open( vlc_object_t *p_this )
     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;
index 7ea65275881bd78f28ebce2729d4b58c5e280971..4d8c746d52033c2a807ae4b883049a23bf118314 100644 (file)
@@ -37,7 +37,6 @@
 #include <vlc_access.h>
 #include <vlc_demux.h>
 #include <vlc_input.h>
-#include <vlc_vout.h>
 
 #include <ctype.h>
 #include <fcntl.h>
@@ -397,7 +396,7 @@ static int OpenAudioDev( demux_t *p_demux )
              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;
index 088378f74923c0aa8905692769ba3e09112161bf..9656949d2cffc75b673f0f797a885304e67faa5f 100644 (file)
@@ -33,7 +33,6 @@
 #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>
@@ -171,8 +170,8 @@ static int qtchroma_to_fourcc( int i_qt )
     } 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;
index 1f8c6f687104cd4641fdbfe581a5610ad8b95ca2..15075ad61767ec40c47f9dba6e84984f277697c2 100644 (file)
@@ -452,7 +452,7 @@ static void *pcmu_init (demux_t *demux)
 {
     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);
@@ -465,7 +465,7 @@ static void *gsm_init (demux_t *demux)
 {
     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);
@@ -478,7 +478,7 @@ static void *pcma_init (demux_t *demux)
 {
     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);
@@ -491,7 +491,7 @@ static void *l16s_init (demux_t *demux)
 {
     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);
@@ -501,7 +501,7 @@ static void *l16m_init (demux_t *demux)
 {
     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);
@@ -514,7 +514,7 @@ static void *qcelp_init (demux_t *demux)
 {
     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);
@@ -527,7 +527,7 @@ static void *mpa_init (demux_t *demux)
 {
     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);
@@ -555,7 +555,7 @@ static void *mpv_init (demux_t *demux)
 {
     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);
 }
index 7f6492e64418a4b4b09a84ada00c0985494f3d15..8a98bd624a469143fea0a81130942b6607be4465 100644 (file)
@@ -250,7 +250,7 @@ static void vorbis_decode (demux_t *demux, void *data, block_t *block)
                     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);
index 95d48bf033d0270dd892c42ae84a205d7a40b9cc..b4444ecd980f161baa91e2ce75b38423c05beebf 100644 (file)
@@ -519,13 +519,13 @@ rmff_header_t *real_parse_sdp(char *data, char **stream_rules, uint32_t bandwidt
 
   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;
 }
@@ -725,7 +725,7 @@ rmff_header_t  *real_setup_and_get_header(rtsp_client_t *rtsp_session, int bandw
   return h;
 
 error:
-  if( h ) rmff_free_header( h );
+  rmff_free_header( h );
   free( challenge1 );
   free( session_id );
   free( description );
index 64e043af5431f0fed08769a6b62781b0f166cb7a..53542f90d8c7ebbb143fceb734a3a8242b8cf3ef 100644 (file)
  * 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;
 }
@@ -198,8 +140,9 @@ static sdpplin_stream_t *sdpplin_parse_stream(char **data) {
       *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;
@@ -281,35 +224,31 @@ sdpplin_t *sdpplin_parse(char *data)
         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)) {
index 165250c9c301dc59741e1456decda7db7c354281..5f70cdc66b2637c242978e99c9445dedc43ae6fe 100644 (file)
@@ -61,11 +61,11 @@ int screen_InitCapture( demux_t *p_demux )
     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:
index 5b14fdd610773963176644ee76abcd8d5e1d8590..f469bac99476b3bda622c3d096b884d91e43d132 100644 (file)
@@ -129,7 +129,7 @@ int screen_InitCapture( demux_t *p_demux )
     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;
index e70b168e28e73de7807a70069f1f642b720f6b1d..55169f02782f9d8f505da4b1edce9180acb4d95e 100644 (file)
@@ -212,7 +212,7 @@ static int Open( vlc_object_t *p_this )
         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 )
         {
@@ -336,18 +336,18 @@ void RenderCursor( demux_t *p_demux, int i_x, int i_y,
 {
     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 =
index e0cfd7abfb53add3df95916eb02c6d91a0e9aacb..01cac097c9d8711324ea49465ffc669950ef2a04 100644 (file)
@@ -81,14 +81,14 @@ int screen_InitCapture( demux_t *p_demux )
     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 );
@@ -108,17 +108,17 @@ int screen_InitCapture( demux_t *p_demux )
 
     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;
index 8723f150149cfdd333398818eae0d209ee2295b8..1cb4a5564490e0343623912ae240cdbb1595b4a5 100644 (file)
@@ -68,14 +68,14 @@ int screen_InitCapture( demux_t *p_demux )
     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:
index 11261e7c30e395f81f8bd0df39ca3101146c3536..b564ad21dc47bf2f9f1d8975e1b354c354b602ad 100644 (file)
@@ -37,7 +37,7 @@
 #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>
@@ -212,27 +212,25 @@ struct quicktime_mjpeg_app1
 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 }
 };
 
@@ -354,18 +352,18 @@ static int Open( vlc_object_t *p_this )
     /* 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;
@@ -977,10 +975,12 @@ static int OpenVideoDev( demux_t *p_demux, char *psz_device )
             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++ )
@@ -1056,7 +1056,7 @@ static int OpenVideoDev( demux_t *p_demux, char *psz_device )
             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 */
@@ -1072,10 +1072,9 @@ static int OpenVideoDev( demux_t *p_demux, char *psz_device )
     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;
index 31dae6643f3445a6549b225e2e42f9e133a91ca5..705eb66c41e53993a26f7e5325e0a92ee9aa6f95 100644 (file)
@@ -393,42 +393,41 @@ static int AccessControlResetCallback( vlc_object_t *p_this,
 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('?','?','?','?') },
@@ -1946,21 +1945,18 @@ static int OpenVideoDev( vlc_object_t *p_obj, demux_sys_t *p_sys, bool b_demux )
 
     /* 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 */
@@ -2924,7 +2920,7 @@ static void SetAvailControlsByString( vlc_object_t *p_obj, demux_sys_t *p_sys,
             psz_parser = ( *psz_delim ) ? ( psz_delim + 1 ) : psz_delim;
         }
     }
-    var_Change( p_obj, "allcontrols", VLC_VAR_FREELIST, &val, &text );
+    var_FreeList( &val, &text );
 }
 
 /*****************************************************************************
index 8171f88d26a6e47e9a99dff9e8d3b95da30de291..8c844ead7d150f5b6e3af9091c37cd7f1f2a4a65 100644 (file)
@@ -1,7 +1,6 @@
 SOURCES_vcdx = \
+       access.h \
        access.c \
-       intf.c \
-       intf.h \
        vcd.c \
        vcd.h \
        vcdplayer.h \
index 15d02e8cf34e6aadff59fadf97b14ee4cf0197da..e0eb969905501c05958fc1e42557d4f2d130fcea 100644 (file)
 #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
@@ -970,10 +967,6 @@ VCDOpen ( vlc_object_t *p_this )
 #endif
     p_vcdplayer->p_access = p_access;
 
-#ifdef FIXED
-    intf_RunThread( p_vcdplayer->p_intf );
-#endif
-
     free( psz_source );
 
     return VLC_SUCCESS;
@@ -1039,12 +1032,12 @@ static int VCDControl( access_t *p_access, int i_query, va_list args )
          */
         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" );
             }
diff --git a/modules/access/vcdx/access.h b/modules/access/vcdx/access.h
new file mode 100644 (file)
index 0000000..289fdb2
--- /dev/null
@@ -0,0 +1,31 @@
+/*****************************************************************************
+ * 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 */
+
diff --git a/modules/access/vcdx/demux.c b/modules/access/vcdx/demux.c
deleted file mode 100644 (file)
index b2077b7..0000000
+++ /dev/null
@@ -1,198 +0,0 @@
-/*****************************************************************************
- * 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;
-}
index cf36e53bac448c4295a0b0abb4c38d816377cec6..5c77655de468602f15fd1ec45a8e581d9ce3183b 100644 (file)
@@ -16,9 +16,9 @@
  * 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
@@ -29,7 +29,6 @@
 #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 );
   }
@@ -134,9 +100,7 @@ VCDMetaInfo( access_t *p_access, /*const*/ char *psz_mrl )
     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"));
@@ -151,11 +115,8 @@ VCDMetaInfo( access_t *p_access, /*const*/ char *psz_mrl )
       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));
@@ -172,48 +133,23 @@ VCDMetaInfo( access_t *p_access, /*const*/ char *psz_mrl )
       }
     }
   }
+# 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.
@@ -236,30 +172,28 @@ VCDMetaInfo( access_t *p_access, /*const*/ char *psz_mrl )
        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++ = '%';
@@ -267,44 +201,41 @@ VCDFormatStr(const access_t *p_access, vcdplayer_t *p_vcdplayer,
       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? */
@@ -315,58 +246,51 @@ VCDFormatStr(const access_t *p_access, vcdplayer_t *p_vcdplayer,
       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;
     }
   }
@@ -376,24 +300,24 @@ VCDFormatStr(const access_t *p_access, vcdplayer_t *p_vcdplayer,
 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);
     }
 }
 
index 2c18f6c79a8d8873082dc3b66d7d668e37d693a9..38c02487b94993c602769e720baaa64888cda803 100644 (file)
@@ -16,9 +16,9 @@
  * 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 );
 
diff --git a/modules/access/vcdx/intf.c b/modules/access/vcdx/intf.c
deleted file mode 100644 (file)
index 6cf596d..0000000
+++ /dev/null
@@ -1,396 +0,0 @@
-/*****************************************************************************
- * 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;
-}
index 9e632344d7f534723e9da0e83a4bc3eb5acd89cd..a63ed08286aa86fbcc9e95314c3f08674072a70d 100644 (file)
@@ -16,9 +16,9 @@
  * 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
index 23685cfe8bd9ff448a216919643617b2f073b56c..3fd55629e34836334bb5cb720c9a8031792cd249 100644 (file)
  *****************************************************************************/
 
 #include <libvcd/info.h>
+#include <vlc_interface.h>
 
 #define VCD_MRL_PREFIX "vcdx://"
 
 /*****************************************************************************
  * vcd_data_t: structure for communication between access and intf.
  *****************************************************************************/
-typedef struct
-{
+typedef struct {
 #ifdef FINISHED
     vcdplay_ptr             vmg;
 #endif
index 02358d25b1c6af53d784c8f9ba96f1d04337fa7b..8efe2aef1b637eded989d2fdf58704c4cb130218 100644 (file)
 
 #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
 */
@@ -112,7 +108,7 @@ vcdplayer_update_entry( access_t * p_access, uint16_t ofs,
 
    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;
@@ -122,9 +118,7 @@ vcdplayer_non_pbc_nav ( access_t *p_access, uint8_t *wait_time )
   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:
@@ -338,8 +332,8 @@ vcdplayer_set_origin(access_t *p_access, lsn_t i_lsn, track_t i_track,
 
   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;
@@ -368,36 +362,35 @@ vcdplayer_set_origin(access_t *p_access, lsn_t i_lsn, track_t i_track,
 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
@@ -415,7 +408,8 @@ vcdplayer_play(access_t *p_access, vcdinfo_itemid_t itemid)
 
     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);
@@ -453,7 +447,7 @@ vcdplayer_play(access_t *p_access, vcdinfo_itemid_t itemid)
 }
 
 /* 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;
@@ -512,10 +506,10 @@ vcdplayer_pbc_nav ( access_t * p_access, uint8_t *wait_time )
  
       /* 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. */
@@ -592,7 +586,7 @@ vcdplayer_read (access_t * p_access, uint8_t *p_buf)
 {
 
   /* 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 ) {
@@ -600,7 +594,8 @@ vcdplayer_read (access_t * p_access, uint8_t *p_buf)
  
     /* 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 )
@@ -635,9 +630,9 @@ vcdplayer_read (access_t * p_access, uint8_t *p_buf)
 
     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++;
@@ -689,7 +684,7 @@ vcdplayer_play_default( access_t * p_access )
 
   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,
@@ -705,16 +700,17 @@ vcdplayer_play_default( access_t * p_access )
     }
 
 #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:
@@ -771,17 +767,17 @@ vcdplayer_play_next( access_t * p_access )
     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;
  
@@ -803,32 +799,30 @@ vcdplayer_play_next( access_t * p_access )
  
       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;
     }
@@ -857,7 +851,7 @@ vcdplayer_play_prev( access_t * p_access )
 
   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);
  
@@ -865,17 +859,17 @@ vcdplayer_play_prev( access_t * p_access )
     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;
  
@@ -889,7 +883,7 @@ vcdplayer_play_prev( access_t * p_access )
     /* 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;
@@ -919,11 +913,11 @@ vcdplayer_play_return( access_t * p_access )
   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);
  
@@ -931,17 +925,17 @@ vcdplayer_play_return( access_t * p_access )
     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;
  
@@ -965,11 +959,3 @@ vcdplayer_play_return( access_t * p_access )
   return VLC_SUCCESS;
 
 }
-
-/*
- * Local variables:
- *  c-file-style: "gnu"
- *  tab-width: 8
- *  indent-tabs-mode: nil
- * End:
- */
index 3b54cae2c2105a372943cfe7ce5b3b98f599b306..5e3810b19a89f02e7227af4b347c9267b105db24 100644 (file)
@@ -97,8 +97,8 @@ static int Create( vlc_object_t *p_this )
         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;
     }
index 42d1bcdb474e5e053ac78b9742f111418397074f..c659cdf11d6e96a54aea567799775b62992f74f5 100644 (file)
@@ -372,12 +372,12 @@ static int Create( vlc_object_t *p_this )
         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 )
     {
@@ -580,12 +580,12 @@ static int OpenFilter( vlc_object_t *p_this )
         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 )
     {
index 77bc29f2b1e346cb46283e28396c7e3a086cf369..7e4af3d792bfe3ea1ac0efbba3383d93aac8c9a5 100644 (file)
@@ -358,8 +358,8 @@ static int OpenFilter( vlc_object_t *p_this )
         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;
@@ -367,8 +367,8 @@ static int OpenFilter( vlc_object_t *p_this )
 
     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))
     {
index 443c3cf19fd2b4758ec5b0a3fe9f0a4ec3bb67f3..c6cf8b04ead3586bbc34d82be60be72e386d56f5 100644 (file)
@@ -291,7 +291,7 @@ static block_t *Filter( filter_t *p_filter, block_t *p_block )
  *****************************************************************************/
 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;
index ee393ed48deac87a410381317b587a827b08d844..42ac93e6231418e5dc662de808239caf875fbc22 100644 (file)
@@ -65,8 +65,8 @@ static int Create( vlc_object_t *p_this )
                == 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;
     }
index ad18a0ed907b34a1460a1d52faa5783f7f407930..083caf79a91c665be6d79bf317ee79566f09d84d 100644 (file)
@@ -122,11 +122,11 @@ static int Create( vlc_object_t *p_this )
     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;
@@ -416,16 +416,16 @@ static int OpenFilter( vlc_object_t *p_this )
     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 );
index f43855135934775fb62bfe36ae13ba7a1e202755..7bfc5809a20a775623ed146582f9925094e556b8 100644 (file)
@@ -64,9 +64,9 @@ static int Create( vlc_object_t *p_this )
 {
     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;
     }
@@ -95,7 +95,7 @@ static void DoWork( aout_instance_t * p_aout, aout_filter_t * p_filter,
     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 */
index 0028e13cab822bc9e08b9e3b02e32afc7864c596..0d48406bd749e39d31445512e9f15ccbff7e4cb6 100644 (file)
@@ -112,8 +112,8 @@ static int Create( vlc_object_t *p_this )
     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;
     }
@@ -385,13 +385,13 @@ static int OpenFilter( vlc_object_t *p_this )
     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 );
 
index d55446d11bbfff66d9a358b406e164b7bbc0e5ea..7ae39323caa3e6a78c6ec3ea0bc2a631a9be7335 100644 (file)
@@ -81,9 +81,9 @@ static int Create( vlc_object_t *p_this )
 {
     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;
     }
@@ -170,7 +170,7 @@ static void DoWork( aout_instance_t * p_aout, aout_filter_t * p_filter,
         }
 
         /* 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;
@@ -185,8 +185,8 @@ static void DoWork( aout_instance_t * p_aout, aout_filter_t * p_filter,
             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.
index 1282838feffc00011b3ddca11ad2830324e07929..c77027903a2e0a2a8dc97afadf30a2c2c0b1e968 100644 (file)
@@ -73,8 +73,8 @@ static int Create_F32ToS16( vlc_object_t *p_this )
 {
     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;
     }
@@ -157,8 +157,8 @@ static int Create_S16ToF32( vlc_object_t *p_this )
 {
     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;
     }
@@ -203,8 +203,8 @@ static int Create_U8ToF32( vlc_object_t *p_this )
 {
     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;
     }
index 223aa1e3ad82eb065f614647d08a915624f42c47..b92717511dd5d2f77c858ba7f42a7bc412f88364 100644 (file)
@@ -132,10 +132,10 @@ static int Create_F32ToFL32( vlc_object_t *p_this )
 {
     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;
     }
@@ -145,7 +145,7 @@ static int Create_F32ToFL32( vlc_object_t *p_this )
         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;
     }
@@ -202,8 +202,8 @@ static int Create_FL32ToS16( vlc_object_t *p_this )
 {
     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;
     }
@@ -257,8 +257,8 @@ static int Create_FL32ToS8( vlc_object_t *p_this )
 {
     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;
     }
@@ -302,8 +302,8 @@ static int Create_FL32ToU16( vlc_object_t *p_this )
 {
     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;
     }
@@ -347,8 +347,8 @@ static int Create_FL32ToU8( vlc_object_t *p_this )
 {
     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;
     }
@@ -392,10 +392,10 @@ static int Create_S16ToFL32( vlc_object_t *p_this )
 {
     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;
     }
@@ -405,9 +405,9 @@ static int Create_S16ToFL32( vlc_object_t *p_this )
         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;
@@ -505,10 +505,10 @@ static int Create_S16ToFL32_SW( vlc_object_t *p_this )
         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;
@@ -516,10 +516,10 @@ static int Create_S16ToFL32_SW( vlc_object_t *p_this )
         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;
@@ -527,10 +527,10 @@ static int Create_S16ToFL32_SW( vlc_object_t *p_this )
         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;
@@ -623,8 +623,8 @@ static int Create_S8ToFL32( vlc_object_t *p_this )
 {
     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;
     }
@@ -667,8 +667,8 @@ static int Create_U8ToFL32( vlc_object_t *p_this )
 {
     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;
     }
index 357ccb8b6c88cab7bd1dff3f5e83e2c6c58171cb..1bee61dc33eff45508f3f22b3601c8047947a6eb 100644 (file)
@@ -87,10 +87,10 @@ static int Create( vlc_object_t *p_this )
     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;
     }
@@ -147,7 +147,7 @@ static void DoWork( aout_instance_t * p_aout, aout_filter_t * p_filter,
 
     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);
@@ -167,7 +167,7 @@ static void DoWork( aout_instance_t * p_aout, aout_filter_t * p_filter,
 
     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;
@@ -304,7 +304,7 @@ static int OpenFilter( vlc_object_t *p_this )
     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;
@@ -325,9 +325,9 @@ static int OpenFilter( vlc_object_t *p_this )
     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 );
index 33b646943764a176179bd5e4029dc2bf41023c4e..e10696f82aceb0b9394cb76ef1835ac4372f9d19 100644 (file)
@@ -147,12 +147,12 @@ static int Open( vlc_object_t *p_this )
     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 ) )
index 0811231b104a31ce661f3fde102299723099b0e7..6f8a6046557d723b6ee6ee15e8845b48d91e2dae 100644 (file)
 #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
  *****************************************************************************/
@@ -125,74 +114,74 @@ static const struct
 } 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 },
 };
index d0a2e351f3a9060cdc86d6f71cfbec24935741ea..7ec974e85377eecc08d0587b64a0d7c891244eff 100644 (file)
@@ -103,12 +103,12 @@ static int Open( vlc_object_t *p_this )
     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" );
     }
 
index b20a84a6e5a81212da79f5605d47e980e611d96b..fa8c19417a78e2dffd092e4cafb0751a472d0842 100644 (file)
@@ -110,12 +110,12 @@ static int Open( vlc_object_t *p_this )
     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 ) )
index 9ec0714af3e6f2fc64c4dc07b260b24b216210de..485f320150f86368c0ec538b9c6d4f7a03587ed5 100644 (file)
@@ -121,7 +121,7 @@ static int Create( vlc_object_t *p_this )
               != 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;
     }
@@ -475,7 +475,7 @@ static int OpenFilter( vlc_object_t *p_this )
     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;
     }
index 161b754a0fd1da759487067833f9b305dc0179e2..41be20b4e1c362fe9a46f538c575777736c8c405 100644 (file)
@@ -90,7 +90,7 @@ static int Create( vlc_object_t *p_this )
               != 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;
     }
@@ -248,7 +248,7 @@ static int OpenFilter( vlc_object_t *p_this )
     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;
     }
index 75586041e7d12fe361eeab406bada93ecb21d993..16918681e19af08ea9e1f6d52e575cd35fa63fd9 100644 (file)
@@ -65,8 +65,8 @@ static int Create( vlc_object_t *p_this )
               != 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;
     }
index 28e38e7f76479a278c85b08eae5acbb140742e9f..059d0074c0e14a45225bc237486fc6205ed6eb4a 100644 (file)
@@ -65,8 +65,8 @@ static int Create( vlc_object_t *p_this )
               != 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;
     }
index a40435d45ee500213e1434230cfa2235f2aa65d3..3137bf1cd7468ce1233d7aba5f947aff4207b57a 100644 (file)
@@ -392,11 +392,11 @@ static int Open( vlc_object_t *p_this )
     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 ) )
index 2fbecc931444073a375ef2d5d3398bdb24f03b89..b8b2ecf8f7a13e02163432ab0f163e6c70fba19c 100644 (file)
 /*****************************************************************************
  * 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"
@@ -134,12 +134,12 @@ static int Open( vlc_object_t *p_this )
     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 ) )
index e3f905464dc6abe0d9c08edeed121d3a7970afec..474dd520a60c7621e04241f424d3d29f7c0822b2 100644 (file)
@@ -59,7 +59,7 @@ static int Create( vlc_object_t *p_this )
 {
     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;
     }
index 2512981ae52ce5f94e2b7452b5da8d9673c4bf74..3cdd04c16c19b049f15ccdf91ad2d4d2a8a60d4f 100644 (file)
@@ -59,8 +59,8 @@ static int Create( vlc_object_t *p_this )
 {
     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;
     }
index 2d03d1da2785dfa25057dc5e41d1b0bfad11d44e..fb2f45c1aae6e7555cd09d2c27a7e54b8198d03d 100644 (file)
@@ -360,12 +360,12 @@ static int Open( vlc_object_t *p_this )
        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;
     }
 
@@ -442,7 +442,7 @@ static int Open( vlc_object_t *p_this )
         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;
@@ -540,14 +540,14 @@ static int Open( vlc_object_t *p_this )
                 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;
@@ -624,7 +624,7 @@ static int Open( vlc_object_t *p_this )
             {
                 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 ) );
             }
@@ -865,7 +865,7 @@ static void ALSAFill( aout_instance_t * p_aout )
     }
 
     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 )
index 1effe5b26b1c03d000378273b41c9594a36b543b..edb438cbd5208ee02e61d440565d4562d10a731d 100644 (file)
@@ -513,7 +513,7 @@ static int OpenAnalog( aout_instance_t *p_aout )
     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 );
@@ -768,9 +768,9 @@ static int OpenSPDIF( aout_instance_t * p_aout )
 
     /* 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;
index c05d3cbdd0efc3c0cace60cc9188dd98b55bd7be..98ce3147fd48389ba0678edc5d1e3cfc7ce96ac2 100644 (file)
@@ -331,7 +331,7 @@ static int OpenAudio( vlc_object_t *p_this )
     /* 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;
@@ -340,7 +340,7 @@ static int OpenAudio( vlc_object_t *p_this )
         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,
@@ -647,7 +647,7 @@ static void Probe( aout_instance_t * p_aout )
     /* 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,
@@ -870,7 +870,7 @@ static int CreateDSBuffer( aout_instance_t *p_aout, int i_format,
 
     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;
@@ -881,7 +881,7 @@ static int CreateDSBuffer( aout_instance_t *p_aout, int i_format,
         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;
@@ -889,7 +889,7 @@ static int CreateDSBuffer( aout_instance_t *p_aout, int i_format,
         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;
@@ -991,12 +991,12 @@ static int CreateDSBufferPCM( aout_instance_t *p_aout, int *i_format,
     /* 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 )
@@ -1005,13 +1005,13 @@ static int CreateDSBufferPCM( aout_instance_t *p_aout, int *i_format,
         }
         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;
     }
 }
@@ -1117,7 +1117,7 @@ static void* DirectSoundThread( vlc_object_t *p_this )
     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" );
 
index f6f851aa436c976444c80f1d8ed5e6adf7f536ad..cb9bc0c8897ab001d86caf46a1f60439f4d86e13 100644 (file)
@@ -95,16 +95,16 @@ static void    Play        ( aout_instance_t * );
 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")
@@ -227,15 +227,15 @@ static int Open( vlc_object_t * p_this )
 
         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;
index 78a77d1cba7e0d3ea85d5b06ad594884c0fe7ab0..1b736dabc2c5871f82d57bd8cde12cf097f2e4cd 100644 (file)
@@ -156,7 +156,7 @@ static int Open( vlc_object_t * p_this )
         }
     }
 
-    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;
index aeb203fc0a7e51cd67225e6c0f4ce60fb136fdac..db5d0445b452a800602f16248da8097c2c69c97e 100644 (file)
@@ -131,7 +131,7 @@ static int Open( vlc_object_t *p_this )
     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 );
index e6154656b84ac97a154c986a5aa9e0bc8df69930..6ee0688655bd63e73786d86170262f0b672fc5da 100644 (file)
@@ -326,11 +326,11 @@ static int Open( vlc_object_t *p_this )
 
     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
@@ -338,20 +338,20 @@ static int Open( vlc_object_t *p_this )
     }
     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
@@ -388,7 +388,7 @@ static int Open( vlc_object_t *p_this )
             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;
@@ -415,22 +415,22 @@ static int Open( vlc_object_t *p_this )
         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)",
@@ -598,7 +598,7 @@ static void* OSSThread( vlc_object_t *p_this )
         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 );
 
index f73ce9bf7eacfdebcb4814eedb5934e40f30757b..9611a22c80407d5220f80f8cc9e1f560cdd3df98 100644 (file)
@@ -434,7 +434,7 @@ static int PAOpenDevice( aout_instance_t *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;
 
index 86bd6dd4c7d2d7626ec05a99dbd7d72484ed455b..bacd55ca2343ebe32be8f12aef1e09732acc31d3 100644 (file)
@@ -169,7 +169,7 @@ static int Open ( vlc_object_t *p_this )
 
     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");
index 10d6eb7f7257c894ce639814072625b9a7f82799..f8425fadb948574d1eeb4facb8cc97de49cc2585 100644 (file)
@@ -151,17 +151,17 @@ static int Open ( vlc_object_t *p_this )
     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 );
index 8bea3e34959b44a42524d3466b5b99a04fec0439..27f2561f4bf6c44d7b62a411529c86a4ef338635 100644 (file)
@@ -313,11 +313,11 @@ static int Open( vlc_object_t *p_this )
     /* 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 )
@@ -539,7 +539,7 @@ static void Probe( aout_instance_t * p_aout )
     {
         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 )
@@ -692,7 +692,7 @@ static int OpenWaveOut( aout_instance_t *p_aout, uint32_t i_device_id, int i_for
 
     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;
@@ -703,7 +703,7 @@ static int OpenWaveOut( aout_instance_t *p_aout, uint32_t i_device_id, int i_for
         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;
@@ -711,7 +711,7 @@ static int OpenWaveOut( aout_instance_t *p_aout, uint32_t i_device_id, int i_for
         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;
@@ -809,11 +809,11 @@ static int OpenWaveOutPCM( aout_instance_t *p_aout, uint32_t i_device_id, int *i
 {
     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 )
         {
@@ -821,13 +821,13 @@ static int OpenWaveOutPCM( aout_instance_t *p_aout, uint32_t i_device_id, int *i
         }
         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;
     }
 }
@@ -982,7 +982,7 @@ static void* WaveOutThread( vlc_object_t *p_this )
     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) )
index 474a1d0063f6498f8001ea0b3067785b34ab6c64..38c7d7cca1942ea28ead8527f4f6bcef4b7754e8 100644 (file)
@@ -114,16 +114,15 @@ static int OpenCommon( vlc_object_t *p_this, bool b_packetizer )
 
     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;
index d62cdaa5bffc305d03fbdf33994821f577ba1a4c..61f749fd107757f2707d549a3aef976092332d46 100644 (file)
@@ -247,7 +247,7 @@ static int OpenDecoder( vlc_object_t *p_this )
              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 =
index 986fa787cd5923c81e965d47fa8e3980c96a0bee..e1fd62656bb20c6707e1769e7e1105728eaf7022 100644 (file)
@@ -233,7 +233,7 @@ static int Open( decoder_t *p_dec, bool b_packetizer )
 {
     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 */
@@ -253,7 +253,7 @@ static int Open( decoder_t *p_dec, bool b_packetizer )
     /* 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;
@@ -345,7 +345,7 @@ static block_t *Parse( decoder_t *p_dec, int *pi_frame_length, int *pi_bits,
     }
     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;
     }
 
index 7a5ec825eb6e065671e49f17184cc1aee4534cf2..4196a9ce129519c0efc9765cdca40d7f4a64dbec 100644 (file)
@@ -188,23 +188,19 @@ static int DecoderOpen( vlc_object_t *p_this )
     /* _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:
@@ -236,150 +232,63 @@ static int DecoderOpen( vlc_object_t *p_this )
              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;
@@ -396,9 +305,8 @@ static int DecoderOpen( vlc_object_t *p_this )
         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;
     }
@@ -1378,40 +1286,37 @@ static int EncoderOpen( vlc_object_t *p_this )
     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;
     }
@@ -1429,17 +1334,16 @@ static int EncoderOpen( vlc_object_t *p_this )
     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;
     }
 
index cb89dd19226321001cd4daad96e68dc8a1ad6ec5..8a6f8024caeffbd2c6ea295da1e75fe5c534d266 100644 (file)
@@ -120,12 +120,12 @@ int InitAudioDec( decoder_t *p_dec, AVCodecContext *p_context,
         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 */
@@ -454,30 +454,30 @@ static void SetupOutputFormat( decoder_t *p_dec, bool b_trust )
     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;
index 6913a427a67b6bfc34b4030d4e7f271c653398e4..6e13170a3485f731c4cea5d59f3cc38dc7353ca0 100644 (file)
@@ -66,52 +66,52 @@ static const struct
 } 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 }
index 4b97455b15fb98b4642b0293860e377b00956e88..9006346e08204dbe3e6d22b6ad3d6691ebc18c60 100644 (file)
@@ -31,7 +31,6 @@
 
 #include <vlc_common.h>
 #include <vlc_codec.h>
-#include <vlc_vout.h>
 #include <vlc_filter.h>
 
 /* ffmpeg header */
index 092090d731689019063aa48a18caea9f2485adb0..86b44baea565985d96e6bbc8af90265ac2650f10 100644 (file)
@@ -33,7 +33,6 @@
 #endif
 
 #include <vlc_common.h>
-#include <vlc_vout.h>
 #include <vlc_aout.h>
 #include <vlc_sout.h>
 #include <vlc_codec.h>
@@ -453,8 +452,9 @@ int OpenEncoder( vlc_object_t *p_this )
             __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,
@@ -470,7 +470,7 @@ int OpenEncoder( vlc_object_t *p_this )
             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 );
 
@@ -583,11 +583,11 @@ int OpenEncoder( vlc_object_t *p_this )
         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)
@@ -872,7 +872,7 @@ static block_t *EncodeVideo( encoder_t *p_enc, picture_t *p_pict )
     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;
 
index 79f993d76dc9257c34c35a3102701c21e72268ce..51d0c598f62aed7b828ed2fb8076cfd9a42d23c8 100644 (file)
@@ -46,770 +46,185 @@ static const struct
     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*/
@@ -838,339 +253,187 @@ static const struct
     /*
      *  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;
         }
@@ -1187,7 +450,7 @@ int GetVlcFourcc( int i_ffmpeg_codec, int *pi_cat,
         {
             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;
         }
index 1c2a2efc8eaa73d6279458041dcf17e0cfe0d206..8acbcaae892bf1ad289af1be2762b0f2fcb4e1f8 100644 (file)
@@ -31,7 +31,6 @@
 
 #include <vlc_common.h>
 #include <vlc_codec.h>
-#include <vlc_vout.h>
 #include <vlc_codecs.h>                               /* BITMAPINFOHEADER */
 #include <vlc_avcodec.h>
 
@@ -128,7 +127,7 @@ static inline picture_t *ffmpeg_NewPictBuf( decoder_t *p_dec,
     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;
 
@@ -195,7 +194,7 @@ int InitVideoDec( decoder_t *p_dec, AVCodecContext *p_context,
     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 =
@@ -340,7 +339,7 @@ int InitVideoDec( decoder_t *p_dec, AVCodecContext *p_context,
     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;
 
index 419d576626823f8374ed551d73c73be5bb465683..59614a161707ed0fc6e4d332035efa9f63329242 100644 (file)
@@ -39,7 +39,6 @@
 
 #include <vlc_common.h>
 #include <vlc_plugin.h>
-#include <vlc_vout.h>
 #include <vlc_codec.h>
 #include <vlc_input.h>
 
@@ -210,7 +209,7 @@ static int Open( vlc_object_t *p_this )
     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;
 }
@@ -340,7 +339,7 @@ static subpicture_t *Subtitle( decoder_t *p_dec, char *psz_subtitle, char *psz_h
 
     /* 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;
index c1a3e754a014daecd5def969713962d1d3070999..8b3d574e59ea275670e967c5f4fa79eac30d3f89 100644 (file)
@@ -31,7 +31,6 @@
 #include <vlc_common.h>
 #include <vlc_plugin.h>
 #include <vlc_codec.h>
-#include <vlc_vout.h>
 
 /*****************************************************************************
  * decoder_sys_t : decoder descriptor
@@ -99,7 +98,7 @@ static int Open( vlc_object_t *p_this )
     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 */
@@ -114,7 +113,7 @@ static int Open( vlc_object_t *p_this )
     /* 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 =
index 109d346505b81c5106802a757365c6b5e5f29fae..5f428f7bea44dcbd4f921284f2de5b289276569b 100644 (file)
 
 #undef  CMML_DEBUG
 
-/*****************************************************************************
- * decoder_sys_t : decoder descriptor
- *****************************************************************************/
-struct decoder_sys_t
-{
-    intf_thread_t *     p_intf;
-};
-
 /*****************************************************************************
  * Local prototypes
  *****************************************************************************/
@@ -63,8 +55,8 @@ static void          ParseText     ( decoder_t *, block_t * );
 /*****************************************************************************
  * 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.
@@ -91,17 +83,12 @@ static int OpenDecoder( vlc_object_t *p_this )
 {
     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
@@ -125,10 +112,7 @@ static int OpenDecoder( vlc_object_t *p_this )
     }
 
     /* 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;
 
@@ -174,18 +158,8 @@ static subpicture_t *DecodeBlock( decoder_t *p_dec, block_t **pp_block )
 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 );
 }
 
 /*****************************************************************************
index 2600286d8b3224155e7f476aaab72b291487d853..a1019f1fe8367cb53527b19b23584fa0ea7505f2 100644 (file)
@@ -40,7 +40,6 @@
 #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
 {
@@ -78,8 +79,8 @@ 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 *,
@@ -109,22 +110,18 @@ static int   DisplayPendingAnchor       ( intf_thread_t *, vout_thread_t * );
 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
@@ -140,15 +137,15 @@ int OpenIntf ( vlc_object_t *p_this )
     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
@@ -165,26 +162,29 @@ void CloseIntf ( vlc_object_t *p_this )
     }
 
     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" );
@@ -204,7 +204,7 @@ static void RunIntf( intf_thread_t *p_intf )
         /* 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 )
             {
@@ -215,12 +215,12 @@ static void RunIntf( intf_thread_t *p_intf )
             }
         }
 
-        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 );
@@ -234,8 +234,8 @@ static void RunIntf( intf_thread_t *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 );
 
@@ -251,8 +251,9 @@ static void RunIntf( intf_thread_t *p_intf )
         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;
 }
 
 /*****************************************************************************
@@ -265,10 +266,9 @@ static int DisplayPendingAnchor( intf_thread_t *p_intf, vout_thread_t *p_vout )
     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 )
     {
@@ -337,14 +337,14 @@ static int InitThread( intf_thread_t * p_intf )
             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;
     }
@@ -379,11 +379,11 @@ static int KeyEvent( vlc_object_t *p_this, char const *psz_var,
     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;
 }
@@ -393,15 +393,13 @@ static int KeyEvent( vlc_object_t *p_this, char const *psz_var,
  *****************************************************************************/
 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 )
@@ -437,7 +435,7 @@ static void FollowAnchor ( intf_thread_t *p_intf )
         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;
@@ -526,7 +524,7 @@ char *GetTimedURLFromPlaylistItem( intf_thread_t *p_intf,
         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 )
     {
index 3802f4a3322a7d95d9f0e65125257f1830fa770c..d7d7909bf971d0deadff8474b14046aca00e30f7 100644 (file)
@@ -34,7 +34,6 @@
 
 #include <vlc_common.h>
 #include <vlc_plugin.h>
-#include <vlc_vout.h>
 #include <vlc_codec.h>
 #include <vlc_osd.h>
 #include <vlc_input.h>
@@ -102,7 +101,7 @@ static int Create( vlc_object_t *p_this )
     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();
@@ -131,7 +130,7 @@ static int Create( vlc_object_t *p_this )
                                                    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;
 }
@@ -268,7 +267,7 @@ static void UpdateRegions( spu_t *p_spu, subpicture_t *p_subpic,
     /* 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;
index dbd59164dc718ef19ce7bc339ed0386a40b5ebb4..adec5547f40d23e8209690f66304e505fbc9f845 100644 (file)
@@ -33,7 +33,6 @@
 
 #include <vlc_common.h>
 #include <vlc_plugin.h>
-#include <vlc_vout.h>
 #include <vlc_codec.h>
 
 #include "vlc_bits.h"
@@ -111,10 +110,8 @@ static int DecoderOpen( vlc_object_t *p_this )
     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 )
@@ -129,7 +126,7 @@ static int DecoderOpen( vlc_object_t *p_this )
     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;
 }
@@ -512,7 +509,7 @@ static subpicture_t *DecodePacket( decoder_t *p_dec, block_t *p_data )
 
     /* 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;
index f397ba281a829f9073778fc0356d9cfe7cd5b746..f24dd18b0e3ee9a6a1fe5f87d8f9ca53e9135a25 100644 (file)
@@ -41,7 +41,6 @@
 #include <vlc_plugin.h>
 #include <vlc_codec.h>
 #include <vlc_sout.h>
-#include <vlc_vout.h>
 
 #include <libdirac_encoder/dirac_encoder.h>
 
@@ -443,7 +442,7 @@ static int OpenEncoder( vlc_object_t *p_this )
     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;
@@ -462,7 +461,7 @@ static int OpenEncoder( vlc_object_t *p_this )
 
     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 )
@@ -519,19 +518,19 @@ static int OpenEncoder( vlc_object_t *p_this )
     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;
index 321709df219adb552a9ec4c0ce392b698c022a55..5f66b58a811803b5543b2d9fc2891d03601f91a7 100644 (file)
@@ -31,7 +31,6 @@
 
 #include <vlc_common.h>
 #include <vlc_codec.h>
-#include <vlc_vout.h>
 
 #ifndef WIN32
 #    define LOADER
index 2e51be23f589e8159819e91cd22fe854a98615b5..4be0bf315a4b67e0f8ef3e3e7da42a271ce0afa0 100644 (file)
@@ -32,7 +32,6 @@
 #include <vlc_common.h>
 #include <vlc_plugin.h>
 #include <vlc_codec.h>
-#include <vlc_vout.h>
 #include <vlc_aout.h>
 
 #ifndef WIN32
@@ -186,44 +185,30 @@ typedef struct
 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 }
@@ -232,21 +217,16 @@ static const codec_dll decoders_table[] =
 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 }
@@ -418,7 +398,7 @@ static int DecOpen( decoder_t *p_dec )
 
         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;
 
@@ -449,7 +429,7 @@ static int DecOpen( decoder_t *p_dec )
             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;
@@ -464,7 +444,7 @@ static int DecOpen( decoder_t *p_dec )
 
         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;
@@ -486,7 +466,7 @@ static int DecOpen( decoder_t *p_dec )
     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
@@ -517,14 +497,14 @@ static int DecOpen( decoder_t *p_dec )
     {
         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;
@@ -533,8 +513,8 @@ static int DecOpen( decoder_t *p_dec )
             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;
@@ -696,7 +676,7 @@ static int LoadDMO( vlc_object_t *p_this, HINSTANCE *p_hmsdmo_dll,
         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;
     }
@@ -704,7 +684,7 @@ static int LoadDMO( vlc_object_t *p_this, HINSTANCE *p_hmsdmo_dll,
     {
         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
@@ -1145,7 +1125,7 @@ static int EncoderSetVideoType( encoder_t *p_enc, IMediaObject *p_dmo )
     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;
@@ -1260,7 +1240,7 @@ static int EncoderSetVideoType( encoder_t *p_enc, IMediaObject *p_dmo )
     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 )
@@ -1288,7 +1268,7 @@ static int EncoderSetAudioType( encoder_t *p_enc, IMediaObject *p_dmo )
     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
index 9b4ac47f8d2a92ecf1fe9c414570e584a99bfa5a..163609d3422bae1ea0e9572df26d50f06a4e4622 100644 (file)
@@ -140,11 +140,8 @@ static int OpenCommon( vlc_object_t *p_this, bool b_packetizer )
     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 )
@@ -160,7 +157,7 @@ static int OpenCommon( vlc_object_t *p_this, bool b_packetizer )
 
     /* 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 */
index b102cd069c810500b6cc883c54448476fc9aeb69..3345eeb2e7e159dccfae9642face022177ad7e82 100644 (file)
@@ -45,7 +45,6 @@
 
 #include <vlc_common.h>
 #include <vlc_plugin.h>
-#include <vlc_vout.h>
 #include <vlc_codec.h>
 #include <vlc_sout.h>
 
@@ -296,7 +295,7 @@ static int Open( vlc_object_t *p_this )
     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;
     }
@@ -1537,12 +1536,12 @@ static subpicture_t *render( decoder_t *p_dec )
             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;
@@ -1595,7 +1594,7 @@ static subpicture_t *render( decoder_t *p_dec )
 
             /* 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;
@@ -1659,7 +1658,7 @@ static int OpenEncoder( vlc_object_t *p_this )
     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;
@@ -1671,7 +1670,7 @@ static int OpenEncoder( vlc_object_t *p_this )
     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 );
@@ -1692,8 +1691,8 @@ static int OpenEncoder( vlc_object_t *p_this )
     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 )
 {
@@ -1722,7 +1721,7 @@ 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;
@@ -1909,11 +1908,11 @@ static block_t *Encode( encoder_t *p_enc, subpicture_t *p_subpic )
 
     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 )
@@ -1927,8 +1926,8 @@ static block_t *Encode( encoder_t *p_enc, subpicture_t *p_subpic )
     /* 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 ) );
@@ -2113,7 +2112,7 @@ static void encode_clut( encoder_t *p_enc, bs_t *s, subpicture_t *p_subpic )
     /* 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;
     }
@@ -2167,7 +2166,7 @@ static void encode_region_composition( encoder_t *p_enc, bs_t *s,
     {
         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 )
         {
@@ -2253,10 +2252,10 @@ static void encode_object( encoder_t *p_enc, bs_t *s, subpicture_t *p_subpic )
         /* 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:
@@ -2267,7 +2266,7 @@ static void encode_object( encoder_t *p_enc, bs_t *s, subpicture_t *p_subpic )
         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;
 
@@ -2326,7 +2325,7 @@ static void encode_pixel_data( encoder_t *p_enc, bs_t *s,
     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;
index e050a94bc0e15293f45ca1502f5998f249bd1437..3633bc893dfa6d6f89c72ecd7837845fc85980bb 100644 (file)
@@ -117,7 +117,7 @@ static int Open( vlc_object_t *p_this )
     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;
     }
@@ -138,9 +138,9 @@ static int Open( vlc_object_t *p_this )
     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 =
index 0696eb1b8d5b2571d8a10d86b3cb32aa6da5b129..a13b6717905b3f786f89c04d8a670ebc477fbfae 100644 (file)
@@ -169,17 +169,11 @@ static int OpenDecoder( vlc_object_t *p_this )
     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 );
 
index be411d5489e14e3a49ef35fe41006c99c038e8e0..856019b004a4f0efdc3b3a8c578924985ad35512 100644 (file)
@@ -210,7 +210,7 @@ static int OpenDecoder( vlc_object_t *p_this )
     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;
     }
@@ -270,7 +270,7 @@ static int OpenDecoder( vlc_object_t *p_this )
 
     /* 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
@@ -294,7 +294,7 @@ static int OpenPacketizer( vlc_object_t *p_this )
     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 )
     {
@@ -359,7 +359,7 @@ static void ProcessHeader( decoder_t *p_dec )
 
     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 =
@@ -685,18 +685,18 @@ static void DecoderMetadataCallback( const FLAC__StreamDecoder *decoder,
         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;
         }
     }
@@ -1284,7 +1284,7 @@ static int OpenEncoder( vlc_object_t *p_this )
     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;
@@ -1295,7 +1295,7 @@ static int OpenEncoder( vlc_object_t *p_this )
         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;
@@ -1316,7 +1316,7 @@ static int OpenEncoder( vlc_object_t *p_this )
     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;
index 26bc6e95888390bce660d68fa88c5b27bc79b3e6..74c44fa3ee7c54d5f42ae110ff546d2139636261 100644 (file)
@@ -66,7 +66,7 @@ static int Open (vlc_object_t *p_this)
     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");
@@ -82,7 +82,7 @@ static int Open (vlc_object_t *p_this)
     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;
index 396e80c58ad677126e6583f3817a4ad9e97dd46d..2990644f16584d2b5b0a6157e52bb36f124f5167 100644 (file)
@@ -151,8 +151,8 @@ static int OpenDecoder( vlc_object_t *p_this )
     }
 
     /* 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;
@@ -189,7 +189,6 @@ static picture_t *DecodeBlock( decoder_t *p_dec, block_t **pp_block )
     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;
index a6d8ef4156f315111baeccd42811453277dfa0b8..b85bf2e7c17b1f978d36cbb04ac6a14c1a76436c 100644 (file)
@@ -346,7 +346,7 @@ static int OpenDecoder( vlc_object_t *p_this )
     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;
     }
@@ -450,7 +450,7 @@ static int OpenPacketizer( vlc_object_t *p_this )
     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;
@@ -952,7 +952,7 @@ static void TigerUpdateRegions( spu_t *p_spu, subpicture_t *p_subpic, const vide
 
     /* 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;
@@ -1348,7 +1348,7 @@ static subpicture_t *SetupSimpleKateSPU( decoder_t *p_dec, subpicture_t *p_spu,
 
         /* 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;
@@ -1371,7 +1371,7 @@ static subpicture_t *SetupSimpleKateSPU( decoder_t *p_dec, subpicture_t *p_spu,
     }
 
     /* 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;
index 70d9c52fc39e0ed1665bf9e25c59641e5aa47412..9dd811c70b486c33f5ae89361a99e3ce604f4ab4 100644 (file)
@@ -36,7 +36,6 @@
 
 #include <vlc_common.h>
 #include <vlc_plugin.h>
-#include <vlc_vout.h>
 #include <vlc_codec.h>
 #include <vlc_osd.h>
 #include <vlc_input.h>
@@ -136,7 +135,7 @@ static int Create( vlc_object_t *p_this )
     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;
@@ -168,7 +167,7 @@ static int Create( vlc_object_t *p_this )
     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;
 }
@@ -332,7 +331,7 @@ static void UpdateRegions( spu_t *p_spu, subpicture_t *p_subpic,
 
     /* */
     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;
index 5a2ef6fe7987245632bddbfa0130263327d2dec0..9863018d8b6f0a0c70624f1f7a4f9a07598bfb2f 100644 (file)
@@ -31,7 +31,6 @@
 
 #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"
@@ -119,15 +118,22 @@ static int OpenDecoder( vlc_object_t *p_this )
     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 */
@@ -665,7 +671,7 @@ static picture_t *GetNewPicture( decoder_t *p_dec, uint8_t **pp_buf )
     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 );
index 52adfc9a923ece7ba17e6d8ebba24e04265ba748..74b3d366e586388f7b078318f72df25b8e2782cc 100644 (file)
@@ -131,12 +131,11 @@ static int OpenCommon( vlc_object_t *p_this, bool b_packetizer )
     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:
@@ -158,7 +157,7 @@ static int OpenCommon( vlc_object_t *p_this, bool b_packetizer )
 
     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
     {
@@ -166,11 +165,11 @@ static int OpenCommon( vlc_object_t *p_this, bool b_packetizer )
         {
         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;
         }
@@ -274,12 +273,12 @@ static void *DecodeFrame( decoder_t *p_dec, block_t **pp_block )
         /* */
         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;
         }
 
index 88533cb4796230bc183ea3fe6473c73ca3625648..c5dce5bfe35fb08226108e8085e09dddef81b735 100644 (file)
@@ -31,7 +31,6 @@
 #include <vlc_common.h>
 #include <vlc_plugin.h>
 #include <vlc_codec.h>
-#include <vlc_vout.h>
 #include <vlc_block.h>
 
 #include <p64/p64.h>
@@ -86,8 +85,7 @@ static int OpenDecoder( vlc_object_t *p_this )
     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:
@@ -105,7 +103,7 @@ static int OpenDecoder( vlc_object_t *p_this )
 
     /* 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 **))
@@ -192,9 +190,9 @@ static void *DecodeBlock( decoder_t *p_dec, block_t **pp_block )
     {
         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;
index 306bf0737b9ac343dbe1c2ecb1ff40ab26579e5a..f025be51f93b5ea0e1e0a3ed0a924eeae702587d 100644 (file)
@@ -134,7 +134,7 @@ static int Open( vlc_object_t *p_this )
     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;
     }
@@ -153,7 +153,7 @@ static int Open( vlc_object_t *p_this )
 
     /* 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 */
index c604f014a1ad3be5274d34d27f3296cac213d286..3d8a6ff9fd075a5cf02ccff1196f7bc0c00b484d 100644 (file)
@@ -31,7 +31,6 @@
 #include <vlc_common.h>
 #include <vlc_plugin.h>
 #include <vlc_codec.h>
-#include <vlc_vout.h>
 #include <png.h>
 
 /*****************************************************************************
@@ -70,7 +69,7 @@ static int OpenDecoder( vlc_object_t *p_this )
     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;
@@ -83,7 +82,7 @@ static int OpenDecoder( vlc_object_t *p_this )
 
     /* 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;
@@ -184,7 +183,7 @@ static picture_t *DecodeBlock( decoder_t *p_dec, block_t **pp_block )
     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;
@@ -208,7 +207,7 @@ static picture_t *DecodeBlock( decoder_t *p_dec, block_t **pp_block )
     }
     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 */
index e5b5778160a776e1dc439c7b07cc61e4efbc4f25..9ae170295d8caf5527f7b21973cadca3c3f82ced 100644 (file)
@@ -33,7 +33,6 @@
 #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)
@@ -245,27 +244,21 @@ static int Open( vlc_object_t *p_this )
 
     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;
@@ -283,23 +276,23 @@ static int Open( vlc_object_t *p_this )
             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 */
@@ -394,7 +387,10 @@ static int OpenAudio( decoder_t *p_dec )
     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();
@@ -489,7 +485,7 @@ static int OpenAudio( decoder_t *p_dec )
     }
 
 
-    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 =
@@ -694,7 +690,11 @@ static int OpenVideo( decoder_t *p_dec )
         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 );
 
@@ -836,7 +836,7 @@ static int OpenVideo( decoder_t *p_dec )
     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;
index e79e2edff172683498be140b54ebfc5d9515d335..d6998325d1d73fb7cdd63c013a5dba9b417ac706 100644 (file)
@@ -31,7 +31,6 @@
 #include <vlc_common.h>
 #include <vlc_plugin.h>
 #include <vlc_codec.h>
-#include <vlc_vout.h>
 
 /*****************************************************************************
  * decoder_sys_t : raw video decoder descriptor
@@ -92,36 +91,28 @@ static int OpenDecoder( vlc_object_t *p_this )
     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:
@@ -165,10 +156,10 @@ static int OpenDecoder( vlc_object_t *p_this )
     }
 
     /* 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;
 
@@ -329,9 +320,9 @@ static block_t *SendFrame( decoder_t *p_dec, block_t *p_block )
         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 )
         {
index aa1d1334c31874f3c758be3d6e31b4d1dcdf0c51..b668b609fce5bbb1121b41f6b47ffd8134318289 100644 (file)
@@ -182,8 +182,8 @@ static int Open( vlc_object_t *p_this )
 
     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;
 
@@ -222,7 +222,7 @@ static int Open( vlc_object_t *p_this )
     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 =
index 23ea612ae5a69dce12374f53977dc491ae9e5e53..5ac53bf875705741ad8cb0e7f02ecd904a69741f 100644 (file)
@@ -28,7 +28,6 @@
 
 #include <vlc_common.h>
 #include <vlc_plugin.h>
-#include <vlc_vout.h>
 #include <vlc_codec.h>
 
 #ifdef LOADER
@@ -327,7 +326,7 @@ static int InitVideo(decoder_t *p_dec)
     }
 
     /* 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;
@@ -347,10 +346,10 @@ static int InitVideo(decoder_t *p_dec)
             (*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;
@@ -376,10 +375,10 @@ static int Open( vlc_object_t *p_this )
 
     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);
index 8b7abb5f3711be814299f83a35d2c45638df8f0f..162fd8ba95070d67c06dbed6192b59f86c284703 100644 (file)
@@ -35,7 +35,6 @@
 #include <vlc_plugin.h>
 #include <vlc_codec.h>
 #include <vlc_sout.h>
-#include <vlc_vout.h>
 
 #include <schroedinger/schro.h>
 
@@ -88,7 +87,7 @@ static int OpenDecoder( vlc_object_t *p_this )
     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;
     }
@@ -117,7 +116,7 @@ static int OpenDecoder( vlc_object_t *p_this )
 
     /* 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;
@@ -142,9 +141,9 @@ static void SetVideoFormat( decoder_t *p_dec )
 
     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;
index d4eb387ab17cf7a65ad8be146747b01bbdde7af5..6ce6baa94059f36137f1f53e957858af19323c7d 100644 (file)
@@ -31,7 +31,6 @@
 #include <vlc_common.h>
 #include <vlc_plugin.h>
 #include <vlc_codec.h>
-#include <vlc_vout.h>
 
 #include SDL_IMAGE_INCLUDE_FILE
 
@@ -70,17 +69,17 @@ static const struct supported_fmt_t
     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" }
 };
 
 /*****************************************************************************
@@ -113,7 +112,7 @@ static int OpenDecoder( vlc_object_t *p_this )
 
     /* 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;
@@ -157,14 +156,14 @@ static picture_t *DecodeBlock( decoder_t *p_dec, block_t **pp_block )
     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)",
index ec460c52574b069454355cffb33a0ee0bdec8dc6..168d21a62bcf2aad53fe40a913c739897f76cb6d 100644 (file)
@@ -74,7 +74,7 @@ static int OpenEncoder( vlc_object_t *p_this )
     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;
 
index af1ea6bd1ba4f231dea96c17adf299f99de01db9..564a87c841e2085ea6aadb55ad12d5f6dccb406e 100644 (file)
@@ -205,11 +205,8 @@ static int OpenDecoder( vlc_object_t *p_this )
     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 =
@@ -223,7 +220,7 @@ static int OpenDecoder( vlc_object_t *p_this )
 
     /* 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
@@ -231,7 +228,7 @@ static int OpenDecoder( vlc_object_t *p_this )
       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 );
@@ -263,7 +260,7 @@ static int OpenPacketizer( vlc_object_t *p_this )
     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;
@@ -915,7 +912,7 @@ static int OpenEncoder( vlc_object_t *p_this )
     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;
@@ -943,8 +940,8 @@ static int OpenEncoder( vlc_object_t *p_this )
         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 );
index b2ea3a177c1f18ae7365a7e3e377ebba60ccb689..c61674ae83fc6f506ce1e1830c562b73b1a1d12a 100644 (file)
@@ -31,7 +31,6 @@
 #endif
 
 #include <vlc_common.h>
-#include <vlc_vout.h>
 #include <vlc_codec.h>
 #include <vlc_input.h>
 
@@ -688,7 +687,7 @@ static void Render( decoder_t *p_dec, subpicture_t *p_spu,
 
     /* 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 -
index f527a9c2b379c0ed5fc6cc6ff48cc353859719ef..bd9be5d3fb2d0b8276bc60be1b18c6e12afa9d4e 100644 (file)
@@ -73,11 +73,8 @@ static int DecoderOpen( vlc_object_t *p_this )
     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 ) );
 
@@ -86,7 +83,7 @@ static int DecoderOpen( vlc_object_t *p_this )
     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;
@@ -111,7 +108,7 @@ static int PacketizerOpen( vlc_object_t *p_this )
     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;
 }
index e642673288c6426079a4a1cf27c6679268fa018e..0284f8be380c7a618f55e57b849b1e692ef61e97 100644 (file)
@@ -38,7 +38,7 @@ void ParseSSAString( decoder_t *p_dec,
      * 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;
@@ -118,12 +118,12 @@ void ParseSSAString( decoder_t *p_dec,
     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;
@@ -131,18 +131,18 @@ void ParseSSAString( decoder_t *p_dec,
     }
     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;
     }
 }
 
@@ -233,52 +233,52 @@ void ParseSSAHeader( decoder_t *p_dec )
                     &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" );
             }
@@ -294,55 +294,55 @@ void ParseSSAHeader( decoder_t *p_dec )
                     &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" );
             }
index aa5ca570d66a0dcc1690dd4ec60ba2f80e658ce8..f217f0b77e244effe9cd8e718a68939c6f68a15d 100644 (file)
@@ -232,9 +232,9 @@ static int OpenDecoder( vlc_object_t *p_this )
 
     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;
@@ -262,7 +262,7 @@ static int OpenDecoder( vlc_object_t *p_this )
     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 )
@@ -316,7 +316,7 @@ static int OpenDecoder( vlc_object_t *p_this )
     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 )
@@ -493,7 +493,7 @@ static subpicture_t *ParseText( decoder_t *p_dec, block_t *p_block )
 
     /* 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;
@@ -507,7 +507,7 @@ static subpicture_t *ParseText( decoder_t *p_dec, block_t *p_block )
     }
 
     /* 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;
index 2c221ca95dc09e18dd64f6b2435888604ef56e6d..0ab39b748a6818bd9d7f725900bdd6a31d59433f 100644 (file)
@@ -28,7 +28,6 @@
 #define SUBSDEC_HEADER_H
 
 #include <vlc_common.h>
-#include <vlc_vout.h>
 #include <vlc_codec.h>
 #include <vlc_input.h>
 
index 330e167ab3c10f21b9cb53c7e77628ee90370e81..ff92294c2c79dab4100bd4fac2fce4d389358c18 100644 (file)
@@ -68,7 +68,7 @@ static int OpenDecoder( vlc_object_t *p_this )
     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 */
@@ -146,6 +146,7 @@ static void CloseDecoder( vlc_object_t *p_this )
                 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] );
         }
@@ -261,7 +262,7 @@ static char *GrabAttributeValue( const char *psz_attribute,
 
 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 )
@@ -271,11 +272,11 @@ static ssa_style_t *ParseStyle( decoder_sys_t *p_sys, char *psz_subtitle )
         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,
@@ -382,7 +383,7 @@ static subpicture_region_t *CreateTextRegion( decoder_t *p_dec,
 
     /* 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;
@@ -390,7 +391,7 @@ static subpicture_region_t *CreateTextRegion( decoder_t *p_dec,
 
     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 );
@@ -400,34 +401,34 @@ static subpicture_region_t *CreateTextRegion( decoder_t *p_dec,
             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
@@ -487,7 +488,7 @@ static int ParseImageAttachments( decoder_t *p_dec )
                     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" ) )
@@ -532,7 +533,7 @@ static void ParseUSFHeaderTags( decoder_t *p_dec, xml_reader_t *p_xml_reader )
 {
     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;
 
@@ -565,9 +566,9 @@ static void ParseUSFHeaderTags( decoder_t *p_dec, xml_reader_t *p_xml_reader )
                     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;
@@ -612,8 +613,8 @@ static void ParseUSFHeaderTags( decoder_t *p_dec, xml_reader_t *p_xml_reader )
                 {
                     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;
@@ -630,9 +631,11 @@ static void ParseUSFHeaderTags( decoder_t *p_dec, xml_reader_t *p_xml_reader )
                         {
                             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;
                         }
                     }
 
@@ -644,7 +647,7 @@ static void ParseUSFHeaderTags( decoder_t *p_dec, xml_reader_t *p_xml_reader )
                         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 );
@@ -661,8 +664,8 @@ static void ParseUSFHeaderTags( decoder_t *p_dec, xml_reader_t *p_xml_reader )
                         {
                             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 ) )
                             {
@@ -671,44 +674,44 @@ static void ParseUSFHeaderTags( decoder_t *p_dec, xml_reader_t *p_xml_reader )
                                     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 ) )
@@ -716,39 +719,39 @@ static void ParseUSFHeaderTags( decoder_t *p_dec, xml_reader_t *p_xml_reader )
                                 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 );
@@ -767,48 +770,48 @@ static void ParseUSFHeaderTags( decoder_t *p_dec, xml_reader_t *p_xml_reader )
                             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;
                                 }
                             }
                         }
@@ -821,7 +824,7 @@ static void ParseUSFHeaderTags( decoder_t *p_dec, xml_reader_t *p_xml_reader )
                 break;
         }
     }
-    free( p_style );
+    free( p_ssa_style );
 }
 
 
@@ -1164,7 +1167,7 @@ static subpicture_region_t *LoadEmbeddedImage( decoder_t *p_dec,
     /* 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 =
@@ -1178,7 +1181,7 @@ static subpicture_region_t *LoadEmbeddedImage( decoder_t *p_dec,
         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 );
 
@@ -1198,7 +1201,7 @@ static subpicture_region_t *LoadEmbeddedImage( decoder_t *p_dec,
         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++ )
index 5e0c25a0a8bce8704f2e2f486e5b808a40407014..1c3f6e73484f67f857bd902313aa16ac0351ffa7 100644 (file)
@@ -25,7 +25,6 @@
 
 #include <vlc_common.h>
 #include <vlc_plugin.h>
-#include <vlc_vout.h>
 #include <vlc_codec.h>
 #include <vlc_sout.h>
 
@@ -49,7 +48,7 @@ static int Open( vlc_object_t *p_this )
 
     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" ) )
@@ -57,14 +56,14 @@ static int Open( vlc_object_t *p_this )
                 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;
@@ -92,7 +91,7 @@ static block_t *Encode( encoder_t *p_enc, subpicture_t *p_spu )
 
     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;
 
index c6d9ee922994a75a407b306bfa63f081ea637010..6afddccc582b0fef7743b98eaf2e8c66259f6e2c 100644 (file)
@@ -142,10 +142,8 @@ static int DecoderOpen( vlc_object_t *p_this )
     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 )
@@ -158,7 +156,7 @@ static int DecoderOpen( vlc_object_t *p_this )
     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;
@@ -480,7 +478,7 @@ static subpicture_t *DecodePacket( decoder_t *p_dec, block_t *p_data )
 
     /* 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
index 8c00db57632a8e8c4dc8642f74e835134011bfea..f0327413ff779c5d726de68857ded4a60b07633d 100644 (file)
@@ -31,7 +31,6 @@
 #include <vlc_common.h>
 #include <vlc_plugin.h>
 #include <vlc_codec.h>
-#include <vlc_vout.h>
 #include <ogg/ogg.h>
 
 /* FIXME */
@@ -93,7 +92,7 @@ static int OpenDecoder( vlc_object_t *p_this )
     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;
     }
@@ -240,19 +239,19 @@ static picture_t *DecodePacket( decoder_t *p_dec, block_t **pp_block,
         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;
         }
index 07fd4cf883d24894205dfec2addc1afd69c39d8b..59bd7f0d468f252f05d8846575665544e083ad01 100644 (file)
@@ -34,7 +34,6 @@
 #include <vlc_common.h>
 #include <vlc_plugin.h>
 
-#include "vlc_vout.h"
 #include "vlc_bits.h"
 #include "vlc_codec.h"
 
@@ -175,7 +174,7 @@ static int Open( vlc_object_t *p_this )
     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;
     }
@@ -701,7 +700,7 @@ static subpicture_t *Decode( decoder_t *p_dec, block_t **pp_block )
  
     /* 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;
index 17bf9a7cf06b32e24bea3750636add750f38deec..934c6839e5e4721a83471255d904aadcce2d739e 100644 (file)
@@ -31,7 +31,6 @@
 #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>
@@ -135,7 +134,7 @@ static int OpenDecoder( vlc_object_t *p_this )
     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;
     }
@@ -150,7 +149,7 @@ static int OpenDecoder( vlc_object_t *p_this )
 
     /* 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 **))
@@ -176,7 +175,7 @@ static int OpenPacketizer( vlc_object_t *p_this )
     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;
@@ -287,13 +286,13 @@ static int ProcessHeaders( decoder_t *p_dec )
     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:
@@ -609,7 +608,7 @@ static int OpenEncoder( vlc_object_t *p_this )
     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;
@@ -621,8 +620,8 @@ static int OpenEncoder( vlc_object_t *p_this )
     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 );
 
index 787cbf87fe94864872c735e70b1ab3b89d027876..6a3f33e890ce6a1f48cb8a10212d124fa0818ce7 100644 (file)
@@ -132,7 +132,7 @@ static int OpenEncoder( vlc_object_t *p_this )
     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 )
@@ -164,10 +164,10 @@ static int OpenEncoder( vlc_object_t *p_this )
     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 );
 
index 5d25be9d51b09abfd8c74d80738499710c0c7a2b..62cb4d2595df2548510e2dc8f85ef8ddc0e9f838 100644 (file)
@@ -229,7 +229,7 @@ static int OpenDecoder( vlc_object_t *p_this )
     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;
     }
@@ -251,9 +251,9 @@ static int OpenDecoder( vlc_object_t *p_this )
     /* 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 */
@@ -274,7 +274,7 @@ static int OpenPacketizer( vlc_object_t *p_this )
     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;
@@ -794,7 +794,7 @@ static int OpenEncoder( vlc_object_t *p_this )
     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;
@@ -806,8 +806,8 @@ static int OpenEncoder( vlc_object_t *p_this )
     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 );
 
index e57b9cef57391a2b204fcb22732e2b6fe7aa07ad..a67e6eb8bcdbab29238f9a2dddc965b5c112f1ba 100644 (file)
@@ -119,10 +119,8 @@ static int OpenDecoder( vlc_object_t *p_this )
     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;
     }
@@ -139,7 +137,7 @@ static int OpenDecoder( vlc_object_t *p_this )
 
     /* 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;
 
@@ -166,11 +164,9 @@ static int OpenDecoder( vlc_object_t *p_this )
         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;
index 5004c2c724569bcfa1f70536a0d6afb5b86a9894..93df88d8956581ace5c4eca0097f6d7c8d815d0b 100644 (file)
@@ -30,7 +30,6 @@
 
 #include <vlc_common.h>
 #include <vlc_plugin.h>
-#include <vlc_vout.h>
 #include <vlc_sout.h>
 #include <vlc_codec.h>
 
@@ -761,7 +760,7 @@ static int  Open ( vlc_object_t *p_this )
     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;
@@ -793,8 +792,8 @@ static int  Open ( vlc_object_t *p_this )
     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;
index edfe1cc27b2cbadc6219884dc98aed416fb33bb9..19b238b9fb87d7450f4d1f82310a2b3e28664083 100644 (file)
@@ -31,7 +31,6 @@
 
 #include <vlc_common.h>
 #include <vlc_plugin.h>
-#include <vlc_vout.h>
 #include <vlc_codec.h>
 #include <vlc_codec_synchro.h>
 
@@ -121,17 +120,25 @@ static int OpenDecoder( vlc_object_t *p_this )
 #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");
@@ -693,7 +700,7 @@ static picture_t *GetNewPicture( decoder_t *p_dec, uint8_t **pp_buf )
     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");
index 8d5509a6b4294f153ba961ffc1d35b9a27ac548f..26672f2c94460dfbecfd0ad450a8ae8af1e8d0a6 100644 (file)
@@ -46,7 +46,6 @@
 #include <assert.h>
 #include <libzvbi.h>
 
-#include <vlc_vout.h>
 #include <vlc_codec.h>
 #include <vlc_osd.h>
 
@@ -203,7 +202,7 @@ static int Open( vlc_object_t *p_this )
     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;
@@ -271,11 +270,11 @@ static int Open( vlc_object_t *p_this )
     /* 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;
 }
 
@@ -466,8 +465,8 @@ static subpicture_t *Subpicture( decoder_t *p_dec, video_format_t *p_fmt,
     }
 
     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 )
     {
@@ -556,7 +555,7 @@ static int OpaquePage( picture_t *p_src, const vbi_page p_page,
 {
     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++ )
index 2753140710742b42bab9ade2db57f424b63be128..9aa7a9dadbd0635375aabbac29c695b5994f17e5 100644 (file)
@@ -514,7 +514,7 @@ DBUS_METHOD( DelTrack )
     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;
index 5c117905c54891aaebadda02d98432b0b7584a4b..93b7a9edb8dbee01b8e95e0c1e7bf0346b8f5b01 100644 (file)
@@ -322,8 +322,7 @@ static void RunIntf( intf_thread_t *p_intf )
                     i_count = list.p_list->i_count;
                     if( i_count <= 1 )
                     {
-                        var_Change( p_input, "audio-es", VLC_VAR_FREELIST, &list,
-                                    &list2 );
+                        var_FreeList( &list, &list2 );
                         vlc_object_release( p_input );
                         break;
                     }
@@ -344,8 +343,7 @@ static void RunIntf( intf_thread_t *p_intf )
                     else
                         i++;
                     var_Set( p_input, "audio-es", list.p_list->p_values[i] );
-                    var_Change( p_input, "audio-es", VLC_VAR_FREELIST, &list,
-                                &list2 );
+                    var_FreeList( &list, &list2 );
                     vlc_object_release( p_input );
                 }
                 break;
@@ -369,8 +367,7 @@ static void RunIntf( intf_thread_t *p_intf )
                     if( i_count <= 1 )
                     {
                         vlc_object_release( p_input );
-                        var_Change( p_input, "spu-es", VLC_VAR_FREELIST,
-                                    &list, &list2 );
+                        var_FreeList( &list, &list2 );
                         break;
                     }
                     for( i = 0; i < i_count; i++ )
@@ -392,8 +389,7 @@ static void RunIntf( intf_thread_t *p_intf )
                     else
                         i++;
                     var_Set( p_input, "spu-es", list.p_list->p_values[i] );
-                    var_Change( p_input, "spu-es", VLC_VAR_FREELIST,
-                                &list, &list2 );
+                    var_FreeList( &list, &list2 );
                     vlc_object_release( p_input );
                 }
                 break;
index 9c2c1c305f3cc32163101e01d0d4233efa658d3a..4447e1773110f0c2da20a22686216d6fbcfb181b 100644 (file)
@@ -381,8 +381,7 @@ static void Run( intf_thread_t *p_intf )
                         _("Audio Device: %s"),
                         list2.p_list->p_values[i].psz_string);
             }
-            var_Change( p_aout, "audio-device", VLC_VAR_FREELIST, &list,
-                        &list2 );
+            var_FreeList( &list, &list2 );
         }
         /* Input options */
         else if( p_input )
@@ -474,8 +473,7 @@ static void Run( intf_thread_t *p_intf )
                                      _("Audio track: %s"),
                                      list2.p_list->p_values[i].psz_string );
                 }
-                var_Change( p_input, "audio-es", VLC_VAR_FREELIST, &list,
-                            &list2 );
+                var_FreeList( &list, &list2 );
             }
             else if( i_action == ACTIONID_SUBTITLE_TRACK )
             {
@@ -490,8 +488,7 @@ static void Run( intf_thread_t *p_intf )
                 {
                     vout_OSDMessage( VLC_OBJECT(p_input), DEFAULT_CHAN,
                                      _("Subtitle track: %s"), _("N/A") );
-                    var_Change( p_input, "spu-es", VLC_VAR_FREELIST, &list,
-                                &list2 );
+                    var_FreeList( &list, &list2 );
                     goto cleanup_and_continue;
                 }
                 for( i = 0; i < i_count; i++ )
@@ -516,8 +513,7 @@ static void Run( intf_thread_t *p_intf )
                 vout_OSDMessage( VLC_OBJECT(p_input), DEFAULT_CHAN,
                                  _("Subtitle track: %s"),
                                  list2.p_list->p_values[i].psz_string );
-                var_Change( p_input, "spu-es", VLC_VAR_FREELIST, &list,
-                            &list2 );
+                var_FreeList( &list, &list2 );
             }
             else if( i_action == ACTIONID_ASPECT_RATIO && p_vout )
             {
@@ -543,7 +539,7 @@ static void Run( intf_thread_t *p_intf )
                                      _("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 );
             }
@@ -571,7 +567,7 @@ static void Run( intf_thread_t *p_intf )
                                      _("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 );
             }
@@ -638,7 +634,7 @@ static void Run( intf_thread_t *p_intf )
                                      _("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 );
             }
@@ -670,7 +666,7 @@ static void Run( intf_thread_t *p_intf )
                                      _("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 )
@@ -945,7 +941,7 @@ static int SpecialKeyEvent( vlc_object_t *libvlc, char const *psz_var,
     /* 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
@@ -966,8 +962,6 @@ static int SpecialKeyEvent( vlc_object_t *libvlc, char const *psz_var,
         case KEY_MENU:
             var_SetBool( libvlc, "intf-popupmenu", true );
             break;
-        default:
-          return VLC_SUCCESS;
     }
 
     if( i_mode == NO_MOUSEWHEEL ) return VLC_SUCCESS;
index 38a6cc1af25d625d7378574af52ecb4c0280602a..4d55c8df273deed99637f43be6ebc2f4356fa181 100644 (file)
@@ -353,7 +353,8 @@ static void MacroDo( httpd_file_sys_t *p_args,
                 }
                 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;
 
@@ -363,24 +364,25 @@ static void MacroDo( httpd_file_sys_t *p_args,
                     {
                         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 );
@@ -388,10 +390,10 @@ static void MacroDo( httpd_file_sys_t *p_args,
                 }
                 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 =
@@ -399,30 +401,31 @@ static void MacroDo( httpd_file_sys_t *p_args,
                     {
                         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 );
                         }
                     }
 
index c25dd34d29cd6b2c9ae17b55d7003ffdcafd4a27..2cef899c652aff1d76df7081e4122bad8baae20f 100644 (file)
@@ -450,8 +450,7 @@ mvar_t *mvar_InputVarSetNew( intf_thread_t *p_intf, char *name,
     }
     /* 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;
 }
 
index 05c30cf4fec935c37eb780621302b20ed0549074..43e72c5dbdeef192adf1640425c5730294c84c6b 100644 (file)
@@ -875,7 +875,7 @@ void EvaluateRPN( intf_thread_t *p_intf, mvar_t  *vars,
             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
index 69de4a65aaca76bdd93c52eccb70bc9f376e534a..053e3ff391c18b688d27eceffaab3100fea2ab24 100644 (file)
@@ -349,7 +349,7 @@ void PlaylistListNode( intf_thread_t *p_intf, playlist_t *p_pl,
             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" );
index 62b097b23337b246ee82f957e4b1df7a00a02af4..e7104cba01783daab98a72069a058e3c8cfd88f5 100644 (file)
@@ -309,26 +309,14 @@ static void WINAPI ServiceDispatch( DWORD numArgs, char **args )
 
         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 );
         }
     }
index 1303d219afe37c29bbf13cbc01284ec8b3b4fb03..843096d043dd0923b0fffdfc177f9571a45d421e 100644 (file)
@@ -1145,16 +1145,11 @@ static int Input( vlc_object_t *p_this, char const *psz_cmd,
             }
             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" ) )
@@ -1178,16 +1173,11 @@ static int Input( vlc_object_t *p_this, char const *psz_cmd,
             }
             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" ) )
@@ -1262,8 +1252,7 @@ static int Input( vlc_object_t *p_this, char const *psz_cmd,
                     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 );
@@ -1536,19 +1525,8 @@ static int Intf( vlc_object_t *p_this, char const *psz_cmd,
                  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,
@@ -1792,8 +1770,7 @@ static int VideoConfig( 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 );
@@ -1880,8 +1857,7 @@ static int AudioConfig( vlc_object_t *p_this, char const *psz_cmd,
                 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 );
index d72e73e0932a993666b28ccde5dd29bba8fef6e6..2928cbef6bfa45c318b2b905452b97192e7b2d35 100644 (file)
@@ -19,7 +19,7 @@ SOURCES_mjpeg = mjpeg.c
 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
index fb5de970c2f36dfa1bf21f73f374c76e7ec12143..18c293d3cae52e0d931594e2d7abfce877bb809e 100644 (file)
@@ -923,7 +923,7 @@ static int DemuxInit( demux_t *p_demux )
                 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] );
index 08f7e986417f0d84d2dd2f418d98a09742dcc6b2..bccf2ea6cf3ec532df464bef1121d7a835513eb3 100644 (file)
@@ -156,14 +156,14 @@ static int Open( vlc_object_t *p_this )
     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;
index 3b8ec5dc06fdfe04ef4b04994b0130ec181bf14d..dae22c924eb8f71fc2f57476be686c47038351f3 100644 (file)
@@ -4,6 +4,7 @@ SOURCES_avformat = \
     demux.c \
     ../../codec/avcodec/fourcc.c \
     ../../codec/avcodec/chroma.c \
+       ../vobsub.h \
     $(NULL)
 if ENABLE_SOUT
 SOURCES_avformat += mux.c
index dd0f7c93d2f579f595f2405bd607d23aa60b6dc0..16a9cb04718bb52ed7877c007648fbfc453391d2 100644 (file)
@@ -47,6 +47,7 @@
 
 #include "../../codec/avcodec/avcodec.h"
 #include "avformat.h"
+#include "../vobsub.h"
 
 //#define AVFORMAT_DEBUG 1
 
@@ -271,6 +272,48 @@ int OpenDemux( vlc_object_t *p_this )
 
         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;
 
index 3e98975cd24396f8cde64a6f4aac43691e7720b6..4dbb17e86610089d5c2a45952b99f68acf8a039f 100644 (file)
@@ -278,7 +278,7 @@ static int AddStream( sout_mux_t *p_mux, sout_input_t *p_input )
     /* 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;
 
index bfea0b79a7d9cb66ca7ed8d34deb3b908f0d2755..98f60d5f724ef4128628949d04535ca975264467 100644 (file)
@@ -402,7 +402,7 @@ static int Open( vlc_object_t * p_this )
                     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 */
                 }
@@ -445,7 +445,7 @@ static int Open( vlc_object_t * p_this )
                  *  - 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;
@@ -511,33 +511,33 @@ static int Open( vlc_object_t * p_this )
                     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;
@@ -549,10 +549,11 @@ static int Open( vlc_object_t * p_this )
                 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;
@@ -604,7 +605,7 @@ static int Open( vlc_object_t * p_this )
 
             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;
@@ -1858,7 +1859,7 @@ static int AVI_GetKeyFlag( vlc_fourcc_t i_fourcc, uint8_t *p_byte )
 {
     switch( i_fourcc )
     {
-        case FOURCC_DIV1:
+        case VLC_CODEC_DIV1:
             /* we have:
              *  startcode:      0x00000100   32bits
              *  framenumber     ?             5bits
@@ -1871,13 +1872,14 @@ static int AVI_GetKeyFlag( vlc_fourcc_t i_fourcc, uint8_t *p_byte )
             }
             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
@@ -1902,60 +1904,8 @@ vlc_fourcc_t AVI_FourccGetCodec( unsigned int i_cat, vlc_fourcc_t i_codec )
         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' );
     }
index 453602c0754ef8ddc67f85c9bb1ada29727b59c5..ff885753728e3fee698939709765673f7934eb16 100644 (file)
@@ -298,75 +298,6 @@ void    AVI_ChunkFreeRoot( stream_t *, avi_chunk_t  *p_chk );
 #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')
index d9102884bc680ef0e3e2ac190daf5a51ddd05b26..4b6e59d4400afa1613f1174ad79c8270eae4a832 100644 (file)
@@ -94,7 +94,7 @@ static int Open( vlc_object_t * p_this )
     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 ;
 
index 84e66913830f3aef1a2b85b0cd4fa7c981adebdc..4cfd537fdc64395953ed37ea07bb9a3da0a9433e 100644 (file)
@@ -110,7 +110,7 @@ static int Open( vlc_object_t * p_this )
     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 )
     {
index 17b45ff6cc072d6c7eeb38791efb3865047be88b..91a2cccb40d76ad24c53ea6f27841ffa5f08137e 100644 (file)
@@ -144,7 +144,7 @@ static int Open( vlc_object_t * p_this )
     /* 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;
 
index 414c51fcdaf4cf3dac8e4735d1cbf7c939122bfa..46724d7b637131c25e82a087e71dc0a14109180f 100644 (file)
@@ -18,9 +18,9 @@
  * 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.
  *****************************************************************************/
 
 /*****************************************************************************
@@ -45,6 +45,7 @@
 #include <vlc_dialog.h>
 #include <vlc_network.h>
 #include <vlc_url.h>
+#include <vlc_strings.h>
 
 #include <iostream>
 #include <limits.h>
@@ -78,16 +79,16 @@ static void Close( vlc_object_t * );
     "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)" ) )
@@ -808,12 +809,12 @@ static int SessionsSetup( demux_t *p_demux )
                     !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" ) )
@@ -828,15 +829,15 @@ static int SessionsSetup( demux_t *p_demux )
                 }
                 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" ) )
@@ -850,18 +851,18 @@ static int SessionsSetup( demux_t *p_demux )
                 }
                 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 ) ) )
@@ -880,7 +881,7 @@ static int SessionsSetup( demux_t *p_demux )
                     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 ) ) )
@@ -920,24 +921,24 @@ static int SessionsSetup( demux_t *p_demux )
                 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(),
@@ -952,14 +953,14 @@ static int SessionsSetup( demux_t *p_demux )
                 }
                 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 ) ) )
@@ -997,6 +998,12 @@ static int SessionsSetup( demux_t *p_demux )
                         p_sys->p_out_asf = stream_DemuxNew( p_demux, "asf",
                                                             p_demux->out );;
                 }
+                else if( !strcmp( sub->codecName(), "DV" ) )
+                {
+                    tk->b_muxed = true;
+                    tk->p_out_muxed = stream_DemuxNew( p_demux, "rawdv",
+                                                       p_demux->out );
+                }
             }
 
             if( !tk->b_quicktime && !tk->b_muxed && !tk->b_asf )
@@ -1347,11 +1354,12 @@ static int Control( demux_t *p_demux, int i_query, va_list args )
                 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
@@ -1615,8 +1623,7 @@ static void StreamRead( void *p_private, unsigned int i_size,
         void *p_tmp;
         msg_Dbg( p_demux, "lost %d bytes", i_truncated_bytes );
         msg_Dbg( p_demux, "increasing buffer size to %d", tk->i_buffer * 2 );
-        tk->i_buffer *= 2;
-        p_tmp = realloc( tk->p_buffer, tk->i_buffer );
+        p_tmp = realloc( tk->p_buffer, tk->i_buffer * 2 );
         if( p_tmp == NULL )
         {
             msg_Warn( p_demux, "realloc failed" );
@@ -1624,15 +1631,14 @@ static void StreamRead( void *p_private, unsigned int i_size,
         else
         {
             tk->p_buffer = (uint8_t*)p_tmp;
+            tk->i_buffer *= 2;
         }
     }
-    if( i_size > tk->i_buffer )
-    {
-        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') )
+
+    assert( i_size <= tk->i_buffer );
+
+    if( tk->fmt.i_codec == VLC_CODEC_AMR_NB ||
+        tk->fmt.i_codec == VLC_CODEC_AMR_WB )
     {
         AMRAudioSource *amrSource = (AMRAudioSource*)tk->sub->readSource();
 
@@ -1640,7 +1646,7 @@ static void StreamRead( void *p_private, unsigned int i_size,
         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();
@@ -1651,7 +1657,7 @@ static void StreamRead( void *p_private, unsigned int i_size,
         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" );
@@ -1694,7 +1700,7 @@ static void StreamRead( void *p_private, unsigned int i_size,
     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 )
@@ -1781,8 +1787,6 @@ static void* TimeoutPrevention( void *p_data )
 /*****************************************************************************
  *
  *****************************************************************************/
-static int b64_decode( char *dest, char *src );
-
 static int ParseASF( demux_t *p_demux )
 {
     demux_sys_t    *p_sys = p_demux->p_sys;
@@ -1811,7 +1815,8 @@ static int ParseASF( demux_t *p_demux )
 
     /* 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 )
     {
@@ -1834,9 +1839,8 @@ static unsigned char* parseH264ConfigStr( char const* configStr,
                                           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' )
@@ -1844,7 +1848,7 @@ static unsigned char* parseH264ConfigStr( char const* configStr,
 
     psz = dup = strdup( configStr );
 
-    /* Count the number of comma's */
+    /* Count the number of commas */
     for( psz = dup; *psz != '\0'; ++psz )
     {
         if( *psz == ',')
@@ -1854,79 +1858,21 @@ static unsigned char* parseH264ConfigStr( char const* configStr,
         }
     }
 
-    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;
-}
index 69d54db80d6fdb36e22bfb185d6186a3f1f8ec68..406ac6e7a3a47775a0295f8227bde62bdf8a332e 100644 (file)
@@ -367,7 +367,7 @@ static int Open( vlc_object_t * p_this )
     }
 
     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;
index c0b25fcd95379c81d506090c1c3ccd40ca402caa..759425e253a0a616b2e401c11010a691a294aab9 100644 (file)
@@ -7,5 +7,6 @@ SOURCES_mkv = mkv.hpp mkv.cpp \
               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
 
index 26d43b4bdc91bc2d0ec2060b17cca5e87981e4b3..08846787b7e9965e4f246ee0d229b6e24b11d156 100644 (file)
 
 #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 )
@@ -669,12 +673,12 @@ bool matroska_segment_c::Select( mtime_t i_start_time )
         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;
@@ -744,13 +748,13 @@ bool matroska_segment_c::Select( mtime_t i_start_time )
         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 )
             {
@@ -765,13 +769,13 @@ bool matroska_segment_c::Select( mtime_t i_start_time )
         }
         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 ) )
             {
@@ -779,7 +783,7 @@ bool matroska_segment_c::Select( mtime_t i_start_time )
                 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 );
@@ -840,33 +844,33 @@ bool matroska_segment_c::Select( mtime_t i_start_time )
                  !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 );
@@ -876,7 +880,7 @@ bool matroska_segment_c::Select( mtime_t i_start_time )
             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 )
@@ -919,7 +923,7 @@ bool matroska_segment_c::Select( mtime_t i_start_time )
                         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" ) )
@@ -971,21 +975,21 @@ bool matroska_segment_c::Select( mtime_t i_start_time )
         }
         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 );
@@ -1010,7 +1014,7 @@ bool matroska_segment_c::Select( mtime_t i_start_time )
             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 */
@@ -1057,12 +1061,12 @@ bool matroska_segment_c::Select( mtime_t i_start_time )
         }
         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" ) )
@@ -1081,7 +1085,7 @@ bool matroska_segment_c::Select( mtime_t i_start_time )
                  !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 )
             {
@@ -1092,25 +1096,44 @@ bool matroska_segment_c::Select( mtime_t i_start_time )
         }
         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" ) )
@@ -1120,7 +1143,7 @@ bool matroska_segment_c::Select( mtime_t i_start_time )
         }
         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;
index b02e4cdf51610470676a4a793e07d4d6edc8ab15..a1aff2d97c543ac1b98758d4281407a47ed8ae30 100644 (file)
@@ -150,12 +150,12 @@ static int Open( vlc_object_t * p_this )
 
     /* */
 #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;
index abe04dcbc50deeeb61e3636fc071a07b10b54acc..3a23281fd6eee8a78373cea52915af752d857438 100644 (file)
@@ -133,12 +133,12 @@ static int MlpProbe( demux_t *p_demux, int64_t *pi_offset );
 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 }
 };
index 5f6071c48220737855b4e7753ada1e7e945100f3..1bcf6f06c8a38c555d296c2fa32e9c934f297d9a 100644 (file)
@@ -109,7 +109,7 @@ static int Open( vlc_object_t * p_this )
     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 )
     {
index 946739aa3c07e190e96ea08907b8bfc08122d6c5..e9cbd8e35653114ca1ea468e63125ee47b34cd08 100644 (file)
@@ -108,7 +108,7 @@ static int Open( vlc_object_t * p_this )
     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 )
     {
@@ -117,7 +117,7 @@ static int Open( vlc_object_t * p_this )
     }
 
     /* 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;
index c6a87b45ac6fea1580c9cd0af234c289b0c37bc9..99cad8397b69466a98a7938d6183bfb6f7902576 100644 (file)
@@ -314,7 +314,7 @@ static int Open( vlc_object_t * p_this )
     {
         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;
 
index 2580c6aba6ac416986d965305ac8f06688da223e..5e50b7a55297a0b22759b5335d9d941525a1c237 100644 (file)
@@ -360,21 +360,21 @@ static int Demux( demux_t * p_demux )
             /* 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;
                 }
@@ -397,9 +397,9 @@ static int Demux( demux_t * p_demux )
                 }
 
                 /* 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 )
                     {
@@ -541,8 +541,8 @@ static void Ogg_UpdatePCR( logical_stream_t *p_stream,
     /* 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;
@@ -552,7 +552,7 @@ static void Ogg_UpdatePCR( logical_stream_t *p_stream,
             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 */
@@ -616,7 +616,7 @@ static void Ogg_DecodePacket( demux_t *p_demux,
         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 */
@@ -632,13 +632,13 @@ static void Ogg_DecodePacket( demux_t *p_demux,
         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 );
@@ -656,7 +656,7 @@ static void Ogg_DecodePacket( demux_t *p_demux,
             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;
@@ -723,9 +723,9 @@ static void Ogg_DecodePacket( demux_t *p_demux,
     }
 
     /* 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 )
         {
@@ -770,9 +770,9 @@ static void Ogg_DecodePacket( demux_t *p_demux,
         }
     }
 
-    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;
@@ -805,9 +805,9 @@ static void Ogg_DecodePacket( demux_t *p_demux,
         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;
@@ -826,20 +826,20 @@ static void Ogg_DecodePacket( demux_t *p_demux,
         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;
@@ -869,7 +869,7 @@ static void Ogg_DecodePacket( demux_t *p_demux,
             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,
@@ -970,7 +970,7 @@ static int Ogg_FindLogicalStreams( demux_t *p_demux )
                     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 &&
@@ -987,7 +987,7 @@ static int Ogg_FindLogicalStreams( demux_t *p_demux )
                     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 );
                 }
@@ -1022,7 +1022,7 @@ static int Ogg_FindLogicalStreams( demux_t *p_demux )
 
                     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);
@@ -1280,7 +1280,7 @@ static int Ogg_FindLogicalStreams( demux_t *p_demux )
 
                         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
@@ -1385,15 +1385,15 @@ static int Ogg_BeginningOfStream( demux_t *p_demux )
         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 );
@@ -1496,7 +1496,7 @@ static bool Ogg_LogicalStreamResetEsFormat( demux_t *p_demux, logical_stream_t *
         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 )
@@ -1550,30 +1550,30 @@ static void Ogg_ExtractMeta( demux_t *p_demux, vlc_fourcc_t i_codec, const uint8
     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;
     }
@@ -1590,7 +1590,7 @@ static void Ogg_ReadTheoraHeader( logical_stream_t *p_stream,
     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
@@ -1642,7 +1642,7 @@ static void Ogg_ReadVorbisHeader( logical_stream_t *p_stream,
     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
@@ -1665,7 +1665,7 @@ static void Ogg_ReadSpeexHeader( logical_stream_t *p_stream,
     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
@@ -1729,7 +1729,7 @@ static void Ogg_ReadKateHeader( logical_stream_t *p_stream,
     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
@@ -1848,21 +1848,21 @@ static void Ogg_ReadAnnodexHeader( vlc_object_t *p_this,
         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;
         }
@@ -1877,13 +1877,13 @@ static void Ogg_ReadAnnodexHeader( vlc_object_t *p_this,
         {
             /* 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;
         }
     }
 }
@@ -1985,7 +1985,7 @@ static bool Ogg_ReadDiracHeader( logical_stream_t *p_stream,
 
     /* 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;
 }
index aad1e52971ad3b4434e0e235c17e253bbecb17c4..66b289219b11add189904f99c6a3ebcdbe03b505 100644 (file)
@@ -388,7 +388,7 @@ static int Demux( demux_t *p_demux )
             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 ) ) )
             {
index fed3ab0ac93a33ed4380d333ce14ca16136df08a..d0b4cc4a02d00a8c7be3e816f0dabc0396594f0d 100644 (file)
@@ -70,28 +70,28 @@ static inline int ps_track_fill( ps_track_t *tk, ps_psm_t *p_psm, int i_id )
     {
         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 )
@@ -104,7 +104,7 @@ static inline int ps_track_fill( ps_track_t *tk, ps_psm_t *p_psm, int i_id )
         }
         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
         {
@@ -117,7 +117,7 @@ static inline int ps_track_fill( ps_track_t *tk, ps_psm_t *p_psm, int i_id )
         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
         {
@@ -133,36 +133,36 @@ static inline int ps_track_fill( ps_track_t *tk, ps_psm_t *p_psm, int i_id )
 
         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;
     }
index 68093d98df0e8ab65dd9887d1874c48d29ef2f02..d5ceafb6b9e1cb1e787231aace003026993154ef 100644 (file)
@@ -98,10 +98,10 @@ static int Open( vlc_object_t *p_this )
     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;
index c3ff27bc71c987865535e745f0b05e81afe36f91..2f2bb11c889214e30e1f7921c94b9547c9afcbfe 100644 (file)
@@ -113,49 +113,43 @@ static int Open( vlc_object_t * p_this )
     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;
 
index 611be06aece1b9e0a638e3be4cf70c9617a1b105..527056d7daaeacd36c1d176d6928cf8087e587dd 100644 (file)
@@ -222,7 +222,7 @@ static int Open( vlc_object_t * p_this )
 
     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;;
 
@@ -239,9 +239,10 @@ static int Open( vlc_object_t * p_this )
     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 )
         {
@@ -257,9 +258,6 @@ static int Open( vlc_object_t * p_this )
             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 );
     }
 
index 22ded17b8e4ce979880fc7cdc50781fbc172f88c..85b3a8642df94676c193883999478e241e0b0b0a 100644 (file)
@@ -33,7 +33,6 @@
 #include <vlc_common.h>
 #include <vlc_plugin.h>
 #include <vlc_demux.h>
-#include <vlc_vout.h>                                     /* vout_InitFormat */
 #include <assert.h>
 
 /*****************************************************************************
@@ -113,12 +112,12 @@ struct preset_t
 
 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 }
 };
 
@@ -238,12 +237,12 @@ static int Open( vlc_object_t * p_this )
         {
             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;
@@ -357,8 +356,8 @@ static int Open( vlc_object_t * p_this )
     }
 
     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,
index ec02487eadd796098494b3cb21359f57386bad6e..2f8e93aaf9c7f3952a1ce7d0ebce68584d6a0858 100644 (file)
@@ -230,7 +230,7 @@ static int Open (vlc_object_t * p_this)
     }
 
     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;
index 426659c924f6b023e0dd6c970e6bd1781b05ab1f..4faaa9cdcc473b7f4fdfc113fc0ff102b5cca1de 100644 (file)
@@ -518,11 +518,11 @@ static int Open ( vlc_object_t *p_this )
              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 )
     {
index 7a654f302a40d0d776bb6e26a1d90d730c73b768..4882206a3cbd53a7b2bd34a0416d339b745cfaf4 100644 (file)
@@ -252,11 +252,11 @@ static int Open ( vlc_object_t *p_this )
     /* *** 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 );
 
index b80031b68a845ba780f01a18b70ee466c353d7b5..a2b4ef3b01af4d03e1b90042606a984fc341c5f0 100644 (file)
@@ -843,7 +843,7 @@ static void Close( vlc_object_t *p_this )
     {
         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 */
@@ -1737,7 +1737,7 @@ static void ParsePES( demux_t *p_demux, ts_pid_t *pid )
     {
         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;
@@ -1762,7 +1762,7 @@ static void ParsePES( demux_t *p_demux, ts_pid_t *pid )
         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 */
@@ -1804,7 +1804,7 @@ static void ParsePES( demux_t *p_demux, ts_pid_t *pid )
         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 )
             {
@@ -2048,38 +2048,38 @@ static int PIDFillFormat( ts_pid_t *pid, int i_stream_type )
     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) */
@@ -3103,14 +3103,14 @@ static void PMTSetupEsISO14496( demux_t *p_demux, ts_pid_t *pid,
         {
         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:
@@ -3118,13 +3118,13 @@ static void PMTSetupEsISO14496( demux_t *p_demux, ts_pid_t *pid,
         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;
@@ -3137,18 +3137,18 @@ static void PMTSetupEsISO14496( demux_t *p_demux, ts_pid_t *pid,
         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;
@@ -3260,7 +3260,7 @@ static void PMTSetupEsTeletext( demux_t *p_demux, ts_pid_t *pid,
 #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 )
@@ -3339,7 +3339,7 @@ static void PMTSetupEsDvbSubtitle( demux_t *p_demux, ts_pid_t *pid,
 {
     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;
@@ -3444,13 +3444,13 @@ static void PMTSetupEs0x06( demux_t *p_demux, ts_pid_t *pid,
         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" ) ||
@@ -3459,13 +3459,13 @@ static void PMTSetupEs0x06( demux_t *p_demux, ts_pid_t *pid,
     {
         /*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
     {
@@ -3544,7 +3544,7 @@ static void PMTSetupEs0xEA( demux_t *p_demux, ts_pid_t *pid,
 
     /* 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
@@ -3567,7 +3567,7 @@ static void PMTSetupEs0xD1( demux_t *p_demux, ts_pid_t *pid,
     /* 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,
@@ -3615,26 +3615,26 @@ static void PMTSetupEsHDMV( 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 */
@@ -3936,8 +3936,8 @@ static void PMTCallBack( demux_t *p_demux, dvbpsi_pmt_t *p_pmt )
 
         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 );
         }
index 0922f389536461e946cab0cebd810c71afec35dd..dd32597172f131954fe4e68064076998e77dd319 100644 (file)
@@ -117,7 +117,7 @@ static int Open( vlc_object_t * p_this )
     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] );
index 63d8402dc994992a7ef839c9410f08091d3ea494..0c93a351e891dd84bbd3c1536174afa9372ce380 100644 (file)
@@ -352,15 +352,15 @@ static int Open(vlc_object_t *p_this)
 
     /* 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 );
 
index 8c3af591962a6efe26fcc7bc1bd0a0f4b8ae88d4..968b9e8dc7c17e1345aafeb4097eba1b3f9f9859 100644 (file)
@@ -106,7 +106,7 @@ static int Open( vlc_object_t * p_this )
         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 )
     {
index 3b90e2da5be5a9784ca1782b901ebda3b9fbbe3c..e6f6c7e797fbebfe2662c860c560b13c5acbdf14 100644 (file)
@@ -40,6 +40,7 @@
 #include <vlc_charset.h>
 
 #include "ps.h"
+#include "vobsub.h"
 
 #define MAX_LINE 8192
 
@@ -488,8 +489,8 @@ static int ParseVobSubIDX( demux_t *p_demux )
         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 );
             }
@@ -500,33 +501,8 @@ static int ParseVobSubIDX( demux_t *p_demux )
         }
         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" );
             }
@@ -557,7 +533,7 @@ static int ParseVobSubIDX( demux_t *p_demux )
                 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 );
diff --git a/modules/demux/vobsub.h b/modules/demux/vobsub.h
new file mode 100644 (file)
index 0000000..cabdefb
--- /dev/null
@@ -0,0 +1,75 @@
+/*****************************************************************************
+ * 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;
+    }
+}
+
index 13d86d1b28feb78de8bae83fa220bb5d273703fe..ccdb63a73fea173a6809101613c26de63b2c294f 100644 (file)
@@ -196,7 +196,7 @@ static int ReadBlockHeader( demux_t *p_demux )
                 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;
@@ -221,7 +221,7 @@ static int ReadBlockHeader( demux_t *p_demux )
             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;
@@ -272,7 +272,7 @@ static int ReadBlockHeader( demux_t *p_demux )
                 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);
@@ -323,11 +323,11 @@ static int ReadBlockHeader( demux_t *p_demux )
                     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:
@@ -341,11 +341,11 @@ static int ReadBlockHeader( demux_t *p_demux )
                     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:
index ff5367a008fb44f0544c2034170914dbffffc9bf..9f4c832e012676d2dbd7cc0d0f61b6ffd0001357 100644 (file)
@@ -310,8 +310,8 @@ static int Open( vlc_object_t * p_this )
     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 ) )
@@ -334,11 +334,11 @@ static int Open( vlc_object_t * p_this )
                                 &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;
index 1202ef04da6c340af136ae6f0eec33dcad6655e2..51cee519937eae44fd39bd4aa8b1db87aae56fba 100644 (file)
@@ -97,7 +97,7 @@ int OpenAudio ( vlc_object_t * p_this )
 #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;
 
index 12220de4dda95bb26fb7e1f04ad39889cbc1f322..79873d589765e21f995f9ac42bed5ccf72237500 100644 (file)
@@ -662,38 +662,26 @@ void InterfaceWindow::MessageReceived( BMessage * p_message )
         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 */
@@ -1264,7 +1252,7 @@ void LanguageMenu::AttachedToWindow()
         }
         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 );
 
@@ -1327,8 +1315,7 @@ void TitleMenu::AttachedToWindow()
             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();
@@ -1391,8 +1378,7 @@ void ChapterMenu::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();
index 4f874d31aeb0d77abeac6af209c3a8acfcd1135a..aaffae5e8d4e08baf150a709e624699a7102eb53 100644 (file)
@@ -45,11 +45,11 @@ typedef struct colorcombo
 
 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
index 9af2a75873aeed672c3bc0508633a66fe3debeb3..739137939b232bf68f3717d5a9bb0ed82585da6a 100644 (file)
@@ -234,7 +234,7 @@ struct fbosd_render_t
     int             i_state;
 
     /* Font style */
-    text_style_t    text_style;                              /* font control */
+    text_style_t*   p_text_style;                            /* font control */
     char            *psz_string;
 
     /* Position */
@@ -310,20 +310,19 @@ static int Create( vlc_object_t *p_this )
     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;
     }
@@ -395,10 +394,7 @@ static int Create( vlc_object_t *p_this )
     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" );
@@ -508,6 +504,7 @@ static void Destroy( vlc_object_t *p_this )
     {
         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)
@@ -520,7 +517,7 @@ static void Destroy( vlc_object_t *p_this )
     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 );
 }
 
@@ -540,10 +537,10 @@ static int OpenBlending( intf_thread_t *p_intf )
             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 );
@@ -631,7 +628,7 @@ static picture_t *AllocatePicture( video_format_t *p_fmt )
         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 )
@@ -740,13 +737,13 @@ static int InvertAlpha( intf_thread_t *p_intf, picture_t **p_pic, video_format_t
 
     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 );
@@ -848,7 +845,7 @@ static picture_t *RenderText( intf_thread_t *p_intf, const char *psz_string,
         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;
@@ -865,7 +862,7 @@ static picture_t *RenderText( intf_thread_t *p_intf, const char *psz_string,
             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 )
@@ -963,15 +960,15 @@ static int Init( intf_thread_t *p_intf )
     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 );
@@ -1194,7 +1191,7 @@ static void Render( intf_thread_t *p_intf, struct fbosd_render_t *render )
 #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 )
         {
@@ -1204,7 +1201,7 @@ static void Render( intf_thread_t *p_intf, struct fbosd_render_t *render )
             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 )
         {
@@ -1220,8 +1217,8 @@ static void RenderClear( intf_thread_t *p_intf, struct fbosd_render_t *render )
 {
     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;
 
@@ -1399,15 +1396,15 @@ static int OverlayCallback( vlc_object_t *p_this, char const *psz_cmd,
         }
         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 ) )
         {
index b19129c7ddf8ccf1f9cd8e8365bc91396bade31f..590f8e6d8027fa62c78e39002b74d1cd9853f76d 100644 (file)
@@ -48,9 +48,15 @@ SOURCES_macosx = \
        bookmarks.m \
        embeddedwindow.h \
        embeddedwindow.m \
+       sidebarview.h \
+       sidebarview.m \
+       sidestatusview.h \
+       sidestatusview.m \
        fspanel.m \
        fspanel.h \
        eyetv.h \
        eyetv.m \
+       vlm.h \
+       vlm.m \
        $(NULL)
 
index 3708813f47af30ff616afb5dd2cd5281359a7f9e..9b40fdc6ef5e7e1c625c36677a4da49454cacfdb 100644 (file)
@@ -38,6 +38,8 @@
     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
  *****************************************************************************
index 8b864e6f2bbc62fe03ea5ab437c0fdbc565a4c7b..ef16ff5d6a7b0ad9bd98d528752ebe56286892ee 100644 (file)
 #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")] )
         {
index ead8618f72cfc2c92e374499387caf6bdae13937..1a500a67e71eb7c286cdcb12f30668ce27ee215d 100644 (file)
     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
index 9409690b4ef548c5e6c0083b699c59ba630720b0..ee8295ec752dab846286952ef8a4cebb99e3d6fc 100644 (file)
@@ -1,7 +1,7 @@
 /*****************************************************************************
  * 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
index e736be44f475c76f1459e7a506b5d4e1d6836fba..2d5967003cb0420df2660d882b0df1a7ced9cebc 100644 (file)
@@ -27,6 +27,7 @@
 @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;
index 4f78770d3fa6e233f7bca6f43515daa9aa29101b..367ff0b477a29eb60dec7fb927c471baf6f37b79 100644 (file)
@@ -151,6 +151,7 @@ static bool GetFiltersStatus( intf_thread_t *p_intf,
 {
     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.")];
@@ -342,11 +343,13 @@ static bool GetFiltersStatus( intf_thread_t *p_intf,
     {
         [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];
     }
 }
 
index f0e87d246489be4ccfc6b104ec4f0a2e665c01e1..5c5600084be5464eb76b33ec1c2dca221d1dcdbe 100644 (file)
@@ -102,6 +102,7 @@ struct intf_sys_t
     id o_wizard;                /* VLCWizard      */
     id o_extended;              /* VLCExtended    */
     id o_bookmarks;             /* VLCBookmarks   */
+    id o_vlm;                   /* VLCVLMController */
     id o_embedded_list;         /* VLCEmbeddedList*/
     id o_coredialogs;           /* VLCCoreDialogProvider */
     VLCInformation * o_info;                  /* VLCInformation */
@@ -118,6 +119,7 @@ struct intf_sys_t
     BOOL nib_prefs_loaded;      /* preferences nibfile */
     BOOL nib_update_loaded;     /* update nibfile */
     BOOL nib_info_loaded;       /* information panel nibfile */
+    BOOL nib_vlm_loaded;        /* VLM Panel nibfile */
     BOOL nib_coredialogs_loaded; /* CoreDialogs nibfile */
 
     IBOutlet VLCControllerWindow * o_window;                     /* main window */
@@ -193,6 +195,7 @@ struct intf_sys_t
     IBOutlet NSMenuItem * o_mi_open_recent;
     IBOutlet NSMenuItem * o_mi_open_recent_cm;
     IBOutlet NSMenuItem * o_mi_open_wizard;
+    IBOutlet NSMenuItem * o_mi_open_vlm;
 
     IBOutlet NSMenu * o_mu_edit;
     IBOutlet NSMenuItem * o_mi_cut;
@@ -271,6 +274,7 @@ struct intf_sys_t
     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;
@@ -387,6 +391,7 @@ struct intf_sys_t
 - (IBAction)intfOpenCapture:(id)sender;
 
 - (IBAction)showWizard:(id)sender;
+- (IBAction)showVLM:(id)sender;
 - (IBAction)showExtended:(id)sender;
 - (IBAction)showBookmarks:(id)sender;
 
index 62fcebe479a7501714d7a421cc8562fc3ad707fb..6e4ad9ce630c2de71903a16f250be423f4941a16 100644 (file)
@@ -54,6 +54,7 @@
 #import "AppleRemote.h"
 #import "eyetv.h"
 #import "simple_prefs.h"
+#import "vlm.h"
 
 #import <AddressBook/AddressBook.h>         /* for crashlog send mechanism */
 #import <IOKit/hidsystem/ev_keymap.h>         /* for the media key support */
@@ -323,6 +324,7 @@ static VLCMain *_o_sharedMainInstance = nil;
     o_prefs = nil;
     o_open = [[VLCOpen alloc] init];
     o_wizard = [[VLCWizard alloc] init];
+    o_vlm = [[VLCVLMController alloc] init];
     o_extended = nil;
     o_bookmarks = [[VLCBookmarks alloc] init];
     o_embedded_list = [[VLCEmbeddedList alloc] init];
@@ -696,6 +698,7 @@ static VLCMain *_o_sharedMainInstance = nil;
     [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...")];
@@ -1308,7 +1311,7 @@ static unsigned int VLCModifiersToCocoa( unsigned int i_key )
     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;
@@ -1418,6 +1421,11 @@ static unsigned int VLCModifiersToCocoa( unsigned int i_key )
     return nil;
 }
 
+- (id)vlm
+{
+    return o_vlm;
+}
+
 - (id)bookmarks
 {
     if( o_bookmarks )
@@ -1668,10 +1676,13 @@ static void manage_cleanup( void * args )
         }
 
         [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];
@@ -1680,6 +1691,7 @@ static void manage_cleanup( void * args )
         [[[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;
         
@@ -1800,6 +1812,8 @@ static void manage_cleanup( void * args )
         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;
@@ -1937,6 +1951,7 @@ end:
     else
         i_end_scroll = -1;
     [o_scrollfield setStringValue: o_string];
+    [o_embedded_window setScrollString: o_string];
 }
 
 - (void)resetScrollField
@@ -2153,6 +2168,14 @@ end:
     }
 }
 
+- (IBAction)showVLM:(id)sender
+{
+    if( !nib_vlm_loaded )
+        nib_vlm_loaded = [NSBundle loadNibNamed:@"VLM" owner: NSApp];
+
+    [o_vlm showVLMWindow];
+}
+
 - (IBAction)showExtended:(id)sender
 {
     if( o_extended == nil )
index fe7b5077568c3e14fbabb8b369514997837e6291..4d77a3824b94d39f8b7cfdbd67d1507ee8fff918 100644 (file)
@@ -91,7 +91,7 @@
 
 @implementation NSAnimation (VLCAdditions)
 /* fake class attributes  */
-static NSMapTable *VLCAdditions_userInfo = nil;
+static NSMapTable *VLCAdditions_userInfo = NULL;
 
 + (void)load
 {
@@ -124,7 +124,7 @@ static NSMapTable *VLCAdditions_userInfo = nil;
 
 @implementation NSScreen (VLCAdditions)
 
-static NSMutableArray *blackoutWindows = nil;
+static NSMutableArray *blackoutWindows = NULL;
 
 + (void)load
 {
@@ -132,12 +132,6 @@ static NSMutableArray *blackoutWindows = nil;
     blackoutWindows = [[NSMutableArray alloc] initWithCapacity:1];
 }
 
-- (void)dealloc
-{
-    [blackoutWindows release];
-    [super dealloc];
-}
-
 + (NSScreen *)screenWithDisplayID: (CGDirectDisplayID)displayID
 {
     int i;
index 02f291ac79ba079122e59934203aca4e2e01371a..96cee08f15b3f482fe5d709d0413bc106f0c0a85 100644 (file)
     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;
 
index d777d4ae864edec3715a16ff20e41e0e32b23f9d..e80c9b33bc8124b5543e09cd9497580958a9eba9 100644 (file)
@@ -49,6 +49,7 @@
 #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;
index 6a2b8ce8c68686a27e0d16cbbde6131c3f91b05a..a962fd268897de51c1132f0c7820a40b4797d565 100644 (file)
@@ -252,9 +252,7 @@ static VLCInfo *_o_sharedInstance = nil;
         if( !input_item_IsPreparsed( p_item ) )
         {
             playlist_t * p_playlist = pl_Hold( VLCIntf );
-            PL_LOCK;
-            playlist_PreparseEnqueue( p_playlist, p_item, pl_Locked );
-            PL_UNLOCK;
+            playlist_PreparseEnqueue( p_playlist, p_item, pl_Unlocked );
             pl_Release( VLCIntf );
         }
 
@@ -368,7 +366,6 @@ static VLCInfo *_o_sharedInstance = nil;
 - (IBAction)saveMetaData:(id)sender
 {
     playlist_t * p_playlist = pl_Hold( VLCIntf );
-    vlc_value_t val;
 
     if( !p_item ) goto error;
 
@@ -414,8 +411,7 @@ static VLCInfo *_o_sharedInstance = nil;
         module_unneed( p_playlist, p_mod );
     PL_UNLOCK;
 
-    val.b_bool = true;
-    var_Set( p_playlist, "intf-change", val );
+    var_SetBool( p_playlist, "intf-change", true );
     [self updatePanelWithItem: p_item];
 
     pl_Release( VLCIntf );
similarity index 55%
rename from modules/access/vcdx/intf.h
rename to modules/gui/macosx/sidebarview.h
index fa37bbe30f80de68a2e54947c93c02839b3eed6d..13c972887e513c67da22274a6d65c506354026a6 100644 (file)
@@ -1,10 +1,11 @@
 /*****************************************************************************
- * 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
diff --git a/modules/gui/macosx/sidebarview.m b/modules/gui/macosx/sidebarview.m
new file mode 100644 (file)
index 0000000..7398cc5
--- /dev/null
@@ -0,0 +1,201 @@
+/*****************************************************************************
+ * 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
diff --git a/modules/gui/macosx/sidestatusview.h b/modules/gui/macosx/sidestatusview.h
new file mode 100644 (file)
index 0000000..eb330e2
--- /dev/null
@@ -0,0 +1,33 @@
+/*****************************************************************************
+ * 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
diff --git a/modules/gui/macosx/sidestatusview.m b/modules/gui/macosx/sidestatusview.m
new file mode 100644 (file)
index 0000000..25c96f7
--- /dev/null
@@ -0,0 +1,107 @@
+/*****************************************************************************
+ * 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
index debf9efd70d9d216449fef365715fba317d0e373..30379244dd276328baafd06353d79b4df0cb2814 100644 (file)
@@ -661,11 +661,7 @@ static inline void save_string_list( intf_thread_t * p_intf, id object, const ch
     p_item = config_FindConfig( VLC_OBJECT(p_intf), name );
     p_stringobject = (NSString *)[[object selectedItem] representedObject];
     assert([p_stringobject isKindOfClass:[NSString class]]);
-    if( p_stringobject )
-    {
-        config_PutPsz( p_intf, name, [p_stringobject UTF8String] );
-        [p_stringobject release];
-    }
+    if( p_stringobject ) config_PutPsz( p_intf, name, [p_stringobject UTF8String] );
 }
 
 static inline void save_module_list( intf_thread_t * p_intf, id object, const char * name )
@@ -698,6 +694,7 @@ static inline void save_module_list( intf_thread_t * p_intf, id object, const ch
 {
     char *psz_tmp;
     int i;
+    NSString *p_stringobject;
     
 #define SaveIntList( object, name ) save_int_list( p_intf, object, name )
                     
diff --git a/modules/gui/macosx/vlm.h b/modules/gui/macosx/vlm.h
new file mode 100644 (file)
index 0000000..bbaeba7
--- /dev/null
@@ -0,0 +1,115 @@
+/*****************************************************************************
+ * vlm.h: VLM Configuration panel for Mac OS X
+ *****************************************************************************
+ * Copyright (c) 2008 the VideoLAN team
+ * $Id$
+ *
+ * Authors: Felix Paul Kühne <fkuehne@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., 59 Temple Place - Suite 330, Boston, MA  02111, USA.
+ *****************************************************************************/
+
+
+#ifdef HAVE_CONFIG_H
+#   import "config.h"
+#endif
+
+#ifdef ENABLE_VLM
+
+#import <Cocoa/Cocoa.h>
+#import "intf.h"
+
+#import <vlc_vlm.h>
+
+@interface VLCVLMController : NSObject
+{
+    /* broadcast panel */
+    IBOutlet NSButton *o_bcast_add_btn;
+    IBOutlet NSBox *o_bcast_box;
+    IBOutlet NSButton *o_bcast_cancel_btn;
+    IBOutlet NSButton *o_bcast_enable_ckb;
+    IBOutlet NSButton *o_bcast_input_btn;
+    IBOutlet NSTextField *o_bcast_input_fld;
+    IBOutlet NSButton *o_bcast_loop_ckb;
+    IBOutlet NSTextField *o_bcast_name_fld;
+    IBOutlet NSButton *o_bcast_output_btn;
+    IBOutlet NSTextField *o_bcast_output_fld;
+    IBOutlet NSPanel *o_bcast_panel;
+
+    /* schedule panel */
+    IBOutlet id o_sched_add_btn;
+    IBOutlet id o_sched_box;
+    IBOutlet id o_sched_cancel_btn;
+    IBOutlet NSDatePicker *o_sched_date_datePicker;
+    IBOutlet NSTextField *o_sched_date_lbl;
+    IBOutlet NSButton *o_sched_input_btn;
+    IBOutlet NSTextField *o_sched_input_fld;
+    IBOutlet NSTextField *o_sched_input_lbl;
+    IBOutlet NSTextField *o_sched_name_fld;
+    IBOutlet NSTextField *o_sched_name_lbl;
+    IBOutlet NSButton *o_sched_output_btn;
+    IBOutlet NSTextField *o_sched_output_fld;
+    IBOutlet NSTextField *o_sched_output_lbl;
+    IBOutlet NSTextField *o_sched_repeat_fld;
+    IBOutlet NSTextField *o_sched_repeat_lbl;
+    IBOutlet NSDatePicker *o_sched_repeatDelay_datePicker;
+    IBOutlet id o_sched_time_box;
+    IBOutlet NSWindow *o_sched_panel;
+
+    /* VLM Window */
+    IBOutlet NSTableView *o_vlm_list;
+    IBOutlet NSWindow *o_vlm_win;
+
+    /* VOD Panel */
+    IBOutlet NSButton *o_vod_add_btn;
+    IBOutlet id o_vod_box;
+    IBOutlet NSButton *o_vod_cancel_btn;
+    IBOutlet NSButton *o_vod_input_btn;
+    IBOutlet NSTextField *o_vod_input_fld;
+    IBOutlet NSTextField *o_vod_input_lbl;
+    IBOutlet NSButton *o_vod_loop_ckb;
+    IBOutlet NSTextField *o_vod_name_fld;
+    IBOutlet NSTextField *o_vod_name_lbl;
+    IBOutlet NSButton *o_vod_output_btn;
+    IBOutlet NSTextField *o_vod_output_fld;
+    IBOutlet NSTextField *o_vod_output_lbl;
+    IBOutlet NSWindow *o_vod_panel;
+}
++ (VLCVLMController *)sharedInstance;
+
+/* toolbar */
+- (NSToolbarItem *) toolbar: (NSToolbar *)o_toolbar 
+      itemForItemIdentifier: (NSString *)o_itemIdent 
+  willBeInsertedIntoToolbar: (BOOL)b_willBeInserted;
+- (NSArray *)toolbarDefaultItemIdentifiers: (NSToolbar *)toolbar;
+- (NSArray *)toolbarAllowedItemIdentifiers: (NSToolbar *)toolbar;
+
+- (void)showVLMWindow;
+- (void)initStrings;
+
+- (void)addBcast;
+- (void)addVOD;
+- (void)addSched;
+
+- (IBAction)bcastButtonAction:(id)sender;
+- (IBAction)listDoubleClickAction:(id)sender;
+- (IBAction)schedButtonAction:(id)sender;
+- (IBAction)vodButtonAction:(id)sender;
+
+- (int)numberOfRowsInTableView:(NSTableView *)aTableView;
+- (id)tableView:(NSTableView *)aTableView objectValueForTableColumn:(NSTableColumn *)aTableColumn row:(int)rowIndex;
+@end
+
+#endif
\ No newline at end of file
diff --git a/modules/gui/macosx/vlm.m b/modules/gui/macosx/vlm.m
new file mode 100644 (file)
index 0000000..c66beb0
--- /dev/null
@@ -0,0 +1,184 @@
+/*****************************************************************************
+ * vlm.m: VLM Configuration panel for Mac OS X
+ *****************************************************************************
+ * Copyright (c) 2008 the VideoLAN team
+ * $Id$
+ *
+ * Authors: Felix Paul Kühne <fkuehne@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., 59 Temple Place - Suite 330, Boston, MA  02111, USA.
+ *****************************************************************************/
+
+#import "vlm.h"
+
+#ifdef ENABLE_VLM
+
+static NSString * VLCVLMToolbarIdentifier = @"Our VLM Toolbar Identifier";
+static NSString * VLCVODToolbarIdentifier = @"VLM Item";
+static NSString * VLCSchedToolbarIdentifier = @"Sched Item";
+static NSString * VLCBcastToolbarIdentifier = @"Bcast Item";
+
+@implementation VLCVLMController
+
+static VLCVLMController *_o_sharedInstance = nil;
+
++ (VLCVLMController *)sharedInstance
+{
+    return _o_sharedInstance ? _o_sharedInstance : [[self alloc] init];
+}
+
+- (id)init
+{
+    if( _o_sharedInstance )
+        [self dealloc];
+    else
+    {
+        _o_sharedInstance = [super init];
+    }
+
+    return _o_sharedInstance;
+}
+
+- (void)awakeFromNib
+{
+    [self initStrings];
+    
+    /* setup the toolbar */
+    NSToolbar * o_vlm_toolbar = [[[NSToolbar alloc] initWithIdentifier: VLCVLMToolbarIdentifier] autorelease];
+    [o_vlm_toolbar setAllowsUserCustomization: NO];
+    [o_vlm_toolbar setAutosavesConfiguration: NO];
+    [o_vlm_toolbar setDisplayMode: NSToolbarDisplayModeIconAndLabel];
+    [o_vlm_toolbar setSizeMode: NSToolbarSizeModeRegular];
+    [o_vlm_toolbar setDelegate: self];
+    [o_vlm_win setToolbar: o_vlm_toolbar];
+}
+
+#define CreateToolbarItem( o_name, o_desc, o_img, sel ) \
+    o_toolbarItem = create_toolbar_item(o_itemIdent, o_name, o_desc, o_img, self, @selector(sel));
+static inline NSToolbarItem *
+create_toolbar_item( NSString * o_itemIdent, NSString * o_name, NSString * o_desc, NSString * o_img, id target, SEL selector )
+{
+    NSToolbarItem *o_toolbarItem = [[[NSToolbarItem alloc] initWithItemIdentifier: o_itemIdent] autorelease]; \
+
+    [o_toolbarItem setLabel: o_name];
+    [o_toolbarItem setPaletteLabel: o_desc];
+
+    [o_toolbarItem setToolTip: o_desc];
+    [o_toolbarItem setImage: [NSImage imageNamed: o_img]];
+
+    [o_toolbarItem setTarget: target];
+    [o_toolbarItem setAction: selector];
+
+    [o_toolbarItem setEnabled: YES];
+    [o_toolbarItem setAutovalidates: YES];
+
+    return o_toolbarItem;
+}
+
+- (NSToolbarItem *) toolbar: (NSToolbar *)o_vlm_toolbar 
+      itemForItemIdentifier: (NSString *)o_itemIdent 
+  willBeInsertedIntoToolbar: (BOOL)b_willBeInserted
+{
+    NSToolbarItem *o_toolbarItem = nil;
+
+    if( [o_itemIdent isEqual: VLCVODToolbarIdentifier] )
+    {
+        CreateToolbarItem( _NS("Video On Demand"), _NS("Video On Demand"), @"add_vod", addVOD );
+    }
+    else if( [o_itemIdent isEqual: VLCSchedToolbarIdentifier] )
+    {
+        CreateToolbarItem( _NS("Schedule"), _NS("Schedule"), @"add_schedule", addSched );
+    }
+    else if( [o_itemIdent isEqual: VLCBcastToolbarIdentifier] )
+    {
+        CreateToolbarItem( _NS("Broadcast"), _NS("Broadcast"), @"add_broadcast", addBcast );
+    }
+
+    return o_toolbarItem;
+}
+
+- (NSArray *)toolbarDefaultItemIdentifiers: (NSToolbar *)toolbar
+{
+    return [NSArray arrayWithObjects: VLCBcastToolbarIdentifier, VLCSchedToolbarIdentifier, VLCVODToolbarIdentifier, NSToolbarFlexibleSpaceItemIdentifier, nil];
+}
+
+- (NSArray *)toolbarAllowedItemIdentifiers: (NSToolbar *)toolbar
+{
+    return [NSArray arrayWithObjects: VLCBcastToolbarIdentifier, VLCSchedToolbarIdentifier, VLCVODToolbarIdentifier, NSToolbarFlexibleSpaceItemIdentifier, nil];
+}
+
+- (void)initStrings
+{
+    /* not implemented */
+}
+
+- (void)showVLMWindow
+{
+    [o_vlm_win makeKeyAndOrderFront: self];
+}
+
+- (void)addBcast
+{
+    [NSApp beginSheet: o_bcast_panel modalForWindow: o_vlm_win
+        modalDelegate: self didEndSelector: nil contextInfo: nil];
+}
+
+- (void)addVOD
+{
+    [NSApp beginSheet: o_vod_panel modalForWindow: o_vlm_win
+        modalDelegate: self didEndSelector: nil contextInfo: nil];
+}
+
+- (void)addSched
+{ 
+    [NSApp beginSheet: o_sched_panel modalForWindow: o_vlm_win
+         modalDelegate: self didEndSelector: nil contextInfo: nil];
+}
+
+- (IBAction)bcastButtonAction:(id)sender
+{
+    [NSApp endSheet: o_bcast_panel];
+    [o_bcast_panel close];
+}
+
+- (IBAction)listDoubleClickAction:(id)sender
+{
+}
+
+- (IBAction)schedButtonAction:(id)sender
+{
+    [NSApp endSheet: o_sched_panel];
+    [o_sched_panel close];
+}
+
+- (IBAction)vodButtonAction:(id)sender
+{
+    [NSApp endSheet: o_vod_panel];
+    [o_vod_panel close];
+}
+
+- (int)numberOfRowsInTableView:(NSTableView *)aTableView
+{
+    return 0;
+}
+
+- (id)tableView:(NSTableView *)aTableView objectValueForTableColumn:(NSTableColumn *)aTableColumn row:(int)rowIndex
+{
+    return @"dummy";
+}
+
+@end
+
+#endif
\ No newline at end of file
index 709171597c9cf4da596c970070d40a9e0eacfc05..e953f40d5413f780e6d8e3ff19fbf63b0df554e7 100644 (file)
@@ -656,7 +656,7 @@ static int HandleKey( intf_thread_t *p_intf, int i_key )
                 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
                 {
@@ -1512,7 +1512,6 @@ static void Redraw( intf_thread_t *p_intf, time_t *t_last_refresh )
         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 ) );
@@ -1554,23 +1553,17 @@ static void Redraw( intf_thread_t *p_intf, time_t *t_last_refresh )
             /* 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
index e1abc08bb1c0422bdcbabd31024c5db980da7fc1..9e4100ac28bb78cd9d1695b2362ecb548ef6b6e5 100644 (file)
@@ -91,7 +91,7 @@ static void PlaylistAddItem(GtkWidget *widget, gchar *name, char **ppsz_options,
 {
     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 );
@@ -132,7 +132,7 @@ static void PlaylistAddItem(GtkWidget *widget, gchar *name, char **ppsz_options,
             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,
index f0f8297cb727deb236e0f2dfd9897805b4016e31..6c9a6d8c4d012ad1c01e0590ed4ca094a8a486e7 100644 (file)
@@ -141,7 +141,7 @@ int OpenAudio( vlc_object_t *p_this )
     }
     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;
@@ -270,7 +270,7 @@ static void* QNXaoutThread( vlc_object_t *p_this )
         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;
 
index f5a01cb72d24ca38d276bc6b0734cffd67556d36..ef775d1c285a8c9792beb78672a3365804994b0c 100644 (file)
@@ -592,13 +592,13 @@ static int QNXInitDisplay( vout_thread_t * p_vout )
     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;
@@ -606,7 +606,7 @@ static int QNXInitDisplay( vout_thread_t * p_vout )
             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;
@@ -614,7 +614,7 @@ static int QNXInitDisplay( vout_thread_t * p_vout )
             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;
@@ -623,7 +623,7 @@ static int QNXInitDisplay( vout_thread_t * p_vout )
 
         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;
@@ -819,7 +819,7 @@ static int NewPicture( vout_thread_t *p_vout, picture_t *p_pic, int index )
         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] );
@@ -856,7 +856,7 @@ static int NewPicture( vout_thread_t *p_vout, picture_t *p_pic, int index )
                 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] );
@@ -896,11 +896,11 @@ static int NewPicture( vout_thread_t *p_vout, picture_t *p_pic, int index )
             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];
@@ -914,7 +914,7 @@ static int NewPicture( vout_thread_t *p_vout, picture_t *p_pic, int index )
                 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;
@@ -930,7 +930,7 @@ static int NewPicture( vout_thread_t *p_vout, picture_t *p_pic, int index )
                 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;
@@ -946,7 +946,7 @@ static int NewPicture( vout_thread_t *p_vout, picture_t *p_pic, int index )
                 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;
@@ -966,7 +966,7 @@ static int NewPicture( vout_thread_t *p_vout, picture_t *p_pic, int index )
     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];
index ce0f73e62cd9b8a9c9c5d8ab8bba1e96e3c4d703..a863447dd126ff98bcc9b7d3a539d489eaa5027d 100644 (file)
@@ -21,6 +21,7 @@ nodist_SOURCES_qt4 = \
                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 \
@@ -195,6 +196,7 @@ SOURCES_qt4 =       qt4.cpp \
                input_manager.cpp \
                actions_manager.cpp \
                recents.cpp \
+               variables.cpp \
                dialogs/playlist.cpp \
                dialogs/bookmarks.cpp \
                dialogs/preferences.cpp \
@@ -241,6 +243,7 @@ noinst_HEADERS = \
        input_manager.hpp \
        actions_manager.hpp \
        recents.hpp \
+       variables.hpp \
        dialogs/playlist.hpp \
        dialogs/bookmarks.hpp \
        dialogs/mediainfo.hpp \
index 464c27ff8ded7fcd76018f78929fa09a0245c79b..c2d516e7ed3671c0cb8c86ae612aacd05cf07732 100644 (file)
@@ -692,8 +692,7 @@ void ExtV4l2::Refresh( void )
                             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 ) );
@@ -758,7 +757,7 @@ void ExtV4l2::Refresh( void )
             }
             free( name.psz_string );
         }
-        var_Change( p_obj, "controls", VLC_VAR_FREELIST, &val, &text );
+        var_FreeList( &val, &text );
         vlc_object_release( p_obj );
     }
     else
index 3d498c7dca0dc79ff6c277e01ea4611e6e3e1f75..5568ea71b5f4971b6fe1c07c542934efe920dd96 100644 (file)
@@ -48,7 +48,7 @@ class ExtVideo: public QObject
     Q_OBJECT
     friend class ExtendedDialog;
 public:
-    ExtVideo( intf_thread_t *, QTabWidget * );
+    ExtVideo( struct intf_thread_t *, QTabWidget * );
     virtual ~ExtVideo();
     /*void gotoConf( QObject* );*/
 private:
index f5d8de8ede673319468ef321d5f9977779ce3b72..d45d25e606f63b63dce3ca321a92f4eb9cee95fb 100644 (file)
@@ -54,7 +54,7 @@ class MetaPanel: public QWidget
 {
     Q_OBJECT;
 public:
-    MetaPanel( QWidget *, intf_thread_t * );
+    MetaPanel( QWidget *, struct intf_thread_t * );
     void saveMeta();
 
     bool isInEditMode();
@@ -62,7 +62,7 @@ public:
 
 private:
     input_item_t *p_input;
-    intf_thread_t *p_intf;
+    struct intf_thread_t *p_intf;
     bool b_inEditMode;
 
     QLineEdit *title_text;
@@ -97,9 +97,9 @@ class ExtraMetaPanel: public QWidget
 {
     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 * );
@@ -110,9 +110,9 @@ class InputStatsPanel: public QWidget
 {
     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;
@@ -148,9 +148,9 @@ class InfoPanel: public QWidget
 {
     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 * );
index 6b35a3609744cf4c80845c5c42f9c67ba75ae7d4..8df5220857d1f9422a44b35fa5e432486eb087be 100644 (file)
@@ -121,7 +121,7 @@ WId VideoWidget::request( vout_thread_t *p_nvout, int *pi_x, int *pi_y,
 
 /* 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 );
@@ -404,24 +404,25 @@ void SpeedControlWidget::resetRate()
 }
 
 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()
@@ -431,7 +432,7 @@ CoverArtLabel::~CoverArtLabel()
         removeAction( act );
 }
 
-void CoverArtLabel::doUpdate( const QString& url )
+void CoverArtLabel::showArtUpdate( const QString& url )
 {
     QPixmap pix;
     if( !url.isEmpty()  && pix.load( url ) )
@@ -444,7 +445,7 @@ void CoverArtLabel::doUpdate( const QString& url )
     }
 }
 
-void CoverArtLabel::doUpdate()
+void CoverArtLabel::askForUpdate()
 {
     THEMIM->getIM()->requestArtUpdate();
 }
index bec4d4badb20700e7a73091c3976be5de3d34922..a34158a0ff0bfee03aa16219363192be812668fc 100644 (file)
@@ -207,8 +207,8 @@ public slots:
     }
 
 private slots:
-    void doUpdate();
-    void doUpdate( const QString& );
+    void askForUpdate();
+    void showArtUpdate( const QString& );
 
 signals:
     void updateRequested();
index 31d1b184ae895ff589b61c1759f216f7504c1639..97e11d06b18a5e226fe627e3ef38fffe4b33a13e 100644 (file)
@@ -49,8 +49,6 @@ static int PlaylistChanged( vlc_object_t *, const char *,
                             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,
@@ -234,7 +232,6 @@ void PLModel::addCallbacks()
 
 void PLModel::delCallbacks()
 {
-    var_DelCallback( p_playlist, "item-change", ItemChanged, this );
     /*
     var_DelCallback( p_playlist, "item-current", PlaylistNext, this );
     */
@@ -719,7 +716,7 @@ void PLModel::doDeleteItem( PLItem *item, QModelIndexList *fullList )
         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 */
@@ -959,15 +956,6 @@ static int PlaylistNext( vlc_object_t *p_this, const char *psz_variable,
     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 )
 {
index ee090b0b467777b61108bc1c86c25d45aa01dfc1..2621076f8c4c9d72c35167f0373d35b6b8d2295f 100644 (file)
@@ -1,5 +1,5 @@
 /*****************************************************************************
- * 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, QObject *_parent)
     : intf (intf), QObject( _parent ),
       message (VLC_OBJECT(intf), "dialog-fatal", VLC_VAR_ADDRESS),
index 526a28069c0c258cd3d0971e4d622ec9ff88737b..1e5ed5edabf955950a8d69e7a3211482409b8eb7 100644 (file)
 
 #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;
@@ -56,10 +40,10 @@ public:
 
 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 *);
 
index 41a5ef34050cd8250814f045e798cbebd65e2664..eb3f242c38a3dc7f409eacc3b1206222896a92b4 100644 (file)
@@ -103,9 +103,9 @@ MediaInfoDialog::MediaInfoDialog( intf_thread_t *_p_intf,
          **/
         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* ) );
index bda9130cc4232aca649b65255f563faac0512f80..50ab5c34781a2b59dd9ffe1abf300a9686aa2000 100644 (file)
@@ -274,7 +274,7 @@ void DialogsProvider::openFileGenericDialog( intf_dialog_args_t *p_arg )
         else
             extensions.replace( i, 1, "(" );
     }
-    extensions.replace(QString(";*"), QString(" *"));
+    extensions.replace( ";*", " *" );
     extensions.append( ")" );
 
     /* Save */
@@ -386,7 +386,7 @@ QStringList DialogsProvider::showSimpleOpen( QString help,
         ADD_FILTER_SUBTITLE( fileTypes );
     }
     ADD_FILTER_ALL( fileTypes );
-    fileTypes.replace(QString(";*"), QString(" *"));
+    fileTypes.replace( ";*", " *");
 
     return QFileDialog::getOpenFileNames( NULL,
         help.isEmpty() ? qtr(I_OP_SEL_FILES ) : help,
index 0b456ad086193ae58c4b1e8c2a962ddf2a3bc139..59d70ced451099dd0a57452fe24b76a54ae13d5f 100644 (file)
@@ -62,7 +62,7 @@ InputManager::InputManager( QObject *parent, intf_thread_t *_p_intf) :
     artUrl       = "";
     p_input      = NULL;
     i_rate       = 0;
-    i_input_id   = 0;
+    p_item       = NULL;
     b_video      = false;
     timeA        = 0;
     timeB        = 0;
@@ -92,12 +92,12 @@ void InputManager::setInput( input_thread_t *_p_input )
         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 );
     }
 }
@@ -112,7 +112,7 @@ void InputManager::delInput()
 
     delCallbacks();
     i_old_playing_status = END_S;
-    i_input_id           = 0;
+    p_item               = NULL;
     oldName              = "";
     artUrl               = "";
     b_video              = false;
@@ -137,7 +137,7 @@ void InputManager::delInput()
     /* 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 );
@@ -170,14 +170,14 @@ void InputManager::customEvent( QEvent *event )
         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
@@ -255,8 +255,9 @@ static int ItemChanged( vlc_object_t *p_this, const char *psz_var,
                         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;
 }
@@ -270,73 +271,74 @@ static int InputEvent( vlc_object_t *p_this, const char *,
     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;
@@ -352,7 +354,7 @@ static int VbiEvent( vlc_object_t *, const char *,
                      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;
@@ -394,12 +396,11 @@ void InputManager::UpdateNavigation()
 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 );
     }
 }
 
@@ -591,10 +592,12 @@ void InputManager::UpdateArt()
         char *psz_art = input_item_GetArtURL( input_GetItem( p_input ) );
         url = qfu( psz_art );
         free( psz_art );
+
+        url = url.replace( "file://", "" );
+        /* Taglib seems to define a attachment://, It won't work yet */
+        url = url.replace( "attachment://", "" );
     }
-    url = url.replace( "file://", QString("" ) );
-    /* Taglib seems to define a attachment://, It won't work yet */
-    url = url.replace( "attachment://", QString("" ) );
+
     /* Update Art meta */
     emit artChanged( url );
 }
@@ -611,7 +614,7 @@ inline void InputManager::UpdateMeta( int id )
 
 inline void InputManager::UpdateMeta()
 {
-    emit metaChanged( input_GetItem( p_input ) );
+    emit currentMetaChanged( input_GetItem( p_input ) );
 }
 
 inline void InputManager::UpdateInfo()
@@ -691,7 +694,7 @@ void InputManager::sectionMenu()
             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 );
     }
@@ -759,7 +762,7 @@ void InputManager::activateTeletext( bool b_enable )
                 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 );
     }
 }
 
@@ -884,10 +887,18 @@ MainInputManager::MainInputManager( intf_thread_t *_p_intf )
              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()
@@ -1003,11 +1014,11 @@ void MainInputManager::activatePlayQuit( bool b_exit )
 
 /* 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;
 }
@@ -1017,7 +1028,7 @@ static int VolumeChanged( vlc_object_t *p_this, const char *psz_var,
 {
     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;
 }
index d9b6630b28691648fc51c2120268ce0034b90e82..98a1bbe36832f796aaac495b56251a1f93035a58 100644 (file)
@@ -71,12 +71,20 @@ class IMEvent : public QEvent
 {
 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
@@ -106,7 +114,7 @@ public:
 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;
@@ -177,7 +185,7 @@ signals:
     /// 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
index 397ed44ba171eb4c1c9f121feb6d46bfd7f2a25a..4b0be03becc13e26c8c53a052c8715bb635a32cf 100644 (file)
@@ -757,7 +757,7 @@ void MainInterface::releaseVideoSlot( void )
     videoIsActive = false;
 
     /* Try to resize, except when you are in Fullscreen mode */
-    if( !isFullScreen() ) doComponentsUpdate();
+    doComponentsUpdate();
 }
 
 /* Call from WindowControl function */
index 292a18c015f19f45c2cd7589358b29b8c77289ce..4ea7ba3092fd2547c44017566f03e7e784bdfa70 100644 (file)
@@ -181,7 +181,6 @@ signals:
     void askReleaseVideo( );
     void askVideoToResize( unsigned int, unsigned int );
     void askVideoToShow( unsigned int, unsigned int );
-    void askVideoToToggle();
     void askBgWidgetToToggle();
     void askUpdate();
     void minimalViewToggled( bool );
index 0a12c20bd6e1048ec2e9035c99ea2716987103f1..387f5b8e9d3ea3d07c9a06c94f301c04a105f252 100644 (file)
@@ -1129,7 +1129,7 @@ static bool IsMenuEmpty( const char *psz_var,
     }
 
     /* clean up everything */
-    var_Change( p_object, psz_var, VLC_VAR_FREELIST, &val_list, NULL );
+    var_FreeList( &val_list, NULL );
 
     return i_result;
 }
@@ -1344,7 +1344,7 @@ int QVLCMenu::CreateChoicesMenu( QMenu *submenu, const char *psz_var,
     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
index ec2efbe96c6fc0e27393c56d10dff48d6570cab1..e3507754cc7266bd9ba034d0578c5ba0bd59c50b 100644 (file)
@@ -350,17 +350,6 @@ static void *Thread( void *obj )
 
     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" );
index dbcd04f7aa47f8a311e575d1f298b0ad6a9c43e4..6bde27156959e2756d58fe83ba01014ac090cabe 100644 (file)
@@ -36,7 +36,7 @@
 #include <QEvent>
 #include <QString>
 
-#if ( QT_VERSION < 0x040300 )
+#if ( QT_VERSION < 0x040400 )
 # error Update your Qt version
 #endif
 #if QT_VERSION == 0x040500
index 82a20e137cb78b74a9a339af9438130f44765403..bb6768e69bca90992b31ad943e7ea8fc70490311 100644 (file)
 #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 )
@@ -66,7 +70,9 @@ void RecentsMRL::addRecent( const QString &mrl )
 {
     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 )
@@ -82,6 +88,7 @@ void RecentsMRL::addRecent( const QString &mrl )
     }
     QVLCMenu::updateRecents( p_intf );
     save();
+
 }
 
 void RecentsMRL::clear()
diff --git a/modules/gui/qt4/variables.cpp b/modules/gui/qt4/variables.cpp
new file mode 100644 (file)
index 0000000..36da23b
--- /dev/null
@@ -0,0 +1,79 @@
+/*****************************************************************************
+ * 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);
+}
diff --git a/modules/gui/qt4/variables.hpp b/modules/gui/qt4/variables.hpp
new file mode 100644 (file)
index 0000000..40d414c
--- /dev/null
@@ -0,0 +1,70 @@
+/*****************************************************************************
+ * 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
index 1724b49844ff19b00cf25b3ee242c09c8c86dd68..5ab377d5cd6522e52a34cd9e167a9812cd3d43fb 100644 (file)
@@ -39,7 +39,7 @@ FileBitmap::FileBitmap( intf_thread_t *pIntf, image_handler_t *pImageHandler,
     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;
index d67cbdf08008e748c0f136aa1c8f50534c73709f..fef92fc3e5d7edac6f13c408c934b533208f17ba 100644 (file)
@@ -131,7 +131,7 @@ static int Open( vlc_object_t *p_this )
     if( OSFactory::instance( p_intf ) == NULL )
     {
         msg_Err( p_intf, "cannot initialize OSFactory" );
-        vlc_object_release( p_intf->p_sys->p_playlist );
+        pl_Release( p_intf );
 #if 0
         msg_Unsubscribe( p_intf, p_intf->p_sys->p_sub );
 #endif
@@ -140,7 +140,7 @@ static int Open( vlc_object_t *p_this )
     if( AsyncQueue::instance( p_intf ) == NULL )
     {
         msg_Err( p_intf, "cannot initialize AsyncQueue" );
-        vlc_object_release( p_intf->p_sys->p_playlist );
+        pl_Release( p_intf );
 #if 0
         msg_Unsubscribe( p_intf, p_intf->p_sys->p_sub );
 #endif
@@ -149,7 +149,7 @@ static int Open( vlc_object_t *p_this )
     if( Interpreter::instance( p_intf ) == NULL )
     {
         msg_Err( p_intf, "cannot instanciate Interpreter" );
-        vlc_object_release( p_intf->p_sys->p_playlist );
+        pl_Release( p_intf );
 #if 0
         msg_Unsubscribe( p_intf, p_intf->p_sys->p_sub );
 #endif
@@ -158,7 +158,7 @@ static int Open( vlc_object_t *p_this )
     if( VarManager::instance( p_intf ) == NULL )
     {
         msg_Err( p_intf, "cannot instanciate VarManager" );
-        vlc_object_release( p_intf->p_sys->p_playlist );
+        pl_Release( p_intf );
 #if 0
         msg_Unsubscribe( p_intf, p_intf->p_sys->p_sub );
 #endif
@@ -167,7 +167,7 @@ static int Open( vlc_object_t *p_this )
     if( VlcProc::instance( p_intf ) == NULL )
     {
         msg_Err( p_intf, "cannot initialize VLCProc" );
-        vlc_object_release( p_intf->p_sys->p_playlist );
+        pl_Release( p_intf );
 #if 0
         msg_Unsubscribe( p_intf, p_intf->p_sys->p_sub );
 #endif
@@ -176,7 +176,7 @@ static int Open( vlc_object_t *p_this )
     if( VoutManager::instance( p_intf ) == NULL )
     {
         msg_Err( p_intf, "cannot instanciate VoutManager" );
-        vlc_object_release( p_intf->p_sys->p_playlist );
+        pl_Release( p_intf );
         return VLC_EGENERIC;
     }
     vlc_mutex_lock( &skin_load.mutex );
@@ -378,7 +378,7 @@ static int DemuxOpen( vlc_object_t *p_this )
         // Make sure the item is deleted afterwards
         /// \bug does not always work
         playlist_CurrentPlayingItem( p_playlist )->i_flags |= PLAYLIST_REMOVE_FLAG;
-        vlc_object_release( p_playlist );
+        pl_Release( p_this );
 
         var_SetString( p_intf, "skin-to-load", p_demux->psz_path );
         vlc_object_release( p_intf );
index 4c890150e2097bb449cf7c4b37a4dce13cfa9434..a2dcd273008cb672184e353c1a0ec6579ea1cd29 100644 (file)
@@ -410,17 +410,18 @@ int VlcProc::onIntfShow( vlc_object_t *pObj, const char *pVariable,
 
 
 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() );
@@ -474,10 +475,11 @@ int VlcProc::onItemDelete( vlc_object_t *pObj, const char *pVariable,
 
 
 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() );
 
@@ -485,10 +487,13 @@ int VlcProc::onPlaylistChange( vlc_object_t *pObj, const char *pVariable,
     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;
index 839b928291b101a03be093d42fb6cf0295104157..3dc32ab8af3d3b8eead399dd4cffcdbebdccd584 100644 (file)
@@ -74,7 +74,7 @@ void Playtree::delSelected()
             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;
index 3cebdc7cb5b46f26aa7154c53e150ac4cc696066..2c3326b1040a9a9cc0983c72cc2dbb7bed592dc1 100644 (file)
@@ -688,7 +688,7 @@ HMENU CreateChoicesMenu( intf_thread_t *p_intf,
 
     /* 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;
 }
index fd695a4b8ff09051db0517036acb26104f9bdf79..8eebda56a780f0c1dfc2c98d9dd227870b9d5a03 100644 (file)
@@ -700,7 +700,7 @@ void Playlist::UpdateItem( int i )
 /**********************************************************************
  * Private functions
  **********************************************************************/
-void Playlist::DeleteItem( initem )
+void Playlist::DeleteItem( input_item_t *item )
 {
     playlist_t *p_playlist = pl_Hold( p_intf );
     if( p_playlist == NULL ) return;
index 554a37ac5c1814b738fb6fdffba3afd6ee2be0ed..012dab91d425bdfa31f6cb59c79c471c917e780c 100644 (file)
@@ -403,7 +403,7 @@ PrefsTreeCtrl::PrefsTreeCtrl( intf_thread_t *_p_intf,
                     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
                     {
@@ -447,7 +447,7 @@ PrefsTreeCtrl::PrefsTreeCtrl( intf_thread_t *_p_intf,
                         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
                         {
@@ -462,7 +462,7 @@ PrefsTreeCtrl::PrefsTreeCtrl( intf_thread_t *_p_intf,
                     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
                     {
index 3bf2fc98b455a6320ee1a0b05352f9484c0b8f81..7fc13d4354f0f44bb35c5cb6d15b44c585eef85e 100644 (file)
@@ -171,14 +171,11 @@ KeyConfigControl::KeyConfigControl( vlc_object_t *p_this,
                                     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;
         }
@@ -233,7 +230,7 @@ KeyConfigControl::KeyConfigControl( vlc_object_t *p_this,
 
     *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 );
index a5b62d37b14ca377cde1e30c50a041de5a41b45f..e648a335d2fb41d85e63789d882227f277b4ebc8 100644 (file)
@@ -52,7 +52,7 @@ int OpenAudio ( vlc_object_t * p_this )
     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;
index 0b4cdbb481968df2e71d4a81845dd575176e7a5b..3311041e03d671edbbf29cd578ef21809d39442f 100644 (file)
@@ -89,17 +89,9 @@ static int Init( vout_thread_t *p_vout )
     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;
 
@@ -109,7 +101,7 @@ static int Init( vout_thread_t *p_vout )
         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;
         }
index 7e458663d77eb3f342480ac2cdc31684f5a88afe..11d7bb8c5d7c4f5e303b17268d6ee0c6fc01ea58 100644 (file)
@@ -655,7 +655,7 @@ static int Render( filter_t *p_filter, subpicture_region_t *p_region,
 
     /* 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;
@@ -921,7 +921,7 @@ static int RenderYUVA( filter_t *p_filter, subpicture_region_t *p_region,
 
     /* 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;
index 58ce8c0bccdc456dbb87a75e82fab7d4c3acdaab..9e839a7947cc3d7476af849ccd984fcbfcec91ec 100644 (file)
@@ -318,7 +318,19 @@ static int vlclua_playlist_search( lua_State *L )
 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;
 }
index 16833bc6c405ead000018a01504bfbd1e4b5d739..15e86491332c82069ec8e0ea07243a9603064120 100644 (file)
@@ -200,7 +200,7 @@ static int vlclua_var_get_list( lua_State *L )
     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;
 }
 
index 7b55a8a49ca5015f19179c3c394eb190c8f446c6..c89c58792e96a998ac2a69e467ea80f67fd227e5 100644 (file)
@@ -173,17 +173,19 @@ static int ItemChange( vlc_object_t *p_this, const char *psz_var,
     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.
index f5d8704f050253abf496438ab47844fee79f7bc8..f7b95d3ac8976305ef23a98d15e483e716b17587 100644 (file)
@@ -199,7 +199,7 @@ osd_state_t *osd_StateNew( osd_menu_t *p_menu, const char *psz_file,
     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,
index a19c2a3cfd1df8829067bed9277187d67c2dcba1..b3b92445c749cd934e66708d9aff9a3caa518417 100644 (file)
@@ -838,7 +838,7 @@ static int RenderYUVA( filter_t *p_filter, subpicture_region_t *p_region, UniCha
 
     // 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;
index ee23ed54d3002efdfeee40b7a89bedde3587febb..a87dc3fcf6393acfbde725b6069739be7297c02b 100644 (file)
@@ -538,7 +538,7 @@ static int MediaAddES( vod_t *p_vod, vod_media_t *p_media, es_format_t *p_fmt )
 
     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;
@@ -556,31 +556,30 @@ static int MediaAddES( vod_t *p_vod, vod_media_t *p_media, es_format_t *p_fmt )
                           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;
@@ -646,7 +645,7 @@ static int MediaAddES( vod_t *p_vod, vod_media_t *p_media, es_format_t *p_fmt )
             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 )
@@ -659,7 +658,7 @@ static int MediaAddES( vod_t *p_vod, vod_media_t *p_media, es_format_t *p_fmt )
                 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;
@@ -685,13 +684,13 @@ static int MediaAddES( vod_t *p_vod, vod_media_t *p_media, es_format_t *p_fmt )
             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" );
index b5d89460d72d0baa8240a85745f802b8ae58cd00..3944b1a61f494dfa2bbb5b5961212cbba43612b1 100644 (file)
@@ -34,8 +34,6 @@
 #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>
index 5d9fa0a0998ccfdcb795b0906b56569030bc5d79..80899db50f1230e4fe743820084753a892b0ad00 100644 (file)
@@ -30,7 +30,6 @@
 
 #include <vlc_common.h>
 #include <vlc_codec.h>
-#include <vlc_vout.h>
 
 #include "stats.h"
 
@@ -54,7 +53,7 @@ int OpenDecoder ( vlc_object_t *p_this )
     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;
index 74858ac1f28b28703b15c99f485fe55b0bf06195..4b7461d17aa235d5a22f3cc4069172794976ccd3 100644 (file)
@@ -30,7 +30,6 @@
 
 #include <vlc_common.h>
 #include <vlc_codec.h>
-#include <vlc_vout.h>
 
 #include "stats.h"
 
index a765e3dd8a715929fb9e2b6b03a830e3ad054ebe..a9236f50f3ea8d37a8015cc9ee059dc5e02cbbf1 100644 (file)
@@ -109,7 +109,7 @@ static int Init( vout_thread_t *p_vout )
         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;
         }
index 28e1b77b89139201253d238b6d5c3f732a37cd44..c6cf3d140c97f60e2bf40cbe3a73a4baba2af1c2 100644 (file)
@@ -277,7 +277,7 @@ static int Render( filter_t *p_filter, subpicture_region_t *p_region,
 
     /* 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;
@@ -481,7 +481,7 @@ static int RenderText( filter_t *p_filter, subpicture_region_t *p_region_out,
     }
     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,
index a7280a5f286b620a16a699d1e3b61df70cbb8e26..84b393f3a9d18fa1d8481b8165640780f4bbd384 100644 (file)
@@ -123,7 +123,7 @@ static int Foo( vlc_object_t *p_this, char const *psz_cmd,
     {
         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" );
 
index 4475a7aef6fba816d81be2f6e262fa79f7dac500..b48f856645126b52ca93c5b059d973b36633d14a 100644 (file)
@@ -221,7 +221,7 @@ static int Render( filter_t *p_filter, subpicture_region_t *p_region,
 
     /* 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;
index 332cae87b4475b881b876a7baeae41b543b165d1..b8f6eaef5296c8b8f8d9ec0752cc44b4433b98e3 100644 (file)
@@ -374,17 +374,17 @@ static int AddStream( sout_mux_t *p_mux, sout_input_t *p_input )
 
             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;
@@ -400,47 +400,46 @@ static int AddStream( sout_mux_t *p_mux, sout_input_t *p_input )
                     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;
@@ -513,42 +512,42 @@ static int AddStream( sout_mux_t *p_mux, sout_input_t *p_input )
             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' );
@@ -565,7 +564,7 @@ static int AddStream( sout_mux_t *p_mux, sout_input_t *p_input )
                     }
                 }
             }
-            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');
@@ -573,7 +572,7 @@ static int AddStream( sout_mux_t *p_mux, sout_input_t *p_input )
             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 )
             {
index e70e5ddd892d7ee0e7fbc1fd83a6ac81ed3c361b..28a36160d324494a19c6c43472110397c7ec0176 100644 (file)
@@ -305,42 +305,41 @@ static int AddStream( sout_mux_t *p_mux, sout_input_t *p_input )
 
             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;
@@ -388,11 +387,11 @@ static int AddStream( sout_mux_t *p_mux, sout_input_t *p_input )
             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
index 92a251f3c746bec33490ec9134be2c6c86fd57c8..ade26a3edbf07a035267ba264087e7ca216faaaa 100644 (file)
@@ -397,22 +397,22 @@ static int AddStream( sout_mux_t *p_mux, sout_input_t *p_input )
 
     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:
@@ -515,11 +515,11 @@ static int Mux( sout_mux_t *p_mux )
 
 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 );
         }
@@ -781,18 +781,18 @@ static bo_t *GetESDS( mp4_stream_t *p_stream )
 
     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;
@@ -874,7 +874,7 @@ static bo_t *GetDamrTag( mp4_stream_t *p_stream )
     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) */
@@ -1026,8 +1026,8 @@ static bo_t *GetUdtaTag( sout_mux_t *p_mux )
     {
         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 */
@@ -1093,18 +1093,18 @@ static bo_t *GetSounBox( sout_mux_t *p_mux, mp4_stream_t *p_stream )
 
     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
@@ -1128,7 +1128,7 @@ static bo_t *GetSounBox( sout_mux_t *p_mux, mp4_stream_t *p_stream )
 
     /* 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;
     }
@@ -1150,7 +1150,7 @@ static bo_t *GetSounBox( sout_mux_t *p_mux, mp4_stream_t *p_stream )
 
     /* 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 );
@@ -1166,11 +1166,11 @@ static bo_t *GetSounBox( sout_mux_t *p_mux, mp4_stream_t *p_stream )
         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 );
         }
@@ -1196,36 +1196,36 @@ static bo_t *GetVideBox( mp4_stream_t *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;
 
@@ -1269,8 +1269,8 @@ static bo_t *GetVideBox( mp4_stream_t *p_stream )
     /* 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 );
 
@@ -1279,7 +1279,7 @@ static bo_t *GetVideBox( mp4_stream_t *p_stream )
         }
         break;
 
-    case VLC_FOURCC('H','2','6','3'):
+    case VLC_CODEC_H263:
         {
             bo_t *d263 = GetD263Tag();
 
@@ -1288,7 +1288,7 @@ static bo_t *GetVideBox( mp4_stream_t *p_stream )
         }
         break;
 
-    case VLC_FOURCC('S','V','Q','3'):
+    case VLC_CODEC_SVQ3:
         {
             bo_t *esds = GetSVQ3Tag( p_stream );
 
@@ -1297,7 +1297,7 @@ static bo_t *GetVideBox( mp4_stream_t *p_stream )
         }
         break;
 
-    case VLC_FOURCC('h','2','6','4'):
+    case VLC_CODEC_H264:
         box_gather( vide, GetAvcCTag( p_stream ) );
         break;
 
index 06afc9a08b351d9611ba255e28baba5315874831..7df2891ee8570cedfd443c49e6c47c97a79357c9 100644 (file)
@@ -111,7 +111,7 @@ static inline int PESHeader( uint8_t *p_hdr, mtime_t i_pts, mtime_t i_dts,
 
                 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;
@@ -341,7 +341,7 @@ int  EStoPES ( sout_instance_t *p_sout, block_t **pp_pes, block_t *p_es,
         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 */
index 0f5667d07ec067d4bda2ec881fcdac494d48a663..a7e4ef5f7266d74875022f7e628e4452bb84a6de 100644 (file)
@@ -276,50 +276,44 @@ static int AddStream( sout_mux_t *p_mux, sout_input_t *p_input )
     /* 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;
@@ -399,27 +393,27 @@ static int DelStream( sout_mux_t *p_mux, sout_input_t *p_input )
     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;
index dccd56043fd4333c3c36da94df7bd59066101586..82737fc4f33d99cf768d1da9532498fb3cf5e471 100644 (file)
@@ -998,39 +998,39 @@ static int AddStream( sout_mux_t *p_mux, sout_input_t *p_input )
         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;
@@ -1045,25 +1045,24 @@ static int AddStream( sout_mux_t *p_mux, sout_input_t *p_input )
         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 */
@@ -1082,22 +1081,22 @@ static int AddStream( sout_mux_t *p_mux, sout_input_t *p_input )
         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;
@@ -1185,7 +1184,7 @@ static int AddStream( sout_mux_t *p_mux, sout_input_t *p_input )
     }
 
     /* 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;
 
@@ -1489,12 +1488,12 @@ static int Mux( sout_mux_t *p_mux )
 
                     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
@@ -1507,7 +1506,7 @@ static int Mux( sout_mux_t *p_mux )
                         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 &&
@@ -1546,7 +1545,7 @@ static int Mux( sout_mux_t *p_mux )
                         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,
@@ -1585,14 +1584,14 @@ static int Mux( sout_mux_t *p_mux )
                                 }
                             }
                             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;
@@ -1622,7 +1621,7 @@ static int Mux( sout_mux_t *p_mux )
                         }
 
                         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
@@ -2545,7 +2544,7 @@ static void GetPMT( sout_mux_t *p_mux, sout_buffer_chain_t *c )
                     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 */
@@ -2680,14 +2679,14 @@ static void GetPMT( sout_mux_t *p_mux, sout_buffer_chain_t *c )
             /* "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) */
 
@@ -2695,7 +2694,7 @@ static void GetPMT( sout_mux_t *p_mux, sout_buffer_chain_t *c )
             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 )
             {
@@ -2705,7 +2704,7 @@ static void GetPMT( sout_mux_t *p_mux, sout_buffer_chain_t *c )
             }
             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 )
index 1511373046365afbf98d7e8e9c8a82055706cc28..1de2ec4cbe4774a494931613af5b5a17c00da41c 100644 (file)
@@ -131,16 +131,8 @@ static int AddStream( sout_mux_t *p_mux, sout_input_t *p_input )
     }
 
     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;
 }
index fcdfb8a617ce421bc1393155ac3ce6a729bad170..373637167b723484cc03ad81db1526385762c478 100644 (file)
@@ -342,14 +342,14 @@ static int AddStream( sout_mux_t *p_mux, sout_input_t *p_input )
 
         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 )
             {
@@ -359,11 +359,11 @@ static int AddStream( sout_mux_t *p_mux, sout_input_t *p_input )
             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 );
             }
@@ -388,11 +388,11 @@ static int AddStream( sout_mux_t *p_mux, sout_input_t *p_input )
             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;
 
@@ -405,15 +405,15 @@ static int AddStream( sout_mux_t *p_mux, sout_input_t *p_input )
     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;
 
@@ -470,7 +470,7 @@ static int AddStream( sout_mux_t *p_mux, sout_input_t *p_input )
     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 )
             {
@@ -626,9 +626,9 @@ static block_t *OggCreateHeader( sout_mux_t *p_mux )
         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;
@@ -652,7 +652,7 @@ static block_t *OggCreateHeader( sout_mux_t *p_mux )
             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));
@@ -667,7 +667,7 @@ static block_t *OggCreateHeader( sout_mux_t *p_mux )
                 }
             }
         }
-        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;
@@ -678,7 +678,7 @@ static block_t *OggCreateHeader( sout_mux_t *p_mux )
             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";
@@ -712,15 +712,15 @@ static block_t *OggCreateHeader( sout_mux_t *p_mux )
         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;
@@ -755,8 +755,8 @@ static block_t *OggCreateHeader( sout_mux_t *p_mux )
                 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;
@@ -778,8 +778,8 @@ static block_t *OggCreateHeader( sout_mux_t *p_mux )
         }
 
         /* 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
@@ -787,7 +787,7 @@ static block_t *OggCreateHeader( sout_mux_t *p_mux )
             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;
@@ -964,11 +964,11 @@ static int MuxBlock( sout_mux_t *p_mux, sout_input_t *p_input )
     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
@@ -982,9 +982,9 @@ static int MuxBlock( sout_mux_t *p_mux, sout_input_t *p_input )
 
     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 =
@@ -1000,7 +1000,7 @@ static int MuxBlock( sout_mux_t *p_mux, sout_input_t *p_input )
     }
     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 ) *
@@ -1008,7 +1008,7 @@ static int MuxBlock( sout_mux_t *p_mux, sout_input_t *p_input )
                 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
@@ -1038,8 +1038,8 @@ static int MuxBlock( sout_mux_t *p_mux, sout_input_t *p_input )
     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 */
index 7a8968f08fa78b657a10657e4dc893476e0af4d7..f2f4091d78f7d7334659ed5d49875f33a214af03 100644 (file)
@@ -204,7 +204,7 @@ static int AddStream( sout_mux_t *p_mux, sout_input_t *p_input )
                  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;
 
index 661e406c1458573ddf76391330bc42ae84de52ba..8207b609a96b028e44a43147e3613bfbbb064fbb 100644 (file)
@@ -87,149 +87,19 @@ static int Open( vlc_object_t *p_this )
     /* 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;
index 75f9ce5796c3c6fc74f12cbc2066dc93b31dcc0b..39c48185a60dbddfd43e1fd153157a44e95687a3 100644 (file)
@@ -1349,7 +1349,7 @@ static int Open( vlc_object_t *p_this )
     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;
index 534ee7bcbe6f58954dea56a0eba722a09b851456..3baac0cbf150cba3117b0b8367d5101c67b5a821 100644 (file)
@@ -183,18 +183,11 @@ static int Open( vlc_object_t *p_this )
     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 )
@@ -233,9 +226,9 @@ static int Open( vlc_object_t *p_this )
 
     /* 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
index 5722c0cb4e68a8a3018e6e63fa9ff04ae727c67e..09abbcb7575af0eacb6fa528afc72044cc9a6a4a 100644 (file)
@@ -120,7 +120,7 @@ static int Open( vlc_object_t *p_this )
     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;
 
     /* */
@@ -137,7 +137,7 @@ static int Open( vlc_object_t *p_this )
 
     /* 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 */
index e0f99d4012b03c44022dc109dc1c67d58988f02c..222678f140924250fefe058220919b79e45dfff9 100644 (file)
@@ -193,7 +193,7 @@ static int OpenPacketizer( vlc_object_t *p_this )
     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;
     }
@@ -211,7 +211,7 @@ static int OpenPacketizer( vlc_object_t *p_this )
 
     /* 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" );
 
index 018846c9980fa832596aa52e34284dd8bcbbe2ed..32daa37dfb26fd1c718e531d0b212f4600f022b6 100644 (file)
@@ -131,30 +131,8 @@ static int Open( vlc_object_t *p_this )
     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 )
@@ -172,7 +150,7 @@ static int Open( vlc_object_t *p_this )
 
     /* 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 )
     {
index a3a4020cfb57a89edda885b03f58bb6ec3e218d3..fa3c0e218ca1ab8f475535a907bfd4efcd55e136 100644 (file)
@@ -153,14 +153,12 @@ static int Open( vlc_object_t *p_this )
     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;
 
index c422f7a3dc73fed98bbb6f0b4e78bd5648496f03..83c7f500822ecb072d0f41aa5aa7efe52cc9da28 100644 (file)
@@ -130,7 +130,7 @@ static int Open( vlc_object_t *p_this )
     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;
index 4a8e6382e5c7eb0b8e82fa9bf70c967855e08ed0..496459310a2377d0373011ed66559a40acd7e58e 100644 (file)
@@ -66,38 +66,12 @@ struct sout_stream_sys_t
     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
  *****************************************************************************/
@@ -109,12 +83,11 @@ static int               Send( sout_stream_t *, sout_stream_id_t *, block_t * );
 
 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 * );
@@ -349,8 +322,6 @@ static sout_stream_id_t * Add( sout_stream_t *p_stream, es_format_t *p_fmt )
         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;
 
@@ -481,16 +452,6 @@ static int Del( sout_stream_t *p_stream, sout_stream_id_t *id )
         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 );
     }
 
@@ -507,7 +468,7 @@ static int Del( sout_stream_t *p_stream, sout_stream_id_t *id )
     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;
     }
 
@@ -588,7 +549,7 @@ static int Send( sout_stream_t *p_stream, sout_stream_id_t *id,
             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 )
             {
@@ -614,7 +575,7 @@ static int Send( sout_stream_t *p_stream, sout_stream_id_t *id,
 
             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 );
@@ -625,34 +586,18 @@ static int Send( sout_stream_t *p_stream, sout_stream_id_t *id,
         {
             /* 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 )
@@ -664,59 +609,24 @@ static int Send( sout_stream_t *p_stream, sout_stream_id_t *id,
     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 ||
@@ -746,123 +656,41 @@ static picture_t *video_new_buffer( vlc_object_t *p_this,
 
         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 );
 }
 
 
index c0ee052eeb1396bc4cf66c07f80229fa8eaaa730..db0a2edfbfa8b8d10f1156a2e5309f207b0816f8 100644 (file)
@@ -1404,7 +1404,7 @@ static sout_stream_id_t *Add( sout_stream_t *p_stream, es_format_t *p_fmt )
     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 )
             {
index e7ca29dbd49a034b6ed91479fdc154c332c92e7b..e9bd8106b14ceb39a78900defd2138c92096ad64 100644 (file)
@@ -267,38 +267,36 @@ typedef struct
  * 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 )
 };
index edd06c6ec9738470acf2fd5bf50d98367b62800d..909a2949dcba5d103e27d0dd80423278471aa8a9 100644 (file)
@@ -1030,21 +1030,21 @@ static sout_stream_id_t *Add( sout_stream_t *p_stream, es_format_t *p_fmt )
     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;
@@ -1058,25 +1058,23 @@ static sout_stream_id_t *Add( sout_stream_t *p_stream, es_format_t *p_fmt )
             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:
@@ -1097,15 +1095,15 @@ static sout_stream_id_t *Add( sout_stream_t *p_stream, es_format_t *p_fmt )
                 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;
@@ -1164,7 +1162,7 @@ static sout_stream_id_t *Add( sout_stream_t *p_stream, es_format_t *p_fmt )
                 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];
 
@@ -1179,7 +1177,7 @@ static sout_stream_id_t *Add( sout_stream_t *p_stream, es_format_t *p_fmt )
             }
             break;
         }
-        case VLC_FOURCC( 'm', 'p', '4', 'a' ):
+        case VLC_CODEC_MP4A:
         {
             if(!p_sys->b_latm)
             {
@@ -1224,21 +1222,21 @@ static sout_stream_id_t *Add( sout_stream_t *p_stream, es_format_t *p_fmt )
             }
             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;
index 9faf03eff2a2f97518feb9d561f1148c43da6558..63aca6f81cb87322c275d309c28f32d42618daef 100644 (file)
@@ -33,7 +33,6 @@
 #include <vlc_common.h>
 #include <vlc_plugin.h>
 #include <vlc_sout.h>
-#include <vlc_vout.h>
 #include <vlc_avcodec.h>
 
 #include <vlc_block.h>
@@ -323,16 +322,16 @@ static sout_stream_id_t *Add( sout_stream_t *p_stream, es_format_t *p_fmt )
         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;
@@ -613,9 +612,13 @@ static int UnpackFromFile( sout_stream_t *p_stream, const char *psz_file,
         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 *
index b4bf89136ab1126212cc4a0286783aac5d89a22c..d8eb8cad0cba5d38de97e14f99dffd6e9ccee7ba 100644 (file)
@@ -268,13 +268,10 @@ static int  transcode_video_encoder_open( sout_stream_t *, sout_stream_id_t *);
 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 * );
@@ -365,12 +362,6 @@ struct sout_stream_sys_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;
 };
 
@@ -433,8 +424,8 @@ static int Open( vlc_object_t *p_this )
 
     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 );
@@ -598,7 +589,7 @@ static int Open( vlc_object_t *p_this )
                                    &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 );
 
@@ -1082,11 +1073,11 @@ static int transcode_audio_filter_chain_build( sout_stream_t *p_stream, filter_c
          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, &current ) )
         {
@@ -1182,7 +1173,7 @@ static int transcode_audio_new( sout_stream_t *p_stream,
         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;
@@ -1227,7 +1218,7 @@ static int transcode_audio_new( sout_stream_t *p_stream,
     {
         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 ) )
         {
@@ -1256,9 +1247,9 @@ static int transcode_audio_new( sout_stream_t *p_stream,
     }
     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;
 }
@@ -1406,44 +1397,35 @@ static void audio_del_buffer( decoder_t *p_dec, aout_buffer_t *p_buffer )
  * 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
@@ -1462,8 +1444,6 @@ static int transcode_video_new( sout_stream_t *p_stream, sout_stream_id_t *id )
     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; */
 
@@ -1739,12 +1719,9 @@ static int transcode_video_encoder_open( sout_stream_t *p_stream,
 
     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 );
@@ -1760,8 +1737,6 @@ static int transcode_video_encoder_open( sout_stream_t *p_stream,
 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 );
@@ -1781,17 +1756,7 @@ static void transcode_video_close( sout_stream_t *p_stream,
     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 )
@@ -1826,7 +1791,7 @@ static int transcode_video_process( sout_stream_t *p_stream,
             {
                 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;
             }
         }
@@ -1857,7 +1822,7 @@ static int transcode_video_process( sout_stream_t *p_stream,
                 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) )
@@ -1927,7 +1892,7 @@ static int transcode_video_process( sout_stream_t *p_stream,
 
             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;
@@ -1955,14 +1920,14 @@ static int transcode_video_process( sout_stream_t *p_stream,
         {
             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;
                 }
             }
@@ -2043,7 +2008,7 @@ static int transcode_video_process( sout_stream_t *p_stream,
 
         if( p_sys->i_threads == 0 )
         {
-            p_pic->pf_release( p_pic );
+            picture_Release( p_pic );
         }
         else
         {
@@ -2100,14 +2065,14 @@ static void* EncoderThread( vlc_object_t* p_this )
         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 );
 
@@ -2115,150 +2080,44 @@ static void* EncoderThread( vlc_object_t* p_this )
     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 );
 }
 
 /*
@@ -2406,7 +2265,7 @@ static int transcode_osd_new( sout_stream_t *p_stream, sout_stream_id_t *id )
 
         /* 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;
index af73e7c2ef620e53947fb1ee04d43f1093717fbf..1425bbc4b2d93cc9d9c94215c127b179e05da306 100644 (file)
@@ -175,7 +175,7 @@ static sout_stream_id_t * Add( sout_stream_t *p_stream, es_format_t *p_fmt )
     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'",
index 99e150c99fa7b1e37bf38d110d5be09789f8ebf6..84b39fd32431eedbf9cd8fa8632ae1cad51783e5 100644 (file)
@@ -32,7 +32,6 @@
 #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"
@@ -78,15 +77,13 @@ static int Activate( vlc_object_t *p_this )
 
     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:
index 1d56f9d5f1ce8e44ec03bd7dfbe6a8a7014b5e72..28303f79a9eb5aa7f1a7929a944c0ada617064c2 100644 (file)
@@ -35,7 +35,6 @@
 #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)
@@ -107,18 +106,17 @@ static int Activate( vlc_object_t *p_this )
 
     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
@@ -147,10 +145,10 @@ static int Activate( vlc_object_t *p_this )
 
 #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
@@ -211,18 +209,18 @@ static int Activate( vlc_object_t *p_this )
     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;
 
@@ -239,7 +237,7 @@ static int Activate( vlc_object_t *p_this )
 
     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 )
     {
@@ -251,11 +249,11 @@ static int Activate( vlc_object_t *p_this )
 #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 */
@@ -348,13 +346,13 @@ static void SetYUV( filter_t *p_filter )
     /* 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++ )
         {
@@ -379,8 +377,8 @@ static void SetYUV( filter_t *p_filter )
         }
         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++ )
         {
index 3f0c6734f5d3a20d09399c397a27a860edc1ce45..a8532f72e2e83160eff638b46c6da4bdc39a87b0 100644 (file)
@@ -32,7 +32,6 @@
 
 #include <vlc/vlc.h>
 #include <vlc_filter.h>
-#include <vlc_vout.h>
 
 #include "i420_rgb.h"
 #if defined (MODULE_NAME_IS_i420_rgb)
index 78ed5c6e17f4f7eb1e60e0a4fbe144b5da813849..8d43532ffd599dbdecaa6741bc55084f392cb8fd 100644 (file)
@@ -31,7 +31,6 @@
 
 #include <vlc/vlc.h>
 #include <vlc_filter.h>
-#include <vlc_vout.h>
 
 #include "i420_rgb.h"
 #include "i420_rgb_c.h"
index 6e0f77c8a102be984216bd5ce28b9884b66f10f5..5d8789f21308715357f2160a5883b683944be0d9 100644 (file)
@@ -34,7 +34,6 @@
 #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"
@@ -82,12 +81,11 @@ static int Activate( vlc_object_t *p_this )
 
     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;
 
index 15f5ac2fee6d469c27339e27e161b761f1ba043c..facdf0a58595fb77d3fa0b98d2ca5cb4d98f99cc 100644 (file)
@@ -33,7 +33,6 @@
 #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>
@@ -126,23 +125,19 @@ static int Activate( vlc_object_t *p_this )
 
     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)
@@ -150,13 +145,13 @@ static int Activate( vlc_object_t *p_this )
                     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
index 7cb40e3b90ade7db445468696c89cc151869a197..c9291679b600b3ea07d63deebbf79115f78d271d 100644 (file)
@@ -33,7 +33,6 @@
 #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"
@@ -80,21 +79,20 @@ static int Activate( vlc_object_t *p_this )
 
     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;
 
index 53dd4fd20089be3f7f9d1ba2fc4779af3acfb963..cf7bfc9a9e646f1110c196b6aaefa861f03abfd0 100644 (file)
@@ -33,7 +33,6 @@
 #include <vlc_common.h>
 #include <vlc_plugin.h>
 #include <vlc_filter.h>
-#include <vlc_vout.h>
 
 #include "i422_yuy2.h"
 
@@ -100,34 +99,30 @@ static int Activate( vlc_object_t *p_this )
 
     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
index 3f3e8822cedfb54cc1ca7cc5e6a97ee21981089a..d5aef1178c3fec3380e3810e4ff7e9416688f98d 100644 (file)
@@ -32,7 +32,6 @@
 #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"
@@ -82,25 +81,22 @@ static int Activate( vlc_object_t *p_this )
 
     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;
 
index 03d47fd54168608c77965a26eb8e96c1bbe341df..bcd6b1c89bdd61a312ec06817f3304fc8ac40214 100644 (file)
@@ -32,7 +32,6 @@
 #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"
@@ -81,25 +80,22 @@ static int Activate( vlc_object_t *p_this )
 
     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;
 
index fa671dc2127d58b5e3f26fd91cee72961f1af140..c8dfecf48b1bae95daab08e6fa54570989f894e3 100644 (file)
@@ -36,7 +36,6 @@
 #include <vlc_common.h>
 #include <vlc_plugin.h>
 #include <vlc_sout.h>
-#include <vlc_vout.h>
 
 #include "vlc_filter.h"
 #include "filter_picture.h"
@@ -465,7 +464,7 @@ static picture_t *FilterPacked( filter_t *p_filter, picture_t *p_pic )
         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" );
index f6b969c075c39d0f3b731a5a1722ac99ea862ae0..a280e14e7682cfd8b83a712e0e34f38cdad38807 100644 (file)
@@ -31,7 +31,6 @@
 
 #include <vlc_common.h>
 #include <vlc_plugin.h>
-#include <vlc_vout.h>
 
 #include <vlc_image.h>
 #include <vlc_filter.h>
@@ -90,7 +89,7 @@ static int Create( vlc_object_t *p_this )
     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\". "
@@ -179,7 +178,7 @@ static void LoadMask( filter_t *p_filter, const char *psz_filename )
     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 );
index 3670d54f24590b9c526a67d3e5aaa5f1c4b571f5..34d8b3f10e24e8a9950c5bacebf219eea62a134c 100644 (file)
@@ -11,7 +11,6 @@
 
 CThread::CThread(vlc_object_t *pOwner)
 {
-    int err;
     m_pAtmoThread = (atmo_thread_t *)vlc_object_create( pOwner,
                                                         sizeof(atmo_thread_t) );
     if(m_pAtmoThread)
@@ -22,10 +21,7 @@ CThread::CThread(vlc_object_t *pOwner)
         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 );
     }
 }
 
index 2e78693a616aadcc9dc6a879569ab2a46f25f8d2..5c07f2ed5f0c08c38c40c51fbd142563c20e43fa 100644 (file)
@@ -1192,11 +1192,8 @@ static void Atmo_SetupParameters(filter_t *p_filter)
 
     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;
index 08fe36f55bb99f5890e2e2d2a9497f8d7d1f9223..5308bac56b5fc9e8d29c34eee1f61367cb784b89 100644 (file)
@@ -32,7 +32,6 @@
 #include <assert.h>
 #include <vlc_common.h>
 #include <vlc_plugin.h>
-#include <vlc_vout.h>
 #include "vlc_filter.h"
 
 /*****************************************************************************
@@ -56,19 +55,19 @@ struct filter_sys_t
     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
index 6adf28369bd22f358fc60a8d5ee44e0a6cd62344..05875207310a0c5fd33f60b7dc8b65a28811fadd 100644 (file)
@@ -32,7 +32,6 @@
 #include <vlc_common.h>
 #include <vlc_plugin.h>
 #include <vlc_sout.h>
-#include <vlc_vout.h>
 
 #include "vlc_filter.h"
 #include "vlc_image.h"
index 90396c81cc447b473d6fddf74300c1a4acc1aa35..41707d1813a02e64a7c1930838aaab5181121051 100644 (file)
@@ -31,7 +31,6 @@
 
 #include <vlc_common.h>
 #include <vlc_plugin.h>
-#include <vlc_vout.h>
 
 #include "vlc_filter.h"
 
@@ -113,7 +112,7 @@ static int Create( vlc_object_t *p_this )
     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\". "
@@ -178,7 +177,7 @@ static picture_t *Filter( filter_t *p_filter, picture_t *p_pic )
     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\". "
index ef48f2236b71434cf24254a105a8fc7ea4e880d0..9f9bef46946ce02cca04698901f116271e332cd1 100644 (file)
@@ -34,7 +34,6 @@
 #include <vlc_common.h>
 #include <vlc_plugin.h>
 #include <vlc_filter.h>
-#include <vlc_vout.h>
 
 /*****************************************************************************
  * Local and extern prototypes.
@@ -286,13 +285,12 @@ static picture_t *Filter( filter_t *p_filter, picture_t *p_pic )
  *****************************************************************************/
 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 )
index d56f67e5e85e77b9d9cb03b9e423e11bb6d6b984..7ea91eb3dd4a3a52b92db5cf0faa8fc99d7313ec 100644 (file)
@@ -60,10 +60,10 @@ static void EsFormatMergeSize( es_format_t *p_dst,
                                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
 };
 
@@ -220,13 +220,13 @@ static picture_t *BufferNew( filter_t *p_filter )
 {
     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 )
 {
index e847b706f8409dd6403ded3ed6e08dc4605affa7..45052830775ca9c42eb501baa5cfe1379ebc936b 100644 (file)
@@ -35,7 +35,6 @@
 #include <vlc_common.h>
 #include <vlc_plugin.h>
 #include <vlc_sout.h>
-#include <vlc_vout.h>
 
 #include "vlc_filter.h"
 #include "filter_picture.h"
index b7a63ad4ea7851980b761ca021fe07f9f7eef177..286ce642c80ea03a7d3d1d72fc5c0f232d1847db 100644 (file)
@@ -558,15 +558,13 @@ static bool NonBlackLine(uint8_t *p_in, int i_line, int i_pitch,
     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;
@@ -577,7 +575,7 @@ static bool NonBlackLine(uint8_t *p_in, int i_line, int i_pitch,
             }
             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;
@@ -587,8 +585,8 @@ static bool NonBlackLine(uint8_t *p_in, int i_line, int i_pitch,
             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;
@@ -600,7 +598,7 @@ static bool NonBlackLine(uint8_t *p_in, int i_line, int i_pitch,
             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)
             {
@@ -610,7 +608,7 @@ static bool NonBlackLine(uint8_t *p_in, int i_line, int i_pitch,
             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)
             {
@@ -619,11 +617,8 @@ static bool NonBlackLine(uint8_t *p_in, int i_line, int i_pitch,
             }
             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;
@@ -740,7 +735,7 @@ static void UpdateStats( vout_thread_t *p_vout, picture_t *p_pic )
     /* 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-- ; )
index 9c23c6b5e1df29dba6662819d7f16f0d5f236b7a..d5c7730d690faf388a1cd10a6fcb9dad575da814 100644 (file)
@@ -32,7 +32,6 @@
 
 #include <vlc_common.h>
 #include <vlc_plugin.h>
-#include <vlc_vout.h>
 #include "vlc_filter.h"
 #include "filter_picture.h"
 
index 08f135d8707e5a781800ce428c273ef3c71cc43f..0460fd952eeb2bc0b45117ed2c9846602846f2c2 100644 (file)
@@ -310,7 +310,7 @@ static void SetFilterMethod( vout_thread_t *p_vout, char *psz_method )
     }
     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\"" );
@@ -336,17 +336,17 @@ static void GetOutputFormat( vout_thread_t *p_vout,
         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;
         }
     }
@@ -354,10 +354,9 @@ static void GetOutputFormat( vout_thread_t *p_vout,
 
 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;
 }
 
 /*****************************************************************************
@@ -608,9 +607,8 @@ static void RenderDiscard( vout_thread_t *p_vout,
 
         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 ; )
             {
@@ -621,7 +619,7 @@ static void RenderDiscard( vout_thread_t *p_vout,
             }
             break;
 
-        case VLC_FOURCC('I','4','2','2'):
+        case VLC_CODEC_I422:
 
             i_increment = 2 * p_pic->p[i_plane].i_pitch;
 
@@ -673,9 +671,8 @@ static void RenderBob( vout_thread_t *p_vout,
 
         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 )
                 {
@@ -709,7 +706,7 @@ static void RenderBob( vout_thread_t *p_vout,
                 }
                 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 )
                 {
@@ -863,9 +860,8 @@ static void RenderBlend( vout_thread_t *p_vout,
 
         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;
@@ -881,7 +877,7 @@ static void RenderBlend( vout_thread_t *p_vout,
                 }
                 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;
index c015c4ccbc16c91f84f85cb64f0e18f2ea91fa65..da647e25550b25fbc9c7175820ce1655dcf78ad1 100644 (file)
@@ -355,12 +355,10 @@ static subpicture_t *Filter( filter_t *p_filter, mtime_t date )
                  (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
         {
index 8eb500a527a32bfc0c9de63395e930f00c63e41c..a40c73dfb636a273d6924a253ed931a6ca73d002 100644 (file)
@@ -122,7 +122,7 @@ typedef struct overlay_t
     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;
index 3f3f5b82fc5e513dff7f3d5beea1bf936c92297e..58c9fcdfaa55bc61f62b84ceb1603f6aff7e70df 100644 (file)
@@ -56,9 +56,9 @@ overlay_t *OverlayCreate( void )
     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;
@@ -68,6 +68,7 @@ int OverlayDestroy( overlay_t *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;
 }
@@ -436,7 +437,7 @@ static int exec_DataSharedMem( filter_t *p_filter,
     }
     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;
 
@@ -464,8 +465,8 @@ static int exec_DataSharedMem( filter_t *p_filter,
             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 )
@@ -488,9 +489,9 @@ static int exec_DataSharedMem( filter_t *p_filter,
         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 ) )
@@ -636,7 +637,7 @@ static int exec_GetTextAlpha( filter_t *p_filter,
     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;
 }
 
@@ -649,7 +650,7 @@ static int exec_GetTextColor( filter_t *p_filter,
     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;
 }
 
@@ -662,7 +663,7 @@ static int exec_GetTextSize( filter_t *p_filter,
     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;
 }
 
@@ -725,7 +726,7 @@ static int exec_SetTextAlpha( filter_t *p_filter,
     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;
 }
@@ -741,7 +742,7 @@ static int exec_SetTextColor( filter_t *p_filter,
     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;
 }
@@ -757,7 +758,7 @@ static int exec_SetTextSize( filter_t *p_filter,
     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;
 }
index b501c869fbd46e424f1b3004158f6157af6550af..2305009f93868deca2f9e50b72cec12b808c328a 100644 (file)
@@ -32,7 +32,6 @@
 #include <vlc_common.h>
 #include <vlc_plugin.h>
 #include <vlc_sout.h>
-#include <vlc_vout.h>
 #include "vlc_image.h"
 
 #include "vlc_filter.h"
@@ -100,7 +99,7 @@ static void LoadMask( filter_t *p_filter, const char *psz_filename )
     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 );
@@ -128,13 +127,12 @@ static int Create( vlc_object_t *p_this )
 
     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:
@@ -248,8 +246,8 @@ static void FilterErase( filter_t *p_filter, picture_t *p_inpic,
         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 */
         {
index c061884ac2cf26ad6ec8934c408492e04fe0e0c0..11551f7a82efac4d46a4e71cbb8f774ca9fc389b 100644 (file)
@@ -31,7 +31,6 @@
 
 #include <vlc_common.h>
 #include <vlc_plugin.h>
-#include <vlc_vout.h>
 
 #include "vlc_filter.h"
 #include "filter_picture.h"
@@ -107,13 +106,12 @@ static int Create( vlc_object_t *p_this )
 
     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;
@@ -188,10 +186,9 @@ static picture_t *Filter( filter_t *p_filter, picture_t *p_pic )
     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:
@@ -214,8 +211,8 @@ static picture_t *Filter( filter_t *p_filter, picture_t *p_pic )
             }
             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:
index b39a26637c9b0e9e036aff5363016757cc8fd854..c5b4473aa2f38344e583176fe9783d5f21237b24 100644 (file)
 
 /* 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;
index a8f96efc6833908b39e04f8efe865a0e24e45e7d..97019f789f207a64319ceadfbf71b8065e8db08b 100644 (file)
@@ -31,7 +31,6 @@
 
 #include <vlc_common.h>
 #include <vlc_plugin.h>
-#include <vlc_vout.h>
 
 #include "vlc_filter.h"
 #include "filter_picture.h"
@@ -123,13 +122,12 @@ static int Create( vlc_object_t *p_this )
 {
     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 */
index 948cb4a04d318256b720203ed6ea0e8b54698f02..fd3baa0551a1d22e23f12d2d13212e983fc1ff86 100644 (file)
@@ -35,7 +35,6 @@
 #include <vlc_common.h>
 #include <vlc_plugin.h>
 #include <vlc_sout.h>
-#include <vlc_vout.h>
 
 #include "vlc_filter.h"
 #include "filter_picture.h"
index 28f54eb813ffb07c3c3a5088f0ed5f671e99b48a..57a740e7acdd7bdc9317e409aea3a765a58f8ee4 100644 (file)
@@ -31,7 +31,6 @@
 
 #include <vlc_common.h>
 #include <vlc_plugin.h>
-#include <vlc_vout.h>
 
 #include "vlc_filter.h"
 #include "filter_picture.h"
index 1f1cd71aaed3c61335d2edae82fd85c7605ab436..e857dfe08c7c9eed89916be177809ec6d64e3e7d 100644 (file)
@@ -31,7 +31,6 @@
 
 #include <vlc_common.h>
 #include <vlc_plugin.h>
-#include <vlc_vout.h>
 
 #include "vlc_filter.h"
 #include "filter_picture.h"
@@ -58,7 +57,7 @@ vlc_module_begin ()
 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.
@@ -121,7 +120,7 @@ static picture_t *Filter( filter_t *p_filter, picture_t *p_pic )
         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;
index bdc988d3b8f96adbf92ee45cdbf49f56994d5838..f57056b5f6e788a5d748fe3287fa28fc57bc9251 100644 (file)
@@ -179,7 +179,7 @@ static picture_t *LoadImage( vlc_object_t *p_this, char *psz_filename )
     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 );
@@ -393,7 +393,7 @@ static int Init( vout_thread_t *p_vout )
         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 =
@@ -819,7 +819,7 @@ static subpicture_t *Filter( filter_t *p_filter, mtime_t date )
 
     /* 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;
index aef6837a77d6968e921661d7c32459caed3db770..b5c080cd2e04d7d566d680968a12f6a745df4fff 100644 (file)
@@ -114,7 +114,7 @@ static int Create( vlc_object_t *p_this )
     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" );
index ce627d124410fad85571c6e84cc2e97097ad3173..f993907d4d1445ea9ee7847d10ac268484ec449f 100644 (file)
@@ -33,7 +33,6 @@
 
 #include <vlc_common.h>
 #include <vlc_plugin.h>
-#include <vlc_vout.h>
 
 #include "vlc_filter.h"
 #include "vlc_block.h"
@@ -204,8 +203,7 @@ static int CreateFilter( vlc_object_t *p_this )
         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 );
@@ -259,7 +257,7 @@ static void DestroyFilter( vlc_object_t *p_this )
     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 );
 }
@@ -286,7 +284,7 @@ static subpicture_t *Filter( filter_t *p_filter, mtime_t date )
         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;
@@ -325,7 +323,7 @@ static subpicture_t *Filter( filter_t *p_filter, mtime_t date )
     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 );
index a8d60f0c5a13191c08b96cd2d6b9ebf44d5df7a0..d9488f9807ce4c16e09f9e681151a57793fcc3bf 100644 (file)
@@ -31,7 +31,6 @@
 
 #include <vlc_common.h>
 #include <vlc_plugin.h>
-#include <vlc_vout.h>
 
 #include <math.h>
 #include <limits.h> /* INT_MAX */
@@ -596,11 +595,11 @@ static subpicture_t *Filter( filter_t *p_filter, mtime_t date )
             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;
 
index e975efcfb581cc97b13c72cddc872b27a72cbe1c..f5e43403136146a938f2e63507ff084cb9b3dc26 100644 (file)
@@ -33,7 +33,6 @@
 #include <vlc_common.h>
 #include <vlc_plugin.h>
 #include <vlc_sout.h>
-#include <vlc_vout.h>
 #include <vlc_filter.h>
 #include "filter_picture.h"
 
index aaf8f3149dd66e25929b3a68d7acd933367ad30e..8043f4c1024ca3d34ee2d03a3f46cfeb4b476372 100644 (file)
@@ -32,7 +32,6 @@
 #include <vlc_common.h>
 #include <vlc_plugin.h>
 #include <vlc_sout.h>
-#include <vlc_vout.h>
 
 #include "vlc_filter.h"
 #include "filter_picture.h"
@@ -198,16 +197,15 @@ static picture_t *Filter( filter_t *p_filter, picture_t *p_inpic )
     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;
index dcd6cdeea9fc0cc4fefda3454c1f635bd4a31910..54cea1650903a3e8649c2ffe9083360b33b92ce3 100644 (file)
@@ -31,7 +31,6 @@
 
 #include <vlc_common.h>
 #include <vlc_plugin.h>
-#include <vlc_vout.h>
 
 #include "vlc_filter.h"
 #include "filter_picture.h"
@@ -61,7 +60,7 @@ vlc_module_begin ()
 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.
index e1fe03e2f1b816cc6435243d22fab793998ed71b..3d899e55d3e315ef063acc5e413b6e211be1d71e 100644 (file)
@@ -174,7 +174,7 @@ static picture_t *Filter( filter_t *p_filter, picture_t *p_pic )
         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;
index ca48f23c5eaf171027ad42e2e7a786c5718a1633..6825ba38ed24ca6a9da694c14953b6934abbae5f 100644 (file)
@@ -318,9 +318,9 @@ static int Init( vout_thread_t *p_vout )
         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 */
@@ -463,13 +463,13 @@ static void VlcPictureToIplImage( vout_thread_t *p_vout, picture_t *p_in )
             //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
index d7f23a4eaa854292ea4ead6ebd23ee4e09eabdfd..e287f392cd6de721b3b2abfc2d6f2370bdfc9427 100644 (file)
@@ -263,7 +263,7 @@ static int CreateFilter ( vlc_object_t *p_this )
                         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;
@@ -370,7 +370,7 @@ static subpicture_region_t *create_text_region( filter_t *p_filter, subpicture_t
 
     /* 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;
@@ -408,13 +408,13 @@ static subpicture_region_t *create_picture_region( filter_t *p_filter, subpictur
 
     /* 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;
index 73c92814fbbafb454b33f6cafdfe91fd6845aa51..8b4467a379318fc79b016f4378b49d6bfe0e3757 100644 (file)
@@ -307,43 +307,38 @@ static int Create( vlc_object_t *p_this )
     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
@@ -700,29 +695,24 @@ static int Init( vout_thread_t *p_vout )
         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++)
@@ -735,11 +725,11 @@ static int Init( vout_thread_t *p_vout )
                         }
                 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++)
@@ -1651,8 +1641,7 @@ static void RenderPackedYUV( vout_thread_t *p_vout, picture_t *p_pic )
 #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);
@@ -1672,9 +1661,7 @@ static void RenderPackedYUV( vout_thread_t *p_vout, picture_t *p_pic )
                                 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);
@@ -1740,8 +1727,7 @@ static void RenderPackedYUV( vout_thread_t *p_vout, picture_t *p_pic )
 #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);
@@ -1761,9 +1747,7 @@ static void RenderPackedYUV( vout_thread_t *p_vout, picture_t *p_pic )
                                                 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);
index 9d1dc57b4989ca37a7e1e5e7fdcd7a38a0c9c0b2..ee7499f6cd9252e96629d52781ee9d204ef69f2a 100644 (file)
@@ -29,7 +29,7 @@
 
 #include <vlc_common.h>
 #include <vlc_plugin.h>
-#include <vlc_vout.h>
+#include <vlc_filter.h>
 
 #include "filter_picture.h"
 
@@ -140,22 +140,21 @@ static int OpenPostproc( vlc_object_t *p_this )
 
     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:
index 2e1c53c36acbb924206f16db2b97e675cdcd2ae7..b0cf07d0168fad64982b60bb03e1dccf997fa711 100644 (file)
@@ -62,7 +62,7 @@ vlc_module_begin ()
 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.
index 8b0e02ece326754b86991c75306cf4f11c192ec7..5bc22dc36fa19b8e516a883e789a1d7e07b4ade4 100644 (file)
@@ -323,7 +323,7 @@ static int CreateFilter ( vlc_object_t *p_this )
                          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();
@@ -697,7 +697,7 @@ static void* vnc_worker_thread( vlc_object_t *p_thread_obj )
 
     /* 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 )
     {
@@ -1154,7 +1154,7 @@ static subpicture_t *Filter( filter_t *p_filter, mtime_t date )
 
     /* 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;
index 6eab4f1c17fbf0a28c01b8f608edf507dcb0f181..a8ce70fcc42ec3522648c5bf69b69b6c4f8d6a9a 100644 (file)
@@ -34,7 +34,6 @@
 
 #include <vlc_common.h>
 #include <vlc_plugin.h>
-#include <vlc_vout.h>
 #include <vlc_filter.h>
 #include "filter_picture.h"
 
@@ -61,7 +60,7 @@ vlc_module_begin ()
 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.
index d41ea992d24206c30a487cb9f1416357b6fe003e..8a1d4342aacaea22845550781a48ee3e03c04c63 100644 (file)
@@ -33,7 +33,6 @@
 
 #include <vlc_common.h>
 #include <vlc_plugin.h>
-#include <vlc_vout.h>
 
 #include "vlc_filter.h"
 #include "filter_picture.h"
index 8eef177220630dd8bde0f8792924646dd62b459e..5c6e4c8192573b6b054c9598caa44855ae0244b2 100644 (file)
@@ -36,7 +36,6 @@
 
 #include <vlc_common.h>
 #include <vlc_plugin.h>
-#include <vlc_vout.h>
 
 #include "vlc_filter.h"
 #include "vlc_block.h"
@@ -272,7 +271,7 @@ static int CreateFilter( vlc_object_t *p_this )
     }
     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 );
@@ -282,7 +281,6 @@ static int CreateFilter( vlc_object_t *p_this )
         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" );
@@ -299,7 +297,7 @@ static int CreateFilter( vlc_object_t *p_this )
     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 );
@@ -311,7 +309,7 @@ static int CreateFilter( vlc_object_t *p_this )
 
     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 );
@@ -323,7 +321,7 @@ static int CreateFilter( vlc_object_t *p_this )
     {
         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 );
@@ -351,7 +349,7 @@ static void DestroyFilter( vlc_object_t *p_this )
 
     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 );
@@ -441,7 +439,7 @@ static subpicture_t *Filter( filter_t *p_filter, mtime_t date )
         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 )
@@ -530,7 +528,7 @@ static subpicture_t *Filter( filter_t *p_filter, mtime_t date )
         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 )
     {
@@ -540,7 +538,7 @@ static subpicture_t *Filter( filter_t *p_filter, mtime_t date )
 
         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 =
@@ -594,7 +592,7 @@ static picture_t *LoadImage( filter_t *p_filter, const char *psz_url )
     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 )
@@ -604,7 +602,7 @@ static picture_t *LoadImage( filter_t *p_filter, const char *psz_url )
     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
index 68ef70f3469d67506a9aa072c80ac18991656e7a..f595b49eaf5a619743ace7add87895174f9e04a9 100644 (file)
@@ -30,7 +30,6 @@
 
 #include <vlc_common.h>
 #include <vlc_plugin.h>
-#include <vlc_vout.h>
 #include "vlc_filter.h"
 
 /*****************************************************************************
@@ -68,9 +67,9 @@ static int OpenFilter( vlc_object_t *p_this )
     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;
     }
index 159bd180fca315d1f9889bf6db0b74c9fcd80b1a..e2c3da8b3a57dc8dd589b75e579f8b2b1a9947dc 100644 (file)
@@ -32,7 +32,6 @@
 
 #include <vlc_common.h>
 #include <vlc_plugin.h>
-#include <vlc_vout.h>
 #include "vlc_filter.h"
 
 /*****************************************************************************
@@ -69,12 +68,12 @@ static int OpenFilter( vlc_object_t *p_this )
     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;
@@ -131,8 +130,8 @@ static picture_t *Filter( filter_t *p_filter, picture_t *p_pic )
         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++ )
         {
index c28433a0a31a2e7d886eb6b7e0d68393fe76c298..604259cfb7dfd0395da1f4d5910744f374774216 100644 (file)
@@ -32,7 +32,6 @@
 
 #include <vlc_common.h>
 #include <vlc_plugin.h>
-#include <vlc_vout.h>
 #include <vlc_block.h>
 
 #include "vlc_filter.h"
index 135f21b49ceff5558de68c10a849d636c5f49dac..d7724b4730042d0307f6bd00ac90b91f34ee4345 100644 (file)
@@ -39,7 +39,6 @@
 
 #include <vlc_common.h>
 #include <vlc_plugin.h>
-#include <vlc_vout.h>
 
 #include "vlc_filter.h"
 #include "filter_picture.h"
index 61d0d8250423b10eac3fcce496c792a1420bb9b0..fee512755f2dfef8c2965bc4c45ccd1304146e02 100644 (file)
@@ -31,7 +31,6 @@
 
 #include <vlc_common.h>
 #include <vlc_plugin.h>
-#include <vlc_vout.h>
 #include <vlc_filter.h>
 
 #ifdef HAVE_LIBSWSCALE_SWSCALE_H
@@ -272,30 +271,30 @@ static int GetParameters( ScalerConfiguration *p_cfg,
 
     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;
@@ -379,8 +378,8 @@ static int Init( filter_t *p_filter )
     }
     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 )
     {
@@ -509,7 +508,7 @@ static void Convert( filter_t *p_filter, struct SwsContext *ctx,
     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 )
@@ -575,13 +574,13 @@ static picture_t *Filter( filter_t *p_filter, picture_t *p_pic )
     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 );
@@ -589,7 +588,7 @@ static picture_t *Filter( filter_t *p_filter, picture_t *p_pic )
     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 );
index 6afd21000c4d61aeab287062885c6ca3525f70f4..6356ca2485507c8181f9568a24a871996ee0366f 100644 (file)
@@ -30,7 +30,6 @@
 
 #include <vlc_common.h>
 #include <vlc_plugin.h>
-#include <vlc_vout.h>
 #include <vlc_filter.h>
 
 #include "libswscale_nokia770/arm_jit_swscale.h"
@@ -138,9 +137,8 @@ static int Init( filter_t *p_filter )
         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" );
@@ -188,7 +186,7 @@ static picture_t *Filter( filter_t *p_filter, picture_t *p_pic )
         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" );
index 0409cf1acb126d2dd18f6c027694f55e707e65c6..0ecd4500843c711351b4de52d7ca11016455c9c3 100644 (file)
@@ -145,12 +145,12 @@ static int Create( vlc_object_t *p_this )
     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;
 
index e51dfe580900333482adc97675a69b80a646518a..4a5227f509a0ad1c24facef19e7fa864f99934fd 100644 (file)
@@ -34,7 +34,6 @@
 
 #include <vlc_common.h>
 #include <vlc_plugin.h>
-#include <vlc_vout.h>
 
 #include "vlc_filter.h"
 #include "filter_picture.h"
@@ -62,7 +61,7 @@ vlc_module_begin ()
 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.
index 72c6fb8898a01522b0fa3d517944ab11accc06fd..5035c285b4eea30eb00b0f227dbd04c144c5fc8b 100644 (file)
@@ -30,7 +30,6 @@
 
 #include <vlc_common.h>
 #include <vlc_plugin.h>
-#include <vlc_vout.h>
 #include "vlc_filter.h"
 #include <assert.h>
 
@@ -65,9 +64,9 @@ static int Open( vlc_object_t *p_this )
 
     /* 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 )
     {
@@ -103,7 +102,7 @@ static picture_t *Filter( filter_t *p_filter, picture_t *p_pic )
     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 );
 
@@ -115,7 +114,7 @@ static picture_t *Filter( filter_t *p_filter, picture_t *p_pic )
         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++ )
         {
@@ -141,7 +140,7 @@ static picture_t *Filter( filter_t *p_filter, picture_t *p_pic )
     }
     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;
index 0e256851465e28b1d0f2f7c3c4fa5016bd95588c..a46998fb0259a8397ede28b656b068f7068205c0 100644 (file)
@@ -127,7 +127,7 @@ static int Init( vout_thread_t *p_vout )
 
     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
@@ -231,7 +231,7 @@ static void Render( vout_thread_t *p_vout, picture_t *p_pic )
 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 );
index 63e437f26379b75a97d17b34263c03502d217d0a..d044a3d5ea0aff0a9caac7bfaca1fcddac107233 100644 (file)
@@ -215,7 +215,7 @@ static int Init( vout_thread_t *p_vout )
 
     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;
index dce0dfadc2dfd38d4a4d11537d4880da87c8ed4d..77fa243a4adb2e8a3c7583f00a2a7b7dfbf1f689 100644 (file)
@@ -140,7 +140,7 @@ static int Init( vout_thread_t *p_vout )
             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:
@@ -152,7 +152,7 @@ static int Init( vout_thread_t *p_vout )
             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:
@@ -164,7 +164,7 @@ static int Init( vout_thread_t *p_vout )
             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:
@@ -176,7 +176,7 @@ static int Init( vout_thread_t *p_vout )
             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:
index 1796b70f7bf3dddb7b1d9e8451bcb793c0b7d22b..cd4486e09c0fdab60cc13249c565346b7826ddec 100644 (file)
@@ -225,12 +225,12 @@ static int Create( vlc_object_t *p_this )
     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
@@ -415,9 +415,13 @@ static int NewPicture( vout_thread_t *p_vout, picture_t *p_pic )
     }
 
     /* 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 )
@@ -487,15 +491,15 @@ static int Init( vout_thread_t *p_vout )
         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 );
index a5a0e6c39802ecdfc2f277d1679d33283394ab93..7f7c5d5464ffcb1645b2636081677e74d01f496f 100644 (file)
@@ -145,17 +145,17 @@ static int Init( vout_thread_t *p_vout )
     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 );
index fa6b2058a9d24b6d8a0263f55992af3e380dbcab..56392a3be049955d2d3f837a2c6af0cb3597d081 100644 (file)
@@ -171,7 +171,7 @@ static int Init( vout_thread_t *p_vout )
 
     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
@@ -181,15 +181,15 @@ static int Init( vout_thread_t *p_vout )
     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 );
@@ -257,9 +257,9 @@ static int NewPicture( vout_thread_t *p_vout, picture_t *p_pic )
     }
 
     /* 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 )
index 7ebcefcd8bdf140e3722074e005ce730ac597154..65ed9eee092041dd3c0d46c0661666cbb22d9e96 100644 (file)
@@ -188,7 +188,7 @@ static int Init( vout_thread_t *p_vout )
 
     /* 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) )
index 6435154de92ad388439666af3a9666aa4794bc28..85d2f166670b8c7d2b17f0f874e0c2a0b87f9eac 100644 (file)
@@ -202,71 +202,21 @@ static int OpenVideo( vlc_object_t *p_this )
     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;
 }
 
 /*****************************************************************************
@@ -280,47 +230,9 @@ static void CloseVideo( vlc_object_t *p_this )
 
     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;
@@ -883,17 +795,15 @@ static D3DFORMAT Direct3DVoutFindFormat(vout_thread_t *p_vout, int i_chroma, D3D
     /* 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
@@ -902,8 +812,7 @@ static D3DFORMAT Direct3DVoutFindFormat(vout_thread_t *p_vout, int i_chroma, D3D
                     { 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 };
@@ -914,25 +823,25 @@ static D3DFORMAT Direct3DVoutFindFormat(vout_thread_t *p_vout, int i_chroma, D3D
 
     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 };
@@ -980,32 +889,32 @@ static int Direct3DVoutSetOutputFormat(vout_thread_t *p_vout, D3DFORMAT format)
     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;
@@ -1078,7 +987,7 @@ static int Direct3DVoutCreatePictures( vout_thread_t *p_vout, size_t i_num_pics
          * 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;
@@ -1086,8 +995,8 @@ static int Direct3DVoutCreatePictures( vout_thread_t *p_vout, size_t i_num_pics
                     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;
@@ -1095,7 +1004,7 @@ static int Direct3DVoutCreatePictures( vout_thread_t *p_vout, size_t i_num_pics
                     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;
@@ -1103,7 +1012,7 @@ static int Direct3DVoutCreatePictures( vout_thread_t *p_vout, size_t i_num_pics
                     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;
@@ -1111,8 +1020,8 @@ static int Direct3DVoutCreatePictures( vout_thread_t *p_vout, size_t i_num_pics
                     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;
index 3d2ba7cec15cbee6c65abbf3cc5da11324735fc9..9494de9178f99f662b14639234745828c774f7dc 100644 (file)
@@ -266,39 +266,8 @@ static int OpenVideo( vlc_object_t *p_this )
     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 ) )
@@ -326,28 +295,7 @@ static int OpenVideo( vlc_object_t *p_this )
     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;
 
@@ -407,20 +355,17 @@ static int Init( vout_thread_t *p_vout )
     /* 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;
     }
 
@@ -431,15 +376,15 @@ static int Init( vout_thread_t *p_vout )
     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 );
         }
     }
@@ -485,50 +430,12 @@ static void CloseVideo( vlc_object_t *p_this )
 {
     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;
@@ -1196,11 +1103,11 @@ static int DirectXCreateSurface( vout_thread_t *p_vout,
     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);
@@ -1551,20 +1458,20 @@ static int NewPictureVec( vout_thread_t *p_vout, picture_t *p_pic,
                 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" );
@@ -1678,28 +1585,28 @@ static int UpdatePictureStruct( vout_thread_t *p_vout, picture_t *p_pic,
 {
     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:
@@ -1710,12 +1617,11 @@ static int UpdatePictureStruct( vout_thread_t *p_vout, picture_t *p_pic,
             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;
@@ -1746,7 +1652,7 @@ static int UpdatePictureStruct( vout_thread_t *p_vout, picture_t *p_pic,
             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;
@@ -1777,8 +1683,8 @@ static int UpdatePictureStruct( vout_thread_t *p_vout, picture_t *p_pic,
             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;
index a35bdee45c66803412be17bb1d508e6cd4e17f31..9dac1f4326c5a7e09bfb471e90fd61b47485af15 100644 (file)
@@ -1211,3 +1211,116 @@ void Win32ToggleFullscreen( vout_thread_t *p_vout )
     /* 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 );
+}
index 4f1d81e7a90b72c35a0ab7346f226417c09fa495..38a7b19b20374c2ef77902f4be8b753083aea527 100644 (file)
@@ -121,49 +121,19 @@ static int OpenVideo( vlc_object_t *p_this )
     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;
 }
 
 /*****************************************************************************
@@ -221,33 +191,7 @@ static void CloseVideo( vlc_object_t *p_this )
 {
     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;
index b2b1f82bf9ec9fc0537c11d57bdc13f5ac0a70b7..9fbca15002a99d3fd4d36a1b6f13911e86ca4e10 100644 (file)
@@ -256,6 +256,10 @@ int DirectDrawUpdateOverlay( vout_thread_t *p_vout );
 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
index c725d66110c1df8ade309c3318d8ae6a7fc638d8..5db738e522c298b05b1485aacca757e643ccde47 100644 (file)
@@ -231,73 +231,23 @@ static int OpenVideo ( vlc_object_t *p_this )
     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;
+    }
 }
 
 /*****************************************************************************
@@ -307,47 +257,10 @@ static void CloseVideo ( vlc_object_t *p_this )
 {
     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
@@ -379,29 +292,29 @@ static int Init( vout_thread_t *p_vout )
     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;
index 95c2eaf2e604bbce6605bae621bab2979a0d1344..9d895645f4ed29dcd70aa07d669e5d480a0e2f36 100644 (file)
@@ -185,9 +185,8 @@ static int Create( vlc_object_t *p_this )
     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 */
@@ -308,7 +307,7 @@ static int Init( vout_thread_t *p_vout )
     }
 
     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
index ecacbeb48b45134afc1b450791a37d3a2c57c7cc..2cff793f71e372aa93614dd9a67deaa5e7711382 100644 (file)
@@ -252,16 +252,16 @@ static int Init( vout_thread_t *p_vout )
 
 /* 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;
@@ -273,7 +273,7 @@ static int Init( vout_thread_t *p_vout )
 #       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;
@@ -286,7 +286,7 @@ static int Init( vout_thread_t *p_vout )
     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;
index fe7518f052d7d132e1cf74caac9145d42720d036..fe5717c03b1ca7f28eb467bb5e1d3a90433697b6 100644 (file)
@@ -170,10 +170,10 @@ static int Init( vout_thread_t *p_vout )
     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
 
index 1c310bc5a494d4e9dda8f25928c0d955bc8680a0..f91acd7b3eeeda38734d48da33ceae98d7012b00 100644 (file)
@@ -218,7 +218,7 @@ static int Init( vout_thread_t *p_vout )
 
     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;
index ac19b285905b9388cf81d8177d4b978912e1bfe7..e3f4a9264390390ae3b0e834f8782f9d91258962 100644 (file)
@@ -753,7 +753,7 @@ static int OpenDisplay( vout_thread_t *p_vout )
     /* 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" );
 
@@ -796,9 +796,9 @@ static int OpenDisplay( vout_thread_t *p_vout )
 
     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
@@ -816,26 +816,22 @@ static int OpenDisplay( vout_thread_t *p_vout )
             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;
             }
@@ -853,7 +849,7 @@ static int OpenDisplay( vout_thread_t *p_vout )
         /* 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 );
@@ -861,7 +857,7 @@ static int OpenDisplay( vout_thread_t *p_vout )
 
         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 );
@@ -869,7 +865,7 @@ static int OpenDisplay( vout_thread_t *p_vout )
 
         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 );
@@ -888,20 +884,20 @@ static int OpenDisplay( vout_thread_t *p_vout )
         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",
index 2fc7c2af8f89885436fb48481c887723fef1b57a..411f1e56150ea038d79d906bc23c71ea39c16b2f 100644 (file)
@@ -154,7 +154,7 @@ static int Init( vout_thread_t *p_vout )
     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;
@@ -174,9 +174,13 @@ static int Init( vout_thread_t *p_vout )
                                psz_chroma[2], psz_chroma[3] );
         free( psz_chroma );
     }
-    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;
     }
 
@@ -194,25 +198,25 @@ static int Init( vout_thread_t *p_vout )
     /* 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;
index ae99b3452922115ed140c74a8ddae8aea6412f4e..fbe3fda6235f0d737943f5b9545722067ae9f8cb 100644 (file)
@@ -155,7 +155,7 @@ static int Init( vout_thread_t *p_vout )
 
     /* 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();
index f132021a2d8e5ef690a9d37753e8bfbafc0b080e..57e05303e5c39c35cc1954f9fc5d846b9a269571 100644 (file)
@@ -133,28 +133,26 @@ static int Init( vout_thread_t *p_vout )
     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;
     }
 
@@ -189,25 +187,25 @@ static int Init( vout_thread_t *p_vout )
     /* 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;
@@ -233,9 +231,13 @@ static int Init( vout_thread_t *p_vout )
         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;
 
index 9cd132c91c71b4c8178b8ea1b02ee602c42928f0..939ab8734d5cce99b777303d940f2a4b9d66ae52 100644 (file)
@@ -286,7 +286,7 @@ int Activate ( vlc_object_t *p_this )
             }
         }
     }
-    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;
@@ -812,7 +812,7 @@ static int InitVideo( vout_thread_t *p_vout )
 #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;
@@ -823,7 +823,7 @@ static int InitVideo( vout_thread_t *p_vout )
             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;
@@ -843,14 +843,14 @@ static int InitVideo( vout_thread_t *p_vout )
     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 );
@@ -926,12 +926,12 @@ static int InitVideo( vout_thread_t *p_vout )
         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;
@@ -1612,6 +1612,8 @@ static int CreateWindow( vout_thread_t *p_vout, x11_window_t *p_win )
     {
         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;
@@ -1622,6 +1624,30 @@ static int CreateWindow( vout_thread_t *p_vout, x11_window_t *p_win )
             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
     {
@@ -1632,10 +1658,7 @@ static int CreateWindow( vout_thread_t *p_vout, x11_window_t *p_win )
             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. */
@@ -1669,66 +1692,6 @@ static int CreateWindow( vout_thread_t *p_vout, x11_window_t *p_win )
                         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 */
@@ -1903,9 +1866,10 @@ static int NewPicture( vout_thread_t *p_vout, picture_t *p_pic )
 #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 )
@@ -1959,15 +1923,15 @@ static int NewPicture( vout_thread_t *p_vout, picture_t *p_pic )
     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++ )
@@ -1977,7 +1941,7 @@ static int NewPicture( vout_thread_t *p_vout, picture_t *p_pic )
                 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 */
@@ -1990,11 +1954,11 @@ static int NewPicture( vout_thread_t *p_vout, picture_t *p_pic )
             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;
@@ -2003,7 +1967,7 @@ static int NewPicture( vout_thread_t *p_vout, picture_t *p_pic )
             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;
index 659ce37c12e569666895b117fe6a59196801112c..455b31179379b5bb5208b830b14726cb7ae4d31b 100644 (file)
@@ -152,26 +152,26 @@ static int Open (vlc_object_t *obj)
         {
           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;
@@ -206,7 +206,7 @@ static int Open (vlc_object_t *obj)
                 if (!gray)
                     continue; /* Prefer color over gray scale */
                 vid = vt->visual_id;
-                chroma = VLC_FOURCC ('G', 'R', 'E', 'Y');
+                chroma = VLC_CODEC_GREY;
             }
         }
 
@@ -350,9 +350,9 @@ static int Init (vout_thread_t *vout)
         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;
index 5b32ad14197c341ff459c191970cab1f6656f132..38d8862d66c6c8d858af941ad737b5fef4d3d98c 100644 (file)
@@ -254,21 +254,21 @@ static vlc_fourcc_t ParseFormat (vout_thread_t *vout,
             {
               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;
@@ -293,15 +293,15 @@ static vlc_fourcc_t ParseFormat (vout_thread_t *vout,
             {
               /*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;
             }
@@ -313,9 +313,9 @@ static vlc_fourcc_t ParseFormat (vout_thread_t *vout,
                 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;
@@ -345,7 +345,11 @@ FindFormat (vout_thread_t *vout, vlc_fourcc_t chroma, xcb_xv_port_t port,
     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++)
     {
@@ -406,9 +410,9 @@ static int Init (vout_thread_t *vout)
         /* 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++)
         {
@@ -461,9 +465,9 @@ found_adaptor:
         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;
index cd73fb8645b595e3db0945e9f215b3decb07fd34..35542ebfa99295816f8851c23fe5898eb9d1f81f 100644 (file)
@@ -121,7 +121,7 @@ static int Create( vlc_object_t *p_this )
     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" );
@@ -134,21 +134,19 @@ static int Create( vlc_object_t *p_this )
     }
 
     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,
index 285ae50995c6af3acc9da9ebe776e751d0b90d05..5f7dfdae4e8ad6f635696be3ceefae97bd979208 100644 (file)
@@ -79,8 +79,8 @@ static int Open( vlc_object_t *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;
@@ -210,9 +210,8 @@ static void* Thread( vlc_object_t *p_this )
     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;
index 0dce4b7a6f13a259360903b1880a46ce89725d05..08b1d6c0a65d2d5461a5cace957774b84fac1df4 100644 (file)
@@ -137,13 +137,13 @@ static int Open( vlc_object_t *p_this )
     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;
@@ -167,7 +167,7 @@ static int Open( vlc_object_t *p_this )
 
     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;
 
index 4702a98952887c0af7f62e4def63e3b448edde63..c26d3b2612ddf888e934c20181b24573f1769452 100644 (file)
@@ -193,8 +193,8 @@ static int Open( vlc_object_t *p_this )
     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;
     }
@@ -303,7 +303,7 @@ static int Open( vlc_object_t *p_this )
 
     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;
 
index aa339ca025a4a3380c97b84f11f13809241192ef..41e5cba533fc8ce35349077fc8e8715787ff96da 100644 (file)
@@ -1,28 +1,30 @@
 == ACTIVEX Control for VLC ==
 
-The VLC ActiveX Control has been primary designed to work with Internet Explorer.
-however it may also work with Visual Basic and/or .NET
-Please note, that this code does not rely upon Microsoft MFC/ATL code,
-hence good compatibility is not guaranteed. 
+The VLC ActiveX Control has been primary designed to work with Internet
+Explorer. However it may also work with Visual Basic and/or .NET. Please
+note, that this code does not rely upon Microsoft MFC/ATL code, hence
+good compatibility is not guaranteed.
 
 I. Compiling
 
-The ActiveX Control should compile without any glitches as long as you have the latest
-version of mingw gcc and headers. However, In order to script the ActiveX Control
-on Internet Explorer, a type library is required.
+The ActiveX Control should compile without any glitches as long as you
+have the latest version of mingw gcc and headers.
 
-This type library is usually generated from an IDL file using Microsoft MIDL compiler.
-Therefore, for convenience I have checked in the output of the MIDL compiler in the
-repository so that you will only need the MIDL compiler if you change axvlc.idl.
-the generated files are as follow:
+In order to script the ActiveX Control on Internet Explorer, a type
+library is required. This type library is usually generated from an IDL
+file using Microsoft MIDL compiler. Therefore, for convenience I have
+checked in the output of the MIDL compiler in the repository so that you
+will only need the MIDL compiler if you change axvlc.idl. the generated
+files are as follow:
 
 axvlc_idl.c
 axvlc_idl.h
 axvlc.tlb
 
-To use the MIDL compiler on cygwin, you will need to set some environment variables
-before configuring vlc. If you have a copy of 'Microsoft Visual C++ 6.0' installed,
-the following settings are correct:
+To use the MIDL compiler on cygwin, you will need to set some
+environment variables before configuring vlc. If you have a copy of
+'Microsoft Visual C++ 6.0' installed, the following settings are
+correct:
 
 export PATH=$PATH:"/cygdrive/c/Program Files/Microsoft Visual Studio/COMMON/MSDev98/Bin":"/cygdrive/c/Program Files/Microsoft Visual Studio/VC98/Bin"
 export INCLUDE='C:\Program Files\Microsoft Visual Studio\VC98\Include'
@@ -35,73 +37,83 @@ the comand line to compile IDL should looks like the following :
 widl -I/usr/include/wine/windows/ \
      -h -H axvlc_idl.h -t -T axvlc.tlb -u -U axvlc_idl.c \
      axvlc.idl
-NOTE: widl breaks compatibility with Visual Basic. If that is important to you then use midl.
+
+NOTE: widl breaks compatibility with Visual Basic. If that is important
+to you then you must use midl.
 
 II. Debugging
 
-the ActiveX control is compiled with verbose output by default. However you will
-need to launch Internet Explorer from a Cygwin shell to see the output.
-Alternatively, the plugin will also use the VLC preferences, hence if you enable
-the file logging interface through the player and save the preferences, the
-control will automatically log its verbose output into the designated file.
-
-Debugging the ActiveX control DLL with GNU GDB can be difficult. Fortunately,
-the ActiveX control can also be compiled as an executable rather than a DLL.
-In ActiveX terms, this is called a local server.
-The advantage of a local server is that it will never crash its client,
-i.e Internet Explorer, if itself is crashing.
-The build system does not currently allow to create an executable version of
-the ActiveX control, you will need to manually define the BUILD_LOCALSERVER
-pre-processor variable and modify the Makefile to exclude the '-shared' option
-at the linking stage. Once this is done, you just need to launch axvlc.exe to
-have a working Activex control. Please note, that executable version of the
-ActiveX control will override any settings required for the DLL version, which
-will no longer work until you (re)register it as shown in the following section
+The ActiveX control is compiled with verbose output by default, but you
+will need to launch Internet Explorer from a Cygwin shell to see the
+output. Alternatively, the plugin will also use the VLC preferences, so
+if you enable the file logging interface through the player and save the
+preferences, the control will automatically log its verbose output into
+the designated file.
+
+Debugging the ActiveX control DLL with GNU GDB can be difficult.
+Fortunately the ActiveX control can also be compiled as an executable
+rather than a DLL. In ActiveX terms, this is called a local server. The
+advantage of a local server is that it will never crash its client,
+i.e. Internet Explorer, even if the local server crashes. The build
+system does not currently allow to create an executable version of the
+ActiveX control, you will need to manually define the BUILD_LOCALSERVER
+pre-processor variable and modify the Makefile to exclude the '-shared'
+option at the linking stage. Once this is done, launch axvlc.exe to have
+a working Activex control. Please note, that executable version of the
+ActiveX control will override any settings required for the DLL version,
+which will no longer work until you (re)register it as shown in the
+following section
 
 III. Local Install
 
-The VLC NSIS installer will install the ActiveX Control without requiring any
-further manual intervention, but for people who like to live on the edge, here
-are the steps you need to perform once you have built the ActiveX Control.
+The VLC NSIS installer will install the ActiveX Control without
+requiring any further manual intervention, but for people who like to
+live on the edge, here are the steps you need to perform once you have
+built the ActiveX Control.
 
-The ActiveX control DLL file may be copied anywhere on the target machine,
-but before you can use the control, you will need to register it with Windows
-by using the REGSVR32 command, as per following example:
+The ActiveX control DLL file may be copied anywhere on the target
+machine, but before you can use the control, you will need to register
+it with Windows by using the REGSVR32 command, as per following example:
 
 REGSVR32 C:\WINDOWS\AXVLC.DLL
 
-If the control needs to use external VLC plugins (i.e other than built-in ones),
-make sure that the plugin path is set in the registry as per following example:
+If the control needs to use external VLC plugins (i.e other than the
+built-in ones), make sure that the plugin path is set in the registry as
+per following example:
 
 [HKEY_LOCAL_MACHINE\Software\VideoLAN\VLC]
 InstallDir="C:\Program Files\VideoLAN\VLC"
 
 The InstallDir must be the parent directory of the 'plugins' directory.
 
-WARNING: Both control and plugins must come from the same build source tree.
-Otherwise, at best, the control will not play any content, at worse
-it may crash Internet Explorer while attempting to load incompatible plugins.
+WARNING: Both control and plugins must come from the same source build
+tree. Otherwise, at best, the control will not play any content,
+at worse it may crash Internet Explorer while attempting to load
+incompatible plugins.
 
 IV. Internet Install
 
-The activex control may be installed from a remote through Internet Installer if
-it is packaged up in a CAB file. The following link explains how to achieve this
+The activex control may be installed from a remote through Internet
+Installer if it is packaged up in a CAB file. The following link
+explains how to achieve this
 
 http://msdn.microsoft.com/workshop/components/activex/packaging.asp
 
-For convenience, I have provided a sample axvlc.INF file, which assumes that the VLC
-NSIS Installer has been packaged up a CAB file called AXVLC.CAB.
+For convenience, I have provided a sample axvlc.INF file, which assumes
+that the VLC NSIS Installer has been packaged up a CAB file called
+AXVLC.CAB.
 
-The ActiveX Control DLL file can also be distributed by itself if it has been
-compiled with built-in VLC plugins; check developer information for more
-information on built-in plugins.
+The ActiveX Control DLL file can also be distributed by itself if it has
+been compiled with built-in VLC plugins; check developer information for
+more information on built-in plugins.
 
 V. Controlling the plugin
 
 1) Properties
 
-the following public properties can be used to control the plugin from HTML,
-the property panel of Visual Basic and most ActiveX aware applications.
+The following public properties can be used to control the plugin
+from HTML, the property panel of Visual Basic and most ActiveX aware
+applications.
 
 +==========+=========+===================================+===============+
 | Name:    | Type:   |   Description:                    | Alias:        |
@@ -121,16 +133,16 @@ the property panel of Visual Basic and most ActiveX aware applications.
 | toolbar  | boolean | set/get visibility of the toolbar |               |
 +----------+---------+-----------------------------------+---------------+
 
-the alias column allows to specify an alternative <PARAM name> for the
-property in internet explorer, which is useful to maintain compatibility
-with HTML pages already leveraging Windows Media Player
+The alias column shows an alternative <PARAM name> for the property in
+internet explorer, which is useful to maintain compatibility with HTML
+pages already leveraging Windows Media Player
 
 2) Programming APIs
 
-the MRL, Autoplay and Autoloop properties are only used to configure the initial
-state of the ActiveX control,i.e before its activation; they are ignored afterward.
-Therefore, if some runtime control is required, the following APIs should be used
-within your programming environment:
+The MRL, Autoplay and Autoloop properties are only used to configure the
+initial state of the ActiveX control,i.e before its activation; they are
+ignored afterward. Therefore, if some runtime control is required, the
+following APIs should be used within your programming environment:
 
 Variables:
 
@@ -161,8 +173,8 @@ Methods:
 UUID : 9BE31822-FDAD-461B-AD51-BE1D1C159921
 defined in axvlc.idl as "coclass VLCPlugin2", "interface IVLCControl2"
 
-This interface organize API with several object (like .audio.mute)
-It is currently documented on videolan wiki (may change) at
+This interface organizes an API with several objects (like .audio.mute).
+It is currently documented on videolan wiki (the url may change) at
 http://wiki.videolan.org/Documentation:Play_HowTo/Advanced_Use_of_VLC
 
 
@@ -196,10 +208,13 @@ playSlower()
 toggleMute()
     mute/unmute sound output
 
-addTarget(MRL As String, Options as array of strings, Mode as enumeration, Position as integer)
-    Add MRL into the default playlist, you can also specify a list of playlist Options to attach
-    to this MRL or Null for no options. mode indicates the action taken by the playlist on MRL
-    which is one the following:
+addTarget(MRL As String, Options as array of strings,
+          Mode as enumeration, Position as integer)
+    Add an MRL into the default playlist, you can also specify a list
+    of playlist options to attach to this MRL or Null for no options.
+    Mode indicates the action taken by the playlist on MRL and is one
+    the following:
+
         VLCPlayListInsert       =  1 (Insert MRL into playlist at Position)
         VLCPlayListInsertAndGo  =  9 (Insert MRL into playlist at Position and play it immediately)
         VLCPlayListReplace      =  2 (Replace MRL in playlist at Position)
@@ -207,13 +222,15 @@ addTarget(MRL As String, Options as array of strings, Mode as enumeration, Posit
         VLCPlayListAppend       =  4 (Append MRL in playlist after Position)
         VLCPlayListAppendAndGo  = 12 (Append MRL in playlist after Position and play it immediately)
         VLCPlayListCheckInsert  = 16 (Verify if MRL is in playlist) 
-    Position can take the value of -666 as wildcard for the last element in playlist
+
+    Position can take the value of -666 as wildcard for the last element
+    in the playlist.
 
 
 setVariable(Name as string, Value as object);
     Set a value into a VLC variables
 
-getVariable( Name as string) as object
+getVariable(Name as string) as object
     Retrieve the value of a VLC variable.
 
 Regards,
index ad8f1787093a00cb6f1eda121aa25074044e476a..e784096f1f5c905103e98f0eb394df30cc7e97cf 100644 (file)
@@ -15,9 +15,9 @@
  * 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 "plugin.h"
 
 using namespace std;
 
-////////////////////////////////////////////////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////////////////////
 
 static const FORMATETC _metaFileFormatEtc =
-    {
-        CF_METAFILEPICT,
-        NULL,
-        DVASPECT_CONTENT,
-        -1,
-        TYMED_MFPICT,
-    };
+{
+    CF_METAFILEPICT,
+    NULL,
+    DVASPECT_CONTENT,
+    -1,
+    TYMED_MFPICT,
+};
 static const FORMATETC _enhMetaFileFormatEtc =
-    {
-        CF_ENHMETAFILE,
-        NULL,
-        DVASPECT_CONTENT,
-        -1,
-        TYMED_ENHMF,
-    };
+{
+    CF_ENHMETAFILE,
+    NULL,
+    DVASPECT_CONTENT,
+    -1,
+    TYMED_ENHMF,
+};
 
 class VLCEnumFORMATETC : public VLCEnumIterator<IID_IEnumFORMATETC,
     IEnumFORMATETC,
@@ -60,7 +60,7 @@ public:
     {};
 };
 
-////////////////////////////////////////////////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////////////////////
 
 VLCDataObject::VLCDataObject(VLCPlugin *p_instance) : _p_instance(p_instance)
 {
@@ -74,9 +74,10 @@ VLCDataObject::~VLCDataObject()
     _p_adviseHolder->Release();
 };
 
-////////////////////////////////////////////////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////////////////////
 
-STDMETHODIMP VLCDataObject::DAdvise(LPFORMATETC pFormatEtc, DWORD padvf, LPADVISESINK pAdviseSink, LPDWORD pdwConnection)
+STDMETHODIMP VLCDataObject::DAdvise(LPFORMATETC pFormatEtc, DWORD padvf,
+                              LPADVISESINK pAdviseSink, LPDWORD pdwConnection)
 {
     return _p_adviseHolder->Advise(this,
             pFormatEtc, padvf,pAdviseSink, pdwConnection);
@@ -92,17 +93,19 @@ STDMETHODIMP VLCDataObject::EnumDAdvise(IEnumSTATDATA **ppenumAdvise)
     return _p_adviseHolder->EnumAdvise(ppenumAdvise);
 };
 
-STDMETHODIMP VLCDataObject::EnumFormatEtc(DWORD dwDirection, IEnumFORMATETC **ppEnum)
+STDMETHODIMP VLCDataObject::EnumFormatEtc(DWORD dwDirection,
+                                          IEnumFORMATETC **ppEnum)
 {
     if( NULL == ppEnum )
         return E_POINTER;
 
-    *ppEnum = dynamic_cast<IEnumFORMATETC *>(new VLCEnumFORMATETC(_v_formatEtc));
+    *ppEnum = new VLCEnumFORMATETC(_v_formatEtc);
 
     return (NULL != *ppEnum ) ? S_OK : E_OUTOFMEMORY;
 };
 
-STDMETHODIMP VLCDataObject::GetCanonicalFormatEtc(LPFORMATETC pFormatEtcIn, LPFORMATETC pFormatEtcOut)
+STDMETHODIMP VLCDataObject::GetCanonicalFormatEtc(LPFORMATETC pFormatEtcIn,
+                                                  LPFORMATETC pFormatEtcOut)
 {
     HRESULT result = QueryGetData(pFormatEtcIn);
     if( FAILED(result) )
@@ -146,7 +149,8 @@ STDMETHODIMP VLCDataObject::GetData(LPFORMATETC pFormatEtc, LPSTGMEDIUM pMedium)
     return result;
 };
 
-STDMETHODIMP VLCDataObject::GetDataHere(LPFORMATETC pFormatEtc, LPSTGMEDIUM pMedium)
+STDMETHODIMP VLCDataObject::GetDataHere(LPFORMATETC pFormatEtc,
+                                        LPSTGMEDIUM pMedium)
 {
     if( NULL == pMedium )
         return E_POINTER;
@@ -154,9 +158,10 @@ STDMETHODIMP VLCDataObject::GetDataHere(LPFORMATETC pFormatEtc, LPSTGMEDIUM pMed
     return E_NOTIMPL;
 }
 
-////////////////////////////////////////////////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////////////////////
 
-HRESULT VLCDataObject::getMetaFileData(LPFORMATETC pFormatEtc, LPSTGMEDIUM pMedium)
+HRESULT VLCDataObject::getMetaFileData(LPFORMATETC pFormatEtc,
+                                       LPSTGMEDIUM pMedium)
 {
     HDC hicTargetDev = CreateDevDC(pFormatEtc->ptd);
     if( NULL == hicTargetDev )
@@ -165,7 +170,8 @@ HRESULT VLCDataObject::getMetaFileData(LPFORMATETC pFormatEtc, LPSTGMEDIUM pMedi
     HDC hdcMeta = CreateMetaFile(NULL);
     if( NULL != hdcMeta )
     {
-        LPMETAFILEPICT pMetaFilePict = (LPMETAFILEPICT)CoTaskMemAlloc(sizeof(METAFILEPICT));
+        LPMETAFILEPICT pMetaFilePict =
+                         (LPMETAFILEPICT)CoTaskMemAlloc(sizeof(METAFILEPICT));
         if( NULL != pMetaFilePict )
         {
             SIZEL size = _p_instance->getExtent();
@@ -182,7 +188,8 @@ HRESULT VLCDataObject::getMetaFileData(LPFORMATETC pFormatEtc, LPSTGMEDIUM pMedi
 
             RECTL bounds = { 0L, 0L, size.cx, size.cy };
 
-            _p_instance->onDraw(pFormatEtc->ptd, hicTargetDev, hdcMeta, &bounds, &wBounds);
+            _p_instance->onDraw(pFormatEtc->ptd, hicTargetDev, hdcMeta,
+                                &bounds, &wBounds);
             pMetaFilePict->hMF = CloseMetaFile(hdcMeta);
             if( NULL != pMetaFilePict->hMF )
                 pMedium->hMetaFilePict = pMetaFilePict;
@@ -194,7 +201,8 @@ HRESULT VLCDataObject::getMetaFileData(LPFORMATETC pFormatEtc, LPSTGMEDIUM pMedi
     return (NULL != pMedium->hMetaFilePict) ? S_OK : E_FAIL;
 };
 
-HRESULT VLCDataObject::getEnhMetaFileData(LPFORMATETC pFormatEtc, LPSTGMEDIUM pMedium)
+HRESULT VLCDataObject::getEnhMetaFileData(LPFORMATETC pFormatEtc,
+                                          LPSTGMEDIUM pMedium)
 {
     HDC hicTargetDev = CreateDevDC(pFormatEtc->ptd);
     if( NULL == hicTargetDev )
@@ -211,7 +219,8 @@ HRESULT VLCDataObject::getEnhMetaFileData(LPFORMATETC pFormatEtc, LPSTGMEDIUM pM
 
         RECTL bounds = { 0L, 0L, size.cx, size.cy };
 
-        _p_instance->onDraw(pFormatEtc->ptd, hicTargetDev, hdcMeta, &bounds, &wBounds);
+        _p_instance->onDraw(pFormatEtc->ptd, hicTargetDev,
+                            hdcMeta, &bounds, &wBounds);
         pMedium->hEnhMetaFile = CloseEnhMetaFile(hdcMeta);
     }
     DeleteDC(hicTargetDev);
@@ -250,7 +259,8 @@ STDMETHODIMP VLCDataObject::QueryGetData(LPFORMATETC pFormatEtc)
     return S_OK;
 };
 
-STDMETHODIMP VLCDataObject::SetData(LPFORMATETC pFormatEtc, LPSTGMEDIUM pMedium, BOOL fRelease)
+STDMETHODIMP VLCDataObject::SetData(LPFORMATETC pFormatEtc,
+                                    LPSTGMEDIUM pMedium, BOOL fRelease)
 {
     return E_NOTIMPL;
 };
index 1451f43598ef32e8781e20821766e0a86657101c..0d63f57affb9367a69aead04ee9d627f3e844ed8 100644 (file)
@@ -725,16 +725,6 @@ HRESULT VLCPlugin::onActivateInPlace(LPMSG lpMesg, HWND hwndParent, LPCRECT lprc
         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);
@@ -995,13 +985,6 @@ void VLCPlugin::onPositionChange(LPCRECT lprcPosRect, LPCRECT lprcClipRect)
     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)
@@ -1103,5 +1086,3 @@ int  VLCPlugin::playlist_add_extended_untrusted(const char *mrl, int optc, const
 
     return item;
 }
-
-
index b96ea8fc4b49f06d91d1f97bcdaa2f3fc16e50ca..9c469db3aefcec57f94896730ecc04863d2a5156 100644 (file)
@@ -111,37 +111,25 @@ HRESULT GetObjectProperty(LPUNKNOWN object, DISPID dispID, VARIANT& v)
 
 HDC CreateDevDC(DVTARGETDEVICE *ptd)
 {
-    HDC hdc=NULL;
+    HDC hdc;
     if( NULL == ptd )
     {
         hdc = CreateDC(TEXT("DISPLAY"), NULL, NULL, NULL);
     }
     else
     {
-        LPDEVNAMES lpDevNames;
-        LPDEVMODE lpDevMode;
-        LPTSTR lpszDriverName;
-        LPTSTR lpszDeviceName;
-        LPTSTR lpszPortName;
+        LPDEVNAMES lpDevNames = (LPDEVNAMES) ptd; // offset for size field
+        LPDEVMODE  lpDevMode  = NULL;
 
-        lpDevNames = (LPDEVNAMES) ptd; // offset for size field
-
-        if (ptd->tdExtDevmodeOffset == 0)
-        {
-            lpDevMode = NULL;
-        }
-        else
-        {
+        if (ptd->tdExtDevmodeOffset != 0)
             lpDevMode  = (LPDEVMODE) ((LPTSTR)ptd + ptd->tdExtDevmodeOffset);
-        }
-
-        lpszDriverName = (LPTSTR) lpDevNames + ptd->tdDriverNameOffset;
-        lpszDeviceName = (LPTSTR) lpDevNames + ptd->tdDeviceNameOffset;
-        lpszPortName   = (LPTSTR) lpDevNames + ptd->tdPortNameOffset;
 
-        hdc = CreateDC(lpszDriverName, lpszDeviceName, lpszPortName, lpDevMode);
+        hdc = CreateDC( (LPTSTR) lpDevNames + ptd->tdDriverNameOffset,
+                        (LPTSTR) lpDevNames + ptd->tdDeviceNameOffset,
+                        (LPTSTR) lpDevNames + ptd->tdPortNameOffset,
+                        lpDevMode );
     }
-        return hdc;
+    return hdc;
 };
 
 #define HIMETRIC_PER_INCH 2540
index eac9956f91a4bb3e73cdfda1ce928643b6c76fe2..266b46ce949b91002e4b40dcae37ed591f0b9552 100644 (file)
@@ -16,9 +16,9 @@
  * 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 "plugin.h"
@@ -128,15 +128,10 @@ STDMETHODIMP VLCControl::play(void)
     libvlc_exception_init(&ex);
 
     _p_instance->playlist_play(&ex);
-    if( libvlc_exception_raised(&ex) )
-    {
-        _p_instance->setErrorInfo(IID_IVLCControl,
-            libvlc_exception_get_message(&ex));
-        libvlc_exception_clear(&ex);
-        return E_FAIL;
-    }
-    _p_instance->fireOnPlayEvent();
-    return NOERROR;
+    HRESULT result = exception_bridge(&ex);
+    if( SUCCEEDED(result) )
+        _p_instance->fireOnPlayEvent();
+    return result;
 };
 
 STDMETHODIMP VLCControl::pause(void)
@@ -149,15 +144,9 @@ STDMETHODIMP VLCControl::pause(void)
         libvlc_exception_init(&ex);
 
         libvlc_media_player_pause(p_md, &ex);
-        if( libvlc_exception_raised(&ex) )
-        {
-            _p_instance->setErrorInfo(IID_IVLCControl,
-                libvlc_exception_get_message(&ex));
-            libvlc_exception_clear(&ex);
-            return E_FAIL;
-        }
-        _p_instance->fireOnPauseEvent();
-        return NOERROR;
+        result = exception_bridge(&ex);
+        if( SUCCEEDED(result) )
+            _p_instance->fireOnPauseEvent();
     }
     return result;
 };
@@ -172,16 +161,10 @@ STDMETHODIMP VLCControl::stop(void)
         libvlc_exception_init(&ex);
 
         libvlc_media_player_stop(p_md, &ex);
-        if( libvlc_exception_raised(&ex) )
-        {
-            _p_instance->setErrorInfo(IID_IVLCControl,
-                libvlc_exception_get_message(&ex));
-            libvlc_exception_clear(&ex);
-            return E_FAIL;
-        }
-        return NOERROR;
+        result = exception_bridge(&ex);
+        if( SUCCEEDED(result) )
+            _p_instance->fireOnStopEvent();
     }
-    _p_instance->fireOnStopEvent();
     return result;
 };
 
@@ -196,9 +179,7 @@ STDMETHODIMP VLCControl::get_Playing(VARIANT_BOOL *isPlaying)
     {
         *isPlaying = libvlc_media_player_is_playing(p_md, NULL) ?
                      VARIANT_TRUE : VARIANT_FALSE;
-        return NOERROR;
-    }
-    *isPlaying = VARIANT_FALSE;
+    } else *isPlaying = VARIANT_FALSE;
     return result;
 };
 
@@ -216,14 +197,7 @@ STDMETHODIMP VLCControl::get_Position(float *position)
         libvlc_exception_init(&ex);
 
         *position = libvlc_media_player_get_position(p_md, &ex);
-        if( ! libvlc_exception_raised(&ex) )
-        {
-            return NOERROR;
-        }
-        _p_instance->setErrorInfo(IID_IVLCControl,
-                     libvlc_exception_get_message(&ex));
-        libvlc_exception_clear(&ex);
-        return E_FAIL;
+        result = exception_bridge(&ex);
     }
     return result;
 };
@@ -238,14 +212,7 @@ STDMETHODIMP VLCControl::put_Position(float position)
         libvlc_exception_init(&ex);
 
         libvlc_media_player_set_position(p_md, position, &ex);
-        if( ! libvlc_exception_raised(&ex) )
-        {
-            return NOERROR;
-        }
-        _p_instance->setErrorInfo(IID_IVLCControl,
-                     libvlc_exception_get_message(&ex));
-        libvlc_exception_clear(&ex);
-        return E_FAIL;
+        result = exception_bridge(&ex);
     }
     return result;
 };
@@ -264,14 +231,7 @@ STDMETHODIMP VLCControl::get_Time(int *seconds)
         libvlc_exception_init(&ex);
 
         *seconds = libvlc_media_player_get_time(p_md, &ex);
-        if( ! libvlc_exception_raised(&ex) )
-        {
-            return NOERROR;
-        }
-        _p_instance->setErrorInfo(IID_IVLCControl,
-                     libvlc_exception_get_message(&ex));
-        libvlc_exception_clear(&ex);
-        return E_FAIL;
+        result = exception_bridge(&ex);
     }
     return result;
 };
@@ -294,14 +254,7 @@ STDMETHODIMP VLCControl::shuttle(int seconds)
 
         if( seconds < 0 ) seconds = 0;
         libvlc_media_player_set_time(p_md, (int64_t)seconds, &ex);
-        if( ! libvlc_exception_raised(&ex) )
-        {
-            return NOERROR;
-        }
-        _p_instance->setErrorInfo(IID_IVLCControl,
-                     libvlc_exception_get_message(&ex));
-        libvlc_exception_clear(&ex);
-        return E_FAIL;
+        result = exception_bridge(&ex);
     }
     return result;
 
@@ -335,14 +288,7 @@ STDMETHODIMP VLCControl::get_Length(int *seconds)
         libvlc_exception_init(&ex);
 
         *seconds = (double)libvlc_media_player_get_length(p_md, &ex);
-        if( ! libvlc_exception_raised(&ex) )
-        {
-            return NOERROR;
-        }
-        _p_instance->setErrorInfo(IID_IVLCControl,
-                     libvlc_exception_get_message(&ex));
-        libvlc_exception_clear(&ex);
-        return E_FAIL;
+        result = exception_bridge(&ex);
     }
     return result;
 
@@ -360,18 +306,8 @@ STDMETHODIMP VLCControl::playFaster(void)
         libvlc_exception_t ex;
         libvlc_exception_init(&ex);
 
-        if( ! libvlc_exception_raised(&ex) )
-        {
-            libvlc_media_player_set_rate(p_md, rate, &ex);
-            if( ! libvlc_exception_raised(&ex) )
-            {
-                return NOERROR;
-            }
-        }
-        _p_instance->setErrorInfo(IID_IVLCControl,
-                     libvlc_exception_get_message(&ex));
-        libvlc_exception_clear(&ex);
-        return E_FAIL;
+        libvlc_media_player_set_rate(p_md, rate, &ex);
+        result = exception_bridge(&ex);
     }
     return result;
 };
@@ -388,14 +324,7 @@ STDMETHODIMP VLCControl::playSlower(void)
         libvlc_exception_init(&ex);
 
         libvlc_media_player_set_rate(p_md, rate, &ex);
-        if( ! libvlc_exception_raised(&ex) )
-        {
-            return NOERROR;
-        }
-        _p_instance->setErrorInfo(IID_IVLCControl,
-                     libvlc_exception_get_message(&ex));
-        libvlc_exception_clear(&ex);
-        return E_FAIL;
+        result = exception_bridge(&ex);
     }
     return result;
 };
@@ -425,14 +354,7 @@ STDMETHODIMP VLCControl::toggleMute(void)
         libvlc_exception_init(&ex);
 
         libvlc_audio_toggle_mute(p_libvlc, &ex);
-        if( libvlc_exception_raised(&ex) )
-        {
-            _p_instance->setErrorInfo(IID_IVLCControl,
-                         libvlc_exception_get_message(&ex));
-            libvlc_exception_clear(&ex);
-            return E_FAIL;
-        }
-        return NOERROR;
+        result = exception_bridge(&ex);
     }
     return result;
 };
@@ -810,20 +732,17 @@ STDMETHODIMP VLCControl::addTarget(BSTR uri, VARIANT options, enum VLCPlaylistMo
         FreeTargetOptions(cOptions, cOptionsCount);
         CoTaskMemFree(cUri);
 
-        if( libvlc_exception_raised(&ex) )
+        hr = exception_bridge(&ex);
+        if( SUCCEEDED(hr) )
+        {
+            if( mode & VLCPlayListAppendAndGo )
+                _p_instance->fireOnPlayEvent();
+        }
+        else
         {
-            _p_instance->setErrorInfo(IID_IVLCPlaylist,
-                libvlc_exception_get_message(&ex));
-            libvlc_exception_clear(&ex);
-
             if( mode & VLCPlayListAppendAndGo )
                 _p_instance->fireOnStopEvent();
-            return E_FAIL;
         }
-
-        if( mode & VLCPlayListAppendAndGo )
-            _p_instance->fireOnPlayEvent();
-        return NOERROR;
     }
     return hr;
 };
@@ -842,14 +761,7 @@ STDMETHODIMP VLCControl::get_PlaylistIndex(int *index)
         libvlc_exception_init(&ex);
 
         *index = _p_instance->playlist_get_current_index(&ex);
-        if( libvlc_exception_raised(&ex) )
-        {
-            _p_instance->setErrorInfo(IID_IVLCControl,
-                libvlc_exception_get_message(&ex));
-            libvlc_exception_clear(&ex);
-            return E_FAIL;
-        }
-        return NOERROR;
+        result = exception_bridge(&ex);
     }
     return result;
 };
@@ -863,14 +775,7 @@ STDMETHODIMP VLCControl::get_PlaylistCount(int *count)
     libvlc_exception_init(&ex);
 
     *count = _p_instance->playlist_count(&ex);
-    if( libvlc_exception_raised(&ex) )
-    {
-        _p_instance->setErrorInfo(IID_IVLCControl,
-            libvlc_exception_get_message(&ex));
-        libvlc_exception_clear(&ex);
-        return E_FAIL;
-    }
-    return NOERROR;
+    return exception_bridge(&ex);
 };
 
 STDMETHODIMP VLCControl::playlistNext(void)
@@ -883,14 +788,7 @@ STDMETHODIMP VLCControl::playlistNext(void)
         libvlc_exception_init(&ex);
 
         _p_instance->playlist_next(&ex);
-        if( libvlc_exception_raised(&ex) )
-        {
-            _p_instance->setErrorInfo(IID_IVLCControl,
-                libvlc_exception_get_message(&ex));
-            libvlc_exception_clear(&ex);
-            return E_FAIL;
-        }
-        return NOERROR;
+        result = exception_bridge(&ex);
     }
     return result;
 };
@@ -905,14 +803,7 @@ STDMETHODIMP VLCControl::playlistPrev(void)
         libvlc_exception_init(&ex);
 
         _p_instance->playlist_prev(&ex);
-        if( libvlc_exception_raised(&ex) )
-        {
-            _p_instance->setErrorInfo(IID_IVLCControl,
-                libvlc_exception_get_message(&ex));
-            libvlc_exception_clear(&ex);
-            return E_FAIL;
-        }
-        return NOERROR;
+        result = exception_bridge(&ex);
     }
     return result;
 };
@@ -927,14 +818,7 @@ STDMETHODIMP VLCControl::playlistClear(void)
         libvlc_exception_init(&ex);
 
         _p_instance->playlist_clear(&ex);
-        if( libvlc_exception_raised(&ex) )
-        {
-            _p_instance->setErrorInfo(IID_IVLCControl,
-                libvlc_exception_get_message(&ex));
-            libvlc_exception_clear(&ex);
-            return E_FAIL;
-        }
-        return NOERROR;
+        result = exception_bridge(&ex);
     }
     return result;
 };
index fa19b31fac53c8fffaa162fec1231de5fc39e906..35e8fde8b7a654540e769a95f71b77e46885dcb7 100644 (file)
@@ -15,9 +15,9 @@
  * 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 _VLCCONTROL_H_
@@ -29,7 +29,8 @@ class VLCControl : public IVLCControl
 {
 public:
 
-    VLCControl(VLCPlugin *p_instance) :  _p_instance(p_instance), _p_typeinfo(NULL) {};
+    VLCControl(VLCPlugin *p_instance):
+        _p_instance(p_instance), _p_typeinfo(NULL) { }
     virtual ~VLCControl();
 
     // IUnknown methods
@@ -46,10 +47,12 @@ public:
             return NOERROR;
         }
         return _p_instance->pUnkOuter->QueryInterface(riid, ppv);
-    };
+    }
 
-    STDMETHODIMP_(ULONG) AddRef(void) { return _p_instance->pUnkOuter->AddRef(); };
-    STDMETHODIMP_(ULONG) Release(void) { return _p_instance->pUnkOuter->Release(); };
+    STDMETHODIMP_(ULONG) AddRef(void)
+        { return _p_instance->pUnkOuter->AddRef(); }
+    STDMETHODIMP_(ULONG) Release(void)
+        { return _p_instance->pUnkOuter->Release(); }
 
     // IDispatch methods
     STDMETHODIMP GetTypeInfoCount(UINT*);
@@ -98,6 +101,15 @@ public:
 private:
 
     HRESULT      getTypeInfo();
+    HRESULT      exception_bridge(libvlc_exception_t *ex)
+    {
+        if( ! libvlc_exception_raised(ex) )
+            return NOERROR;
+        _p_instance->setErrorInfo(IID_IVLCControl,
+                                  libvlc_exception_get_message(ex));
+        libvlc_exception_clear(ex);
+        return E_FAIL;
+    }
 
     VLCPlugin *_p_instance;
     ITypeInfo *_p_typeinfo;
index 3f6c010b35ce5500a1cc65c297d7f54478237d54..169f2206f782490cf4db4750f2185f5948777c45 100644 (file)
@@ -16,9 +16,9 @@
  * 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 "plugin.h"
 #include <wininet.h>
 #include <tchar.h>
 
-using namespace std;
+
+static inline
+HRESULT _exception_bridge(VLCPlugin *p,REFIID riid, libvlc_exception_t *ex)
+{
+    if( libvlc_exception_raised(ex) )
+    {
+        p->setErrorInfo(riid,libvlc_exception_get_message(ex));
+        libvlc_exception_clear(ex);
+        return E_FAIL;
+    }
+    return NOERROR;
+}
+
+#define EMIT_EXCEPTION_BRIDGE( classname ) \
+    HRESULT classname::exception_bridge( libvlc_exception_t *ex ) \
+    { return _exception_bridge( _p_instance, IID_I##classname, ex ); }
+
+EMIT_EXCEPTION_BRIDGE( VLCAudio )
+EMIT_EXCEPTION_BRIDGE( VLCInput )
+EMIT_EXCEPTION_BRIDGE( VLCMessageIterator )
+EMIT_EXCEPTION_BRIDGE( VLCMessages )
+EMIT_EXCEPTION_BRIDGE( VLCLog )
+EMIT_EXCEPTION_BRIDGE( VLCPlaylistItems )
+EMIT_EXCEPTION_BRIDGE( VLCPlaylist )
+EMIT_EXCEPTION_BRIDGE( VLCVideo )
+
+#undef  EMIT_EXCEPTION_BRIDGE
+
 
 VLCAudio::~VLCAudio()
 {
@@ -125,14 +152,7 @@ STDMETHODIMP VLCAudio::get_mute(VARIANT_BOOL* mute)
 
         *mute = libvlc_audio_get_mute(p_libvlc, &ex) ?
                         VARIANT_TRUE : VARIANT_FALSE;
-        if( libvlc_exception_raised(&ex) )
-        {
-            _p_instance->setErrorInfo(IID_IVLCAudio,
-                         libvlc_exception_get_message(&ex));
-            libvlc_exception_clear(&ex);
-            return E_FAIL;
-        }
-        return NOERROR;
+        hr = exception_bridge(&ex);
     }
     return hr;
 };
@@ -147,14 +167,7 @@ STDMETHODIMP VLCAudio::put_mute(VARIANT_BOOL mute)
         libvlc_exception_init(&ex);
 
         libvlc_audio_set_mute(p_libvlc, VARIANT_FALSE != mute, &ex);
-        if( libvlc_exception_raised(&ex) )
-        {
-            _p_instance->setErrorInfo(IID_IVLCAudio,
-                         libvlc_exception_get_message(&ex));
-            libvlc_exception_clear(&ex);
-            return E_FAIL;
-        }
-        return NOERROR;
+        hr = exception_bridge(&ex);
     }
     return hr;
 };
@@ -172,14 +185,7 @@ STDMETHODIMP VLCAudio::get_volume(long* volume)
         libvlc_exception_init(&ex);
 
         *volume = libvlc_audio_get_volume(p_libvlc, &ex);
-        if( libvlc_exception_raised(&ex) )
-        {
-            _p_instance->setErrorInfo(IID_IVLCAudio,
-                         libvlc_exception_get_message(&ex));
-            libvlc_exception_clear(&ex);
-            return E_FAIL;
-        }
-        return NOERROR;
+        hr = exception_bridge(&ex);
     }
     return hr;
 };
@@ -194,14 +200,7 @@ STDMETHODIMP VLCAudio::put_volume(long volume)
         libvlc_exception_init(&ex);
 
         libvlc_audio_set_volume(p_libvlc, volume, &ex);
-        if( libvlc_exception_raised(&ex) )
-        {
-            _p_instance->setErrorInfo(IID_IVLCAudio,
-                         libvlc_exception_get_message(&ex));
-            libvlc_exception_clear(&ex);
-            return E_FAIL;
-        }
-        return NOERROR;
+        hr = exception_bridge(&ex);
     }
     return hr;
 };
@@ -219,14 +218,7 @@ STDMETHODIMP VLCAudio::get_track(long* track)
         libvlc_exception_init(&ex);
 
         *track = libvlc_audio_get_track(p_md, &ex);
-        if( libvlc_exception_raised(&ex) )
-        {
-            _p_instance->setErrorInfo(IID_IVLCAudio,
-                         libvlc_exception_get_message(&ex));
-            libvlc_exception_clear(&ex);
-            return E_FAIL;
-        }
-        return NOERROR;
+        hr = exception_bridge(&ex);
     }
     return hr;
 };
@@ -241,14 +233,7 @@ STDMETHODIMP VLCAudio::put_track(long track)
         libvlc_exception_init(&ex);
 
         libvlc_audio_set_track(p_md, track, &ex);
-        if( libvlc_exception_raised(&ex) )
-        {
-            _p_instance->setErrorInfo(IID_IVLCAudio,
-                         libvlc_exception_get_message(&ex));
-            libvlc_exception_clear(&ex);
-            return E_FAIL;
-        }
-        return NOERROR;
+        hr = exception_bridge(&ex);
     }
     return hr;
 };
@@ -266,14 +251,7 @@ STDMETHODIMP VLCAudio::get_channel(long *channel)
         libvlc_exception_init(&ex);
 
         *channel = libvlc_audio_get_channel(p_libvlc, &ex);
-        if( libvlc_exception_raised(&ex) )
-        {
-            _p_instance->setErrorInfo(IID_IVLCAudio,
-                        libvlc_exception_get_message(&ex));
-            libvlc_exception_clear(&ex);
-            return E_FAIL;
-        }
-        return NOERROR;
+        hr = exception_bridge(&ex);
     }
     return hr;
 };
@@ -288,14 +266,7 @@ STDMETHODIMP VLCAudio::put_channel(long channel)
         libvlc_exception_init(&ex);
 
         libvlc_audio_set_channel(p_libvlc, channel, &ex);
-        if( libvlc_exception_raised(&ex) )
-        {
-            _p_instance->setErrorInfo(IID_IVLCAudio,
-                         libvlc_exception_get_message(&ex));
-            libvlc_exception_clear(&ex);
-            return E_FAIL;
-        }
-        return NOERROR;
+        hr = exception_bridge(&ex);
     }
     return hr;
 };
@@ -310,14 +281,7 @@ STDMETHODIMP VLCAudio::toggleMute()
         libvlc_exception_init(&ex);
 
         libvlc_audio_toggle_mute(p_libvlc, &ex);
-        if( libvlc_exception_raised(&ex) )
-        {
-            _p_instance->setErrorInfo(IID_IVLCAudio,
-                         libvlc_exception_get_message(&ex));
-            libvlc_exception_clear(&ex);
-            return E_FAIL;
-        }
-        return NOERROR;
+        hr = exception_bridge(&ex);
     }
     return hr;
 };
@@ -415,14 +379,7 @@ STDMETHODIMP VLCInput::get_length(double* length)
         libvlc_exception_init(&ex);
 
         *length = (double)libvlc_media_player_get_length(p_md, &ex);
-        if( ! libvlc_exception_raised(&ex) )
-        {
-            return NOERROR;
-        }
-        _p_instance->setErrorInfo(IID_IVLCInput,
-                     libvlc_exception_get_message(&ex));
-        libvlc_exception_clear(&ex);
-        return E_FAIL;
+        hr = exception_bridge(&ex);
     }
     return hr;
 };
@@ -441,14 +398,7 @@ STDMETHODIMP VLCInput::get_position(double* position)
         libvlc_exception_init(&ex);
 
         *position = libvlc_media_player_get_position(p_md, &ex);
-        if( ! libvlc_exception_raised(&ex) )
-        {
-            return NOERROR;
-        }
-        _p_instance->setErrorInfo(IID_IVLCInput,
-                     libvlc_exception_get_message(&ex));
-        libvlc_exception_clear(&ex);
-        return E_FAIL;
+        hr = exception_bridge(&ex);
     }
     return hr;
 };
@@ -463,14 +413,7 @@ STDMETHODIMP VLCInput::put_position(double position)
         libvlc_exception_init(&ex);
 
         libvlc_media_player_set_position(p_md, position, &ex);
-        if( ! libvlc_exception_raised(&ex) )
-        {
-            return NOERROR;
-        }
-        _p_instance->setErrorInfo(IID_IVLCInput,
-                     libvlc_exception_get_message(&ex));
-        libvlc_exception_clear(&ex);
-        return E_FAIL;
+        hr = exception_bridge(&ex);
     }
     return hr;
 };
@@ -488,14 +431,7 @@ STDMETHODIMP VLCInput::get_time(double* time)
         libvlc_exception_init(&ex);
 
         *time = (double)libvlc_media_player_get_time(p_md, &ex);
-        if( ! libvlc_exception_raised(&ex) )
-        {
-            return NOERROR;
-        }
-        _p_instance->setErrorInfo(IID_IVLCInput,
-                     libvlc_exception_get_message(&ex));
-        libvlc_exception_clear(&ex);
-        return E_FAIL;
+        hr = exception_bridge(&ex);
     }
     return hr;
 };
@@ -510,14 +446,7 @@ STDMETHODIMP VLCInput::put_time(double time)
         libvlc_exception_init(&ex);
 
         libvlc_media_player_set_time(p_md, (int64_t)time, &ex);
-        if( ! libvlc_exception_raised(&ex) )
-        {
-            return NOERROR;
-        }
-        _p_instance->setErrorInfo(IID_IVLCInput,
-                     libvlc_exception_get_message(&ex));
-        libvlc_exception_clear(&ex);
-        return E_FAIL;
+        hr = exception_bridge(&ex);
     }
     return hr;
 };
@@ -560,14 +489,7 @@ STDMETHODIMP VLCInput::get_rate(double* rate)
         libvlc_exception_init(&ex);
 
         *rate = libvlc_media_player_get_rate(p_md, &ex);
-        if( ! libvlc_exception_raised(&ex) )
-        {
-            return NOERROR;
-        }
-        _p_instance->setErrorInfo(IID_IVLCInput,
-                     libvlc_exception_get_message(&ex));
-        libvlc_exception_clear(&ex);
-        return E_FAIL;
+        hr = exception_bridge(&ex);
     }
     return hr;
 };
@@ -582,14 +504,7 @@ STDMETHODIMP VLCInput::put_rate(double rate)
         libvlc_exception_init(&ex);
 
         libvlc_media_player_set_rate(p_md, rate, &ex);
-        if( ! libvlc_exception_raised(&ex) )
-        {
-            return NOERROR;
-        }
-        _p_instance->setErrorInfo(IID_IVLCInput,
-                     libvlc_exception_get_message(&ex));
-        libvlc_exception_clear(&ex);
-        return E_FAIL;
+        hr = exception_bridge(&ex);
     }
     return hr;
 };
@@ -608,14 +523,7 @@ STDMETHODIMP VLCInput::get_fps(double* fps)
         libvlc_exception_init(&ex);
 
         *fps = libvlc_media_player_get_fps(p_md, &ex);
-        if( ! libvlc_exception_raised(&ex) )
-        {
-            return NOERROR;
-        }
-        _p_instance->setErrorInfo(IID_IVLCInput,
-                     libvlc_exception_get_message(&ex));
-        libvlc_exception_clear(&ex);
-        return E_FAIL;
+        hr = exception_bridge(&ex);
     }
     return hr;
 };
@@ -634,14 +542,7 @@ STDMETHODIMP VLCInput::get_hasVout(VARIANT_BOOL* hasVout)
 
         *hasVout = libvlc_media_player_has_vout(p_md, &ex) ?
                                 VARIANT_TRUE : VARIANT_FALSE;
-        if( ! libvlc_exception_raised(&ex) )
-        {
-            return NOERROR;
-        }
-        _p_instance->setErrorInfo(IID_IVLCInput,
-                     libvlc_exception_get_message(&ex));
-        libvlc_exception_clear(&ex);
-        return E_FAIL;
+        hr = exception_bridge(&ex);
     }
     return hr;
 };
@@ -758,13 +659,7 @@ STDMETHODIMP VLCLog::get_verbosity(long* level)
             libvlc_exception_init(&ex);
 
             *level = libvlc_get_log_verbosity(p_libvlc, &ex);
-            if( libvlc_exception_raised(&ex) )
-            {
-                _p_instance->setErrorInfo(IID_IVLCLog,
-                             libvlc_exception_get_message(&ex));
-                libvlc_exception_clear(&ex);
-                return E_FAIL;
-            }
+            hr = exception_bridge(&ex);
         }
         return hr;
     }
@@ -778,48 +673,30 @@ STDMETHODIMP VLCLog::get_verbosity(long* level)
 
 STDMETHODIMP VLCLog::put_verbosity(long verbosity)
 {
-    libvlc_exception_t ex;
-    libvlc_exception_init(&ex);
-
     libvlc_instance_t* p_libvlc;
     HRESULT hr = _p_instance->getVLC(&p_libvlc);
     if( SUCCEEDED(hr) )
     {
+        libvlc_exception_t ex;
+        libvlc_exception_init(&ex);
+
         if( verbosity >= 0 )
         {
             if( ! _p_log )
             {
                 _p_log = libvlc_log_open(p_libvlc, &ex);
-                if( libvlc_exception_raised(&ex) )
-                {
-                    _p_instance->setErrorInfo(IID_IVLCLog,
-                                 libvlc_exception_get_message(&ex));
-                    libvlc_exception_clear(&ex);
-                    return E_FAIL;
-                }
-            }
-            libvlc_set_log_verbosity(p_libvlc, (unsigned)verbosity, &ex);
-            if( libvlc_exception_raised(&ex) )
-            {
-                _p_instance->setErrorInfo(IID_IVLCLog,
-                             libvlc_exception_get_message(&ex));
-                libvlc_exception_clear(&ex);
-                return E_FAIL;
+                hr = exception_bridge(&ex);
             }
+            if( SUCCEEDED(hr) )
+                libvlc_set_log_verbosity(p_libvlc, (unsigned)verbosity, &ex);
         }
         else if( _p_log )
         {
             /* close log  when verbosity is set to -1 */
             libvlc_log_close(_p_log, &ex);
             _p_log = NULL;
-            if( libvlc_exception_raised(&ex) )
-            {
-                _p_instance->setErrorInfo(IID_IVLCLog,
-                             libvlc_exception_get_message(&ex));
-                libvlc_exception_clear(&ex);
-                return E_FAIL;
-            }
         }
+        hr = exception_bridge(&ex);
     }
     return hr;
 };
@@ -1006,6 +883,7 @@ STDMETHODIMP VLCMessages::get__NewEnum(LPUNKNOWN* _NewEnum)
 
 STDMETHODIMP VLCMessages::clear()
 {
+    HRESULT hr = NOERROR;
     libvlc_log_t *p_log = _p_vlclog->_p_log;
     if( p_log )
     {
@@ -1013,19 +891,15 @@ STDMETHODIMP VLCMessages::clear()
         libvlc_exception_init(&ex);
 
         libvlc_log_clear(p_log, &ex);
-        if( libvlc_exception_raised(&ex) )
-        {
-            _p_instance->setErrorInfo(IID_IVLCMessages,
-                         libvlc_exception_get_message(&ex));
-            libvlc_exception_clear(&ex);
-            return E_FAIL;
-        }
+        hr = exception_bridge(&ex);
     }
-    return NOERROR;
+    return hr;
 };
 
 STDMETHODIMP VLCMessages::get_count(long* count)
 {
+    HRESULT hr = S_OK;
+
     if( NULL == count )
         return E_POINTER;
 
@@ -1036,17 +910,11 @@ STDMETHODIMP VLCMessages::get_count(long* count)
         libvlc_exception_init(&ex);
 
         *count = libvlc_log_count(p_log, &ex);
-        if( libvlc_exception_raised(&ex) )
-        {
-            _p_instance->setErrorInfo(IID_IVLCMessages,
-                         libvlc_exception_get_message(&ex));
-            libvlc_exception_clear(&ex);
-            return E_FAIL;
-        }
+        hr = exception_bridge(&ex);
     }
     else
         *count = 0;
-    return S_OK;
+    return hr;
 };
 
 STDMETHODIMP VLCMessages::iterator(IVLCMessageIterator** iter)
@@ -1157,6 +1025,8 @@ STDMETHODIMP VLCMessageIterator::Invoke(DISPID dispIdMember, REFIID riid,
 
 STDMETHODIMP VLCMessageIterator::get_hasNext(VARIANT_BOOL* hasNext)
 {
+    HRESULT hr = S_OK;
+
     if( NULL == hasNext )
         return E_POINTER;
 
@@ -1166,24 +1036,20 @@ STDMETHODIMP VLCMessageIterator::get_hasNext(VARIANT_BOOL* hasNext)
         libvlc_exception_init(&ex);
 
         *hasNext = libvlc_log_iterator_has_next(_p_iter, &ex) ?
-                                     VARIANT_TRUE : VARIANT_FALSE;
-        if( libvlc_exception_raised(&ex) )
-        {
-            _p_instance->setErrorInfo(IID_IVLCMessageIterator,
-                         libvlc_exception_get_message(&ex));
-            libvlc_exception_clear(&ex);
-            return E_FAIL;
-        }
+                   VARIANT_TRUE : VARIANT_FALSE;
+        hr = exception_bridge(&ex);
     }
     else
     {
         *hasNext = VARIANT_FALSE;
     }
-    return S_OK;
+    return hr;
 };
 
 STDMETHODIMP VLCMessageIterator::next(IVLCMessage** message)
 {
+    HRESULT hr = S_OK;
+
     if( NULL == message )
         return E_POINTER;
 
@@ -1197,17 +1063,15 @@ STDMETHODIMP VLCMessageIterator::next(IVLCMessage** message)
         libvlc_exception_init(&ex);
 
         libvlc_log_iterator_next(_p_iter, &buffer, &ex);
-        if( libvlc_exception_raised(&ex) )
+        hr = exception_bridge(&ex);
+        if( SUCCEEDED(hr) )
         {
-            _p_instance->setErrorInfo(IID_IVLCMessageIterator,
-                         libvlc_exception_get_message(&ex));
-            libvlc_exception_clear(&ex);
-            return E_FAIL;
+            *message = new VLCMessage(_p_instance, buffer);
+            if( !message )
+                hr = E_OUTOFMEMORY;
         }
-        *message = new VLCMessage(_p_instance, buffer);
-        return *message ? NOERROR : E_OUTOFMEMORY;
     }
-    return E_FAIL;
+    return hr;
 };
 
 /*******************************************************************************/
@@ -1458,36 +1322,16 @@ STDMETHODIMP VLCPlaylistItems::get_count(long* count)
     libvlc_exception_init(&ex);
 
     *count = _p_instance->playlist_count(&ex);
-    if( libvlc_exception_raised(&ex) )
-    {
-        _p_instance->setErrorInfo(IID_IVLCPlaylistItems,
-            libvlc_exception_get_message(&ex));
-        libvlc_exception_clear(&ex);
-        return E_FAIL;
-    }
-    return NOERROR;
+    return exception_bridge(&ex);
 };
 
 STDMETHODIMP VLCPlaylistItems::clear()
 {
-    libvlc_instance_t* p_libvlc;
-    HRESULT hr = _p_instance->getVLC(&p_libvlc);
-    if( SUCCEEDED(hr) )
-    {
-        libvlc_exception_t ex;
-        libvlc_exception_init(&ex);
+    libvlc_exception_t ex;
+    libvlc_exception_init(&ex);
 
-        _p_instance->playlist_clear(&ex);
-        if( libvlc_exception_raised(&ex) )
-        {
-            _p_instance->setErrorInfo(IID_IVLCPlaylistItems,
-                         libvlc_exception_get_message(&ex));
-            libvlc_exception_clear(&ex);
-            return E_FAIL;
-        }
-        return NOERROR;
-    }
-    return hr;
+    _p_instance->playlist_clear(&ex);
+    return exception_bridge(&ex);
 };
 
 STDMETHODIMP VLCPlaylistItems::remove(long item)
@@ -1500,14 +1344,7 @@ STDMETHODIMP VLCPlaylistItems::remove(long item)
         libvlc_exception_init(&ex);
 
         _p_instance->playlist_delete_item(item, &ex);
-        if( libvlc_exception_raised(&ex) )
-        {
-            _p_instance->setErrorInfo(IID_IVLCPlaylistItems,
-                         libvlc_exception_get_message(&ex));
-            libvlc_exception_clear(&ex);
-            return E_FAIL;
-        }
-        return NOERROR;
+        hr = exception_bridge(&ex);
     }
     return hr;
 };
@@ -1602,14 +1439,7 @@ STDMETHODIMP VLCPlaylist::get_itemCount(long* count)
     libvlc_exception_init(&ex);
 
     *count = _p_instance->playlist_count(&ex);
-    if( libvlc_exception_raised(&ex) )
-    {
-        _p_instance->setErrorInfo(IID_IVLCPlaylist,
-            libvlc_exception_get_message(&ex));
-        libvlc_exception_clear(&ex);
-        return E_FAIL;
-    }
-    return NOERROR;
+    return exception_bridge(&ex);
 };
 
 STDMETHODIMP VLCPlaylist::get_isPlaying(VARIANT_BOOL* isPlaying)
@@ -1625,15 +1455,8 @@ STDMETHODIMP VLCPlaylist::get_isPlaying(VARIANT_BOOL* isPlaying)
         libvlc_exception_init(&ex);
 
         *isPlaying = libvlc_media_player_is_playing(p_md, &ex) ?
-                                    VARIANT_TRUE: VARIANT_FALSE;
-        if( libvlc_exception_raised(&ex) )
-        {
-            _p_instance->setErrorInfo(IID_IVLCPlaylist,
-                         libvlc_exception_get_message(&ex));
-            libvlc_exception_clear(&ex);
-            return E_FAIL;
-        }
-        return NOERROR;
+                     VARIANT_TRUE: VARIANT_FALSE;
+        libvlc_exception_clear(&ex);
     }
     return hr;
 };
@@ -1709,16 +1532,9 @@ STDMETHODIMP VLCPlaylist::add(BSTR uri, VARIANT name, VARIANT options, long* ite
 
         VLCControl::FreeTargetOptions(ppsz_options, i_options);
         CoTaskMemFree(psz_uri);
-        if( psz_name )
+        if( psz_name ) /* XXX Do we even need to check? */
             CoTaskMemFree(psz_name);
-        if( libvlc_exception_raised(&ex) )
-        {
-            _p_instance->setErrorInfo(IID_IVLCPlaylist,
-                libvlc_exception_get_message(&ex));
-            libvlc_exception_clear(&ex);
-            return E_FAIL;
-        }
-        return NOERROR;
+        hr = exception_bridge(&ex);
     }
     return hr;
 };
@@ -1729,12 +1545,7 @@ STDMETHODIMP VLCPlaylist::play()
     libvlc_exception_init(&ex);
 
     _p_instance->playlist_play(&ex);
-    if( libvlc_exception_raised(&ex) )
-    {
-        libvlc_exception_clear(&ex);
-        return E_FAIL;
-    }
-    return NOERROR;
+    return exception_bridge(&ex);
 };
 
 STDMETHODIMP VLCPlaylist::playItem(long item)
@@ -1743,14 +1554,7 @@ STDMETHODIMP VLCPlaylist::playItem(long item)
     libvlc_exception_init(&ex);
 
     _p_instance->playlist_play_item(item,&ex);
-    if( libvlc_exception_raised(&ex) )
-    {
-        _p_instance->setErrorInfo(IID_IVLCPlaylist,
-            libvlc_exception_get_message(&ex));
-        libvlc_exception_clear(&ex);
-        return E_FAIL;
-    }
-    return NOERROR;
+    return exception_bridge(&ex);;
 };
 
 STDMETHODIMP VLCPlaylist::togglePause()
@@ -1763,14 +1567,7 @@ STDMETHODIMP VLCPlaylist::togglePause()
         libvlc_exception_init(&ex);
 
         libvlc_media_player_pause(p_md, &ex);
-        if( libvlc_exception_raised(&ex) )
-        {
-            _p_instance->setErrorInfo(IID_IVLCPlaylist,
-                libvlc_exception_get_message(&ex));
-            libvlc_exception_clear(&ex);
-            return E_FAIL;
-        }
-        return NOERROR;
+        hr = exception_bridge(&ex);;
     }
     return hr;
 };
@@ -1785,14 +1582,7 @@ STDMETHODIMP VLCPlaylist::stop()
         libvlc_exception_init(&ex);
 
         libvlc_media_player_stop(p_md, &ex);
-        if( libvlc_exception_raised(&ex) )
-        {
-            _p_instance->setErrorInfo(IID_IVLCPlaylist,
-                libvlc_exception_get_message(&ex));
-            libvlc_exception_clear(&ex);
-            return E_FAIL;
-        }
-        return NOERROR;
+        hr = exception_bridge(&ex);;
     }
     return hr;
 };
@@ -1803,14 +1593,7 @@ STDMETHODIMP VLCPlaylist::next()
     libvlc_exception_init(&ex);
 
     _p_instance->playlist_next(&ex);
-    if( libvlc_exception_raised(&ex) )
-    {
-        _p_instance->setErrorInfo(IID_IVLCPlaylist,
-            libvlc_exception_get_message(&ex));
-        libvlc_exception_clear(&ex);
-        return E_FAIL;
-    }
-    return NOERROR;
+    return exception_bridge(&ex);;
 };
 
 STDMETHODIMP VLCPlaylist::prev()
@@ -1819,14 +1602,7 @@ STDMETHODIMP VLCPlaylist::prev()
     libvlc_exception_init(&ex);
 
     _p_instance->playlist_prev(&ex);
-    if( libvlc_exception_raised(&ex) )
-    {
-        _p_instance->setErrorInfo(IID_IVLCPlaylist,
-            libvlc_exception_get_message(&ex));
-        libvlc_exception_clear(&ex);
-        return E_FAIL;
-    }
-    return NOERROR;
+    return exception_bridge(&ex);;
 };
 
 STDMETHODIMP VLCPlaylist::clear()
@@ -1835,14 +1611,7 @@ STDMETHODIMP VLCPlaylist::clear()
     libvlc_exception_init(&ex);
 
     _p_instance->playlist_clear(&ex);
-    if( libvlc_exception_raised(&ex) )
-    {
-        _p_instance->setErrorInfo(IID_IVLCPlaylist,
-            libvlc_exception_get_message(&ex));
-        libvlc_exception_clear(&ex);
-        return E_FAIL;
-    }
-    return NOERROR;
+    return exception_bridge(&ex);;
 };
 
 STDMETHODIMP VLCPlaylist::removeItem(long item)
@@ -1855,14 +1624,7 @@ STDMETHODIMP VLCPlaylist::removeItem(long item)
         libvlc_exception_init(&ex);
 
         _p_instance->playlist_delete_item(item, &ex);
-        if( libvlc_exception_raised(&ex) )
-        {
-            _p_instance->setErrorInfo(IID_IVLCPlaylist,
-                libvlc_exception_get_message(&ex));
-            libvlc_exception_clear(&ex);
-            return E_FAIL;
-        }
-        return NOERROR;
+        hr = exception_bridge(&ex);;
     }
     return hr;
 };
@@ -1972,14 +1734,9 @@ STDMETHODIMP VLCVideo::get_fullscreen(VARIANT_BOOL* fullscreen)
         libvlc_exception_t ex;
         libvlc_exception_init(&ex);
 
-        *fullscreen = libvlc_get_fullscreen(p_md, &ex) ? VARIANT_TRUE : VARIANT_FALSE;
-        if( ! libvlc_exception_raised(&ex) )
-        {
-            return NOERROR;
-        }
-        _p_instance->setErrorInfo(IID_IVLCVideo, libvlc_exception_get_message(&ex));
-        libvlc_exception_clear(&ex);
-        return E_FAIL;
+        *fullscreen = libvlc_get_fullscreen(p_md, &ex) ?
+                      VARIANT_TRUE : VARIANT_FALSE;
+        hr = exception_bridge(&ex);
     }
     return hr;
 };
@@ -1994,13 +1751,7 @@ STDMETHODIMP VLCVideo::put_fullscreen(VARIANT_BOOL fullscreen)
         libvlc_exception_init(&ex);
 
         libvlc_set_fullscreen(p_md, VARIANT_FALSE != fullscreen, &ex);
-        if( ! libvlc_exception_raised(&ex) )
-        {
-            return NOERROR;
-        }
-        _p_instance->setErrorInfo(IID_IVLCVideo, libvlc_exception_get_message(&ex));
-        libvlc_exception_clear(&ex);
-        return E_FAIL;
+        hr = exception_bridge(&ex);
     }
     return hr;
 };
@@ -2018,13 +1769,7 @@ STDMETHODIMP VLCVideo::get_width(long* width)
         libvlc_exception_init(&ex);
 
         *width = libvlc_video_get_width(p_md, &ex);
-        if( ! libvlc_exception_raised(&ex) )
-        {
-            return NOERROR;
-        }
-        _p_instance->setErrorInfo(IID_IVLCVideo, libvlc_exception_get_message(&ex));
-        libvlc_exception_clear(&ex);
-        return E_FAIL;
+        hr = exception_bridge(&ex);
     }
     return hr;
 };
@@ -2042,13 +1787,7 @@ STDMETHODIMP VLCVideo::get_height(long* height)
         libvlc_exception_init(&ex);
 
         *height = libvlc_video_get_height(p_md, &ex);
-        if( ! libvlc_exception_raised(&ex) )
-        {
-            return NOERROR;
-        }
-        _p_instance->setErrorInfo(IID_IVLCVideo, libvlc_exception_get_message(&ex));
-        libvlc_exception_clear(&ex);
-        return E_FAIL;
+        hr = exception_bridge(&ex);
     }
     return hr;
 };
@@ -2067,22 +1806,14 @@ STDMETHODIMP VLCVideo::get_aspectRatio(BSTR* aspect)
 
         char *psz_aspect = libvlc_video_get_aspect_ratio(p_md, &ex);
 
-        if( ! libvlc_exception_raised(&ex) )
+        hr = exception_bridge(&ex);
+        if( SUCCEEDED(hr) && NULL != psz_aspect )
         {
-            if( NULL == psz_aspect )
-                return E_OUTOFMEMORY;
-
             *aspect = BSTRFromCStr(CP_UTF8, psz_aspect);
-            free( psz_aspect );
-            psz_aspect = NULL;
-            return (NULL == *aspect) ? E_OUTOFMEMORY : NOERROR;
-        }
+            if( NULL == *aspect )
+                hr = E_OUTOFMEMORY;
+        } else if( NULL == psz_aspect) hr = E_OUTOFMEMORY; // strdup("") failed
         free( psz_aspect );
-        psz_aspect = NULL;
-
-        _p_instance->setErrorInfo(IID_IVLCVideo, libvlc_exception_get_message(&ex));
-        libvlc_exception_clear(&ex);
-        return E_FAIL;
     }
     return hr;
 };
@@ -2111,14 +1842,7 @@ STDMETHODIMP VLCVideo::put_aspectRatio(BSTR aspect)
         libvlc_video_set_aspect_ratio(p_md, psz_aspect, &ex);
 
         CoTaskMemFree(psz_aspect);
-        if( libvlc_exception_raised(&ex) )
-        {
-            _p_instance->setErrorInfo(IID_IVLCVideo,
-                libvlc_exception_get_message(&ex));
-            libvlc_exception_clear(&ex);
-            return E_FAIL;
-        }
-        return NOERROR;
+        hr = exception_bridge(&ex);
     }
     return hr;
 };
@@ -2136,13 +1860,7 @@ STDMETHODIMP VLCVideo::get_subtitle(long* spu)
         libvlc_exception_init(&ex);
 
         *spu = libvlc_video_get_spu(p_md, &ex);
-        if( ! libvlc_exception_raised(&ex) )
-        {
-            return NOERROR;
-        }
-        _p_instance->setErrorInfo(IID_IVLCVideo, libvlc_exception_get_message(&ex));
-        libvlc_exception_clear(&ex);
-        return E_FAIL;
+        hr = exception_bridge(&ex);
     }
     return hr;
 };
@@ -2157,13 +1875,7 @@ STDMETHODIMP VLCVideo::put_subtitle(long spu)
         libvlc_exception_init(&ex);
 
         libvlc_video_set_spu(p_md, spu, &ex);
-        if( libvlc_exception_raised(&ex) )
-        {
-            _p_instance->setErrorInfo(IID_IVLCVideo, libvlc_exception_get_message(&ex));
-            libvlc_exception_clear(&ex);
-            return E_FAIL;
-        }
-        return NOERROR;
+        hr = exception_bridge(&ex);
     }
     return hr;
 };
@@ -2182,21 +1894,13 @@ STDMETHODIMP VLCVideo::get_crop(BSTR* geometry)
 
         char *psz_geometry = libvlc_video_get_crop_geometry(p_md, &ex);
 
-        if( ! libvlc_exception_raised(&ex) )
+        hr = exception_bridge(&ex);
+        if( SUCCEEDED(&ex) && NULL != psz_geometry )
         {
-            if( NULL == psz_geometry )
-                return E_OUTOFMEMORY;
-
             *geometry = BSTRFromCStr(CP_UTF8, psz_geometry);
-            free( psz_geometry );
-            psz_geometry = NULL;
-            return (NULL == geometry) ? E_OUTOFMEMORY : NOERROR;
-        }
+            if( NULL == geometry ) hr = E_OUTOFMEMORY;
+        } else if( NULL == psz_geometry ) hr = E_OUTOFMEMORY;
         free( psz_geometry );
-        psz_geometry = NULL;
-        _p_instance->setErrorInfo(IID_IVLCVideo, libvlc_exception_get_message(&ex));
-        libvlc_exception_clear(&ex);
-        return E_FAIL;
     }
     return hr;
 };
@@ -2225,14 +1929,7 @@ STDMETHODIMP VLCVideo::put_crop(BSTR geometry)
         libvlc_video_set_crop_geometry(p_md, psz_geometry, &ex);
 
         CoTaskMemFree(psz_geometry);
-        if( libvlc_exception_raised(&ex) )
-        {
-            _p_instance->setErrorInfo(IID_IVLCVideo,
-                libvlc_exception_get_message(&ex));
-            libvlc_exception_clear(&ex);
-            return E_FAIL;
-        }
-        return NOERROR;
+        hr = exception_bridge(&ex);
     }
     return hr;
 };
@@ -2250,13 +1947,7 @@ STDMETHODIMP VLCVideo::get_teletext(long* page)
         libvlc_exception_init(&ex);
 
         *page = libvlc_video_get_teletext(p_md, &ex);
-        if( ! libvlc_exception_raised(&ex) )
-        {
-            return NOERROR;
-        }
-        _p_instance->setErrorInfo(IID_IVLCVideo, libvlc_exception_get_message(&ex));
-        libvlc_exception_clear(&ex);
-        return E_FAIL;
+        hr = exception_bridge(&ex);
     }
     return hr;
 };
@@ -2271,13 +1962,7 @@ STDMETHODIMP VLCVideo::put_teletext(long page)
         libvlc_exception_init(&ex);
 
         libvlc_video_set_teletext(p_md, page, &ex);
-        if( libvlc_exception_raised(&ex) )
-        {
-            _p_instance->setErrorInfo(IID_IVLCVideo, libvlc_exception_get_message(&ex));
-            libvlc_exception_clear(&ex);
-            return E_FAIL;
-        }
-        return NOERROR;
+        hr = exception_bridge(&ex);
     }
     return hr;
 };
@@ -2391,13 +2076,7 @@ STDMETHODIMP VLCVideo::toggleFullscreen()
         libvlc_exception_init(&ex);
 
         libvlc_toggle_fullscreen(p_md, &ex);
-        if( ! libvlc_exception_raised(&ex) )
-        {
-            return NOERROR;
-        }
-        _p_instance->setErrorInfo(IID_IVLCVideo, libvlc_exception_get_message(&ex));
-        libvlc_exception_clear(&ex);
-        return E_FAIL;
+        hr = exception_bridge(&ex);
     }
     return hr;
 };
@@ -2412,13 +2091,7 @@ STDMETHODIMP VLCVideo::toggleTeletext()
         libvlc_exception_init(&ex);
 
         libvlc_toggle_teletext(p_md, &ex);
-        if( ! libvlc_exception_raised(&ex) )
-        {
-            return NOERROR;
-        }
-        _p_instance->setErrorInfo(IID_IVLCVideo, libvlc_exception_get_message(&ex));
-        libvlc_exception_clear(&ex);
-        return E_FAIL;
+        hr = exception_bridge(&ex);
     }
     return hr;
 };
index 7596676d0a1a3213c0a35d3e7e9fc69ae47d0b2f..ee52d5359e371ab0441c0d42529e2e1af67525b0 100644 (file)
@@ -16,9 +16,9 @@
  * 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 _VLCCONTROL2_H_
@@ -74,6 +74,7 @@ public:
 
 protected:
     HRESULT loadTypeInfo();
+    HRESULT exception_bridge(libvlc_exception_t *ex);
 
 private:
     VLCPlugin*      _p_instance;
@@ -129,6 +130,7 @@ public:
 
 protected:
     HRESULT loadTypeInfo();
+    HRESULT exception_bridge(libvlc_exception_t *ex);
 
 private:
     VLCPlugin*      _p_instance;
@@ -251,6 +253,7 @@ public:
  
 protected:
     HRESULT loadTypeInfo();
+    HRESULT exception_bridge(libvlc_exception_t *ex);
 
 private:
     VLCPlugin*      _p_instance;
@@ -305,6 +308,7 @@ public:
 
 protected:
     HRESULT loadTypeInfo();
+    HRESULT exception_bridge(libvlc_exception_t *ex);
 
     VLCLog*     _p_vlclog;
 
@@ -363,6 +367,7 @@ public:
 
 protected:
     HRESULT loadTypeInfo();
+    HRESULT exception_bridge(libvlc_exception_t *ex);
 
     libvlc_log_t    *_p_log;
 
@@ -413,6 +418,7 @@ public:
 
 protected:
     HRESULT loadTypeInfo();
+    HRESULT exception_bridge(libvlc_exception_t *ex);
 
 private:
     VLCPlugin*  _p_instance;
@@ -474,6 +480,7 @@ public:
 
 protected:
     HRESULT loadTypeInfo();
+    HRESULT exception_bridge(libvlc_exception_t *ex);
 
 private:
     VLCPlugin*  _p_instance;
@@ -534,6 +541,7 @@ public:
 
 protected:
     HRESULT loadTypeInfo();
+    HRESULT exception_bridge(libvlc_exception_t *ex);
 
 private:
     VLCPlugin*      _p_instance;
index f428187e21857ca5d1801a9cfe1e95f0236b9181..850fcbe79a9c157e8333318b53a814ada599beff 100644 (file)
@@ -4,7 +4,7 @@
  * 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
@@ -130,17 +130,7 @@ LibvlcRootNPObject::getProperty(int index, NPVariant &result)
                 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:
                 ;
         }
@@ -171,18 +161,9 @@ RuntimeNPObject::InvokeResult LibvlcRootNPObject::invoke(int index,
         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:
                 ;
         }
@@ -640,10 +621,9 @@ LibvlcPlaylistItemsNPObject::invoke(int index, const NPVariant *args,
 
 LibvlcPlaylistNPObject::~LibvlcPlaylistNPObject()
 {
-    if( isValid() )
-    {
-        if( playlistItemsObj ) NPN_ReleaseObject(playlistItemsObj);
-    }
+    // Why the isValid()?
+    if( isValid() && playlistItemsObj )
+        NPN_ReleaseObject(playlistItemsObj);
 };
 
 const NPUTF8 * const LibvlcPlaylistNPObject::propertyNames[] =
@@ -821,8 +801,8 @@ LibvlcPlaylistNPObject::invoke(int index, const NPVariant *args,
                     }
                 }
 
-                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 )
index db9e9a56a39dd33ecfec54023b89abb8f0fa29b0..b237fbd18497b61856a3e7b384608bfae5ce6629 100644 (file)
@@ -110,3 +110,24 @@ bool RuntimeNPObject::returnInvokeResult(RuntimeNPObject::InvokeResult result)
     }
     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;
+}
+
index ad3c400c37b5985b29b5d937734b0f216e1591f3..1fc8d1cd343e71436d3429134ab5e4873ebe2080 100644 (file)
@@ -127,6 +127,8 @@ protected:
 
     bool returnInvokeResult(InvokeResult result);
 
+    static InvokeResult invokeResultString(const char *,NPVariant &);
+
     bool isPluginRunning()
     {
         return _instance->pdata;
index ed968bf41d74a4a984d57f5043aedf5ce5f0d90a..552d6fdad43fb9a780a511f1e6f5e19b90094110 100644 (file)
@@ -473,7 +473,7 @@ relativeurl:
             if( href )
             {
                 /* prepend base URL */
-                strcpy(href, psz_baseURL);
+                memcpy(href, psz_baseURL, baseLen+1);
 
                 /*
                 ** relative url could be empty,
@@ -488,7 +488,7 @@ relativeurl:
 
                 /* skip over protocol part  */
                 char *pathstart = strchr(href, ':');
-                char *pathend;
+                char *pathend = href+baseLen;
                 if( pathstart )
                 {
                     if( '/' == *(++pathstart) )
@@ -500,7 +500,6 @@ relativeurl:
                     }
                     /* skip over host part */
                     pathstart = strchr(pathstart, '/');
-                    pathend = href+baseLen;
                     if( ! pathstart )
                     {
                         // no path, add a / past end of url (over '\0')
@@ -518,7 +517,6 @@ relativeurl:
                         return NULL;
                     }
                     pathstart = href;
-                    pathend = href+baseLen;
                 }
 
                 /* relative URL made of an absolute path ? */
index 151c615a185ff726e6ac4628af39d2f95fef109a..e0b937bf239041d01dcc0788ec4ac07626ccbb54 100644 (file)
@@ -387,12 +387,6 @@ NPError NPP_SetWindow( NPP instance, NPWindow* window )
     {
         /* 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);
-            libvlc_exception_clear(&ex);
-        }
 
         /* as MacOS X video output is windowless, set viewport */
         libvlc_rectangle_t view, clip;
@@ -422,9 +416,6 @@ NPError NPP_SetWindow( NPP instance, NPWindow* window )
     else if( curwin.window )
     {
         /* change/set parent */
-        libvlc_video_set_parent(p_vlc, 0, &ex);
-        libvlc_exception_clear(&ex);
-
         curwin.window = NULL;
     }
 #endif /* XP_MACOSX */
@@ -457,10 +448,6 @@ NPError NPP_SetWindow( NPP instance, NPWindow* window )
             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);
-            libvlc_exception_clear(&ex);
-
             /* remember new window */
             p_plugin->setWindow(*window);
 
@@ -476,10 +463,6 @@ NPError NPP_SetWindow( NPP instance, NPWindow* window )
         SetWindowLong( oldwin, GWL_WNDPROC, (LONG)(p_plugin->getWindowProc()) );
         p_plugin->setWindowProc(NULL);
 
-        /* change/set parent */
-        libvlc_video_set_parent(p_vlc, 0, &ex);
-        libvlc_exception_clear(&ex);
-
         curwin.window = NULL;
     }
 #endif /* XP_WIN */
@@ -529,10 +512,6 @@ NPError NPP_SetWindow( NPP instance, NPWindow* window )
             XtAddEventHandler( w, ButtonReleaseMask, FALSE,
                                (XtEventHandler)ControlHandler, p_plugin );
 
-            /* set/change parent window */
-            libvlc_video_set_parent( p_vlc, (libvlc_drawable_t) video, &ex );
-            libvlc_exception_clear(&ex);
-
             /* remember window */
             p_plugin->setWindow( *window );
             p_plugin->setVideoWindow( video );
@@ -553,9 +532,6 @@ NPError NPP_SetWindow( NPP instance, NPWindow* window )
     }
     else if( curwin.window )
     {
-        /* change/set parent */
-        libvlc_video_set_parent(p_vlc, 0, &ex);
-        libvlc_exception_clear(&ex);
         curwin.window = NULL;
     }
 #endif /* XP_UNIX */
index 059b4d43541d513b659544cdd713eded09722b3c..290ff2c4c32f92a9b90b91808cfedff3b9c74997 100644 (file)
@@ -28,9 +28,16 @@ pkginclude_HEADERS = \
        ../include/vlc/vlc.h \
        ../include/vlc/deprecated.h \
        ../include/vlc/libvlc.h \
-       ../include/vlc/libvlc_structures.h \
-       ../include/vlc/libvlc_media_list.h \
        ../include/vlc/libvlc_events.h \
+       ../include/vlc/libvlc_media_list.h \
+       ../include/vlc/libvlc_media.h \
+       ../include/vlc/libvlc_media_discoverer.h \
+       ../include/vlc/libvlc_media_library.h \
+       ../include/vlc/libvlc_media_list.h \
+       ../include/vlc/libvlc_media_list_player.h \
+       ../include/vlc/libvlc_media_list_view.h \
+       ../include/vlc/libvlc_media_player.h \
+       ../include/vlc/libvlc_structures.h \
        ../include/vlc/libvlc_vlm.h \
        ../include/vlc/mediacontrol.h \
        ../include/vlc/mediacontrol_structures.h \
@@ -58,6 +65,7 @@ pluginsinclude_HEADERS = \
        ../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 \
@@ -70,6 +78,7 @@ pluginsinclude_HEADERS = \
        ../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 \
@@ -77,6 +86,7 @@ pluginsinclude_HEADERS = \
        ../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 \
@@ -159,7 +169,7 @@ libvlccore_la_CFLAGS = `$(VLC_CONFIG) --cflags libvlccore` \
 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
@@ -176,7 +186,7 @@ libvlc_la_LIBADD = `$(VLC_CONFIG) -libs libvlc` \
        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
@@ -235,22 +245,28 @@ endif
 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 \
@@ -359,6 +375,7 @@ SOURCES_libvlc_common = \
        misc/rand.c \
        misc/mtime.c \
        misc/block.c \
+       misc/fourcc.c \
        misc/es_format.c \
        modules/modules.h \
        modules/modules.c \
@@ -420,6 +437,10 @@ SOURCES_libvlc = \
 
 SOURCES_libvlc_control = \
        control/libvlc_internal.h \
+       control/media_internal.h \
+       control/media_list_internal.h \
+       control/media_list_view_internal.h \
+       control/media_player_internal.h \
        control/core.c \
        control/log.c \
        control/playlist.c \
index 806cb998357999e1929d3e2f2ad9909c00caa980..fde38b3ab78a159d08996192c18102ea87767fa8 100644 (file)
@@ -144,29 +144,29 @@ unsigned int aout_BitsPerSample( vlc_fourcc_t i_format )
 {
     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:
index 0b0ebfa5071636bb13377e61d7746d10c12ec049..8271868079a6d1cbaff60fb606384b35b512c9c0 100644 (file)
@@ -177,8 +177,7 @@ int aout_OutputNew( aout_instance_t * p_aout,
         /* 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
index 6c411f23ed9308c07c889b69aac826845a45c6b9..9b779ab1b420ed9372435da63dcd57bac6d75d10 100644 (file)
  * 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"
 
@@ -744,11 +744,11 @@ int __config_SaveConfigFile( vlc_object_t *p_this, const char *psz_module_name )
 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 ) ) )
@@ -759,7 +759,7 @@ int ConfigStringToKey( const char *psz_key )
         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 ) )
         {
@@ -772,7 +772,10 @@ int ConfigStringToKey( const char *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;
 
@@ -783,20 +786,20 @@ char *ConfigKeyToString( int i_key )
     *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;
         }
     }
index 59b02c9b299986d3995ba1883f5381f099674416..ce4f96db54fe5ebb74dbfac872f5a3e6e10747bf 100644 (file)
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
  *****************************************************************************/
 
-#include "libvlc_internal.h"
 #include <vlc/libvlc.h>
+#include <vlc/libvlc_media.h>
+#include <vlc/libvlc_media_player.h>
 
+#include <vlc_common.h>
 #include <vlc_input.h>
 #include <vlc_aout.h>
 
+#include "libvlc_internal.h"
+#include "media_player_internal.h"
 
 /*
  * Remember to release the returned aout_instance_t since it is locked at
@@ -299,18 +303,8 @@ void libvlc_audio_output_set_device_type( libvlc_instance_t *p_instance,
     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 );
     }
 }
@@ -329,15 +323,7 @@ void libvlc_audio_toggle_mute( libvlc_instance_t *p_instance,
 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,
@@ -390,15 +376,12 @@ int libvlc_audio_get_track_count( libvlc_media_player_t *p_mi,
                                   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;
@@ -447,7 +430,7 @@ int libvlc_audio_get_track( libvlc_media_player_t *p_mi,
             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;
 }
@@ -479,7 +462,7 @@ void libvlc_audio_set_track( libvlc_media_player_t *p_mi, int 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 );
 }
 
index 87251db2b45076a31edf501dde4f6c60cc351a22..69d8b265f3bae0e4632cb3f37d5e6559bb91f32f 100644 (file)
@@ -93,8 +93,8 @@ void libvlc_event_manager_release( libvlc_event_manager_t * p_em )
     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++)
     {
@@ -108,8 +108,14 @@ void libvlc_event_manager_release( libvlc_event_manager_t * p_em )
     }
     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 );
 }
 
index f367e7b8dea64e17615e1c9da93be8d5de2ed374..e5f51401d62cb2f3e00b4977a1793ed208674524 100644 (file)
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
  *****************************************************************************/
 
-#include "libvlc_internal.h"
-#include <vlc/libvlc.h>
 #include <assert.h>
-#include "vlc_arrays.h"
+
+#include <vlc/libvlc.h>
+#include <vlc/libvlc_media.h>
+#include <vlc/libvlc_media_list.h>
+#include <vlc/libvlc_media_list_view.h>
+
+#include "media_list_view_internal.h"
+
 
 //#define DEBUG_FLAT_VIEW
 
index 4d345280ff3a8653fdf2b3b880c5e6d5f91c6997..ee89ba8e5514138dcb6d91c14d3803240457ea95 100644 (file)
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
  *****************************************************************************/
 
-#include "libvlc_internal.h"
 #include <vlc/libvlc.h>
-#include <assert.h>
-#include "vlc_arrays.h"
+#include <vlc/libvlc_media.h>
+#include <vlc/libvlc_media_list.h>
+#include <vlc/libvlc_media_list_view.h>
+
+#include "media_list_internal.h"
+#include "media_list_view_internal.h"
 
 //#define DEBUG_HIERARCHICAL_VIEW
 
index 6ad50af5475518f9237c9b694b8e709b63c4e780..fed48995bca17c45ce350cbe467f88d7a0d1ea1d 100644 (file)
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
  *****************************************************************************/
 
-#include "libvlc_internal.h"
 #include <vlc/libvlc.h>
-#include <assert.h>
-#include "vlc_arrays.h"
+#include <vlc/libvlc_media.h>
+#include <vlc/libvlc_media_list.h>
+#include <vlc/libvlc_media_list_view.h>
+
+#include "media_internal.h" // Abuse, could ans should be removed
+#include "media_list_internal.h" // Abuse, could ans should be removed
+#include "media_list_view_internal.h"
 
 /* FIXME: This version is probably a bit overheaded, and we may want to store
  * the items in a vlc_array_t to speed everything up */
index 417d38e01f11f7048b2c8e7ef50a1d05e8bf66d3..392bcce89bbcd407fad0f36a278c6e26782215df 100644 (file)
 # include "config.h"
 #endif
 
-#include <vlc/vlc.h>
 #include <vlc/libvlc_structures.h>
+#include <vlc/libvlc.h>
+#include <vlc/libvlc_media.h>
+#include <vlc/libvlc_events.h>
 
 #include <vlc_common.h>
-#include <vlc_arrays.h>
-#include <vlc_input.h>
 
 /***************************************************************************
  * Internal creation and destruction functions
@@ -51,8 +51,6 @@ VLC_EXPORT (void, libvlc_InternalWait, ( libvlc_int_t * ) );
  * Opaque structures for libvlc API
  ***************************************************************************/
 
-typedef int * libvlc_media_list_path_t; /* (Media List Player Internal) */
-
 typedef enum libvlc_lock_state_t
 {
     libvlc_Locked,
@@ -71,117 +69,6 @@ struct libvlc_instance_t
     struct libvlc_callback_entry_list_t *p_callback_list;
 };
 
-struct libvlc_media_t
-{
-    libvlc_event_manager_t * p_event_manager;
-    int                b_preparsed;
-    input_item_t      *p_input_item;
-    int                i_refcount;
-    libvlc_instance_t *p_libvlc_instance;
-    libvlc_state_t     state;
-    struct libvlc_media_list_t *p_subitems; /* A media descriptor can have
-                                           * Sub item */
-    void *p_user_data; /* Allows for VLC.framework to hook into media descriptor without creating a new VLCMedia object. */
-};
-
-struct libvlc_media_list_t
-{
-    libvlc_event_manager_t *    p_event_manager;
-    libvlc_instance_t *         p_libvlc_instance;
-    int                         i_refcount;
-    vlc_mutex_t                 object_lock;
-    libvlc_media_t * p_md; /* The media from which the
-                                       * mlist comes, if any. */
-    vlc_array_t                items;
-
-    /* Other way to see that media list */
-    /* Used in flat_media_list.c */
-    libvlc_media_list_t *       p_flat_mlist;
-
-    /* This indicates if this media list is read-only
-     * from a user point of view */
-    bool                  b_read_only;
-};
-
-typedef libvlc_media_list_view_t * (*libvlc_media_list_view_constructor_func_t)( libvlc_media_list_t * p_mlist, libvlc_exception_t * p_e ) ;
-typedef void (*libvlc_media_list_view_release_func_t)( libvlc_media_list_view_t * p_mlv ) ;
-
-typedef int (*libvlc_media_list_view_count_func_t)( libvlc_media_list_view_t * p_mlv,
-        libvlc_exception_t * ) ;
-
-typedef libvlc_media_t *
-        (*libvlc_media_list_view_item_at_index_func_t)(
-                libvlc_media_list_view_t * p_mlv,
-                int index,
-                libvlc_exception_t * ) ;
-
-typedef libvlc_media_list_view_t *
-        (*libvlc_media_list_view_children_at_index_func_t)(
-                libvlc_media_list_view_t * p_mlv,
-                int index,
-                libvlc_exception_t * ) ;
-
-/* A way to see a media list */
-struct libvlc_media_list_view_t
-{
-    libvlc_event_manager_t *    p_event_manager;
-    libvlc_instance_t *         p_libvlc_instance;
-    int                         i_refcount;
-    vlc_mutex_t                 object_lock;
-
-    libvlc_media_list_t *       p_mlist;
-
-    struct libvlc_media_list_view_private_t * p_this_view_data;
-
-    /* Accessors */
-    libvlc_media_list_view_count_func_t              pf_count;
-    libvlc_media_list_view_item_at_index_func_t      pf_item_at_index;
-    libvlc_media_list_view_children_at_index_func_t  pf_children_at_index;
-
-    libvlc_media_list_view_constructor_func_t        pf_constructor;
-    libvlc_media_list_view_release_func_t            pf_release;
-
-    /* Notification callback */
-    void (*pf_ml_item_added)(const libvlc_event_t *, libvlc_media_list_view_t *);
-    void (*pf_ml_item_removed)(const libvlc_event_t *, libvlc_media_list_view_t *);
-};
-
-struct libvlc_media_player_t
-{
-    int                i_refcount;
-    vlc_mutex_t        object_lock;
-    input_thread_t *   p_input_thread;
-    struct libvlc_instance_t * p_libvlc_instance; /* Parent instance */
-    libvlc_media_t * p_md; /* current media descriptor */
-    libvlc_event_manager_t * p_event_manager;
-    struct
-    {
-        void *hwnd;
-        void *nsobject;
-        uint32_t xid;
-        uint32_t agl;
-    } drawable;
-
-    bool        b_own_its_input_thread;
-};
-
-struct libvlc_media_library_t
-{
-    libvlc_event_manager_t * p_event_manager;
-    libvlc_instance_t *      p_libvlc_instance;
-    int                      i_refcount;
-    libvlc_media_list_t *    p_mlist;
-};
-
-struct libvlc_media_discoverer_t
-{
-    libvlc_event_manager_t * p_event_manager;
-    libvlc_instance_t *      p_libvlc_instance;
-    services_discovery_t *   p_sd;
-    libvlc_media_list_t *    p_mlist;
-    bool                     running;
-    vlc_dictionary_t         catname_to_submedialist;
-};
 
 /*
  * Event Handling
@@ -249,74 +136,6 @@ typedef struct libvlc_event_manager_t
 /***************************************************************************
  * Other internal functions
  ***************************************************************************/
-input_thread_t *libvlc_get_input_thread(
-     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 *,
-        libvlc_exception_t * );
-
-void libvlc_media_set_state(
-        libvlc_media_t *, libvlc_state_t,
-        libvlc_exception_t * );
-
-/* Media List */
-void _libvlc_media_list_add_media(
-        libvlc_media_list_t * p_mlist,
-        libvlc_media_t * p_md,
-        libvlc_exception_t * p_e );
-
-void _libvlc_media_list_insert_media(
-        libvlc_media_list_t * p_mlist,
-        libvlc_media_t * p_md, int index,
-        libvlc_exception_t * p_e );
-
-void _libvlc_media_list_remove_index(
-        libvlc_media_list_t * p_mlist, int index,
-        libvlc_exception_t * p_e );
-
-/* Media List View */
-libvlc_media_list_view_t * libvlc_media_list_view_new(
-        libvlc_media_list_t * p_mlist,
-        libvlc_media_list_view_count_func_t pf_count,
-        libvlc_media_list_view_item_at_index_func_t pf_item_at_index,
-        libvlc_media_list_view_children_at_index_func_t pf_children_at_index,
-        libvlc_media_list_view_constructor_func_t pf_constructor,
-        libvlc_media_list_view_release_func_t pf_release,
-        void * this_view_data,
-        libvlc_exception_t * p_e );
-
-void libvlc_media_list_view_set_ml_notification_callback(
-        libvlc_media_list_view_t * p_mlv,
-        void (*item_added)(const libvlc_event_t *, libvlc_media_list_view_t *),
-        void (*item_removed)(const libvlc_event_t *, libvlc_media_list_view_t *) );
-
-void libvlc_media_list_view_will_delete_item(
-        libvlc_media_list_view_t * p_mlv,
-        libvlc_media_t * p_item, int index );
-
-void libvlc_media_list_view_item_deleted(
-        libvlc_media_list_view_t * p_mlv,
-        libvlc_media_t * p_item, int index );
-
-void libvlc_media_list_view_will_add_item (
-        libvlc_media_list_view_t * p_mlv,
-        libvlc_media_t * p_item, int index );
-
-void libvlc_media_list_view_item_added(
-        libvlc_media_list_view_t * p_mlv,
-        libvlc_media_t * p_item, int index );
 
 /* Events */
 libvlc_event_manager_t * libvlc_event_manager_new(
@@ -335,12 +154,6 @@ void libvlc_event_send(
         libvlc_event_manager_t * p_em,
         libvlc_event_t * p_event );
 
-/* Media player - audio, video */
-libvlc_track_description_t * libvlc_get_track_description(
-        libvlc_media_player_t *p_mi,
-        const char *psz_variable,
-        libvlc_exception_t *p_e );
-
 
 /* Exception shorcuts */
 
index 400c138bf1c51d5588b624310fa0ed5973ddbb3f..566ce11b24b1a2aac6e4a45531946b00b78378c9 100644 (file)
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
  *****************************************************************************/
 
-#include "libvlc_internal.h"
-#include "libvlc.h"
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
 #include <vlc/libvlc.h>
+#include <vlc/libvlc_media.h>
+#include <vlc/libvlc_media_list.h> // For the subitems, here for convenience
+#include <vlc/libvlc_events.h>
+
+#include <vlc_common.h>
 #include <vlc_input.h>
 #include <vlc_meta.h>
+#include <vlc_playlist.h> /* For the preparser */
 
-/* For the preparser */
-#include <vlc_playlist.h>
+#include "libvlc.h"
+
+#include "libvlc_internal.h"
+#include "media_internal.h"
 
 static const vlc_meta_type_t libvlc_to_vlc_meta[] =
 {
index 4615d5f51fdb0f99f0f70c26fde5d614d3b94132..94b4b0aef6787fbf4526b6f113e16421a55bf991 100644 (file)
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
  *****************************************************************************/
 
-#include "libvlc_internal.h"
-#include <vlc/libvlc.h>
 #include <assert.h>
-#include "vlc_services_discovery.h"
+
+#include <vlc/libvlc.h>
+#include <vlc/libvlc_media.h>
+#include <vlc/libvlc_media_list.h>
+#include <vlc/libvlc_media_discoverer.h>
+#include <vlc/libvlc_events.h>
+
+#include <vlc_services_discovery.h>
+
+#include "libvlc_internal.h"
+#include "media_internal.h" // libvlc_media_new_from_input_item()
+#include "media_list_internal.h" // _libvlc_media_list_add_media()
+
+struct libvlc_media_discoverer_t
+{
+    libvlc_event_manager_t * p_event_manager;
+    libvlc_instance_t *      p_libvlc_instance;
+    services_discovery_t *   p_sd;
+    libvlc_media_list_t *    p_mlist;
+    bool                     running;
+    vlc_dictionary_t         catname_to_submedialist;
+};
 
 /*
  * Private functions
diff --git a/src/control/media_internal.h b/src/control/media_internal.h
new file mode 100644 (file)
index 0000000..48a6fa8
--- /dev/null
@@ -0,0 +1,55 @@
+/*****************************************************************************
+ * libvlc_internal.h : Definition of opaque structures for libvlc exported API
+ * Also contains some internal utility functions
+ *****************************************************************************
+ * Copyright (C) 2005-2009 the VideoLAN team
+ * $Id$
+ *
+ * Authors: Clément Stenac <zorglub@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.
+ *****************************************************************************/
+
+#ifndef _LIBVLC_MEDIA_INTERNAL_H
+#define _LIBVLC_MEDIA_INTERNAL_H 1
+
+#include <vlc/libvlc.h>
+#include <vlc/libvlc_media.h>
+
+#include <vlc_common.h>
+#include <vlc_input.h>
+
+struct libvlc_media_t
+{
+    libvlc_event_manager_t * p_event_manager;
+    int                b_preparsed;
+    input_item_t      *p_input_item;
+    int                i_refcount;
+    libvlc_instance_t *p_libvlc_instance;
+    libvlc_state_t     state;
+    VLC_FORWARD_DECLARE_OBJECT(libvlc_media_list_t*) p_subitems; /* A media descriptor can have Sub items. This is the only dependancy we really have on media_list */
+    void *p_user_data;
+};
+
+/* Media Descriptor */
+libvlc_media_t * libvlc_media_new_from_input_item(
+        libvlc_instance_t *, input_item_t *,
+        libvlc_exception_t * );
+
+void libvlc_media_set_state(
+        libvlc_media_t *, libvlc_state_t,
+        libvlc_exception_t * );
+
+#endif
index a85c1b92e333063f1c5d48f61124cb75732b8249..7be475f0d4cc2d5ecde4a704a629c18be6e6a9a5 100644 (file)
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
  *****************************************************************************/
-#include "libvlc_internal.h"
+
 #include <vlc/libvlc.h>
-#include "libvlc.h"
-#include "vlc_arrays.h"
+#include <vlc/libvlc_media.h>
+#include <vlc/libvlc_media_list.h>
+#include <vlc/libvlc_media_library.h>
+#include <vlc/libvlc_events.h>
+
+#include <vlc_common.h>
+
+#include "libvlc_internal.h"
+
+struct libvlc_media_library_t
+{
+    libvlc_event_manager_t * p_event_manager;
+    libvlc_instance_t *      p_libvlc_instance;
+    int                      i_refcount;
+    libvlc_media_list_t *    p_mlist;
+};
+
 
 /*
  * Private functions
index e043c4ccd2ce942acf1329789b7dde2b0f260ef9..5fa32527b79bd15478387ed3d05b741fb7241a86 100644 (file)
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
  *****************************************************************************/
 
-#include "libvlc_internal.h"
-#include <vlc/libvlc.h>
 #include <assert.h>
-#include "vlc_arrays.h"
+
+#include <vlc/libvlc.h>
+#include <vlc/libvlc_media.h>
+#include <vlc/libvlc_media_list.h>
+#include <vlc/libvlc_events.h>
+
+#include <vlc_common.h>
+#include <vlc_input.h>
+
+#include "libvlc_internal.h"
+#include "media_internal.h" // libvlc_media_new_from_input_item()
+#include "media_list_internal.h"
 
 typedef enum EventPlaceInTime {
     EventWillHappen,
@@ -170,6 +179,7 @@ libvlc_media_list_new( libvlc_instance_t * p_inst,
     }
 
     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;
@@ -188,21 +198,20 @@ void libvlc_media_list_release( libvlc_media_list_t * p_mlist )
     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++ )
     {
@@ -223,9 +232,9 @@ void libvlc_media_list_release( libvlc_media_list_t * p_mlist )
  **************************************************************************/
 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 );
 }
 
 
@@ -279,8 +288,7 @@ void libvlc_media_list_set_media( libvlc_media_list_t * p_mlist,
 {
     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 );
diff --git a/src/control/media_list_internal.h b/src/control/media_list_internal.h
new file mode 100644 (file)
index 0000000..a9ee2c7
--- /dev/null
@@ -0,0 +1,73 @@
+/*****************************************************************************
+ * libvlc_internal.h : Definition of opaque structures for libvlc exported API
+ * Also contains some internal utility functions
+ *****************************************************************************
+ * Copyright (C) 2005-2009 the VideoLAN team
+ * $Id$
+ *
+ * Authors: Clément Stenac <zorglub@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.
+ *****************************************************************************/
+
+#ifndef _LIBVLC_MEDIA_LIST_INTERNAL_H
+#define _LIBVLC_MEDIA_LIST_INTERNAL_H 1
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include <vlc/vlc.h>
+#include <vlc/libvlc_structures.h>
+#include <vlc/libvlc_media.h>
+
+#include <vlc_common.h>
+
+struct libvlc_media_list_t
+{
+    libvlc_event_manager_t *    p_event_manager;
+    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;
+
+    /* Other way to see that media list */
+    /* Used in flat_media_list.c */
+    libvlc_media_list_t *       p_flat_mlist;
+
+    /* This indicates if this media list is read-only
+     * from a user point of view */
+    bool                  b_read_only;
+};
+
+/* Media List */
+void _libvlc_media_list_add_media(
+        libvlc_media_list_t * p_mlist,
+        libvlc_media_t * p_md,
+        libvlc_exception_t * p_e );
+
+void _libvlc_media_list_insert_media(
+        libvlc_media_list_t * p_mlist,
+        libvlc_media_t * p_md, int index,
+        libvlc_exception_t * p_e );
+
+void _libvlc_media_list_remove_index(
+        libvlc_media_list_t * p_mlist, int index,
+        libvlc_exception_t * p_e );
+
+#endif
index c3e698d06ded674e221f8b48eebf74f10c36b8e8..a73dbe0beb0fac3fdfdcafaa2fa74bc3871dc737 100644 (file)
@@ -25,6 +25,8 @@
 #ifndef _LIBVLC_MEDIA_LIST_PATH_H
 #define _LIBVLC_MEDIA_LIST_PATH_H 1
 
+typedef int * libvlc_media_list_path_t; /* (Media List Player Internal) */
+
 /**************************************************************************
  *       path_empty (Media List Player Internal)
  **************************************************************************/
@@ -47,9 +49,9 @@ static inline libvlc_media_list_path_t libvlc_media_list_path_with_root_index( i
 }
 
 /**************************************************************************
- *       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++ );
@@ -61,10 +63,10 @@ static inline int libvlc_media_list_path_deepness( libvlc_media_list_path_t path
  **************************************************************************/
 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;
 }
 
 /**************************************************************************
@@ -73,11 +75,11 @@ static inline void libvlc_media_list_path_append( libvlc_media_list_path_t * p_p
 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;
 }
 
@@ -87,9 +89,9 @@ static inline libvlc_media_list_path_t libvlc_media_list_path_copy_by_appending(
 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;
 }
 
index 6df015fa918293c89c9a8c37dd8c96b6645f4482..1ed1af0b324b10fb3d79127718a99877066d19ef 100644 (file)
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
  *****************************************************************************/
-#include "libvlc_internal.h"
+
 #include <vlc/libvlc.h>
+#include <vlc/libvlc_media.h>
+#include <vlc/libvlc_media_list.h>
+#include <vlc/libvlc_media_player.h>
+#include <vlc/libvlc_media_list_player.h>
+#include <vlc/libvlc_events.h>
+
+#include "libvlc_internal.h"
+
+#include "media_internal.h" // Abuse, could and should be removed
 #include "media_list_path.h"
 
 
@@ -77,23 +86,23 @@ get_next_path( libvlc_media_list_player_t * p_mlp )
                             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 );
@@ -277,10 +286,13 @@ libvlc_media_list_player_new( libvlc_instance_t * p_instance,
     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 );
@@ -319,6 +331,7 @@ void libvlc_media_list_player_release( libvlc_media_list_player_t * p_mlp )
     }
 
     free( p_mlp->current_playing_item_path );
+    libvlc_release( p_mlp->p_libvlc_instance );
     free( p_mlp );
 }
 
index 5ed71d0f9d77e395fdc6ffade8eb2204261209db..62818f8274c89b37848e43f52cdff28d70a282bf 100644 (file)
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
  *****************************************************************************/
 
-#include "libvlc_internal.h"
 #include <vlc/libvlc.h>
-#include <assert.h>
-#include "vlc_arrays.h"
+#include <vlc/libvlc_media.h>
+#include <vlc/libvlc_media_list.h>
+#include <vlc/libvlc_media_list_view.h>
+#include <vlc/libvlc_events.h>
+
+#include "libvlc_internal.h"  // Abuse, could and should be removed
+
+#include "media_internal.h"  // Abuse, could and should be removed
+#include "media_list_internal.h"  // Abuse, could and should be removed
+#include "media_list_view_internal.h"
 
 //#define DEBUG_FLAT_LIST
 
diff --git a/src/control/media_list_view_internal.h b/src/control/media_list_view_internal.h
new file mode 100644 (file)
index 0000000..b453478
--- /dev/null
@@ -0,0 +1,113 @@
+/*****************************************************************************
+ * libvlc_internal.h : Definition of opaque structures for libvlc exported API
+ * Also contains some internal utility functions
+ *****************************************************************************
+ * Copyright (C) 2005-2009 the VideoLAN team
+ * $Id$
+ *
+ * Authors: Clément Stenac <zorglub@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.
+ *****************************************************************************/
+
+#ifndef LIBVLC_MEDIA_LIST_VIEW_INTERNAL_H
+#define LIBVLC_MEDIA_LIST_VIEW_INTERNAL_H 1
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include <vlc/vlc.h>
+#include <vlc/libvlc_structures.h>
+#include <vlc/libvlc_media_list.h>
+
+#include <vlc_common.h>
+
+typedef libvlc_media_list_view_t * (*libvlc_media_list_view_constructor_func_t)( libvlc_media_list_t * p_mlist, libvlc_exception_t * p_e ) ;
+typedef void (*libvlc_media_list_view_release_func_t)( libvlc_media_list_view_t * p_mlv ) ;
+
+typedef int (*libvlc_media_list_view_count_func_t)( libvlc_media_list_view_t * p_mlv,
+        libvlc_exception_t * ) ;
+
+typedef libvlc_media_t *
+        (*libvlc_media_list_view_item_at_index_func_t)(
+                libvlc_media_list_view_t * p_mlv,
+                int index,
+                libvlc_exception_t * ) ;
+
+typedef libvlc_media_list_view_t *
+        (*libvlc_media_list_view_children_at_index_func_t)(
+                libvlc_media_list_view_t * p_mlv,
+                int index,
+                libvlc_exception_t * ) ;
+
+/* A way to see a media list */
+struct libvlc_media_list_view_t
+{
+    libvlc_event_manager_t *    p_event_manager;
+    libvlc_instance_t *         p_libvlc_instance;
+    int                         i_refcount;
+    vlc_mutex_t                 object_lock;
+
+    libvlc_media_list_t *       p_mlist;
+
+    struct libvlc_media_list_view_private_t * p_this_view_data;
+
+    /* Accessors */
+    libvlc_media_list_view_count_func_t              pf_count;
+    libvlc_media_list_view_item_at_index_func_t      pf_item_at_index;
+    libvlc_media_list_view_children_at_index_func_t  pf_children_at_index;
+
+    libvlc_media_list_view_constructor_func_t        pf_constructor;
+    libvlc_media_list_view_release_func_t            pf_release;
+
+    /* Notification callback */
+    void (*pf_ml_item_added)(const libvlc_event_t *, libvlc_media_list_view_t *);
+    void (*pf_ml_item_removed)(const libvlc_event_t *, libvlc_media_list_view_t *);
+};
+
+/* Media List View */
+libvlc_media_list_view_t * libvlc_media_list_view_new(
+        libvlc_media_list_t * p_mlist,
+        libvlc_media_list_view_count_func_t pf_count,
+        libvlc_media_list_view_item_at_index_func_t pf_item_at_index,
+        libvlc_media_list_view_children_at_index_func_t pf_children_at_index,
+        libvlc_media_list_view_constructor_func_t pf_constructor,
+        libvlc_media_list_view_release_func_t pf_release,
+        void * this_view_data,
+        libvlc_exception_t * p_e );
+
+void libvlc_media_list_view_set_ml_notification_callback(
+        libvlc_media_list_view_t * p_mlv,
+        void (*item_added)(const libvlc_event_t *, libvlc_media_list_view_t *),
+        void (*item_removed)(const libvlc_event_t *, libvlc_media_list_view_t *) );
+
+void libvlc_media_list_view_will_delete_item(
+        libvlc_media_list_view_t * p_mlv,
+        libvlc_media_t * p_item, int index );
+
+void libvlc_media_list_view_item_deleted(
+        libvlc_media_list_view_t * p_mlv,
+        libvlc_media_t * p_item, int index );
+
+void libvlc_media_list_view_will_add_item (
+        libvlc_media_list_view_t * p_mlv,
+        libvlc_media_t * p_item, int index );
+
+void libvlc_media_list_view_item_added(
+        libvlc_media_list_view_t * p_mlv,
+        libvlc_media_t * p_item, int index );
+
+#endif
index 51a4739eab78b4e0cbbe2c0bdd1f453e7aa43656..347fdf0d2eaaf0bd6c46a43dc1889a99177334c1 100644 (file)
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
  *****************************************************************************/
 
-#include "libvlc_internal.h"
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include <assert.h>
 
 #include <vlc/libvlc.h>
+#include <vlc/libvlc_media.h>
+#include <vlc/libvlc_events.h>
+
 #include <vlc_demux.h>
 #include <vlc_input.h>
 #include <vlc_vout.h>
+
 #include "libvlc.h"
-#include <assert.h>
+
+#include "libvlc_internal.h"
+#include "media_internal.h" // libvlc_media_set_state()
+#include "media_player_internal.h"
 
 static int
 input_seekable_changed( vlc_object_t * p_this, char const * psz_cmd,
@@ -78,24 +89,20 @@ static void release_input_thread( libvlc_media_player_t *p_mi, bool b_input_abor
 
     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 );
 
@@ -219,7 +226,7 @@ input_event_changed( vlc_object_t * p_this, char const * psz_cmd,
         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 */
@@ -236,11 +243,20 @@ input_event_changed( vlc_object_t * p_this, char const * psz_cmd,
                                                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.
  *
@@ -281,7 +297,6 @@ libvlc_media_player_new( libvlc_instance_t * p_libvlc_instance,
     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 );
@@ -317,6 +332,8 @@ libvlc_media_player_new( libvlc_instance_t * p_libvlc_instance,
             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,
@@ -360,78 +377,34 @@ libvlc_media_player_new_from_media(
     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;
 
-    if( !p_mi )
-        return;
-
-    libvlc_exception_init( &p_e );
+    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 );
 }
 
@@ -442,33 +415,15 @@ void libvlc_media_player_destroy( libvlc_media_player_t *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 );
 
-    /* Detach Callback from the main libvlc object */
-    var_DelCallback( p_mi->p_libvlc_instance->p_libvlc_int,
-                     "vout-snapshottaken", SnapshotTakenCallback, p_mi );
-
-    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 );
 }
 
 /**************************************************************************
@@ -716,31 +671,17 @@ void libvlc_media_player_stop( libvlc_media_player_t *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;
@@ -749,7 +690,7 @@ void libvlc_media_player_set_nsobject( libvlc_media_player_t *p_mi,
 /**************************************************************************
  * get_nsobject
  **************************************************************************/
-uint32_t libvlc_media_player_get_nsobject( libvlc_media_player_t *p_mi )
+void * libvlc_media_player_get_nsobject( libvlc_media_player_t *p_mi )
 {
     return p_mi->drawable.nsobject;
 }
@@ -1238,6 +1179,8 @@ libvlc_track_description_t *
                                       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;
@@ -1245,23 +1188,16 @@ libvlc_track_description_t *
     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;
@@ -1274,11 +1210,8 @@ libvlc_track_description_t *
             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;
@@ -1289,7 +1222,9 @@ libvlc_track_description_t *
         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;
diff --git a/src/control/media_player_internal.h b/src/control/media_player_internal.h
new file mode 100644 (file)
index 0000000..3eeda53
--- /dev/null
@@ -0,0 +1,62 @@
+/*****************************************************************************
+ * libvlc_internal.h : Definition of opaque structures for libvlc exported API
+ * Also contains some internal utility functions
+ *****************************************************************************
+ * Copyright (C) 2005-2009 the VideoLAN team
+ * $Id$
+ *
+ * Authors: Clément Stenac <zorglub@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.
+ *****************************************************************************/
+
+#ifndef _LIBVLC_MEDIA_PLAYER_INTERNAL_H
+#define _LIBVLC_MEDIA_PLAYER_INTERNAL_H 1
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include <vlc/vlc.h>
+#include <vlc/libvlc_structures.h>
+#include <vlc/libvlc_media.h>
+
+struct libvlc_media_player_t
+{
+    int                i_refcount;
+    vlc_mutex_t        object_lock;
+    input_thread_t *   p_input_thread;
+    struct libvlc_instance_t * p_libvlc_instance; /* Parent instance */
+    libvlc_media_t * p_md; /* current media descriptor */
+    libvlc_event_manager_t * p_event_manager;
+    struct
+    {
+        void *hwnd;
+        void *nsobject;
+        uint32_t xid;
+        uint32_t agl;
+    } drawable;
+};
+
+/* Media player - audio, video */
+input_thread_t *libvlc_get_input_thread(libvlc_media_player_t *, libvlc_exception_t * );
+
+
+libvlc_track_description_t * libvlc_get_track_description(
+        libvlc_media_player_t *p_mi,
+        const char *psz_variable,
+        libvlc_exception_t *p_e );
+
+#endif
index 401adcfaf5cd1559153bacf7a4dab96edd66171a..cb28ccfacbe8fae680e1282d0cae041ce7e3b37b 100644 (file)
 #endif
 #include "mediacontrol_internal.h"
 #include "libvlc_internal.h"
+#include "media_player_internal.h"
 
 #include <vlc/mediacontrol.h>
 #include <vlc/libvlc.h>
 
 #include <vlc_vout.h>
+#include <vlc_input.h>
 #include <vlc_osd.h>
 #include <vlc_block.h>
 
index 76acbd8f34974c56fac999815c364ff5164993e8..22d593efba1c895e28bf81c13acd3406a8b7e1ab 100644 (file)
 
 #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;
-}
-
index 939ed5941783135e87d7189cc77e598edf4c2c09..3b79f555f9a22e112425b05aff680c6335405b82 100644 (file)
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
  *****************************************************************************/
 
-#include "libvlc_internal.h"
-
 #include <vlc/libvlc.h>
+#include <vlc/libvlc_media.h>
+#include <vlc/libvlc_media_player.h>
+
+#include <vlc_common.h>
 #include <vlc_input.h>
 #include <vlc_vout.h>
 
+#include "media_player_internal.h"
+
 /*
  * Remember to release the returned vout_thread_t.
  */
@@ -187,157 +191,6 @@ int libvlc_media_player_has_vout( libvlc_media_player_t *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 )
 {
@@ -423,7 +276,7 @@ int libvlc_video_get_spu( libvlc_media_player_t *p_mi,
             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;
 }
@@ -432,15 +285,12 @@ int libvlc_video_get_spu_count( libvlc_media_player_t *p_mi,
                                 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;
@@ -485,7 +335,7 @@ void libvlc_video_set_spu( libvlc_media_player_t *p_mi, int i_spu,
     }
 
 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 );
 }
 
@@ -647,7 +497,7 @@ void libvlc_toggle_teletext( libvlc_media_player_t *p_mi,
             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 );
@@ -657,15 +507,12 @@ int libvlc_video_get_track_count( libvlc_media_player_t *p_mi,
                                   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;
@@ -708,7 +555,7 @@ int libvlc_video_get_track( libvlc_media_player_t *p_mi,
             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;
 }
@@ -739,17 +586,6 @@ void libvlc_video_set_track( libvlc_media_player_t *p_mi, int 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;
-}
index 5c1b15f5720bed37758602860eedf9695672dfe2..30c598c208e7126cabed68ead822ca920dea5fe7 100644 (file)
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
  *****************************************************************************/
 
-#include "libvlc_internal.h"
-
 #include <vlc/libvlc.h>
+#include <vlc/libvlc_vlm.h>
 #include <vlc_es.h>
 #include <vlc_input.h>
 #include <vlc_vlm.h>
 
+#include "libvlc_internal.h"
+
 #if 0
 /* local function to be used in libvlc_vlm_show_media only */
 static char* recurse_answer( char* psz_prefix, vlm_message_t *p_answer ) {
index 8cf6addf5fee5f334718bcb2502bd55f1e10038d..450905b90bd2f445b3180c493cc037196740c7aa 100644 (file)
@@ -140,7 +140,7 @@ int input_vaControl( input_thread_t *p_input, int i_query, va_list args )
             char *psz_format = (char *)va_arg( args, char * );
 
             char *psz_value;
-            
+
             if( vasprintf( &psz_value, psz_format, args ) == -1 )
                 return VLC_EGENERIC;
 
index dd2946067aa60b7a4c5ccef16fbc00f4a64a4310..b795c7cba52cf2dc83746825f299d1d80332e4ca 100644 (file)
@@ -52,7 +52,8 @@
 
 #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 * );
@@ -94,6 +95,7 @@ struct decoder_owner_sys_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;
@@ -261,37 +263,22 @@ int decoder_GetDisplayRate( decoder_t *p_dec )
  * \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 )
@@ -437,7 +424,7 @@ int input_DecoderSetCcState( decoder_t *p_dec, bool b_decode, int i_channel )
         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" );
@@ -687,19 +674,18 @@ static void DecoderUnsupportedCodec( decoder_t *p_dec, vlc_fourcc_t codec )
  *
  * \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;
 
@@ -737,6 +723,7 @@ static decoder_t * CreateDecoder( input_thread_t *p_input,
     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 )
@@ -763,17 +750,17 @@ static decoder_t * CreateDecoder( input_thread_t *p_input,
     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,
@@ -800,7 +787,7 @@ static decoder_t * CreateDecoder( input_thread_t *p_input,
     /* 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] )
             {
@@ -841,7 +828,7 @@ static decoder_t * CreateDecoder( input_thread_t *p_input,
 
     /* */
     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;
@@ -849,7 +836,7 @@ static decoder_t * CreateDecoder( input_thread_t *p_input,
             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;
@@ -1694,7 +1681,7 @@ static void DecoderFlushBuffering( decoder_t *p_dec )
 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 =
@@ -1850,7 +1837,7 @@ static void DecoderProcessAudio( decoder_t *p_dec, block_t *p_block, bool b_flus
 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;
@@ -1934,7 +1921,7 @@ static void DecoderProcess( decoder_t *p_dec, block_t *p_block )
     }
 
 #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;
index 4d983212f84ebcb8731dd693ad5c06e975a7122a..3a69970fd741756d2f434cf062a9f202f2567e47 100644 (file)
@@ -301,7 +301,7 @@ int demux_vaControlHelper( stream_t *s,
  ****************************************************************************/
 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 )
     {
@@ -329,6 +329,7 @@ decoder_t *demux_PacketizerNew( demux_t *p_demux, es_format_t *p_fmt, const char
 
     return p_packetizer;
 }
+
 void demux_PacketizerDestroy( decoder_t *p_packetizer )
 {
     if( p_packetizer->p_module )
index 22d40261304b225b9b3b728ae7f0eca2c6c13c55..655e6043b45bd58e8e71b3078d977d30bbb43b14 100644 (file)
@@ -37,6 +37,7 @@
 #include <vlc_es_out.h>
 #include <vlc_block.h>
 #include <vlc_aout.h>
+#include <vlc_fourcc.h>
 
 #include "input_internal.h"
 #include "clock.h"
@@ -211,7 +212,7 @@ static inline int EsOutGetClosedCaptionsChannel( vlc_fourcc_t fcc )
 }
 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;
 }
 
 /*****************************************************************************
@@ -1386,6 +1387,10 @@ static es_out_id_t *EsOutAdd( es_out_t *out, const es_format_t *fmt )
     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;
@@ -1684,7 +1689,7 @@ static void EsOutSelect( es_out_t *out, es_out_id_t *es, bool b_force )
                 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 )
     {
@@ -1920,19 +1925,13 @@ static int EsOutSend( es_out_t *out, es_out_id_t *es, block_t *p_block )
     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 )
@@ -2445,20 +2444,24 @@ static int EsOutControlLocked( es_out_t *out, int i_query, va_list args )
             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:
@@ -2673,8 +2676,15 @@ static void EsOutUpdateInfo( es_out_t *out, es_out_id_t *es, const es_format_t *
         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"),
index 242bf1fd01b61e6bf5c45f7fd9deb58499abe022..6703dfed395c64a1bbc418aed0767fa061a65521 100644 (file)
@@ -60,8 +60,7 @@ void input_SendEventAbort( input_thread_t *p_input )
     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;
 
@@ -73,13 +72,22 @@ void input_SendEventTimes( input_thread_t *p_input,
     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 )
 {
index b6ed2bfc607af1652b0f7645278da43af2526bc5..6fc9d9935253b4985debe3b675793a67d1155b99 100644 (file)
@@ -35,7 +35,8 @@
  *****************************************************************************/
 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 );
index cfb306575a9ae015abc31eb3135a6a33b46de8f7..1fa7b611bc0a026249abb40ce4a639fdfe035f08 100644 (file)
@@ -296,7 +296,7 @@ static void ObjectKillChildrens( input_thread_t *p_input, vlc_object_t *p_obj )
     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 );
@@ -1123,7 +1123,7 @@ static void InitPrograms( input_thread_t * p_input )
             }
             else
             {
-                var_Change( p_input, "programs", VLC_VAR_FREELIST, &val, NULL );
+                var_FreeList( &val, NULL );
             }
         }
     }
@@ -1138,7 +1138,7 @@ static void InitPrograms( input_thread_t * p_input )
     {
         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
     {
@@ -1203,7 +1203,9 @@ static int Init( input_thread_t * p_input )
         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 )
     {
@@ -3226,7 +3228,7 @@ static void SubtitleAdd( input_thread_t *p_input, char *psz_subtitle, bool b_for
             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 );
     }
 }
 
index c82b2a0939659be1e95b70ed373d8aa8c181014d..2397c13c55c4ce397afa406cf9b56a7499a2acaa 100644 (file)
@@ -16,9 +16,9 @@
  * 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
@@ -371,29 +371,32 @@ void input_item_SetURI( input_item_t *p_i, const char *psz_uri )
     /* 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 );
index c48986a1f65880de085d95872e4b2939a5d94a12..00871e4a98612afad9fd8f0c2882b5ad4b2ad5fc 100644 (file)
@@ -37,6 +37,7 @@
 # include "config.h"
 #endif
 
+#include <assert.h>
 #include <vlc_common.h>
 
 #include <vlc_aout.h>
@@ -58,36 +59,55 @@ static void * MonitorLibVLCDeath( vlc_object_t *p_this );
 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
@@ -102,31 +122,18 @@ intf_thread_t* __intf_Create( vlc_object_t *p_this, const char *psz_module )
     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) */
@@ -136,49 +143,79 @@ int intf_RunThread( intf_thread_t *p_intf )
                                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 */
 
@@ -190,38 +227,8 @@ void intf_StopThread( intf_thread_t *p_intf )
 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;
 }
 
@@ -250,30 +257,16 @@ static int AddIntfCallback( vlc_object_t *p_this, char const *psz_cmd,
                          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;
 }
-
index 2f5d2f13f87773ce0600426db22478553188abfd..519efa1ede4360db70536374148931682500592b 100644 (file)
@@ -885,7 +885,7 @@ int libvlc_InternalInit( libvlc_int_t *p_libvlc, int i_argc,
         }
         if( asprintf( &psz_temp, "%s,none", psz_module ) != -1)
         {
-            libvlc_InternalAddIntf( p_libvlc, psz_temp );
+            intf_Create( p_libvlc, psz_temp );
             free( psz_temp );
         }
     }
@@ -895,7 +895,7 @@ int libvlc_InternalInit( libvlc_int_t *p_libvlc, int i_argc,
     /*
      * 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
@@ -903,12 +903,12 @@ int libvlc_InternalInit( libvlc_int_t *p_libvlc, int i_argc,
     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" );
+        intf_Create( p_libvlc, "inhibit,none" );
 #endif
 
     /*
@@ -918,21 +918,21 @@ int libvlc_InternalInit( libvlc_int_t *p_libvlc, int i_argc,
 #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 )
         {
@@ -946,12 +946,12 @@ int libvlc_InternalInit( libvlc_int_t *p_libvlc, int i_argc,
 
     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
@@ -973,14 +973,6 @@ int libvlc_InternalInit( libvlc_int_t *p_libvlc, int i_argc,
     }
 #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 );
@@ -1040,14 +1032,8 @@ void libvlc_InternalCleanup( libvlc_int_t *p_libvlc )
 
     /* 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 */
@@ -1146,9 +1132,6 @@ void libvlc_InternalDestroy( libvlc_int_t *p_libvlc )
  */
 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;
 
@@ -1172,25 +1155,14 @@ int libvlc_InternalAddIntf( libvlc_int_t *p_libvlc, char const *psz_module )
     }
 
     /* 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;
 
index 94c21304d2c633dc4cea27cc08d0277de549b5c9..97e4adefa9bbbd098411fb15ba4e9db65d800c25 100644 (file)
@@ -53,8 +53,6 @@ void system_End       ( libvlc_int_t * );
 #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
@@ -225,6 +223,11 @@ typedef struct libvlc_priv_t
 #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;
 
@@ -234,6 +237,7 @@ static inline libvlc_priv_t *libvlc_priv (libvlc_int_t *libvlc)
 }
 
 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)
 
index 8da4a03fe3eeceaff94622b89b1c2c957c21f121..c8c489b4c042927fc5966a641f959dc4e203d6b9 100644 (file)
@@ -119,7 +119,6 @@ libvlc_media_new
 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
@@ -142,7 +141,6 @@ libvlc_media_player_has_vout
 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
@@ -169,23 +167,7 @@ libvlc_media_set_state
 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
@@ -193,12 +175,10 @@ libvlc_set_log_verbosity
 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
@@ -209,19 +189,13 @@ libvlc_video_get_track
 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
index d72c10f8051a2271ad641244972b59e4f3f6cc6d..0b0f405ea350cab89142b449dd4cfd20486faacc 100644 (file)
@@ -203,10 +203,8 @@ input_SplitMRL
 input_Start
 input_Stop
 input_vaControl
-__intf_Create
+intf_Create
 __intf_Eject
-intf_RunThread
-intf_StopThread
 IsUTF8
 libvlc_InternalAddIntf
 libvlc_InternalCleanup
@@ -279,6 +277,7 @@ picture_CopyPixels
 picture_Delete
 picture_Export
 picture_New
+picture_Setup
 plane_CopyPixels
 playlist_Add
 playlist_AddExt
@@ -301,7 +300,6 @@ playlist_Import
 playlist_IsServicesDiscoveryLoaded
 playlist_ItemGetById
 playlist_ItemGetByInput
-playlist_ItemGetByInputId
 playlist_LiveSearchUpdate
 playlist_Lock
 playlist_NodeAppend
@@ -376,6 +374,10 @@ subpicture_New
 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
@@ -412,6 +414,7 @@ __var_Command
 __var_Create
 __var_DelCallback
 __var_Destroy
+var_FreeList
 __var_Get
 var_GetChecked
 __var_Set
@@ -419,6 +422,7 @@ var_SetChecked
 __var_TriggerCallback
 __var_Type
 video_format_FixRgb
+video_format_Setup
 vlc_avcodec_mutex
 vlc_b64_decode
 vlc_b64_decode_binary
@@ -448,6 +452,10 @@ vlc_event_manager_register_event_type
 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
@@ -520,8 +528,6 @@ vout_DestroyPicture
 vout_DisplayPicture
 vout_EnableFilter
 vout_GetSnapshot
-vout_InitFormat
-__vout_InitPicture
 vout_LinkPicture
 vout_OSDIcon
 __vout_OSDMessage
index 9f74db009c3b0bd90f7476bdb0cd3c906fe43aba..d5eaa471f82ec94aca71863b0c710a8382366185 100644 (file)
@@ -92,24 +92,24 @@ void video_format_FixRgb( video_format_t *p_fmt )
     {
         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;
@@ -128,11 +128,86 @@ void video_format_FixRgb( video_format_t *p_fmt )
                  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;
diff --git a/src/misc/fourcc.c b/src/misc/fourcc.c
new file mode 100644 (file)
index 0000000..8a6121b
--- /dev/null
@@ -0,0 +1,1277 @@
+/*****************************************************************************
+ * 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;
+}
+
index b0a808f82de35fa62dc996f15bfc905d42a5aaeb..ba567af1b2b43c49f7e8b8e5ddb51fab411c840f 100644 (file)
@@ -523,23 +523,23 @@ static const struct
 
 } 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 }
 };
@@ -584,20 +584,20 @@ static const struct
     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 }
 };
index b872f3f0feac8495fa3b8016a75e5205b9600946..eea00ba1176f60d1277cb02f464c39479d4f6404 100644 (file)
@@ -205,18 +205,10 @@ void * __vlc_object_create( vlc_object_t *p_this, int i_type )
 
     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";
diff --git a/src/misc/pthread.c b/src/misc/pthread.c
new file mode 100644 (file)
index 0000000..bca5afd
--- /dev/null
@@ -0,0 +1,585 @@
+/*****************************************************************************
+ * 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);
+}
index 149e761bb081df1fd8f173060dca356cf834c998..1999c9ec4c91725d82499c83ecd1f0786be4e1cd 100644 (file)
 #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
@@ -1248,55 +245,3 @@ void vlc_thread_cancel (vlc_object_t *obj)
     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
-}
index 52a7f7e5897bdf8567fc0b0919a4627172d42093..313f7000a29275009e1c14d2c4e61d60b4c8c854 100644 (file)
@@ -605,20 +605,6 @@ int __var_Change( vlc_object_t *p_this, const char *psz_name,
                 }
             }
             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 )
@@ -1535,3 +1521,25 @@ int __var_Command( vlc_object_t *p_this, const char *psz_name,
 
     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 );
+    }
+}
diff --git a/src/misc/w32thread.c b/src/misc/w32thread.c
new file mode 100644 (file)
index 0000000..7ed00af
--- /dev/null
@@ -0,0 +1,514 @@
+/*****************************************************************************
+ * 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);
+}
index c69cf70d01c96beb796cb7aa70fe7ce110ad5e82..b4a1ca3c2e152352aeec484be578b918c2f19948 100644 (file)
@@ -1172,66 +1172,65 @@ static int AllocatePluginFile( vlc_object_t * p_this, module_bank_t *p_bank,
         p_module = AllocatePlugin( p_this, psz_file );
     }
     else
+    /* If junk dll, don't try to load it */
+    if( p_cache_entry->b_junk )
+        return -1;
+    else
     {
-        /* If junk dll, don't try to load it */
-        if( p_cache_entry->b_junk )
-        {
-            p_module = NULL;
-        }
-        else
-        {
-            module_config_t *p_item = NULL, *p_end = NULL;
+        module_config_t *p_item = NULL, *p_end = NULL;
 
-            p_module = p_cache_entry->p_module;
-            p_module->b_loaded = false;
+        p_module = p_cache_entry->p_module;
+        p_module->b_loaded = false;
 
-            /* For now we force loading if the module's config contains
-             * callbacks or actions.
-             * Could be optimized by adding an API call.*/
-            for( p_item = p_module->p_config, p_end = p_item + p_module->confsize;
-                 p_item < p_end; p_item++ )
+        /* For now we force loading if the module's config contains
+         * callbacks or actions.
+         * Could be optimized by adding an API call.*/
+        for( p_item = p_module->p_config, p_end = p_item + p_module->confsize;
+             p_item < p_end; p_item++ )
+        {
+            if( p_item->pf_callback || p_item->i_action )
             {
-                if( p_item->pf_callback || p_item->i_action )
-                {
-                    p_module = AllocatePlugin( p_this, psz_file );
-                    break;
-                }
+                p_module = AllocatePlugin( p_this, psz_file );
+                break;
             }
-            if( p_module == p_cache_entry->p_module )
-                p_cache_entry->b_used = true;
         }
+        if( p_module == p_cache_entry->p_module )
+            p_cache_entry->b_used = true;
     }
 
-    if( p_module )
-    {
-        /* Everything worked fine !
-         * The module is ready to be added to the list. */
-        p_module->b_builtin = false;
-
-        /* msg_Dbg( p_this, "plugin \"%s\", %s",
-                    p_module->psz_object_name, p_module->psz_longname ); */
-        p_module->next = p_bank->head;
-        p_bank->head = p_module;
-
-        if( !p_module_bank->b_cache )
-            return 0;
-
-        /* Add entry to cache */
-        p_bank->pp_cache =
-            realloc( p_bank->pp_cache, (p_bank->i_cache + 1) * sizeof(void *) );
-        p_bank->pp_cache[p_bank->i_cache] = malloc( sizeof(module_cache_t) );
-        if( !p_bank->pp_cache[p_bank->i_cache] )
-            return -1;
-        p_bank->pp_cache[p_bank->i_cache]->psz_file = strdup( psz_file );
-        p_bank->pp_cache[p_bank->i_cache]->i_time = i_file_time;
-        p_bank->pp_cache[p_bank->i_cache]->i_size = i_file_size;
-        p_bank->pp_cache[p_bank->i_cache]->b_junk = p_module ? 0 : 1;
-        p_bank->pp_cache[p_bank->i_cache]->b_used = true;
-        p_bank->pp_cache[p_bank->i_cache]->p_module = p_module;
-        p_bank->i_cache++;
-    }
+    if( p_module == NULL )
+        return -1;
 
-    return p_module ? 0 : -1;
+    /* Everything worked fine !
+     * The module is ready to be added to the list. */
+    p_module->b_builtin = false;
+
+    /* msg_Dbg( p_this, "plugin \"%s\", %s",
+                p_module->psz_object_name, p_module->psz_longname ); */
+    p_module->next = p_bank->head;
+    p_bank->head = p_module;
+
+    if( !p_module_bank->b_cache )
+        return 0;
+
+    /* Add entry to cache */
+    module_cache_t **pp_cache = p_bank->pp_cache;
+
+    pp_cache = realloc( pp_cache, (p_bank->i_cache + 1) * sizeof(void *) );
+    if( pp_cache == NULL )
+        return -1;
+    pp_cache[p_bank->i_cache] = malloc( sizeof(module_cache_t) );
+    if( pp_cache[p_bank->i_cache] == NULL )
+        return -1;
+    pp_cache[p_bank->i_cache]->psz_file = strdup( psz_file );
+    pp_cache[p_bank->i_cache]->i_time = i_file_time;
+    pp_cache[p_bank->i_cache]->i_size = i_file_size;
+    pp_cache[p_bank->i_cache]->b_junk = p_module ? 0 : 1;
+    pp_cache[p_bank->i_cache]->b_used = true;
+    pp_cache[p_bank->i_cache]->p_module = p_module;
+    p_bank->pp_cache = pp_cache;
+    p_bank->i_cache++;
+    return  0;
 }
 
 /*****************************************************************************
index 2c7a1c557939d6ec570e9623e339a8fd3d3dcd60..375a02af979e52b62279d41445b0a2dcad574697 100644 (file)
  * \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 )
 {
@@ -58,7 +58,7 @@ int osd_ShowTextRelative( spu_t *p_spu, int i_channel,
  * \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
@@ -68,7 +68,7 @@ int osd_ShowTextRelative( spu_t *p_spu, int i_channel,
  *               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 )
 {
@@ -90,7 +90,7 @@ int osd_ShowTextAbsolute( spu_t *p_spu_channel, int i_channel,
 
     /* 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;
index 5e880ead03e9e8faf0a411d1e81b9feade270ca6..32af4b8428d210622dae10929429851985d4fb7f 100644 (file)
@@ -159,7 +159,7 @@ static int CreatePicture( spu_t *p_spu, subpicture_t *p_subpic,
 
     /* 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;
index c1d8065b08e558a57fb3f52dd1f84fda7702cd7a..5b068b4083b086510056700f8ffaedeb5c426669 100644 (file)
@@ -272,16 +272,14 @@ static void VariablesInit( playlist_t *p_playlist )
     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 );
index c9384b4d2418cb1134f04042bfeca221b2d5879a..f8d8a422a761934057acb2eb61ac7a7d6bc1bb5e 100644 (file)
@@ -419,7 +419,7 @@ static void *Thread( void *p_data )
         {
             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
         {
index 122411e0670282dd3054cc9c8cdb4c04fc18cd74..9210971ccba44b753bc233901ccbbc4eceaa4764 100644 (file)
@@ -64,7 +64,7 @@ static void input_item_subitem_added( const vlc_event_t * p_event,
      * 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 */ );
 
@@ -72,7 +72,7 @@ static void input_item_subitem_added( const vlc_event_t * p_event,
     {
         /* 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 )
@@ -117,7 +117,7 @@ static void input_item_changed( const vlc_event_t * p_event,
 {
     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 );
 }
 
 /*****************************************************************************
@@ -218,12 +218,12 @@ int playlist_ItemRelease( playlist_item_t *p_item )
  *
  * 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;
@@ -231,14 +231,14 @@ static int DeleteFromInput( playlist_t *p_playlist, int i_input_id,
     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;
         }
@@ -251,18 +251,18 @@ static int DeleteFromInput( playlist_t *p_playlist, int i_input_id,
  *
  * 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;
 }
@@ -272,18 +272,18 @@ int playlist_DeleteFromInputInParent( playlist_t *p_playlist, int i_input_id,
  *
  * 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 ) ?
@@ -338,7 +338,7 @@ int playlist_DeleteFromItemId( playlist_t *p_playlist, int i_id )
  *        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,
@@ -364,26 +364,27 @@ int playlist_Add( playlist_t *p_playlist, const char *psz_uri,
  * \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;
 }
 
 /**
@@ -480,8 +481,8 @@ int playlist_BothAddInput( playlist_t *p_playlist,
     }
     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],
@@ -579,14 +580,14 @@ static playlist_item_t *ItemToNode( playlist_t *p_playlist,
 
     /** \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 );
@@ -619,12 +620,12 @@ static playlist_item_t *ItemToNode( playlist_t *p_playlist,
                 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;
     }
@@ -640,13 +641,13 @@ static playlist_item_t *ItemToNode( playlist_t *p_playlist,
  * 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 )
 {
@@ -654,14 +655,14 @@ playlist_item_t *playlist_ItemFindFromInputAndRoot( playlist_t *p_playlist,
     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;
@@ -730,11 +731,11 @@ int playlist_TreeMove( playlist_t * p_playlist, playlist_item_t *p_item,
             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 )
@@ -744,11 +745,11 @@ int playlist_TreeMove( playlist_t * p_playlist, playlist_item_t *p_item,
             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 )
index cae5b040959b483053dd7d63128fa612209370ac..6afec4a26cd504a792a4a00c0d49eee9b8d3be1f 100644 (file)
@@ -139,10 +139,11 @@ playlist_item_t * playlist_NodeAddInput( playlist_t *, input_item_t *,
 
 /* 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 * );
 
index 74b3961f475a75e0e3dd8c345d1e81815c058c76..f2cb2329191a7b2def984c43bcc168916bffdb2a 100644 (file)
@@ -130,7 +130,7 @@ static void Preparse( playlist_t *p_playlist, input_item_t *p_item )
         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 );
index 66bd3ad0929344f5861b4769eb48271362dc9b68..8de86c67a3befa81197bc03847ee352b8108dfaf 100644 (file)
@@ -71,7 +71,7 @@ playlist_item_t* playlist_ItemGetByInput( playlist_t * p_playlist,
     /** \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);
         }
@@ -80,38 +80,6 @@ playlist_item_t* playlist_ItemGetByInput( playlist_t * p_playlist,
 }
 
 
-/**
- * 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
  ***************************************************************************/
index 03c9f0de91d07a7558ce652a49effbe8d57d8591..aaa46688b63709a1d3848a2f412248f80a49858d 100644 (file)
@@ -213,13 +213,13 @@ static void playlist_sd_item_removed( const vlc_event_t * p_event, void * user_d
      * 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 );
index eacfd379f37ff5b52fd86a79efa340e543b574de..3e7bf06ed0e06cfdb0ab55d019f7c658cdbd85d6 100644 (file)
@@ -297,7 +297,7 @@ static int PlayItem( playlist_t *p_playlist, playlist_item_t *p_item )
     }
 
     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;
index 1eab637c0ab5aa5467e2a02f5f29b8ea7d7d5101..32ef051be5999cde7fcacc6e3b6441df2ac441f2 100644 (file)
@@ -311,8 +311,8 @@ playlist_item_t * playlist_GetPreferredNode( playlist_t *p_playlist,
             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];
         }
     }
@@ -322,8 +322,8 @@ playlist_item_t * playlist_GetPreferredNode( playlist_t *p_playlist,
             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];
         }
     }
index 5777fbd44c8ca4be9013bcdfa269fde28f5f8eb5..a6672dede5784847466da56805d9bda44a0beec1 100644 (file)
@@ -47,6 +47,8 @@
 
 #include "input/input_interface.h"
 
+#define VLC_CODEC_NULL VLC_FOURCC( 'n', 'u', 'l', 'l' )
+
 #undef DEBUG_BUFFER
 /*****************************************************************************
  * Local prototypes
@@ -211,7 +213,7 @@ sout_packetizer_input_t *sout_InputNew( sout_instance_t *p_sout,
 
     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;
@@ -240,7 +242,7 @@ int sout_InputDelete( sout_packetizer_input_t *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 );
@@ -261,7 +263,7 @@ int sout_InputSendBuffer( sout_packetizer_input_t *p_input,
     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;
index 31df53755119eee57f8afc3e0f0f03dd237ecfac..679b2125dd7f3fab1ca79c1fe7a37a5e4cdecd0c 100644 (file)
@@ -4,6 +4,7 @@ check_PROGRAMS = \
        test_block \
        test_dictionary \
        test_i18n_atof \
+       test_keys \
        test_url \
        test_utf8 \
        test_xmlent \
@@ -18,6 +19,7 @@ LDADD = ../libvlccore.la
 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
index 2e9a27412002b399b3ebb01856b60e4a8bf6dc2c..cf2413695f38d7b6681b1d658de32d536571c39a 100644 (file)
 #include <vlc/libvlc.h>
 #include <vlc/libvlc_structures.h>
 #include <vlc/libvlc_events.h>
+#include <vlc/libvlc_media.h>
+#include <vlc/libvlc_media_discoverer.h>
+#include <vlc/libvlc_media_library.h>
 #include <vlc/libvlc_media_list.h>
+#include <vlc/libvlc_media_list_player.h>
+#include <vlc/libvlc_media_list_view.h>
+#include <vlc/libvlc_media_player.h>
 #include <vlc/libvlc_vlm.h>
 #include <vlc/mediacontrol.h>
 #include <vlc/mediacontrol_structures.h>
diff --git a/src/test/keys.c b/src/test/keys.c
new file mode 100644 (file)
index 0000000..807366e
--- /dev/null
@@ -0,0 +1,49 @@
+/*****************************************************************************
+ * 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;
+}
index d03e48ca6d8953c7ff0c05bb7a692ade263715d3..875c9a5f7b37a588f8fbba482e712428abe679b7 100644 (file)
@@ -66,6 +66,15 @@ static inline void test_path (const char *in, const char *out)
     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;
@@ -114,9 +123,16 @@ int main (void)
     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);*/
 
index 825e1d6f25ac2e92877e12460fd713f1696b754c..7555d8345cc357dd4d17e1eac810f6edce61032a 100644 (file)
@@ -208,7 +208,7 @@ vout_thread_t *__vout_Request( vlc_object_t *p_this, vout_thread_t *p_vout,
             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 )
@@ -303,7 +303,7 @@ vout_thread_t * __vout_Create( vlc_object_t *p_parent, video_format_t *p_fmt )
 
     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;
@@ -816,10 +816,10 @@ static bool ChromaIsEqual( const picture_heap_t *p_output, const picture_heap_t
      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 &&
@@ -983,17 +983,6 @@ static int InitThread( vout_thread_t *p_vout )
         }
     }
 
-    /* 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;
 }
 
index d0e7a0ac3c7ca4e8faea8c94bf2f1891c5a2aa94..d5a8f6244bb2ee1263d20a6197c202a459bb81b6 100644 (file)
  * \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 )
 {
@@ -59,7 +59,7 @@ int vout_ShowTextRelative( vout_thread_t *p_vout, int i_channel,
  * \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
@@ -69,14 +69,12 @@ int vout_ShowTextRelative( vout_thread_t *p_vout, int i_channel,
  *               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;
 
@@ -94,7 +92,7 @@ int vout_ShowTextAbsolute( vout_thread_t *p_vout, int i_channel,
 
     /* 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;
@@ -110,6 +108,8 @@ int vout_ShowTextAbsolute( vout_thread_t *p_vout, int i_channel,
     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 );
 
@@ -151,3 +151,69 @@ void __vout_OSDMessage( vlc_object_t *p_caller, int i_channel,
         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 );
+}
+
index 80f23e94cfcf8bd5ee47f1bb3925bfcffcf4a6ab..095101ac0fc21b2aad6dd462ab59f07c0c149a5f 100644 (file)
@@ -469,7 +469,7 @@ static int VoutSnapshotPip( vout_thread_t *p_vout, picture_t *p_pic )
     /* */
     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 );
@@ -752,7 +752,7 @@ int vout_GetSnapshot( vout_thread_t *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 );
 
index 0f408f864187ca89dcded5e2eada7a9134fd5c01..c61fe74691cd553d8cb60a5e52c9f6aa435226b0 100644 (file)
@@ -408,8 +408,6 @@ picture_t *vout_RenderPicture( vout_thread_t *p_vout, picture_t *p_pic,
                                   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 */
@@ -560,8 +558,8 @@ int __vout_AllocatePicture( vlc_object_t *p_this, picture_t *p_pic,
     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;
@@ -591,362 +589,6 @@ int __vout_AllocatePicture( vlc_object_t *p_this, picture_t *p_pic,
     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
  *
@@ -956,30 +598,25 @@ int __vout_InitPicture( vlc_object_t *p_this, picture_t *p_pic,
 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;
@@ -1011,6 +648,255 @@ static void PictureReleaseCallback( picture_t *p_picture )
         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;
+}
+
 /*****************************************************************************
  *
  *****************************************************************************/
@@ -1040,6 +926,7 @@ picture_t *picture_New( vlc_fourcc_t i_chroma, int i_width, int i_height, int i_
 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 );
@@ -1169,4 +1056,3 @@ int picture_Export( vlc_object_t *p_obj,
 /*****************************************************************************
  *
  *****************************************************************************/
-
index 8cfc8922827bfb2264d259ad61e23af0ecd21406..8d41545b56c85eb09f1baeffdf284735afb0e09b 100644 (file)
  * 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
index 393b4bbcec3d1de87bc771e50e4f65ae9e7d29ff..84ac9996fee7792978c0492e72e982dc478b59aa 100644 (file)
 /* 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
 {
@@ -735,7 +730,7 @@ subpicture_region_t *subpicture_region_New( const video_format_t *p_fmt )
 
     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 )
@@ -748,7 +743,7 @@ subpicture_region_t *subpicture_region_New( const video_format_t *p_fmt )
     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,
@@ -779,7 +774,8 @@ void subpicture_region_Delete( subpicture_region_t *p_region )
 
     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 );
 }
 
@@ -1035,11 +1031,11 @@ static void SpuRenderCreateAndLoadScale( spu_t *p_spu )
     /* 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,
@@ -1048,7 +1044,7 @@ 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;
@@ -1353,14 +1349,14 @@ static void SpuRenderRegion( spu_t *p_spu,
     *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;
     }
 
@@ -1368,7 +1364,7 @@ static void SpuRenderRegion( spu_t *p_spu,
      * 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;
@@ -1483,7 +1479,7 @@ static void SpuRenderRegion( spu_t *p_spu,
 
                 /* 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 )
index 73c65b93d27143f05b5b40c59b6be81157b92827..dbcaba047455c38b6a89025795e32e3d96e0336b 100644 (file)
@@ -12,11 +12,16 @@ check_PROGRAMS = \
        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
 
@@ -38,30 +43,42 @@ samples/meta.sample:
        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
index 4f68bf110e414995fe21891417d8c5dda60e7f6d..e9d773c1520d1be43281f701f874da44e739467d 100644 (file)
@@ -34,16 +34,6 @@ static void test_core (const char ** argv, int argc)
     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);
index 712e0fe6f72c57687c9e74c3e6b26e746d48ff0f..fbc67bf8a21d49a0bf01cc37e65d2861051c462a 100644 (file)
 
 #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;
@@ -78,7 +156,7 @@ static void test_media_list_player_play_item_at_index(const char** argv, int arg
 
     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);
@@ -120,5 +198,8 @@ int main (void)
 
     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;
 }
index 54f98cdeaae891ad730e7fd05ce16543cdfb1b05..a14a038825b0e806d425ede0aab524c454101abe 100644 (file)
@@ -54,9 +54,9 @@ static void test_media_player_play_stop(const char** argv, int argc)
         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 ();
@@ -75,7 +75,7 @@ static void test_media_player_pause_stop(const char** argv, int argc)
     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);
@@ -92,6 +92,8 @@ static void test_media_player_pause_stop(const char** argv, int argc)
     libvlc_media_player_play (mi, &ex);
     catch ();
 
+    log ("Waiting for playing\n");
+
     /* Wait a correct state */
     libvlc_state_t state;
     do {
@@ -99,14 +101,30 @@ static void test_media_player_pause_stop(const char** argv, int argc)
         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 ();
 
index f2e5963d9291a18eaac06ebd64d4a0f098227bd7..3743733ee5d05bd0212971b058216eeeb82592cd 100644 (file)
@@ -22,6 +22,8 @@
  *  http://www.gnu.org/copyleft/gpl.html                              *
  **********************************************************************/
 
+#include <strings.h>
+
 #include "test.h"
 
 static void test_meta (const char ** argv, int argc)
@@ -51,7 +53,7 @@ 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);
index 388a465d33181f510c745cfb9eaea72404c027cb..e8aa06a8c518a315d8142514b467d931ad58a1d7 100644 (file)
@@ -49,7 +49,7 @@
 static libvlc_exception_t ex;
 
 static const char * test_defaults_args[] = {
-    "-vvv",
+    "-v",
     "--ignore-config",
     "-I",
     "dummy",