Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
V
vlc-gpu
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Redmine
Redmine
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
videolan
vlc-gpu
Commits
b5763548
Commit
b5763548
authored
Aug 29, 2007
by
Pierre d'Herbemont
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
extra/MacOSX/Framework: Initial import of the Mac OS X Framework.
parent
41f6c279
Changes
35
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
35 changed files
with
2874 additions
and
0 deletions
+2874
-0
extras/MacOSX/Framework/Examples/test/Controller.h
extras/MacOSX/Framework/Examples/test/Controller.h
+18
-0
extras/MacOSX/Framework/Examples/test/Controller.m
extras/MacOSX/Framework/Examples/test/Controller.m
+34
-0
extras/MacOSX/Framework/Examples/test/English.lproj/InfoPlist.strings
...X/Framework/Examples/test/English.lproj/InfoPlist.strings
+0
-0
extras/MacOSX/Framework/Examples/test/English.lproj/MainMenu.nib/classes.nib
...work/Examples/test/English.lproj/MainMenu.nib/classes.nib
+14
-0
extras/MacOSX/Framework/Examples/test/English.lproj/MainMenu.nib/info.nib
...amework/Examples/test/English.lproj/MainMenu.nib/info.nib
+22
-0
extras/MacOSX/Framework/Examples/test/English.lproj/MainMenu.nib/keyedobjects.nib
...Examples/test/English.lproj/MainMenu.nib/keyedobjects.nib
+0
-0
extras/MacOSX/Framework/Examples/test/Info.plist
extras/MacOSX/Framework/Examples/test/Info.plist
+28
-0
extras/MacOSX/Framework/Examples/test/main.m
extras/MacOSX/Framework/Examples/test/main.m
+26
-0
extras/MacOSX/Framework/Examples/test/test.xcodeproj/project.pbxproj
...SX/Framework/Examples/test/test.xcodeproj/project.pbxproj
+302
-0
extras/MacOSX/Framework/Examples/test/test_Prefix.pch
extras/MacOSX/Framework/Examples/test/test_Prefix.pch
+7
-0
extras/MacOSX/Framework/Headers/VLC/VLC.h
extras/MacOSX/Framework/Headers/VLC/VLC.h
+39
-0
extras/MacOSX/Framework/Headers/VLC/VLCMedia.h
extras/MacOSX/Framework/Headers/VLC/VLCMedia.h
+56
-0
extras/MacOSX/Framework/Headers/VLC/VLCMediaDiscoverer.h
extras/MacOSX/Framework/Headers/VLC/VLCMediaDiscoverer.h
+42
-0
extras/MacOSX/Framework/Headers/VLC/VLCMediaLibrary.h
extras/MacOSX/Framework/Headers/VLC/VLCMediaLibrary.h
+42
-0
extras/MacOSX/Framework/Headers/VLC/VLCPlaylist.h
extras/MacOSX/Framework/Headers/VLC/VLCPlaylist.h
+61
-0
extras/MacOSX/Framework/Headers/VLC/VLCPlaylistDataSource.h
extras/MacOSX/Framework/Headers/VLC/VLCPlaylistDataSource.h
+62
-0
extras/MacOSX/Framework/Headers/VLC/VLCServicesDiscoverer.h
extras/MacOSX/Framework/Headers/VLC/VLCServicesDiscoverer.h
+34
-0
extras/MacOSX/Framework/Headers/VLC/VLCTime.h
extras/MacOSX/Framework/Headers/VLC/VLCTime.h
+35
-0
extras/MacOSX/Framework/Headers/VLC/VLCVideoView.h
extras/MacOSX/Framework/Headers/VLC/VLCVideoView.h
+100
-0
extras/MacOSX/Framework/Headers/VLCEventManager.h
extras/MacOSX/Framework/Headers/VLCEventManager.h
+43
-0
extras/MacOSX/Framework/Headers/VLCLibrary.h
extras/MacOSX/Framework/Headers/VLCLibrary.h
+68
-0
extras/MacOSX/Framework/Makefile
extras/MacOSX/Framework/Makefile
+157
-0
extras/MacOSX/Framework/Resources/Info.plist
extras/MacOSX/Framework/Resources/Info.plist
+22
-0
extras/MacOSX/Framework/Resources/version.plist
extras/MacOSX/Framework/Resources/version.plist
+12
-0
extras/MacOSX/Framework/Sources/VLCEventManager.m
extras/MacOSX/Framework/Sources/VLCEventManager.m
+218
-0
extras/MacOSX/Framework/Sources/VLCLibrary.m
extras/MacOSX/Framework/Sources/VLCLibrary.m
+44
-0
extras/MacOSX/Framework/Sources/VLCMedia.m
extras/MacOSX/Framework/Sources/VLCMedia.m
+257
-0
extras/MacOSX/Framework/Sources/VLCMediaDiscoverer.m
extras/MacOSX/Framework/Sources/VLCMediaDiscoverer.m
+110
-0
extras/MacOSX/Framework/Sources/VLCMediaLibrary.m
extras/MacOSX/Framework/Sources/VLCMediaLibrary.m
+87
-0
extras/MacOSX/Framework/Sources/VLCPlaylist.m
extras/MacOSX/Framework/Sources/VLCPlaylist.m
+355
-0
extras/MacOSX/Framework/Sources/VLCPlaylistDataSource.m
extras/MacOSX/Framework/Sources/VLCPlaylistDataSource.m
+178
-0
extras/MacOSX/Framework/Sources/VLCServicesDiscoverer.m
extras/MacOSX/Framework/Sources/VLCServicesDiscoverer.m
+60
-0
extras/MacOSX/Framework/Sources/VLCTime.m
extras/MacOSX/Framework/Sources/VLCTime.m
+56
-0
extras/MacOSX/Framework/Sources/VLCVideoView.m
extras/MacOSX/Framework/Sources/VLCVideoView.m
+272
-0
extras/MacOSX/Framework/Sources/test.m
extras/MacOSX/Framework/Sources/test.m
+13
-0
No files found.
extras/MacOSX/Framework/Examples/test/Controller.h
0 → 100644
View file @
b5763548
/* Controller */
#import <Cocoa/Cocoa.h>
#import <VLC/VLC.h>
@interface
Controller
:
NSObject
{
IBOutlet
id
window
;
IBOutlet
id
playlistOutline
;
IBOutlet
id
videoHolderView
;
VLCVideoView
*
videoView
;
VLCPlaylist
*
playlist
;
}
-
(
void
)
awakeFromNib
;
-
(
void
)
play
:(
id
)
sender
;
@end
extras/MacOSX/Framework/Examples/test/Controller.m
0 → 100644
View file @
b5763548
#import "Controller.h"
@implementation
Controller
-
(
void
)
awakeFromNib
{
NSRect
rect
;
VLCPlaylistDataSource
*
aDataSource
;
/* Won't be released */
videoView
=
[[
VLCVideoView
alloc
]
init
];
rect
=
[
videoHolderView
frame
];
[[
window
contentView
]
replaceSubview
:
videoHolderView
with
:
videoView
];
[
videoView
setFrame
:
rect
];
[
videoView
setAutoresizingMask
:
NSViewHeightSizable
|
NSViewWidthSizable
];
/* Won't be released */
playlist
=
[[
VLCPlaylist
alloc
]
init
];
/* Won't be released */
aDataSource
=
[[
VLCPlaylistDataSource
alloc
]
initWithPlaylist
:
playlist
videoView
:
videoView
];
[
playlistOutline
setDataSource
:
aDataSource
];
[
playlistOutline
registerForDraggedTypes
:
[
NSArray
arrayWithObjects
:
NSFilenamesPboardType
,
NSURLPboardType
,
nil
]];
}
-
(
void
)
play
:(
id
)
sender
{
if
(
!
[
videoView
playlist
])
[
videoView
setPlaylist
:
playlist
];
if
(
[
sender
isKindOfClass
:[
NSTableView
class
]]
&&
[
sender
selectedRow
]
>=
0
)
[
videoView
playItemAtIndex
:
[
sender
selectedRow
]];
}
@end
extras/MacOSX/Framework/Examples/test/English.lproj/InfoPlist.strings
0 → 100644
View file @
b5763548
B
/* Localized versions of Info.plist keys */
extras/MacOSX/Framework/Examples/test/English.lproj/MainMenu.nib/classes.nib
0 → 100644
View file @
b5763548
{
IBClasses = (
{
ACTIONS = {play = id; };
CLASS = Controller;
LANGUAGE = ObjC;
OUTLETS = {playlistOutline = id; videoHolderView = id; window = id; };
SUPERCLASS = NSObject;
},
{CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; },
{CLASS = NSSegmentedControl; LANGUAGE = ObjC; SUPERCLASS = NSControl; }
);
IBVersion = 1;
}
\ No newline at end of file
extras/MacOSX/Framework/Examples/test/English.lproj/MainMenu.nib/info.nib
0 → 100644
View file @
b5763548
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist
version=
"1.0"
>
<dict>
<key>
IBDocumentLocation
</key>
<string>
135 107 356 240 0 0 1680 1028
</string>
<key>
IBEditorPositions
</key>
<dict>
<key>
29
</key>
<string>
132 353 338 44 0 0 1680 1028
</string>
</dict>
<key>
IBFramework Version
</key>
<string>
446.1
</string>
<key>
IBOpenObjects
</key>
<array>
<integer>
21
</integer>
<integer>
29
</integer>
</array>
<key>
IBSystem Version
</key>
<string>
8R218
</string>
</dict>
</plist>
extras/MacOSX/Framework/Examples/test/English.lproj/MainMenu.nib/keyedobjects.nib
0 → 100644
View file @
b5763548
File added
extras/MacOSX/Framework/Examples/test/Info.plist
0 → 100644
View file @
b5763548
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist
version=
"1.0"
>
<dict>
<key>
CFBundleDevelopmentRegion
</key>
<string>
English
</string>
<key>
CFBundleExecutable
</key>
<string>
${EXECUTABLE_NAME}
</string>
<key>
CFBundleIconFile
</key>
<string></string>
<key>
CFBundleIdentifier
</key>
<string>
com.yourcompany.test
</string>
<key>
CFBundleInfoDictionaryVersion
</key>
<string>
6.0
</string>
<key>
CFBundleName
</key>
<string>
${PRODUCT_NAME}
</string>
<key>
CFBundlePackageType
</key>
<string>
APPL
</string>
<key>
CFBundleSignature
</key>
<string>
????
</string>
<key>
CFBundleVersion
</key>
<string>
1.0
</string>
<key>
NSMainNibFile
</key>
<string>
MainMenu
</string>
<key>
NSPrincipalClass
</key>
<string>
NSApplication
</string>
</dict>
</plist>
extras/MacOSX/Framework/Examples/test/main.m
0 → 100644
View file @
b5763548
//
// main.m
// test
//
// Created by Pierre d'Herbemont on 13/04/07.
// Copyright __MyCompanyName__ 2007. All rights reserved.
//
#import
<Cocoa
/
Cocoa
.
h
>
#import
<VLC
/
VLC
.
h
>
#include
<stdio
.
h
>
int main(int argc, char *argv[])
{
/* If we can't load the VLC.framework dyld will tell us anyway
* But this is cool */
if(test_vlc_framework() == 0xbabe)
printf("We are linked to VLC.framework!\n");
else
{
fprintf(stderr, "*** Can't load the VLC.framework\n");
return -1;
}
return NSApplicationMain(argc, (const char **) argv);
}
extras/MacOSX/Framework/Examples/test/test.xcodeproj/project.pbxproj
0 → 100644
View file @
b5763548
This diff is collapsed.
Click to expand it.
extras/MacOSX/Framework/Examples/test/test_Prefix.pch
0 → 100644
View file @
b5763548
//
// Prefix header for all source files of the 'test' target in the 'test' project
//
#ifdef __OBJC__
#import <Cocoa/Cocoa.h>
#endif
extras/MacOSX/Framework/Headers/VLC/VLC.h
0 → 100644
View file @
b5763548
/*****************************************************************************
* VLC.h: VLC.framework main header
*****************************************************************************
* Copyright (C) 2007 Pierre d'Herbemont
* Copyright (C) 2007 the VideoLAN team
* $Id$
*
* Authors: 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.
*****************************************************************************/
#ifndef VLC_FRAMEWORK_VLC_H
#define VLC_FRAMEWORK_VLC_H
typedef
void
*
_opaque_ptr
;
#import <VLC/VLCMedia.h>
#import <VLC/VLCMediaDiscoverer.h>
#import <VLC/VLCMediaLibrary.h>
#import <VLC/VLCPlaylist.h>
#import <VLC/VLCPlaylistDataSource.h>
#import <VLC/VLCServicesDiscoverer.h>
#import <VLC/VLCTime.h>
#import <VLC/VLCVideoView.h>
#endif
/* VLC_FRAMEWORK_VLC_H */
extras/MacOSX/Framework/Headers/VLC/VLCMedia.h
0 → 100644
View file @
b5763548
/*****************************************************************************
* VLCMedia.h: VLC.framework VLCMedia header
*****************************************************************************
* Copyright (C) 2007 Pierre d'Herbemont
* Copyright (C) 2007 the VideoLAN team
* $Id$
*
* Authors: 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.
*****************************************************************************/
#import <Cocoa/Cocoa.h>
#import <VLC/VLCPlaylist.h>
/* Meta */
extern
NSString
*
VLCMetaInformationTitle
;
/* Associated to an NSString */
extern
NSString
*
VLCMetaInformationAuthor
;
/* Associated to an NSString */
extern
NSString
*
VLCMetaInformationArtwork
;
/* Associated to an NSImage */
/* Notification */
extern
NSString
*
VLCMediaSubItemAdded
;
@class
VLCPlaylist
;
@interface
VLCMedia
:
NSObject
{
void
*
md
;
NSString
*
url
;
VLCPlaylist
*
subitems
;
NSMutableDictionary
*
metaInformation
;
}
-
(
id
)
initWithURL
:(
NSString
*
)
anURL
;
+
(
id
)
mediaWithURL
:(
NSString
*
)
anURL
;
-
(
void
)
dealloc
;
-
(
NSString
*
)
url
;
-
(
VLCPlaylist
*
)
subitems
;
/* Returns a dictionary with corresponding object associated with a meta */
-
(
NSDictionary
*
)
metaInformation
;
@end
extras/MacOSX/Framework/Headers/VLC/VLCMediaDiscoverer.h
0 → 100644
View file @
b5763548
/*****************************************************************************
* VLCMediaDiscoverer.h: VLC.framework VLCMediaDiscoverer header
*****************************************************************************
* Copyright (C) 2007 Pierre d'Herbemont
* Copyright (C) 2007 the VideoLAN team
* $Id$
*
* Authors: 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.
*****************************************************************************/
#import <Cocoa/Cocoa.h>
#import <VLC/VLCPlaylist.h>
@class
VLCPlaylist
;
@interface
VLCMediaDiscoverer
:
NSObject
{
NSString
*
localizedName
;
VLCPlaylist
*
playlist
;
void
*
mdis
;
}
-
(
id
)
initWithName
:(
NSString
*
)
aServiceName
;
-
(
VLCPlaylist
*
)
playlist
;
-
(
NSString
*
)
localizedName
;
@end
extras/MacOSX/Framework/Headers/VLC/VLCMediaLibrary.h
0 → 100644
View file @
b5763548
/*****************************************************************************
* VLCMediaDiscoverer.h: VLC.framework VLCMediaDiscoverer header
*****************************************************************************
* Copyright (C) 2007 Pierre d'Herbemont
* Copyright (C) 2007 the VideoLAN team
* $Id$
*
* Authors: 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.
*****************************************************************************/
#import <Cocoa/Cocoa.h>
#import <VLC/VLCPlaylist.h>
@class
VLCPlaylist
;
@interface
VLCMediaLibrary
:
NSObject
{
VLCPlaylist
*
allMedia
;
void
*
mlib
;
}
+
(
id
)
sharedMediaLibrary
;
-
(
VLCPlaylist
*
)
allMedia
;
-
(
NSArray
*
)
playlists
;
@end
extras/MacOSX/Framework/Headers/VLC/VLCPlaylist.h
0 → 100644
View file @
b5763548
/*****************************************************************************
* VLCPlaylist.h: VLC.framework VLCPlaylist header
*****************************************************************************
* Copyright (C) 2007 Pierre d'Herbemont
* Copyright (C) 2007 the VideoLAN team
* $Id$
*
* Authors: 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.
*****************************************************************************/
#import <Foundation/Foundation.h>
#import <VLC/VLCMedia.h>
/* Hack to avoid troubles with modules/macosx for now */
#define VLCPlaylist VLCPlaylistBis
/* Notification Posted */
extern
NSString
*
VLCPlaylistItemChanged
;
extern
NSString
*
VLCPlaylistItemDeleted
;
extern
NSString
*
VLCPlaylistItemAdded
;
@class
VLCMedia
;
@interface
VLCPlaylist
:
NSObject
{
NSMutableArray
*
items
;
void
*
p_mlist
;
}
-
(
id
)
init
;
-
(
void
)
lock
;
-
(
void
)
unlock
;
-
(
VLCMedia
*
)
mediaAtIndex
:
(
int
)
index
;
-
(
int
)
countMedia
;
-
(
NSArray
*
)
sublists
;
-
(
VLCPlaylist
*
)
flatPlaylist
;
-
(
VLCMedia
*
)
providerMedia
;
-
(
void
)
addMedia
:
(
VLCMedia
*
)
item
;
-
(
void
)
insertMedia
:
(
VLCMedia
*
)
item
atIndex
:
(
int
)
index
;
-
(
void
)
removeMediaAtIndex
:
(
int
)
index
;
@end
extras/MacOSX/Framework/Headers/VLC/VLCPlaylistDataSource.h
0 → 100644
View file @
b5763548
/*****************************************************************************
* VLCPlaylistDataSource.h: VLC.framework VLCPlaylistDataSource header
*****************************************************************************
* Copyright (C) 2007 Pierre d'Herbemont
* Copyright (C) 2007 the VideoLAN team
* $Id$
*
* Authors: 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.
*****************************************************************************/
#import <VLC/VLCPlaylist.h>
#import <VLC/VLCVideoView.h>
/* This class can be used as a data source for an NSOutlineView
* it will display the playlist content. If provided the videoView
* will automatically be associated to the given playlist, and actions
* in the outlineView will trigger the videoView, visual feedback of the
* current item in the videoview will be displayed in the outlineview
*/
@interface
VLCPlaylistDataSource
:
NSObject
{
VLCPlaylist
*
playlist
;
VLCVideoView
*
videoView
;
NSOutlineView
*
outlineView
;
}
-
(
id
)
initWithPlaylist
:(
VLCPlaylist
*
)
aPlaylist
;
-
(
id
)
initWithPlaylist
:(
VLCPlaylist
*
)
aPlaylist
videoView
:(
VLCVideoView
*
)
aVideoView
;
-
(
VLCPlaylist
*
)
playlist
;
-
(
VLCVideoView
*
)
videoView
;
@end
/* It could be really useful to use that, this probably need to be reviewed to see
* if it really belongs here */
@interface
VLCPlaylistDataSource
(
OutlineViewDataSource
)
-
(
id
)
outlineView
:(
NSOutlineView
*
)
outlineView
child
:(
int
)
index
ofItem
:(
id
)
item
;
-
(
BOOL
)
outlineView
:(
NSOutlineView
*
)
outlineView
isItemExpandable
:(
id
)
item
;
-
(
int
)
outlineView
:(
NSOutlineView
*
)
outlineView
numberOfChildrenOfItem
:(
id
)
item
;
-
(
id
)
outlineView
:(
NSOutlineView
*
)
outlineView
objectValueForTableColumn
:(
NSTableColumn
*
)
tableColumn
byItem
:(
id
)
item
;
@end
@interface
VLCPlaylistDataSource
(
OutlineViewDataSourceDropping
)
-
(
BOOL
)
outlineView
:(
NSOutlineView
*
)
outlineView
acceptDrop
:(
id
<
NSDraggingInfo
>
)
info
item
:(
id
)
item
childIndex
:(
int
)
index
;
-
(
NSDragOperation
)
outlineView
:(
NSOutlineView
*
)
outlineView
validateDrop
:(
id
<
NSDraggingInfo
>
)
info
proposedItem
:(
id
)
item
proposedChildIndex
:(
int
)
index
;
@end
extras/MacOSX/Framework/Headers/VLC/VLCServicesDiscoverer.h
0 → 100644
View file @
b5763548
/*****************************************************************************
* VLCMediaDiscoverer.h: VLC.framework VLCMediaDiscoverer header
*****************************************************************************
* Copyright (C) 2007 Pierre d'Herbemont
* Copyright (C) 2007 the VideoLAN team
* $Id$
*
* Authors: 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.
*****************************************************************************/
#import <Cocoa/Cocoa.h>
@interface
VLCServicesDiscoverer
:
NSObject
{
NSArray
*
services
;
}
+
(
id
)
sharedDiscoverer
;
-
(
id
)
init
;
-
(
NSArray
*
)
services
;
@end
extras/MacOSX/Framework/Headers/VLC/VLCTime.h
0 → 100644
View file @
b5763548
/*****************************************************************************
* VLCTime.h: VLC.framework VLCTime header
*****************************************************************************
* Copyright (C) 2007 Pierre d'Herbemont
* Copyright (C) 2007 the VideoLAN team
* $Id$
*
* Authors: 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.
*****************************************************************************/
#import <Cocoa/Cocoa.h>
@interface
VLCTime
:
NSObject
{
NSNumber
*
value
;
}
-
(
id
)
initWithNumber
:(
NSNumber
*
)
aNumber
;
-
(
NSNumber
*
)
numberRepresentation
;
-
(
NSString
*
)
stringRepresentation
;
@end
extras/MacOSX/Framework/Headers/VLC/VLCVideoView.h
0 → 100644
View file @
b5763548
/*****************************************************************************
* VLCVideoView.h: VLC.framework VLCVideoView header
*****************************************************************************
* Copyright (C) 2007 Pierre d'Herbemont
* Copyright (C) 2007 the VideoLAN team
* $Id$
*
* Authors: 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.
*****************************************************************************/
#import <Cocoa/Cocoa.h>
#import <VLC/VLCTime.h>
#import <VLC/VLCPlaylist.h>
@protocol
VLCVideoViewDelegate
;
/* Notification */
extern
NSString
*
VLCVideoDidChangeVolume
;
extern
NSString
*
VLCVideoDidChangeTime
;
extern
NSString
*
VLCVideoDidChangeCurrentlyPlayingItem
;
extern
NSString
*
VLCVideoDidStop
;
extern
NSString
*
VLCVideoDidPause
;
extern
NSString
*
VLCVideoDidPlay
;
@interface
VLCVideoView
:
NSView
{
VLCPlaylist
*
playlist
;
NSConnection
*
connection
;
id
delegate
;
BOOL
stretchVideo
;
void
*
p_mi
;
void
*
p_mlp
;
}
-
(
id
)
initWithFrame
:(
NSRect
)
frameRect
;
-
(
void
)
dealloc
;
-
(
void
)
setPlaylist
:
(
VLCPlaylist
*
)
newPlaylist
;
-
(
VLCPlaylist
*
)
playlist
;
/* Play */
-
(
void
)
play
;
-
(
void
)
playItemAtIndex
:(
int
)
index
;
-
(
void
)
playMedia
:(
VLCMedia
*
)
media
;
-
(
void
)
pause
;
-
(
void
)
setCurrentTime
:(
VLCTime
*
)
timeObj
;
/* State */
-
(
BOOL
)
isPlaying
;
-
(
BOOL
)
isPaused
;
-
(
VLCTime
*
)
currentTime
;
-
(
id
)
currentPlaylistItem
;
/* Video output property */
-
(
void
)
setStretchesVideo
:(
BOOL
)
flag
;
-
(
BOOL
)
stretchesVideo
;
/* Fullscreen */
-
(
void
)
enterFullscreen
;
-
(
void
)
leaveFullscreen
;
/* Delegate */
-
(
void
)
setDelegate
:
(
id
)
newDelegate
;
-
(
id
)
delegate
;
@end
@protocol
VLCVideoViewDelegate
-
(
void
)
videoDidStop
:(
NSNotification
*
)
notification
;
-
(
void
)
videoDidPlay
:(
NSNotification
*
)
notification
;
-
(
void
)
videoDidPause
:(
NSNotification
*
)
notification
;
-
(
void
)
videoDidPlayNextPlaylistElement
:(
NSNotification
*
)
notification
;
-
(
void
)
videoDidChangeVolume
:(
NSNotification
*
)
notification
;
/* Returns NO if the Video shouldn't be paused */
-
(
BOOL
)
videoWillPause
:(
NSNotification
*
)
notification
;
/* Returns NO if the Video shouldn't play next playlist element */
-
(
BOOL
)
videoWillPlayNextPlaylistElement
:(
NSNotification
*
)
notification
;
/* Posted when the progress of the video has reached a new step
* (every second?).
* The -object contained in the notification is the new VLCTime */
-
(
void
)
videoDidChangeTime
:(
NSNotification
*
)
notification
;
@end
extras/MacOSX/Framework/Headers/VLCEventManager.h
0 → 100644
View file @
b5763548
/*****************************************************************************
* VLCEventManager.h: VLC.framework VLCEventManager header
*****************************************************************************
* Copyright (C) 2007 Pierre d'Herbemont
* Copyright (C) 2007 the VideoLAN team
* $Id$
*
* Authors: 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.
*****************************************************************************/
#import <Cocoa/Cocoa.h>
#import <pthread.h>
/* This object is here to ensure safe inter thread communication */
@interface
VLCEventManager
:
NSObject
{
NSMutableArray
*
messageQueue
;
pthread_t
dispatcherThread
;
pthread_mutex_t
queueLock
;
pthread_cond_t
signalData
;
}
/* Return the default manager */
+
(
id
)
sharedManager
;
-
(
void
)
callOnMainThreadDelegateOfObject
:(
id
)
aTarget
withDelegateMethod
:(
SEL
)
aSelector
withNotificationName
:(
NSString
*
)
aNotificationName
;
-
(
void
)
callOnMainThreadObject
:(
id
)
aTarget
withMethod
:(
SEL
)
aSelector
withArgumentAsObject
:
(
id
)
arg
;
@end
extras/MacOSX/Framework/Headers/VLCLibrary.h
0 → 100644
View file @
b5763548
/*****************************************************************************
* VLCLibrary.h: VLC.framework VLCLibrary implementation
*****************************************************************************
* Copyright (C) 2007 Pierre d'Herbemont
* Copyright (C) 2007 the VideoLAN team
* $Id$
*
* Authors: 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.
*****************************************************************************/
#import <Cocoa/Cocoa.h>
#include <vlc/libvlc.h>
#include <vlc/libvlc_structures.h>
#import <VLC/VLCPlaylist.h>
/*
* VLCLibrary object
*/
@interface
VLCLibrary
:
NSObject
+
(
libvlc_instance_t
*
)
sharedInstance
;
@end
/*
* Utility function
*/
#define quit_on_exception( ex ) __quit_on_exception( ex, __FUNCTION__, __FILE__, __LINE__ )
static
inline
void
__quit_on_exception
(
libvlc_exception_t
*
ex
,
const
char
*
function
,
const
char
*
file
,
int
line_number
)
{
if
(
libvlc_exception_raised
(
ex
))
{
/* XXX: localization */
NSRunCriticalAlertPanel
(
@"Error"
,
[
NSString
stringWithFormat
:
@"libvlc has thrown us an error: %s (%s:%d %s)"
,
libvlc_exception_get_message
(
ex
),
file
,
line_number
,
function
],
@"Quit"
,
nil
,
nil
);
exit
(
ex
->
i_code
);
}
}
/*
* LibVLCBridging category
*/
@interface
VLCPlaylist
(
LibVLCBridging
)
+
(
id
)
playlistWithLibVLCMediaList
:
(
libvlc_media_list_t
*
)
p_new_mlist
;
-
(
libvlc_media_list_t
*
)
libVLCMediaList
;
@end
@interface
VLCMedia
(
LibVLCBridging
)
-
(
id
)
initWithLibVLCMediaDescriptor
:
(
libvlc_media_descriptor_t
*
)
p_md
;
+
(
id
)
mediaWithLibVLCMediaDescriptor
:
(
libvlc_media_descriptor_t
*
)
p_md
;
-
(
libvlc_media_descriptor_t
*
)
libVLCMediaDescriptor
;
@end
extras/MacOSX/Framework/Makefile
0 → 100644
View file @
b5763548
CC
=
gcc
CFLAGS
=
-g
-O2
OBJCFLAGS
=
-fobjc-exceptions
LDFLAGS
=
-single_module
-read_only_relocs
suppress
# We should set this properly.
srcdir
=
../../..
LIBVLC
=
$(srcdir)
/src/.libs/libvlc.1.dylib
$(srcdir)
/src/.libs/libvlc-control.0.dylib
LIBVLC_HEADERS
=
$(srcdir)
/include
VLCCONFIG
=
$(srcdir)
/vlc-config
MODULES
=
$(
patsubst
%,
$(SRC_DIR)
/%,
$(_MODULES)
)
HEADERS_DIR
=
Headers
_EXPORTED_HEADERS
=
\
VLC/VLC.h
\
VLC/VLCMedia.h
\
VLC/VLCMediaDiscoverer.h
\
VLC/VLCMediaLibrary.h
\
VLC/VLCPlaylist.h
\
VLC/VLCPlaylistDataSource.h
\
VLC/VLCServicesDiscoverer.h
\
VLC/VLCTime.h
\
VLC/VLCVideoView.h
EXPORTED_HEADERS
=
$(
patsubst
%,
$(HEADERS_DIR)
/%,
$(_EXPORTED_HEADERS)
)
EXPORTED_RESOURCES
=
\
Resources/Info.plist
\
Resources/version.plist
SRC_DIR
=
Sources
_SRC
=
\
test.m
\
VLCEventManager.m
\
VLCLibrary.m
\
VLCMedia.m
\
VLCMediaLibrary.m
\
VLCMediaDiscoverer.m
\
VLCPlaylist.m
\
VLCPlaylistDataSource.m
\
VLCServicesDiscoverer.m
\
VLCTime.m
\
VLCVideoView.m
SRC
=
$(
patsubst
%,
$(SRC_DIR)
/%,
$(_SRC)
)
HEADERS
=
$(EXPORTED_HEADERS)
INCLUDES
=
-I
.
-I
$(LIBVLC_HEADERS)
-I
$(HEADERS_DIR)
FRAMEWORKS
=
-framework
Cocoa
OBJECTS
=
$(SRC:.m=.o)
all
:
VLC.framework
$(OBJECTS)
:
$(HEADERS)
.m.o
:
$<
$(CC)
-c
$(CFLAGS)
$(OBJCFLAGS)
$(INCLUDES)
$<
-o
$@
DIR
=
VLC.framework
\
VLC.framework/Version/Current/Framework
\
VLC.framework/Version/Current/Headers
\
VLC.framework/lib/libvlc.dylib
:
$(srcdir)/src/.libs/libvlc.dylib VLC.framework/lib
cp
-f
$(srcdir)
/src/.libs/libvlc.1.dylib VLC.framework/lib/libvlc.dylib
&&
\
install_name_tool
-id
`
pwd
`
/VLC.framework/lib/libvlc.1.dylib
\
VLC.framework/lib/libvlc.dylib
VLC.framework/lib/libvlc-control.dylib
:
$(srcdir)/src/.libs/libvlc-control.dylib VLC.framework/lib
mkdir
-p
VLC.framework/Version/Current/lib
&&
\
cp
-f
$<
$@
&&
\
install_name_tool
-id
`
pwd
`
/
$@
$@
&&
\
install_name_tool
-change
/usr/local/lib/libvlc.1.dylib
\
`
pwd
`
/VLC.framework/lib/libvlc.dylib
$@
VLC.framework/Headers
:
$(HEADERS)
mkdir
-p
VLC.framework/Version/Current/Headers
&&
\
cp
-f
$(EXPORTED_HEADERS)
VLC.framework/Version/Current/Headers
&&
\
ln
-sf
Version/Current/Headers VLC.framework
VLC.framework/Resources
:
mkdir
-p
VLC.framework/Version/Current/Resources
&&
\
cp
-f
$(EXPORTED_RESOURCES)
VLC.framework/Version/Current/Resources
&&
\
ln
-sf
Version/Current/Resources VLC.framework
VLC.framework/modules
:
/usr/bin/install
-c
-d
./VLC.framework/Version/Current/modules
&&
\
for
i
in
`
top_builddir
=
"
$(srcdir)
"
$(VLCCONFIG)
--target
plugin
`
;
do
\
if
test
-n
"
$$
i"
;
\
then
\
cp
"
`
pwd
`
/
`
dirname
$$
i
`
/.libs/
`
basename
$$
i
`
.dylib"
\
"./VLC.framework/Version/Current/modules"
;
\
module
=
"./VLC.framework/Version/Current/modules/
`
basename
$$
i
`
.dylib"
;
\
install_name_tool
-change
/usr/local/lib/libvlc.1.dylib
\
@loader_path/../lib/libvlc.dylib
\
"
$$
module"
;
\
echo
"changing install name of
$$
module"
;
\
for
lib
in
`
otool
-L
"
$$
module"
|
grep
@executable_path |
sed
's/(\([0-z]*\ *\.*\,*\)*)//g'
`
;
do
\
install_name_tool
-change
"
$$
lib"
\
`
echo
"
$$
lib"
|
sed
's:executable_path:loader_path/../:'
`
\
"
$$
module"
;
\
done
;
\
fi
\
done
&&
\
ln
-sf
Version/Current/modules VLC.framework
VLC.framework/share
:
cp
-R
$(srcdir)
/share ./VLC.framework/Version/Current
&&
\
ln
-sf
Version/Current/share ./VLC.framework
VLC.framework/lib
:
mkdir
-p
VLC.framework/Version/Current/lib
&&
\
if
test
-d
$(srcdir)
/extras/contrib/vlc-lib
;
then
\
for
i
in
$(srcdir)
/extras/contrib/vlc-lib/
*
.dylib
;
do
\
module
=
"VLC.framework/Version/Current/lib/
`
basename
$
${i}
`
"
;
\
cp
`
pwd
`
/
$
${i}
$
${module}
;
\
install_name_tool
-change
/usr/local/lib/libvlc.1 @loader_path/../lib/libvlc.dylib
\
$
${module}
;
\
echo
"changing install name of
$$
module"
;
\
for
lib
in
`
otool
-L
"
$$
module"
|
grep
@executable_path |
sed
's/(\([0-z]*\ *\.*\,*\)*)//g'
`
;
do
\
install_name_tool
-change
"
$$
lib"
\
`
echo
"
$$
lib"
|
sed
's:executable_path:loader_path/../:'
`
\
"
$$
module"
;
\
done
;
\
done
\
fi
&&
\
ln
-sf
Version/Current/lib VLC.framework
VLC.framework/VLC
:
ln
-sf
Version/Current/VLC VLC.framework
VLC.framework/Version/Current/VLC
:
$(OBJECTS) $(LIBVLC) VLC.framework/Headers VLC.framework/Resources VLC.framework/lib/libvlc-control.dylib VLC.framework/lib/libvlc.dylib VLC.framework/modules VLC.framework/share VLC.framework/VLC
mkdir
-p
VLC.framework/Version/Current/Framework
&&
\
$(CXX)
-dynamiclib
$(LDFLAGS)
$(OBJECTS)
$(FRAMEWORKS)
$(LIBVLC)
$(MODULES)
$(LIBS)
-install_name
@loader_path/../Frameworks/VLC.framework/Version/Current/VLC
-o
VLC.framework/Version/Current/VLC
&&
\
install_name_tool
-change
/usr/local/lib/libvlc-control.0.dylib
\
`
pwd
`
/VLC.framework/lib/libvlc-control.dylib
\
VLC.framework/Version/Current/VLC
&&
\
install_name_tool
-change
/usr/local/lib/libvlc.1.dylib
\
`
pwd
`
/VLC.framework/lib/libvlc.dylib
\
VLC.framework/Version/Current/VLC
&&
\
touch
VLC.framework
VLC.framework
::
VLC.framework/Version/Current/VLC
.PHONY
:
clean
clean
:
rm
-Rf
VLC.framework
rm
-Rf
$(OBJECTS)
*
.o
$(SRC_DIR)
/
*
.o
extras/MacOSX/Framework/Resources/Info.plist
0 → 100644
View file @
b5763548
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist
version=
"1.0"
>
<dict>
<key>
CFBundleDevelopmentRegion
</key>
<string>
English
</string>
<key>
CFBundleExecutable
</key>
<string>
Quartz
</string>
<key>
CFBundleIdentifier
</key>
<string>
org.videolan.vlcframework
</string>
<key>
CFBundleInfoDictionaryVersion
</key>
<string>
6.0
</string>
<key>
CFBundleName
</key>
<string>
VLC
</string>
<key>
CFBundlePackageType
</key>
<string>
FMWK
</string>
<key>
CFBundleShortVersionString
</key>
<string>
0.1
</string>
<key>
CFBundleVersion
</key>
<string>
0.1
</string>
</dict>
</plist>
extras/MacOSX/Framework/Resources/version.plist
0 → 100644
View file @
b5763548
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist
version=
"1.0"
>
<dict>
<key>
CFBundleShortVersionString
</key>
<string>
0.1
</string>
<key>
CFBundleVersion
</key>
<string>
0.1
</string>
<key>
ProjectName
</key>
<string>
VLC
</string>
</dict>
</plist>
extras/MacOSX/Framework/Sources/VLCEventManager.m
0 → 100644
View file @
b5763548
/*****************************************************************************
* VLCTime.h: VLC.framework VLCTime implementation
*****************************************************************************
* Copyright (C) 2007 Pierre d'Herbemont
* Copyright (C) 2007 the VideoLAN team
* $Id$
*
* Authors: 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.
*****************************************************************************/
#import "VLCEventManager.h"
#import <pthread.h>
static
VLCEventManager
*
defaultManager
=
NULL
;
enum
message_type_t
{
VLCNotification
,
VLCObjectMethodWithObjectArg
};
struct
message
{
id
target
;
SEL
sel
;
union
u
{
NSString
*
name
;
id
object
;
}
u
;
enum
message_type_t
type
;
};
@interface
VLCEventManager
(
Private
)
-
(
void
)
callDelegateOfObjectAndSendNotificationWithArgs
:(
NSData
*
)
data
;
-
(
void
)
callObjectMethodWithArgs
:(
NSData
*
)
data
;
-
(
void
)
callDelegateOfObject
:(
id
)
aTarget
withDelegateMethod
:
(
SEL
)
aSelector
withNotificationName
:
(
NSString
*
)
aNotificationName
;
-
(
pthread_cond_t
*
)
signalData
;
-
(
pthread_mutex_t
*
)
queueLock
;
-
(
NSMutableArray
*
)
messageQueue
;
@end
static
void
*
EventDispatcherMainLoop
(
void
*
user_data
)
{
VLCEventManager
*
self
=
user_data
;
for
(;;)
{
NSAutoreleasePool
*
pool
=
[[
NSAutoreleasePool
alloc
]
init
];
struct
message
*
message
,
*
message_newer
=
NULL
;
NSData
*
dataMessage
;
int
i
;
/* Wait for some data */
pthread_mutex_lock
(
[
self
queueLock
]
);
/* Wait until we have something on the queue */
if
([[
self
messageQueue
]
count
]
<=
0
)
do
{
pthread_cond_wait
(
[
self
signalData
],
[
self
queueLock
]
);
}
while
([[
self
messageQueue
]
count
]
<=
0
);
message
=
(
struct
message
*
)[(
NSData
*
)[[
self
messageQueue
]
lastObject
]
bytes
];
/* Don't send the same notification twice */
if
(
message
->
type
==
VLCNotification
)
{
for
(
i
=
0
;
i
<
[[
self
messageQueue
]
count
]
-
1
;
i
++
)
{
message_newer
=
(
struct
message
*
)[(
NSData
*
)[[
self
messageQueue
]
objectAtIndex
:
i
]
bytes
];
if
(
message_newer
->
type
!=
VLCNotification
)
continue
;
if
(
message_newer
->
target
==
message
->
target
&&
message_newer
->
target
==
message
->
target
&&
[
message_newer
->
u
.
name
isEqualToString
:
message
->
u
.
name
]
)
{
[
message_newer
->
target
release
];
[
message
->
u
.
name
release
];
[[
self
messageQueue
]
removeObjectAtIndex
:
i
];
i
--
;
}
}
}
dataMessage
=
[[
self
messageQueue
]
lastObject
];
pthread_mutex_unlock
(
[
self
queueLock
]
);
if
(
message
->
type
==
VLCNotification
)
[
self
performSelectorOnMainThread
:
@selector
(
callDelegateOfObjectAndSendNotificationWithArgs
:)
withObject
:
[
dataMessage
retain
]
waitUntilDone
:
NO
];
else
[
self
performSelectorOnMainThread
:
@selector
(
callObjectMethodWithArgs
:)
withObject
:
[
dataMessage
retain
]
waitUntilDone
:
NO
];
pthread_mutex_lock
(
[
self
queueLock
]
);
[[
self
messageQueue
]
removeLastObject
];
pthread_mutex_unlock
(
[
self
queueLock
]
);
[
pool
release
];
}
}
@implementation
VLCEventManager
+
(
id
)
sharedManager
{
/* We do want a lock here to avoid leaks */
if
(
!
defaultManager
)
{
defaultManager
=
[[
VLCEventManager
alloc
]
init
];
}
return
defaultManager
;
}
-
(
id
)
init
{
if
(
self
=
[
super
init
]
)
{
pthread_mutex_init
(
&
queueLock
,
NULL
);
pthread_cond_init
(
&
signalData
,
NULL
);
pthread_create
(
&
dispatcherThread
,
NULL
,
EventDispatcherMainLoop
,
self
);
messageQueue
=
[[
NSMutableArray
alloc
]
initWithCapacity
:
10
];
}
return
self
;
}
-
(
void
)
dealloc
{
pthread_kill
(
dispatcherThread
,
SIGKILL
);
pthread_join
(
dispatcherThread
,
NULL
);
[
super
dealloc
];
}
-
(
void
)
callOnMainThreadDelegateOfObject
:(
id
)
aTarget
withDelegateMethod
:(
SEL
)
aSelector
withNotificationName
:
(
NSString
*
)
aNotificationName
{
NSAutoreleasePool
*
pool
=
[[
NSAutoreleasePool
alloc
]
init
];
struct
message
message
=
{
[
aTarget
retain
],
aSelector
,
[
aNotificationName
retain
],
VLCNotification
};
pthread_mutex_lock
(
[
self
queueLock
]
);
[[
self
messageQueue
]
insertObject
:[
NSData
dataWithBytes
:
&
message
length
:
sizeof
(
struct
message
)]
atIndex
:
0
];
pthread_cond_signal
(
[
self
signalData
]
);
pthread_mutex_unlock
(
[
self
queueLock
]
);
[
pool
release
];
}
-
(
void
)
callOnMainThreadObject
:(
id
)
aTarget
withMethod
:(
SEL
)
aSelector
withArgumentAsObject
:
(
id
)
arg
{
NSAutoreleasePool
*
pool
=
[[
NSAutoreleasePool
alloc
]
init
];
struct
message
message
=
{
[
aTarget
retain
],
aSelector
,
[
arg
retain
],
VLCObjectMethodWithObjectArg
};
pthread_mutex_lock
(
[
self
queueLock
]
);
[[
self
messageQueue
]
insertObject
:[
NSData
dataWithBytes
:
&
message
length
:
sizeof
(
struct
message
)]
atIndex
:
0
];
pthread_cond_signal
(
[
self
signalData
]
);
pthread_mutex_unlock
(
[
self
queueLock
]
);
[
pool
release
];
}
@end
@implementation
VLCEventManager
(
Private
)
-
(
void
)
callDelegateOfObjectAndSendNotificationWithArgs
:(
NSData
*
)
data
{
struct
message
*
message
=
(
struct
message
*
)[
data
bytes
];
[
self
callDelegateOfObject
:
message
->
target
withDelegateMethod
:
message
->
sel
withNotificationName
:
message
->
u
.
name
];
[
message
->
u
.
name
release
];
[
message
->
target
release
];
[
data
release
];
}
-
(
void
)
callObjectMethodWithArgs
:(
NSData
*
)
data
{
struct
message
*
message
=
(
struct
message
*
)[
data
bytes
];
void
(
*
method
)(
id
,
SEL
,
id
)
=
(
void
(
*
)(
id
,
SEL
,
id
))[
message
->
target
methodForSelector
:
message
->
sel
];
method
(
message
->
target
,
message
->
sel
,
message
->
u
.
object
);
[
message
->
u
.
object
release
];
[
message
->
target
release
];
[
data
release
];
}
-
(
NSMutableArray
*
)
messageQueue
{
return
messageQueue
;
}
-
(
pthread_cond_t
*
)
signalData
{
return
&
signalData
;
}
-
(
pthread_mutex_t
*
)
queueLock
{
return
&
queueLock
;
}
-
(
void
)
callDelegateOfObject
:(
id
)
aTarget
withDelegateMethod
:
(
SEL
)
aSelector
withNotificationName
:
(
NSString
*
)
aNotificationName
{
NSMethodSignature
*
aSignature
;
NSInvocation
*
anInvocation
;
[[
NSNotificationCenter
defaultCenter
]
postNotification
:
[
NSNotification
notificationWithName
:
aNotificationName
object
:
aTarget
]];
if
(
!
[
aTarget
delegate
]
||
!
[[
aTarget
delegate
]
respondsToSelector
:
aSelector
])
return
;
/* NSInvocation could maybe be prefered here */
void
(
*
method
)(
id
,
SEL
,
id
)
=
(
void
(
*
)(
id
,
SEL
,
id
))[[
aTarget
delegate
]
methodForSelector
:
aSelector
];
method
(
[
aTarget
delegate
],
aSelector
,
[
NSNotification
notificationWithName
:
aNotificationName
object
:
aTarget
]);
}
@end
extras/MacOSX/Framework/Sources/VLCLibrary.m
0 → 100644
View file @
b5763548
/*****************************************************************************
* VLCLibrary.h: VLC.framework VLCLibrary implementation
*****************************************************************************
* Copyright (C) 2007 Pierre d'Herbemont
* Copyright (C) 2007 the VideoLAN team
* $Id$
*
* Authors: 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.
*****************************************************************************/
#import "VLCLibrary.h"
static
libvlc_instance_t
*
shared_instance
=
NULL
;
@implementation
VLCLibrary
+
(
libvlc_instance_t
*
)
sharedInstance
{
if
(
!
shared_instance
)
{
libvlc_exception_t
ex
;
char
*
lib_vlc_params
[]
=
{
"vlc"
,
"-I"
,
"dummy"
,
"-vvvvvv"
};
libvlc_exception_init
(
&
ex
);
shared_instance
=
libvlc_new
(
4
,
lib_vlc_params
,
&
ex
);
quit_on_exception
(
&
ex
);
}
return
shared_instance
;
}
@end
extras/MacOSX/Framework/Sources/VLCMedia.m
0 → 100644
View file @
b5763548
/*****************************************************************************
* VLCMedia.m: VLC.framework VLCMedia implementation
*****************************************************************************
* Copyright (C) 2007 Pierre d'Herbemont
* Copyright (C) 2007 the VideoLAN team
* $Id$
*
* Authors: 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.
*****************************************************************************/
#import <Cocoa/Cocoa.h>
#import <VLC/VLCMedia.h>
#import <VLC/VLCPlaylist.h>
#import "VLCEventManager.h"
#import "VLCLibrary.h"
#include <vlc/libvlc.h>
NSString
*
VLCMetaInformationTitle
=
@"title"
;
NSString
*
VLCMetaInformationAuthor
=
@"author"
;
NSString
*
VLCMetaInformationArtwork
=
@"artwork"
;
/* Our notification */
NSString
*
VLCMediaSubItemAdded
=
@"VLCMediaSubItemAdded"
;
NSString
*
VLCMediaMetaChanged
=
@"VLCMediaMetaChanged"
;
/* libvlc event callback */
static
void
HandleMediaSubItemAdded
(
const
libvlc_event_t
*
event
,
void
*
self
)
{
[[
VLCEventManager
sharedManager
]
callOnMainThreadDelegateOfObject
:
self
withDelegateMethod:
@selector
(
subItemAdded
:)
withNotificationName:
VLCMediaSubItemAdded
];
}
/* libvlc event callback */
static
void
HandleMediaMetaChanged
(
const
libvlc_event_t
*
event
,
void
*
self
)
{
[[
VLCEventManager
sharedManager
]
callOnMainThreadDelegateOfObject
:
self
withDelegateMethod:
@selector
(
metaChanged
:)
withNotificationName:
VLCMediaMetaChanged
];
}
@interface
VLCMedia
(
Private
)
-
(
void
)
initializeInternalMediaDescriptor
;
-
(
void
)
subItemAdded
:(
NSNotification
*
)
notification
;
-
(
void
)
metaChanged
:(
NSNotification
*
)
notification
;
-
(
void
)
fetchMetaInformation
;
@end
@implementation
VLCMedia
(
Private
)
-
(
void
)
initializeInternalMediaDescriptor
{
[[
NSNotificationCenter
defaultCenter
]
addObserver
:
self
selector
:
@selector
(
subItemAdded
:
)
name
:
VLCMediaSubItemAdded
object
:
self
];
[[
NSNotificationCenter
defaultCenter
]
addObserver
:
self
selector
:
@selector
(
metaChanged
:
)
name
:
VLCMediaMetaChanged
object
:
self
];
libvlc_exception_t
ex
;
libvlc_exception_init
(
&
ex
);
libvlc_event_manager_t
*
p_em
=
libvlc_media_descriptor_event_manager
(
md
,
&
ex
);
libvlc_event_attach
(
p_em
,
libvlc_MediaDescriptorSubItemAdded
,
HandleMediaSubItemAdded
,
self
,
&
ex
);
libvlc_event_attach
(
p_em
,
libvlc_MediaDescriptorMetaChanged
,
HandleMediaMetaChanged
,
self
,
&
ex
);
quit_on_exception
(
&
ex
);
libvlc_media_list_t
*
p_mlist
=
libvlc_media_descriptor_subitems
(
md
,
NULL
);
if
(
!
p_mlist
)
subitems
=
nil
;
else
{
subitems
=
[[
VLCPlaylist
playlistWithLibVLCMediaList
:
p_mlist
]
retain
];
libvlc_media_list_release
(
p_mlist
);
}
[
self
fetchMetaInformation
];
}
-
(
void
)
subItemAdded
:(
NSNotification
*
)
notification
{
if
(
!
subitems
)
{
libvlc_media_list_t
*
p_mlist
=
libvlc_media_descriptor_subitems
(
md
,
NULL
);
[
self
willChangeValueForKey
:
@"subitems"
];
subitems
=
[[
VLCPlaylist
playlistWithLibVLCMediaList
:
p_mlist
]
retain
];
[
self
didChangeValueForKey
:
@"subitems"
];
libvlc_media_list_release
(
p_mlist
);
}
}
-
(
void
)
metaChanged
:(
NSNotification
*
)
notification
{
[
self
fetchMetaInformation
];
}
-
(
void
)
fetchMetaInformation
{
NSMutableDictionary
*
temp
;
libvlc_exception_t
ex
;
char
*
title
;
char
*
artist
;
char
*
arturl
=
NULL
;
libvlc_exception_init
(
&
ex
);
title
=
libvlc_media_descriptor_get_meta
(
md
,
libvlc_meta_Title
,
&
ex
);
quit_on_exception
(
&
ex
);
artist
=
libvlc_media_descriptor_get_meta
(
md
,
libvlc_meta_Artist
,
&
ex
);
quit_on_exception
(
&
ex
);
arturl
=
libvlc_media_descriptor_get_meta
(
md
,
libvlc_meta_ArtworkURL
,
&
ex
);
quit_on_exception
(
&
ex
);
temp
=
[
NSMutableDictionary
dictionaryWithCapacity
:
2
];
if
(
title
)
[
temp
setObject
:
[
NSString
stringWithUTF8String
:
title
]
forKey
:
VLCMetaInformationTitle
];
#if 0
/* We need to perform that in a thread because this takes long. */
if (arturl)
{
NSString *plainStringURL = [NSString stringWithUTF8String:arturl];
NSString *escapedStringURL = [plainStringURL stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSURL *aURL = [NSURL URLWithString:escapedStringURL];
NSImage * art = [[NSImage alloc] initWithContentsOfURL: aURL];
[art autorelease];
if( art )
[temp setObject: art forKey: VLCMetaInformationArtwork];
}
#endif
free
(
title
);
free
(
artist
);
free
(
arturl
);
[
self
willChangeValueForKey
:
@"metaInformation"
];
if
(
metaInformation
)
[
metaInformation
release
];
metaInformation
=
[[
NSMutableDictionary
alloc
]
initWithDictionary
:
temp
];
[
self
didChangeValueForKey
:
@"metaInformation"
];
}
@end
@implementation
VLCMedia
-
(
id
)
initWithURL
:(
NSString
*
)
anURL
{
if
(
self
=
[
super
init
])
{
libvlc_exception_t
ex
;
url
=
[
anURL
copy
];
libvlc_exception_init
(
&
ex
);
md
=
libvlc_media_descriptor_new
(
[
VLCLibrary
sharedInstance
],
[
anURL
cString
],
&
ex
);
quit_on_exception
(
&
ex
);
metaInformation
=
nil
;
[
self
initializeInternalMediaDescriptor
];
}
return
self
;
}
+
(
id
)
mediaWithURL
:(
NSString
*
)
anURL
;
{
return
[[(
VLCMedia
*
)[
VLCMedia
alloc
]
initWithURL
:
anURL
]
autorelease
];
}
-
(
void
)
release
{
@synchronized
(
self
)
{
if
([
self
retainCount
]
<=
1
)
{
/* We must make sure we won't receive new event after an upcoming dealloc
* We also may receive a -retain in some event callback that may occcur
* Before libvlc_event_detach. So this can't happen in dealloc */
libvlc_event_manager_t
*
p_em
=
libvlc_media_descriptor_event_manager
(
md
,
NULL
);
libvlc_event_detach
(
p_em
,
libvlc_MediaDescriptorSubItemAdded
,
HandleMediaSubItemAdded
,
self
,
NULL
);
libvlc_event_detach
(
p_em
,
libvlc_MediaDescriptorMetaChanged
,
HandleMediaMetaChanged
,
self
,
NULL
);
}
[
super
release
];
}
}
-
(
void
)
dealloc
{
if
(
subitems
)
[
subitems
release
];
if
(
metaInformation
)
[
metaInformation
release
];
libvlc_media_descriptor_release
(
md
);
[
url
release
];
[
super
dealloc
];
}
-
(
NSString
*
)
url
{
return
[[
url
copy
]
autorelease
];
}
-
(
VLCPlaylist
*
)
subitems
{
return
subitems
;
}
/* Returns a dictionary with corresponding object associated with a meta */
-
(
NSDictionary
*
)
metaInformation
{
return
metaInformation
;
}
/* Not supported yet */
-
(
id
)
delegate
{
return
nil
;
}
@end
@implementation
VLCMedia
(
LibVLCBridging
)
-
(
id
)
initWithLibVLCMediaDescriptor
:
(
libvlc_media_descriptor_t
*
)
p_md
{
if
(
self
=
[
super
init
])
{
libvlc_exception_t
ex
;
char
*
p_url
;
libvlc_exception_init
(
&
ex
);
p_url
=
libvlc_media_descriptor_get_mrl
(
p_md
,
&
ex
);
quit_on_exception
(
&
ex
);
url
=
[[
NSString
stringWithCString
:
p_url
]
retain
];
libvlc_media_descriptor_retain
(
p_md
);
md
=
p_md
;
[
self
initializeInternalMediaDescriptor
];
}
return
self
;
}
+
(
id
)
mediaWithLibVLCMediaDescriptor
:
(
libvlc_media_descriptor_t
*
)
p_md
{
return
[[[
VLCMedia
alloc
]
initWithLibVLCMediaDescriptor
:
p_md
]
autorelease
];
}
-
(
libvlc_media_descriptor_t
*
)
libVLCMediaDescriptor
{
libvlc_media_descriptor_retain
(
md
);
return
md
;
}
@end
\ No newline at end of file
extras/MacOSX/Framework/Sources/VLCMediaDiscoverer.m
0 → 100644
View file @
b5763548
/*****************************************************************************
* VLCMediaDiscoverer.m: VLC.framework VLCMediaDiscoverer implementation
*****************************************************************************
* Copyright (C) 2007 Pierre d'Herbemont
* Copyright (C) 2007 the VideoLAN team
* $Id$
*
* Authors: 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.
*****************************************************************************/
#import <Cocoa/Cocoa.h>
#import <VLC/VLCMediaDiscoverer.h>
#import "VLCLibrary.h"
#include <vlc/libvlc.h>
@implementation
VLCMediaDiscoverer
-
(
id
)
initWithName
:(
NSString
*
)
aServiceName
{
if
(
self
=
[
super
init
])
{
libvlc_exception_t
ex
;
libvlc_exception_init
(
&
ex
);
localizedName
=
nil
;
playlist
=
nil
;
mdis
=
libvlc_media_discoverer_new_from_name
(
[
VLCLibrary
sharedInstance
],
[
aServiceName
cString
],
&
ex
);
quit_on_exception
(
&
ex
);
}
return
self
;
}
-
(
void
)
dealloc
{
if
(
localizedName
)
[
localizedName
release
];
if
(
playlist
)
[
playlist
release
];
libvlc_media_discoverer_release
(
mdis
);
[
super
dealloc
];
}
-
(
VLCPlaylist
*
)
playlist
{
if
(
playlist
)
return
playlist
;
libvlc_media_list_t
*
p_mlist
=
libvlc_media_discoverer_media_list
(
mdis
);
VLCPlaylist
*
ret
=
[
VLCPlaylist
playlistWithLibVLCMediaList
:
p_mlist
];
libvlc_media_list_release
(
p_mlist
);
/* Hack until this gets done properly upstream */
char
*
name
=
libvlc_media_discoverer_localized_name
(
mdis
);
if
(
!
name
)
{
VLCMedia
*
media
=
[
ret
mediaAtIndex
:
0
];
ret
=
media
?
(
VLCPlaylist
*
)[
media
subitems
]
:
nil
;
}
free
(
name
);
if
(
ret
)
{
playlist
=
[
ret
retain
];
}
return
ret
;
}
-
(
NSString
*
)
localizedName
{
NSString
*
ret
=
nil
;
char
*
name
=
libvlc_media_discoverer_localized_name
(
mdis
);
if
(
localizedName
)
return
localizedName
;
if
(
name
)
{
ret
=
[
NSString
stringWithCString
:
name
encoding
:
NSUTF8StringEncoding
];
free
(
name
);
}
/* XXX: Hack until this gets done properly upstream. This is really slow. */
if
(
!
ret
)
{
libvlc_media_list_t
*
p_mlist
=
libvlc_media_discoverer_media_list
(
mdis
);
ret
=
[[[[
VLCPlaylist
playlistWithLibVLCMediaList
:
p_mlist
]
mediaAtIndex
:
0
]
metaInformation
]
objectForKey
:
VLCMetaInformationTitle
];
libvlc_media_list_release
(
p_mlist
);
}
if
(
ret
)
{
localizedName
=
[
ret
retain
];
}
return
localizedName
;
}
@end
extras/MacOSX/Framework/Sources/VLCMediaLibrary.m
0 → 100644
View file @
b5763548
/*****************************************************************************
* VLCMediaDiscoverer.m: VLC.framework VLCMediaDiscoverer implementation
*****************************************************************************
* Copyright (C) 2007 Pierre d'Herbemont
* Copyright (C) 2007 the VideoLAN team
* $Id$
*
* Authors: 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.
*****************************************************************************/
#import <Cocoa/Cocoa.h>
#import <VLC/VLCMediaLibrary.h>
#import "VLCLibrary.h"
#include <vlc/libvlc.h>
static
VLCMediaLibrary
*
sharedMediaLibrary
=
NULL
;
@implementation
VLCMediaLibrary
+
(
id
)
sharedMediaLibrary
{
if
(
!
sharedMediaLibrary
)
{
sharedMediaLibrary
=
[[
VLCMediaLibrary
alloc
]
init
];
}
return
sharedMediaLibrary
;
}
-
(
id
)
init
{
if
(
self
=
[
super
init
])
{
libvlc_exception_t
p_e
;
libvlc_exception_init
(
&
p_e
);
mlib
=
libvlc_media_library_new
(
[
VLCLibrary
sharedInstance
],
&
p_e
);
quit_on_exception
(
&
p_e
);
libvlc_media_library_load
(
mlib
,
&
p_e
);
quit_on_exception
(
&
p_e
);
allMedia
=
nil
;
}
return
self
;
}
-
(
void
)
dealloc
{
if
(
allMedia
)
[
allMedia
release
];
libvlc_media_library_release
(
mlib
);
[
super
dealloc
];
}
-
(
VLCPlaylist
*
)
allMedia
{
if
(
!
allMedia
)
{
libvlc_media_list_t
*
p_mlist
=
libvlc_media_library_media_list
(
mlib
,
NULL
);
libvlc_media_list_t
*
p_flat_mlist
=
libvlc_media_list_flat_media_list
(
p_mlist
,
NULL
);
allMedia
=
[[
VLCPlaylist
playlistWithLibVLCMediaList
:
p_flat_mlist
]
retain
];
libvlc_media_list_release
(
p_flat_mlist
);
libvlc_media_list_release
(
p_mlist
);
}
return
allMedia
;
}
-
(
NSArray
*
)
playlists
{
libvlc_media_list_t
*
p_mlist
=
libvlc_media_library_media_list
(
mlib
,
NULL
);
VLCPlaylist
*
playlist
=
[
VLCPlaylist
playlistWithLibVLCMediaList
:
p_mlist
];
libvlc_media_list_release
(
p_mlist
);
NSArray
*
ret
=
[
playlist
sublists
];
return
ret
;
}
@end
extras/MacOSX/Framework/Sources/VLCPlaylist.m
0 → 100644
View file @
b5763548
This diff is collapsed.
Click to expand it.
extras/MacOSX/Framework/Sources/VLCPlaylistDataSource.m
0 → 100644
View file @
b5763548
/*****************************************************************************
* VLCPlaylistDataSource.m: VLC.framework VLCPlaylistDataSource implementation
*****************************************************************************
* Copyright (C) 2007 Pierre d'Herbemont
* Copyright (C) 2007 the VideoLAN team
* $Id$
*
* Authors: 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.
*****************************************************************************/
#import <VLC/VLCPlaylistDataSource.h>
#import "VLCEventManager.h"
@implementation
VLCPlaylistDataSource
-
(
id
)
init
{
if
(
self
=
[
super
init
])
{
playlist
=
nil
;
videoView
=
nil
;
}
return
self
;
}
-
(
id
)
initWithPlaylist
:(
VLCPlaylist
*
)
aPlaylist
{
if
(
self
=
[
super
init
])
{
playlist
=
[
aPlaylist
retain
];
[[
NSNotificationCenter
defaultCenter
]
addObserver
:
self
selector
:
@selector
(
playlistDidChange
:
)
name
:
VLCPlaylistItemAdded
object
:
nil
];
[[
NSNotificationCenter
defaultCenter
]
addObserver
:
self
selector
:
@selector
(
itemDidAddSubitem
:
)
name
:
VLCMediaSubItemAdded
object
:
nil
];
[[
NSNotificationCenter
defaultCenter
]
addObserver
:
self
selector
:
@selector
(
itemDidChange
:
)
name
:
VLCPlaylistItemChanged
object
:
nil
];
videoView
=
nil
;
outlineView
=
nil
;
}
return
self
;
}
-
(
id
)
initWithPlaylist
:(
VLCPlaylist
*
)
aPlaylist
videoView
:(
VLCVideoView
*
)
aVideoView
;
{
if
(
self
=
[
super
init
])
{
playlist
=
[
aPlaylist
retain
];
[[
NSNotificationCenter
defaultCenter
]
addObserver
:
self
selector
:
@selector
(
playlistDidChange
:
)
name
:
VLCPlaylistItemAdded
object
:
nil
];
[[
NSNotificationCenter
defaultCenter
]
addObserver
:
self
selector
:
@selector
(
itemDidAddSubitem
:
)
name
:
VLCMediaSubItemAdded
object
:
nil
];
[[
NSNotificationCenter
defaultCenter
]
addObserver
:
self
selector
:
@selector
(
itemDidChange
:
)
name
:
VLCPlaylistItemChanged
object
:
nil
];
videoView
=
[
aVideoView
retain
];
/* Will be automatically set if an outline view ask us data,
* be careful not to connect two outlineView to this object or this goes wrong. */
outlineView
=
nil
;
}
return
self
;
}
-
(
void
)
dealloc
{
[[
NSNotificationCenter
defaultCenter
]
removeObserver
:
self
];
if
(
playlist
)
[
playlist
release
];
if
(
videoView
)
[
videoView
release
];
[
super
dealloc
];
}
-
(
VLCPlaylist
*
)
playlist
{
return
playlist
;
}
-
(
VLCVideoView
*
)
videoView
{
return
videoView
;
}
@end
@implementation
VLCPlaylistDataSource
(
OutlineViewDataSource
)
-
(
BOOL
)
outlineView
:
(
NSOutlineView
*
)
ov
isItemExpandable
:
(
id
)
item
{
return
NO
;
}
-
(
int
)
outlineView
:
(
NSOutlineView
*
)
ov
numberOfChildrenOfItem
:(
id
)
item
{
return
0
;
}
-
(
id
)
outlineView
:
(
NSOutlineView
*
)
ov
child
:(
int
)
index
ofItem
:(
id
)
item
{
return
nil
;
}
-
(
id
)
outlineView
:
(
NSOutlineView
*
)
ov
objectValueForTableColumn
:(
NSTableColumn
*
)
col
byItem
:(
id
)
item
{
return
nil
;
}
@end
@implementation
VLCPlaylistDataSource
(
TableViewDropping
)
/* Dummy implementation cause we need them */
-
(
int
)
numberOfRowsInTableView
:(
NSTableView
*
)
aTableView
{
return
0
;
}
-
(
id
)
tableView
:(
NSTableView
*
)
aTableView
objectValueForTableColumn
:(
NSTableColumn
*
)
aTableColumn
row
:(
int
)
rowIndex
{
return
nil
;}
-
(
NSDragOperation
)
tableView
:(
NSTableView
*
)
tv
validateDrop
:(
id
<
NSDraggingInfo
>
)
info
proposedRow
:(
int
)
row
proposedDropOperation
:(
NSTableViewDropOperation
)
op
{
return
NSDragOperationEvery
;
/* This is for now */
}
-
(
BOOL
)
tableView
:(
NSTableView
*
)
aTableView
acceptDrop
:(
id
<
NSDraggingInfo
>
)
info
row
:(
int
)
row
dropOperation
:(
NSTableViewDropOperation
)
operation
{
int
i
;
NSArray
*
droppedItems
=
[[
info
draggingPasteboard
]
propertyListForType
:
NSFilenamesPboardType
];
for
(
i
=
0
;
i
<
[
droppedItems
count
];
i
++
)
{
NSString
*
filename
=
[
droppedItems
objectAtIndex
:
i
];
[[
self
playlist
]
insertMedia
:[
VLCMedia
mediaWithURL
:
filename
]
atIndex
:
row
+
i
];
}
}
@end
@interface
NSObject
(
UnknownBindingsObject
)
/* OutlineViewDataSourceDropping and bindings hack */
-
(
id
)
observedObject
;
@end
@implementation
VLCPlaylistDataSource
(
OutlineViewDataSourceDropping
)
-
(
BOOL
)
outlineView
:(
NSOutlineView
*
)
aOutlineView
acceptDrop
:(
id
<
NSDraggingInfo
>
)
info
item
:(
id
)
item
childIndex
:(
int
)
index
{
NSArray
*
droppedItems
=
[[
info
draggingPasteboard
]
propertyListForType
:
NSFilenamesPboardType
];
VLCPlaylist
*
aPlaylist
;
int
i
;
if
(
!
item
)
item
=
[
self
playlist
];
/* The root object is our playlist */
else
item
=
[
item
observedObject
];
if
(
!
[
item
isMemberOfClass
:[
VLCPlaylist
class
]])
return
NO
;
if
(
index
<
0
)
/* No precise item given, put it as the first one */
index
=
0
;
aPlaylist
=
item
;
if
(
!
droppedItems
)
{
/* XXX: localization */
NSRunCriticalAlertPanelRelativeToWindow
(
@"Error"
,
@"Unable to drop the provided item."
,
@"OK"
,
nil
,
nil
,
[
outlineView
window
]);
return
NO
;
}
for
(
i
=
0
;
i
<
[
droppedItems
count
];
i
++
)
{
NSString
*
filename
=
[
droppedItems
objectAtIndex
:
i
];
[
aPlaylist
insertMedia
:[
VLCMedia
mediaWithURL
:
filename
]
atIndex
:
index
+
i
];
}
return
YES
;
}
-
(
NSDragOperation
)
outlineView
:(
NSOutlineView
*
)
aOutlineView
validateDrop
:(
id
<
NSDraggingInfo
>
)
info
proposedItem
:(
id
)
item
proposedChildIndex
:(
int
)
index
{
return
NSDragOperationEvery
;
}
@end
\ No newline at end of file
extras/MacOSX/Framework/Sources/VLCServicesDiscoverer.m
0 → 100644
View file @
b5763548
/*****************************************************************************
* VLCMediaDiscoverer.m: VLC.framework VLCMediaDiscoverer implementation
*****************************************************************************
* Copyright (C) 2007 Pierre d'Herbemont
* Copyright (C) 2007 the VideoLAN team
* $Id$
*
* Authors: 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.
*****************************************************************************/
#import <Cocoa/Cocoa.h>
#import <VLC/VLCServicesDiscoverer.h>
#import <VLC/VLCMediaDiscoverer.h>
#import "VLCLibrary.h"
#include <vlc/libvlc.h>
static
VLCServicesDiscoverer
*
sharedDiscoverer
=
NULL
;
@implementation
VLCServicesDiscoverer
+
(
id
)
sharedDiscoverer
{
if
(
!
sharedDiscoverer
)
{
sharedDiscoverer
=
[[
self
alloc
]
init
];
}
return
sharedDiscoverer
;
}
-
(
id
)
init
{
if
(
self
=
[
super
init
]
)
{
services
=
[[
NSArray
arrayWithObjects
:
[[[
VLCMediaDiscoverer
alloc
]
initWithName
:
@"sap"
]
autorelease
],
[[[
VLCMediaDiscoverer
alloc
]
initWithName
:
@"shoutcast"
]
autorelease
],
[[[
VLCMediaDiscoverer
alloc
]
initWithName
:
@"shoutcasttv"
]
autorelease
],
nil
]
retain
];
}
return
self
;
}
-
(
NSArray
*
)
services
{
return
[[
services
copy
]
autorelease
];
}
@end
extras/MacOSX/Framework/Sources/VLCTime.m
0 → 100644
View file @
b5763548
/*****************************************************************************
* VLCTime.h: VLC.framework VLCTime implementation
*****************************************************************************
* Copyright (C) 2007 Pierre d'Herbemont
* Copyright (C) 2007 the VideoLAN team
* $Id$
*
* Authors: 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.
*****************************************************************************/
#import <VLC/VLCTime.h>
@implementation
VLCTime
-
(
id
)
initWithNumber
:(
NSNumber
*
)
aNumber
{
if
(
self
=
[
super
init
])
{
value
=
[
aNumber
copy
];
}
return
self
;
}
-
(
void
)
dealloc
{
[
value
release
];
[
super
dealloc
];
}
-
(
NSNumber
*
)
numberRepresentation
{
[[
value
copy
]
autorelease
];
}
-
(
NSString
*
)
stringRepresentation
{
int
hours
=
[
value
intValue
]
/
(
3600
*
1000
);
int
minutes
=
([
value
intValue
]
-
hours
*
3600
)
/
(
60
*
1000
);
int
seconds
=
([
value
intValue
]
-
hours
*
3600
*
1000
-
minutes
*
60
*
1000
)
/
1000
;
return
[
NSString
stringWithFormat
:
@"%02d:%02d:%02d"
,
hours
,
minutes
,
seconds
];
}
@end
extras/MacOSX/Framework/Sources/VLCVideoView.m
0 → 100644
View file @
b5763548
/*****************************************************************************
* VLCVideoView.h: VLC.framework VLCVideoView implementation
*****************************************************************************
* Copyright (C) 2007 Pierre d'Herbemont
* Copyright (C) 2007 the VideoLAN team
* $Id$
*
* Authors: 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.
*****************************************************************************/
#import <VLC/VLCVideoView.h>
#import "VLCLibrary.h"
#import "VLCEventManager.h"
/* Libvlc */
#include <vlc/vlc.h>
#include <vlc/libvlc.h>
/* Notification */
NSString
*
VLCVideoDidChangeVolume
=
@"VLCVideoDidChangeVolume"
;
NSString
*
VLCVideoDidChangeTime
=
@"VLCVideoDidChangeTime"
;
NSString
*
VLCVideoDidChangeCurrentlyPlayingItem
=
@"VLCVideoDidChangeCurrentlyPlayingItem"
;
NSString
*
VLCVideoDidPause
=
@"VLCVideoDidPause"
;
NSString
*
VLCVideoDidPlay
=
@"VLCVideoDidPlay"
;
NSString
*
VLCVideoDidStop
=
@"VLCVideoDidStop"
;
static
void
HandleMediaListPlayerCurrentPlayingItemChanged
(
const
libvlc_event_t
*
event
,
void
*
self
)
{
[[
VLCEventManager
sharedManager
]
callOnMainThreadDelegateOfObject
:
self
withDelegateMethod:
@selector
(
volumeDidChangeCurrentPlayingItem
:)
withNotificationName:
VLCVideoDidChangeCurrentlyPlayingItem
];
}
static
void
HandleMediaListPlayerPaused
(
const
libvlc_event_t
*
event
,
void
*
self
)
{
[[
VLCEventManager
sharedManager
]
callOnMainThreadDelegateOfObject
:
self
withDelegateMethod:
@selector
(
videoDidPause
:)
withNotificationName:
VLCVideoDidPause
];
}
static
void
HandleMediaListPlayerPlayed
(
const
libvlc_event_t
*
event
,
void
*
self
)
{
[[
VLCEventManager
sharedManager
]
callOnMainThreadDelegateOfObject
:
self
withDelegateMethod:
@selector
(
videoDidPlay
:)
withNotificationName:
VLCVideoDidPlay
];
}
static
void
HandleMediaListPlayerStopped
(
const
libvlc_event_t
*
event
,
void
*
self
)
{
[[
VLCEventManager
sharedManager
]
callOnMainThreadDelegateOfObject
:
self
withDelegateMethod:
@selector
(
videoDidStop
:)
withNotificationName:
VLCVideoDidStop
];
}
@implementation
VLCVideoView
-
(
id
)
initWithFrame
:(
NSRect
)
frameRect
{
if
(
self
=
[
super
initWithFrame
:
frameRect
])
{
libvlc_exception_t
p_e
;
libvlc_exception_init
(
&
p_e
);
p_mi
=
libvlc_media_instance_new
(
[
VLCLibrary
sharedInstance
],
&
p_e
);
quit_on_exception
(
&
p_e
);
p_mlp
=
libvlc_media_list_player_new
(
[
VLCLibrary
sharedInstance
],
&
p_e
);
quit_on_exception
(
&
p_e
);
libvlc_media_list_player_set_media_instance
(
p_mlp
,
p_mi
,
&
p_e
);
quit_on_exception
(
&
p_e
);
libvlc_media_instance_set_drawable
(
p_mi
,
(
libvlc_drawable_t
)
self
,
&
p_e
);
quit_on_exception
(
&
p_e
);
libvlc_event_manager_t
*
p_em
=
libvlc_media_list_event_manager
(
p_mlp
,
&
p_e
);
//libvlc_event_attach( p_em, libvlc_MediaListPlayerCurrentPlayingItemChanged, HandleMediaListPlayerCurrentPlayingItemChanged, self, &p_e );
//libvlc_event_attach( p_em, libvlc_MediaListPlayerPaused, HandleMediaListPlayerPaused, self, &p_e );
//libvlc_event_attach( p_em, libvlc_MediaListPlayerPlayed, HandleMediaListPlayerPlayed, self, &p_e );
//libvlc_event_attach( p_em, libvlc_MediaListPlayerStopped, HandleMediaListPlayerStopped, self, &p_e );
quit_on_exception
(
&
p_e
);
delegate
=
nil
;
playlist
=
nil
;
[
self
setStretchesVideo
:
NO
];
[
self
setAutoresizesSubviews
:
YES
];
}
return
self
;
}
-
(
void
)
dealloc
{
libvlc_media_instance_release
(
p_mi
);
if
(
delegate
)
{
[
delegate
release
];
delegate
=
nil
;
}
[
super
dealloc
];
}
-
(
void
)
setPlaylist
:
(
VLCPlaylist
*
)
newPlaylist
{
libvlc_exception_t
p_e
;
libvlc_exception_init
(
&
p_e
);
if
(
playlist
)
[
playlist
release
];
playlist
=
[
newPlaylist
retain
];
libvlc_media_list_player_set_media_list
(
p_mlp
,
[
playlist
libVLCMediaList
],
&
p_e
);
quit_on_exception
(
&
p_e
);
}
-
(
VLCPlaylist
*
)
playlist
{
return
playlist
;
}
/* Play */
-
(
void
)
play
{
libvlc_exception_t
p_e
;
libvlc_exception_init
(
&
p_e
);
libvlc_media_list_player_play
(
p_mlp
,
&
p_e
);
quit_on_exception
(
&
p_e
);
}
-
(
void
)
playItemAtIndex
:(
int
)
i
{
libvlc_exception_t
p_e
;
libvlc_exception_init
(
&
p_e
);
libvlc_media_list_player_play_item_at_index
(
p_mlp
,
i
,
&
p_e
);
quit_on_exception
(
&
p_e
);
}
-
(
void
)
playMedia
:(
VLCMedia
*
)
media
{
libvlc_exception_t
p_e
;
libvlc_exception_init
(
&
p_e
);
libvlc_media_list_player_play_item
(
p_mlp
,
[
media
libVLCMediaDescriptor
],
&
p_e
);
quit_on_exception
(
&
p_e
);
}
-
(
void
)
pause
{
libvlc_exception_t
p_e
;
libvlc_exception_init
(
&
p_e
);
//libvlc_media_list_player_pause( p_mlp, &p_e );
quit_on_exception
(
&
p_e
);
}
-
(
void
)
setCurrentTime
:(
VLCTime
*
)
timeObj
{
}
/* State */
-
(
BOOL
)
isPlaying
{
//libvlc_media_list_player_is_playing( p_mlp, &p_e );
//quit_on_exception( &p_e );
return
FALSE
;
}
-
(
BOOL
)
isPaused
{
return
FALSE
;
}
-
(
VLCTime
*
)
currentTime
{
return
NULL
;
}
-
(
id
)
currentPlaylistItem
{
return
NULL
;
}
/* Video output property */
-
(
void
)
setStretchesVideo
:(
BOOL
)
flag
{
stretchVideo
=
flag
;
}
-
(
BOOL
)
stretchesVideo
{
return
stretchVideo
;
}
/* Fullscreen */
-
(
void
)
enterFullscreen
{
}
-
(
void
)
leaveFullscreen
{
}
/* Delegate */
-
(
void
)
setDelegate
:
(
id
)
newDelegate
{
if
(
delegate
)
[
delegate
release
];
delegate
=
[
newDelegate
retain
];
}
-
(
id
)
delegate
{
return
delegate
;
}
@end
@implementation
VLCVideoView
(
NSViewSubclass
)
-
(
void
)
drawRect
:(
NSRect
)
aRect
{
[
self
lockFocus
];
[[
NSColor
blackColor
]
set
];
NSRectFill
(
aRect
);
[
self
unlockFocus
];
}
-
(
BOOL
)
preservesContentDuringLiveResize
{
return
NO
;
//YES;
}
-
(
BOOL
)
isOpaque
{
return
YES
;
}
@end
@interface
VLCOpenGLVoutView
:
NSView
/* This is part of the hack to avoid a warning in -[VLCVideoView addVoutSubview:] */
-
(
void
)
detachFromVout
;
@end
@implementation
VLCVideoView
(
VLCOpenGLVoutEmbedding
)
/* This is called by the libvlc module 'macosx' as soon as there is one vout
* available */
-
(
void
)
addVoutSubview
:(
id
)
aView
{
if
(
[[
self
subviews
]
count
]
)
{
/* XXX: This is a hack until core gets fixed */
int
i
;
for
(
i
=
0
;
i
<
[[
self
subviews
]
count
];
i
++
)
{
[[[
self
subviews
]
objectAtIndex
:
i
]
detachFromVout
];
[[[
self
subviews
]
objectAtIndex
:
i
]
retain
];
[[[
self
subviews
]
objectAtIndex
:
i
]
removeFromSuperview
];
}
}
[
self
addSubview
:
aView
];
[
aView
setFrame
:
[
self
bounds
]];
[
aView
setAutoresizingMask
:
NSViewHeightSizable
|
NSViewWidthSizable
];
}
@end
extras/MacOSX/Framework/Sources/test.m
0 → 100644
View file @
b5763548
//
// test.m - Nothing useful yet
// VLC.framework
//
// Created by Pierre d'Herbemont on 13/04/07.
// Copyright __MyCompanyName__ 2007. All rights reserved.
//
#include
<VLC
/
VLC
.
h
>
int test_vlc_framework()
{
return 0xbabe;
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment