Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
V
vlc-2-2
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-2-2
Commits
a8b37fbd
Commit
a8b37fbd
authored
Jun 28, 2010
by
Pierre d'Herbemont
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
VLCKit: Import MobileVLCKit.
parent
b3564a7d
Changes
25
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
25 changed files
with
1490 additions
and
179 deletions
+1490
-179
projects/macosx/framework/Headers/Internal/VLCEventManager.h
projects/macosx/framework/Headers/Internal/VLCEventManager.h
+21
-18
projects/macosx/framework/Headers/Internal/VLCLibVLCBridging.h
...cts/macosx/framework/Headers/Internal/VLCLibVLCBridging.h
+4
-0
projects/macosx/framework/Headers/Public/MobileVLCKit.h
projects/macosx/framework/Headers/Public/MobileVLCKit.h
+23
-0
projects/macosx/framework/Headers/Public/VLCAudio.h
projects/macosx/framework/Headers/Public/VLCAudio.h
+2
-0
projects/macosx/framework/Headers/Public/VLCLibrary.h
projects/macosx/framework/Headers/Public/VLCLibrary.h
+1
-0
projects/macosx/framework/Headers/Public/VLCMedia.h
projects/macosx/framework/Headers/Public/VLCMedia.h
+102
-0
projects/macosx/framework/Headers/Public/VLCMediaDiscoverer.h
...ects/macosx/framework/Headers/Public/VLCMediaDiscoverer.h
+2
-1
projects/macosx/framework/Headers/Public/VLCMediaList.h
projects/macosx/framework/Headers/Public/VLCMediaList.h
+1
-0
projects/macosx/framework/Headers/Public/VLCMediaPlayer.h
projects/macosx/framework/Headers/Public/VLCMediaPlayer.h
+15
-3
projects/macosx/framework/Headers/Public/VLCMediaThumbnailer.h
...cts/macosx/framework/Headers/Public/VLCMediaThumbnailer.h
+56
-0
projects/macosx/framework/Headers/Public/VLCTime.h
projects/macosx/framework/Headers/Public/VLCTime.h
+2
-0
projects/macosx/framework/MobileVLCKit.xcodeproj/project.pbxproj
...s/macosx/framework/MobileVLCKit.xcodeproj/project.pbxproj
+382
-0
projects/macosx/framework/MobileVLCKit/AggregateStaticPlugins.sh
...s/macosx/framework/MobileVLCKit/AggregateStaticPlugins.sh
+230
-0
projects/macosx/framework/MobileVLCKit/MobileVLCKit.xcconfig
projects/macosx/framework/MobileVLCKit/MobileVLCKit.xcconfig
+28
-0
projects/macosx/framework/MobileVLCKit_Prefix.pch
projects/macosx/framework/MobileVLCKit_Prefix.pch
+9
-0
projects/macosx/framework/Sources/VLCEventManager.m
projects/macosx/framework/Sources/VLCEventManager.m
+145
-66
projects/macosx/framework/Sources/VLCLibrary.m
projects/macosx/framework/Sources/VLCLibrary.m
+20
-6
projects/macosx/framework/Sources/VLCMedia.m
projects/macosx/framework/Sources/VLCMedia.m
+149
-26
projects/macosx/framework/Sources/VLCMediaDiscoverer.m
projects/macosx/framework/Sources/VLCMediaDiscoverer.m
+5
-18
projects/macosx/framework/Sources/VLCMediaList.m
projects/macosx/framework/Sources/VLCMediaList.m
+6
-18
projects/macosx/framework/Sources/VLCMediaPlayer.m
projects/macosx/framework/Sources/VLCMediaPlayer.m
+21
-21
projects/macosx/framework/Sources/VLCMediaThumbnailer.m
projects/macosx/framework/Sources/VLCMediaThumbnailer.m
+235
-0
projects/macosx/framework/Sources/VLCTime.m
projects/macosx/framework/Sources/VLCTime.m
+1
-1
projects/macosx/framework/VLCKit.xcodeproj/project.pbxproj
projects/macosx/framework/VLCKit.xcodeproj/project.pbxproj
+21
-0
projects/macosx/framework/VLC_Prefix.pch
projects/macosx/framework/VLC_Prefix.pch
+9
-1
No files found.
projects/macosx/framework/Headers/Internal/VLCEventManager.h
View file @
a8b37fbd
...
...
@@ -22,7 +22,6 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
*****************************************************************************/
#import <Cocoa/Cocoa.h>
#import <pthread.h>
/**
...
...
@@ -30,7 +29,9 @@
*/
@interface
VLCEventManager
:
NSObject
{
NSMutableArray
*
messageQueue
;
//< Holds a queue of messages.
NSMutableArray
*
messageQueue
;
//< Holds a queue of messages.
NSMutableArray
*
pendingMessagesOnMainThread
;
//< Holds the message that are being posted on main thread.
NSLock
*
pendingMessagesLock
;
pthread_t
dispatcherThread
;
//< Thread responsible for dispatching messages.
pthread_mutex_t
queueLock
;
//< Queue lock.
pthread_cond_t
signalData
;
//< Data lock.
...
...
@@ -46,44 +47,46 @@
/* Operations */
/**
* Sends a message to the target's delegate on the main thread.
* \discussion The main thread is the one in which the main run loop is run, which usually
* means the one in which the NSApplication object receives events. The method is performed
* when the main thread runs the run loop in one of the common run loop modes (as specified
* \discussion The main thread is the one in which the main run loop is run, which usually
* means the one in which the NSApplication object receives events. The method is performed
* when the main thread runs the run loop in one of the common run loop modes (as specified
* in the CFRunLoop documentation).
*
* The receiver is retained until the call is finished.
* \param aTarget The target object who's delegate should receive the specified message.
* \param aSelector A selector that identifies the method to invoke. The method should not
* have a significant return value and should take a single argument of type NSNotification,
* \param aSelector A selector that identifies the method to invoke. The method should not
* have a significant return value and should take a single argument of type NSNotification,
* or no arguments.
*
* See “Selectors” for a description of the SEL type.
* \param aNotificiationName The name of the notification that should be sent to the
* \param aNotificiationName The name of the notification that should be sent to the
* distributed notification center.
*/
-
(
void
)
callOnMainThreadDelegateOfObject
:(
id
)
aTarget
withDelegateMethod
:(
SEL
)
aSelector
-
(
void
)
callOnMainThreadDelegateOfObject
:(
id
)
aTarget
withDelegateMethod
:(
SEL
)
aSelector
withNotificationName
:(
NSString
*
)
aNotificationName
;
/**
* Sends a message to the target on the main thread.
* \discussion The main thread is the one in which the main run loop is run, which usually
* means the one in which the NSApplication object receives events. The method is performed
* when the main thread runs the run loop in one of the common run loop modes (as specified
* \discussion The main thread is the one in which the main run loop is run, which usually
* means the one in which the NSApplication object receives events. The method is performed
* when the main thread runs the run loop in one of the common run loop modes (as specified
* in the CFRunLoop documentation).
*
* The receiver and arg are retained until the call is finished.
* \param aTarget The target object who should receive the specified message.
* \param aSelector A selector that identifies the method to invoke. The method should not
* have a significant return value and should take a single argument of type id,
* \param aSelector A selector that identifies the method to invoke. The method should not
* have a significant return value and should take a single argument of type id,
* or no arguments.
*
* See “Selectors” for a description of the SEL type.
* \param arg The argument to pass in the message. Pass nil if the method does not take an
* \param arg The argument to pass in the message. Pass nil if the method does not take an
* argument.
* distributed notification center.
*/
-
(
void
)
callOnMainThreadObject
:(
id
)
aTarget
withMethod
:(
SEL
)
aSelector
-
(
void
)
callOnMainThreadObject
:(
id
)
aTarget
withMethod
:(
SEL
)
aSelector
withArgumentAsObject
:(
id
)
arg
;
-
(
void
)
cancelCallToObject
:(
id
)
target
;
@end
projects/macosx/framework/Headers/Internal/VLCLibVLCBridging.h
View file @
a8b37fbd
...
...
@@ -23,7 +23,9 @@
*****************************************************************************/
#import "VLCLibrary.h"
#if !TARGET_OS_IPHONE
#import "VLCStreamOutput.h"
#endif
#import "VLCMediaPlayer.h"
/**
...
...
@@ -147,6 +149,8 @@
/**
* TODO: Documentation
*/
#if !TARGET_OS_IPHONE
@interface
VLCStreamOutput
(
LibVLCBridge
)
-
(
NSString
*
)
representedLibVLCOptions
;
@end
#endif
projects/macosx/framework/Headers/Public/MobileVLCKit.h
0 → 100644
View file @
a8b37fbd
/*
* MobileVLCKit.h
* VLCKit
*
* Created by Pierre d'Herbemont on 6/28/10.
* Copyright 2010 __MyCompanyName__. All rights reserved.
*
*/
#import <MobileVLCKit/VLCLibrary.h>
#import <MobileVLCKit/VLCMedia.h>
#import <MobileVLCKit/VLCMediaList.h>
#import <MobileVLCKit/VLCMediaPlayer.h>
#import <MobileVLCKit/VLCMediaDiscoverer.h>
#import <MobileVLCKit/VLCTime.h>
#import <MobileVLCKit/VLCAudio.h>
@
class
VLCMedia
;
@
class
VLCMediaLibrary
;
@
class
VLCMediaList
;
@
class
VLCTime
;
@
class
VLCVideoView
;
@
class
VLCAudio
;
projects/macosx/framework/Headers/Public/VLCAudio.h
View file @
a8b37fbd
...
...
@@ -22,6 +22,8 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
*****************************************************************************/
#import <Foundation/Foundation.h>
/* Notification Messages */
/**
* Standard notification messages that are emitted by VLCAudio object.
...
...
projects/macosx/framework/Headers/Public/VLCLibrary.h
View file @
a8b37fbd
...
...
@@ -22,6 +22,7 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
*****************************************************************************/
#import <Foundation/Foundation.h>
#import "VLCAudio.h"
#import "VLCMediaList.h"
#import "VLCMedia.h"
...
...
projects/macosx/framework/Headers/Public/VLCMedia.h
View file @
a8b37fbd
...
...
@@ -22,6 +22,7 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
*****************************************************************************/
#import <Foundation/Foundation.h>
#import "VLCMediaList.h"
#import "VLCTime.h"
...
...
@@ -95,6 +96,13 @@ typedef enum VLCMediaState
* \param key The key of the value that was changed.
*/
-
(
void
)
media
:(
VLCMedia
*
)
aMedia
metaValueChangedFrom
:(
id
)
oldValue
forKey
:(
NSString
*
)
key
;
/**
* Delegate method called whenever the media was parsed.
* \param aMedia The media resource whose meta data has been changed.
*/
-
(
void
)
mediaDidFinishParsing
:(
VLCMedia
*
)
aMedia
;
@end
/**
...
...
@@ -116,6 +124,7 @@ typedef enum VLCMediaState
BOOL
areOthersMetaFetched
;
//< Value used to determine of the other meta has been parsed
BOOL
isArtURLFetched
;
//< Value used to determine of the other meta has been preparsed
VLCMediaState
state
;
//< Current state of the media
BOOL
isParsed
;
}
/* Factories */
...
...
@@ -230,4 +239,97 @@ typedef enum VLCMediaState
*/
-
(
void
)
setValue
:(
id
)
value
forMeta
:(
NSString
*
)
VLCMetaInformation
;
/**
* Tracks information NSDictionary Possible Keys
*/
/**
* \returns a NSNumber
*/
extern
NSString
*
VLCMediaTracksInformationCodec
;
/**
* \returns a NSNumber
*/
extern
NSString
*
VLCMediaTracksInformationId
;
/**
* \returns a NSString
* \see VLCMediaTracksInformationTypeAudio
* \see VLCMediaTracksInformationTypeVideo
* \see VLCMediaTracksInformationTypeText
* \see VLCMediaTracksInformationTypeUnknown
*/
extern
NSString
*
VLCMediaTracksInformationType
;
/**
* \returns a NSNumber
*/
extern
NSString
*
VLCMediaTracksInformationCodecProfile
;
/**
* \returns a NSNumber
*/
extern
NSString
*
VLCMediaTracksInformationCodecLevel
;
/**
* \returns the audio channels number as NSNumber
*/
extern
NSString
*
VLCMediaTracksInformationAudioChannelsNumber
;
/**
* \returns the audio rate as NSNumber
*/
extern
NSString
*
VLCMediaTracksInformationAudioRate
;
/**
* \returns the height as NSNumber
*/
extern
NSString
*
VLCMediaTracksInformationVideoHeight
;
/**
* \returns the width as NSNumber
*/
extern
NSString
*
VLCMediaTracksInformationVideoWidth
;
/**
* Tracks information NSDictionary values for
* VLCMediaTracksInformationType
*/
extern
NSString
*
VLCMediaTracksInformationTypeAudio
;
extern
NSString
*
VLCMediaTracksInformationTypeVideo
;
extern
NSString
*
VLCMediaTracksInformationTypeText
;
extern
NSString
*
VLCMediaTracksInformationTypeUnknown
;
/**
* Returns the tracks information.
*
* This is an array of NSDictionary representing each track.
* It can contains the following keys:
*
* \see VLCMediaTracksInformationCodec
* \see VLCMediaTracksInformationId
* \see VLCMediaTracksInformationType
*
* \see VLCMediaTracksInformationCodecProfile
* \see VLCMediaTracksInformationCodecLevel
*
* \see VLCMediaTracksInformationAudioChannelsNumber
* \see VLCMediaTracksInformationAudioRate
*
* \see VLCMediaTracksInformationVideoHeight
* \see VLCMediaTracksInformationVideoWidth
*/
-
(
NSArray
*
)
tracksInformation
;
/**
* Start asynchronously to parse the media.
* This will attempt to fetch the meta data and tracks information.
*
* This is automatically done when an accessor requiring parsing
* is called.
*
* \see -[VLCMediaDelegate mediaDidFinishParsing:]
*/
-
(
void
)
parse
;
@end
projects/macosx/framework/Headers/Public/VLCMediaDiscoverer.h
View file @
a8b37fbd
...
...
@@ -22,7 +22,8 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
*****************************************************************************/
#import <VLCKit/VLCMediaList.h>
#import <Foundation/Foundation.h>
#import "VLCMediaList.h"
@class
VLCMediaList
;
...
...
projects/macosx/framework/Headers/Public/VLCMediaList.h
View file @
a8b37fbd
...
...
@@ -22,6 +22,7 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
*****************************************************************************/
#import <Foundation/Foundation.h>
#import "VLCMedia.h"
/* Notification Messages */
...
...
projects/macosx/framework/Headers/Public/VLCMediaPlayer.h
View file @
a8b37fbd
...
...
@@ -24,12 +24,19 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
*****************************************************************************/
#import <Foundation/Foundation.h>
#if TARGET_OS_IPHONE
# import <CoreGraphics/CoreGraphics.h>
#endif
#import "VLCMedia.h"
#import "VLCVideoView.h"
#import "VLCVideoLayer.h"
#import "VLCTime.h"
#import "VLCAudio.h"
#if !TARGET_OS_IPHONE
@class
VLCVideoView
;
@class
VLCVideoLayer
;
#endif
/* Notification Messages */
extern
NSString
*
VLCMediaPlayerTimeChanged
;
extern
NSString
*
VLCMediaPlayerStateChanged
;
...
...
@@ -75,6 +82,7 @@ extern NSString * VLCMediaPlayerStateToString(VLCMediaPlayerState state);
-
(
void
)
mediaPlayerStateChanged
:(
NSNotification
*
)
aNotification
;
@end
// TODO: Should we use medialist_player or our own flavor of media player?
@interface
VLCMediaPlayer
:
NSObject
{
...
...
@@ -89,9 +97,11 @@ extern NSString * VLCMediaPlayerStateToString(VLCMediaPlayerState state);
VLCAudio
*
audio
;
}
#if !TARGET_OS_IPHONE
/* Initializers */
-
(
id
)
initWithVideoView
:(
VLCVideoView
*
)
aVideoView
;
-
(
id
)
initWithVideoLayer
:(
VLCVideoLayer
*
)
aVideoLayer
;
#endif
/* Properties */
-
(
void
)
setDelegate
:(
id
)
value
;
...
...
@@ -100,8 +110,10 @@ extern NSString * VLCMediaPlayerStateToString(VLCMediaPlayerState state);
/* Video View Options */
// TODO: Should be it's own object?
#if !TARGET_OS_IPHONE
-
(
void
)
setVideoView
:(
VLCVideoView
*
)
aVideoView
;
-
(
void
)
setVideoLayer
:(
VLCVideoLayer
*
)
aVideoLayer
;
#endif
@property
(
retain
)
id
drawable
;
/* The videoView or videoLayer */
...
...
@@ -135,7 +147,7 @@ extern NSString * VLCMediaPlayerStateToString(VLCMediaPlayerState state);
@property
(
readonly
)
VLCAudio
*
audio
;
/* Video Information */
-
(
NS
Size
)
videoSize
;
-
(
CG
Size
)
videoSize
;
-
(
BOOL
)
hasVideoOut
;
-
(
float
)
framesPerSecond
;
...
...
projects/macosx/framework/Headers/Public/VLCMediaThumbnailer.h
0 → 100644
View file @
a8b37fbd
//
// VLCMediaThumbnailer.h
// VLCKit
//
// Created by Pierre d'Herbemont on 7/10/10.
// Copyright 2010 __MyCompanyName__. All rights reserved.
//
#import <Foundation/Foundation.h>
#if TARGET_OS_IPHONE
# import <CoreGraphics/CoreGraphics.h>
#endif
@class
VLCMedia
;
@protocol
VLCMediaThumbnailerDelegate
;
@interface
VLCMediaThumbnailer
:
NSObject
{
id
<
VLCMediaThumbnailerDelegate
>
_delegate
;
VLCMedia
*
_media
;
void
*
_mp
;
CGImageRef
_thumbnail
;
void
*
_data
;
NSTimer
*
_parsingTimeoutTimer
;
CGFloat
_thumbnailHeight
,
_thumbnailWidth
;
CGFloat
_effectiveThumbnailHeight
,
_effectiveThumbnailWidth
;
}
+
(
VLCMediaThumbnailer
*
)
thumbnailerWithMedia
:(
VLCMedia
*
)
media
andDelegate
:(
id
<
VLCMediaThumbnailerDelegate
>
)
delegate
;
-
(
void
)
fetchThumbnail
;
@property
(
readwrite
,
assign
)
id
<
VLCMediaThumbnailerDelegate
>
delegate
;
@property
(
readwrite
,
retain
)
VLCMedia
*
media
;
@property
(
readwrite
,
assign
)
CGImageRef
thumbnail
;
/**
* Thumbnail Height
* You shouldn't change this after -fetchThumbnail
* has been called.
* @return thumbnail height. Default value 240.
*/
@property
(
readwrite
,
assign
)
CGFloat
thumbnailHeight
;
/**
* Thumbnail Width
* You shouldn't change this after -fetchThumbnail
* has been called.
* @return thumbnail height. Default value 320
*/
@property
(
readwrite
,
assign
)
CGFloat
thumbnailWidth
;
@end
@protocol
VLCMediaThumbnailerDelegate
@required
-
(
void
)
mediaThumbnailer
:(
VLCMediaThumbnailer
*
)
mediaThumbnailer
didFinishThumbnail
:(
CGImageRef
)
thumbnail
;
@end
projects/macosx/framework/Headers/Public/VLCTime.h
View file @
a8b37fbd
...
...
@@ -22,6 +22,8 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
*****************************************************************************/
#import <Foundation/Foundation.h>
/**
* Provides an object to define VLCMedia's time.
*/
...
...
projects/macosx/framework/MobileVLCKit.xcodeproj/project.pbxproj
0 → 100644
View file @
a8b37fbd
This diff is collapsed.
Click to expand it.
projects/macosx/framework/MobileVLCKit/AggregateStaticPlugins.sh
0 → 100755
View file @
a8b37fbd
#!/bin/sh
# Pre-Compile.sh
# MobileVLC
#
# Created by Pierre d'Herbemont on 6/27/10.
# Copyright 2010 __MyCompanyName__. All rights reserved.
plugins+
=
"access/access_attachment "
plugins+
=
"access/access_avio "
plugins+
=
"access/access_bd "
plugins+
=
"access/access_ftp "
plugins+
=
"access/access_http "
plugins+
=
"access/access_imem "
plugins+
=
"access/access_mmap "
plugins+
=
"access/access_mms "
plugins+
=
"access/access_tcp "
plugins+
=
"access/access_udp "
plugins+
=
"access/filesystem "
plugins+
=
"access/rtp "
plugins+
=
"access/zip "
plugins+
=
"access_output/access_output_dummy "
plugins+
=
"access_output/access_output_file "
plugins+
=
"access_output/access_output_http "
plugins+
=
"access_output/access_output_livehttp "
plugins+
=
"access_output/access_output_udp "
plugins+
=
"audio_filter/a52tospdif "
plugins+
=
"audio_filter/audio_format "
plugins+
=
"audio_filter/audiobargraph_a "
plugins+
=
"audio_filter/bandlimited_resampler "
plugins+
=
"audio_filter/chorus_flanger "
plugins+
=
"audio_filter/converter_fixed "
plugins+
=
"audio_filter/dolby_surround_decoder "
plugins+
=
"audio_filter/dtstospdif "
plugins+
=
"audio_filter/equalizer "
plugins+
=
"audio_filter/headphone_channel_mixer "
plugins+
=
"audio_filter/mono "
plugins+
=
"audio_filter/normvol "
plugins+
=
"audio_filter/param_eq "
plugins+
=
"audio_filter/scaletempo "
plugins+
=
"audio_filter/simple_channel_mixer "
plugins+
=
"audio_filter/trivial_channel_mixer "
plugins+
=
"audio_filter/ugly_resampler "
plugins+
=
"audio_mixer/float32_mixer "
plugins+
=
"audio_mixer/spdif_mixer "
plugins+
=
"audio_mixer/trivial_mixer "
plugins+
=
"audio_output/aout_file "
plugins+
=
"audio_output/audioqueue "
plugins+
=
"codec/a52 "
plugins+
=
"codec/adpcm "
plugins+
=
"codec/aes3 "
plugins+
=
"codec/araw "
plugins+
=
"codec/avcodec "
plugins+
=
"codec/cc "
plugins+
=
"codec/cdg "
plugins+
=
"codec/cvdsub "
plugins+
=
"codec/dts "
plugins+
=
"codec/dvbsub "
plugins+
=
"codec/invmem "
plugins+
=
"codec/faad "
plugins+
=
"codec/lpcm "
plugins+
=
"codec/mpeg_audio "
plugins+
=
"codec/rawvideo "
plugins+
=
"codec/spudec "
plugins+
=
"codec/subsdec "
plugins+
=
"codec/subsusf "
plugins+
=
"codec/svcdsub "
plugins+
=
"codec/t140 "
plugins+
=
"codec/telx "
plugins+
=
"demux/aiff "
plugins+
=
"demux/asf "
plugins+
=
"demux/au "
plugins+
=
"demux/avformat "
plugins+
=
"demux/avi "
plugins+
=
"demux/demux_cdg "
plugins+
=
"demux/demuxdump "
plugins+
=
"demux/dirac "
plugins+
=
"demux/es "
plugins+
=
"demux/flacsys "
plugins+
=
"demux/h264 "
plugins+
=
"demux/image "
plugins+
=
"demux/live555 "
plugins+
=
"demux/mjpeg "
plugins+
=
"demux/mp4 "
plugins+
=
"demux/mpgv "
plugins+
=
"demux/nsc "
plugins+
=
"demux/nsv "
plugins+
=
"demux/nuv "
plugins+
=
"demux/playlist "
plugins+
=
"demux/ps "
plugins+
=
"demux/pva "
plugins+
=
"demux/rawaud "
plugins+
=
"demux/rawdv "
plugins+
=
"demux/rawvid "
plugins+
=
"demux/real "
plugins+
=
"demux/smf "
plugins+
=
"demux/subtitle "
plugins+
=
"demux/tta "
plugins+
=
"demux/ty "
plugins+
=
"demux/ts "
plugins+
=
"demux/vc1 "
plugins+
=
"demux/vobsub "
plugins+
=
"demux/voc "
plugins+
=
"demux/wav "
plugins+
=
"demux/xa "
plugins+
=
"meta_engine/folder "
plugins+
=
"misc/audioscrobbler "
plugins+
=
"misc/dummy "
plugins+
=
"misc/export "
plugins+
=
"misc/logger "
plugins+
=
"misc/quartztext "
plugins+
=
"misc/sqlite "
plugins+
=
"misc/stats "
plugins+
=
"misc/vod_rtsp "
plugins+
=
"misc/xtag "
plugins+
=
"mux/mux_asf "
plugins+
=
"mux/mux_avi "
plugins+
=
"mux/mux_dummy "
plugins+
=
"mux/mux_mp4 "
plugins+
=
"mux/mux_mpjpeg "
plugins+
=
"mux/mux_ps "
plugins+
=
"mux/mux_wav "
plugins+
=
"packetizer/packetizer_copy "
plugins+
=
"packetizer/packetizer_dirac "
plugins+
=
"packetizer/packetizer_flac "
plugins+
=
"packetizer/packetizer_h264 "
plugins+
=
"packetizer/packetizer_mlp "
plugins+
=
"packetizer/packetizer_mpeg4audio "
plugins+
=
"packetizer/packetizer_mpeg4video "
plugins+
=
"packetizer/packetizer_mpegvideo "
plugins+
=
"packetizer/packetizer_vc1 "
plugins+
=
"services_discovery/mediadirs "
plugins+
=
"services_discovery/podcast "
plugins+
=
"services_discovery/sap "
plugins+
=
"stream_filter/decomp "
plugins+
=
"stream_filter/stream_filter_record "
plugins+
=
"stream_out/stream_out_autodel "
plugins+
=
"stream_out/stream_out_bridge "
plugins+
=
"stream_out/stream_out_description "
plugins+
=
"stream_out/stream_out_display "
plugins+
=
"stream_out/stream_out_dummy "
plugins+
=
"stream_out/stream_out_duplicate "
plugins+
=
"stream_out/stream_out_es "
plugins+
=
"stream_out/stream_out_gather "
plugins+
=
"stream_out/stream_out_mosaic_bridge "
plugins+
=
"stream_out/stream_out_record "
plugins+
=
"stream_out/stream_out_rtp "
plugins+
=
"stream_out/stream_out_smem "
plugins+
=
"stream_out/stream_out_standard "
plugins+
=
"stream_out/stream_out_transcode "
plugins+
=
"video_chroma/grey_yuv "
plugins+
=
"video_chroma/i420_rgb "
plugins+
=
"video_chroma/i420_yuy2 "
plugins+
=
"video_chroma/i422_i420 "
plugins+
=
"video_chroma/i422_yuy2 "
plugins+
=
"video_chroma/yuy2_i420 "
plugins+
=
"video_chroma/yuy2_i422 "
plugins+
=
"video_filter/adjust "
plugins+
=
"video_filter/alphamask "
plugins+
=
"video_filter/audiobargraph_v "
plugins+
=
"video_filter/ball "
plugins+
=
"video_filter/blend "
plugins+
=
"video_filter/blendbench "
plugins+
=
"video_filter/bluescreen "
plugins+
=
"video_filter/canvas "
plugins+
=
"video_filter/chain "
plugins+
=
"video_filter/clone "
plugins+
=
"video_filter/colorthres "
plugins+
=
"video_filter/croppadd "
plugins+
=
"video_filter/deinterlace "
plugins+
=
"video_filter/dynamicoverlay "
plugins+
=
"video_filter/erase "
plugins+
=
"video_filter/extract "
plugins+
=
"video_filter/gaussianblur "
plugins+
=
"video_filter/gradfun "
plugins+
=
"video_filter/gradient "
plugins+
=
"video_filter/grain "
plugins+
=
"video_filter/invert "
plugins+
=
"video_filter/logo "
plugins+
=
"video_filter/magnify "
plugins+
=
"video_filter/marq "
plugins+
=
"video_filter/mirror "
plugins+
=
"video_filter/mosaic "
plugins+
=
"video_filter/motionblur "
plugins+
=
"video_filter/motiondetect "
plugins+
=
"video_filter/noise "
plugins+
=
"video_filter/psychedelic "
plugins+
=
"video_filter/puzzle "
plugins+
=
"video_filter/ripple "
plugins+
=
"video_filter/rotate "
plugins+
=
"video_filter/rss "
plugins+
=
"video_filter/rv32 "
plugins+
=
"video_filter/scale "
plugins+
=
"video_filter/scene "
plugins+
=
"video_filter/sharpen "
plugins+
=
"video_filter/swscale "
plugins+
=
"video_filter/wall "
plugins+
=
"video_filter/wave "
plugins+
=
"video_filter/yuvp "
plugins+
=
"video_output/vmem "
plugins+
=
"video_output/vout_ios "
plugins+
=
"video_output/yuv "
pushd
`
dirname
$0
`
>
/dev/null
PROJECT_DIR
=
`
pwd
`
popd
>
/dev/null
VLC_SRC_DIR
=
"
$PROJECT_DIR
/../../../.."
VLC_CONTRIB_DIR
=
"
$VLC_SRC_DIR
/extras/contrib/hosts/
\$
(VLC_ARCH)-apple-darwin10/ios"
echo
-ne
"// This file is autogenerated by
$(
basename
$0
)
\n\n
"
>
$PROJECT_DIR
/vlc-plugins.h
echo
-ne
"// This file is autogenerated by
$(
basename
$0
)
\n\n
"
>
$PROJECT_DIR
/vlc-plugins.xcconfig
LDFLAGS
=
""
DEFINITION
=
""
BUILTINS
=
"const void *vlc_builtins_modules[] = {
\n
"
for
i
in
$plugins
;
do
dir
=
`
dirname
$i
`
name
=
`
basename
$i
`
LDFLAGS+
=
"
\$
(VLC_INSTALL_DIR)/lib/vlc/plugins/
${
dir
}
/lib
${
name
}
_plugin.a "
DEFINITION+
=
"vlc_declare_plugin(
${
name
}
);
\n
"
BUILTINS+
=
" vlc_plugin(
${
name
}
),
\n
"
done
;
BUILTINS+
=
" NULL
\n
"
BUILTINS+
=
"};
\n
"
echo
-ne
"VLC_PLUGINS_LDFLAGS=
$LDFLAGS
"
>>
$PROJECT_DIR
/vlc-plugins.xcconfig
echo
-ne
"
$DEFINITION
\n
$BUILTINS
"
>>
$PROJECT_DIR
/vlc-plugins.h
projects/macosx/framework/MobileVLCKit/MobileVLCKit.xcconfig
0 → 100644
View file @
a8b37fbd
//
// vlc.xcconfig
// VLC
//
// Created by Pierre d'Herbemont on 6/26/10.
// Copyright 2010 __MyCompanyName__. All rights reserved.
//
VLC_SRC_DIR=$(PROJECT_DIR)/../../..
VLC_ARCH[sdk=iphonesimulator*]=i686
VLC_ARCH[sdk=iphoneos*]=arm
VLC_PLATFORM[sdk=iphonesimulator*]=Simulator
VLC_PLATFORM[sdk=iphoneos*]=OS
VLC_INSTALL_DIR=$(VLC_SRC_DIR)/install-ios-$(VLC_PLATFORM)
//OTHER_CFLAGS= -ObjC -all_load
#include "vlc-plugins.xcconfig"
VLC_CONTRIB_DIR=$VLC_SRC_DIR/extras/contrib/hosts/$(VLC_ARCH)-apple-darwin10/ios
AVCODEC=${VLC_CONTRIB_DIR}/lib/libavcore.a $(VLC_CONTRIB_DIR)/lib/libavutil.a ${VLC_CONTRIB_DIR}/lib/libavcodec.a $(VLC_CONTRIB_DIR)/lib/libavformat.a $(VLC_CONTRIB_DIR)/lib/libswscale.a
LIVE555=$(VLC_CONTRIB_DIR)/lib/libBasicUsageEnvironment.a $(VLC_CONTRIB_DIR)/lib/libUsageEnvironment.a $(VLC_CONTRIB_DIR)/lib/libliveMedia.a $(VLC_CONTRIB_DIR)/lib/libgroupsock.a
DVBPSI=$(VLC_CONTRIB_DIR)/lib/libdvbpsi.a
LUA=//$(VLC_CONTRIB_DIR)/lib/liblua.a
FAAD=$(VLC_CONTRIB_DIR)/lib/libfaad.a
OTHER_LIBTOOLFLAGS=$(AVCODEC) $(LIVE555) $(DVBPSI) $(LUA) $(FAAD) $(VLC_INSTALL_DIR)/lib/libvlc.a $(VLC_INSTALL_DIR)/lib/libvlccore.a $(VLC_PLUGINS_LDFLAGS)
projects/macosx/framework/MobileVLCKit_Prefix.pch
0 → 100644
View file @
a8b37fbd
//
// Prefix header for all source files of the 'CocoaTouchStaticLibrary' target in the 'CocoaTouchStaticLibrary' project.
//
#ifdef __OBJC__
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
#endif
#import <vlc/vlc.h>
projects/macosx/framework/Sources/VLCEventManager.m
View file @
a8b37fbd
This diff is collapsed.
Click to expand it.
projects/macosx/framework/Sources/VLCLibrary.m
View file @
a8b37fbd
...
...
@@ -25,6 +25,10 @@
#import "VLCLibrary.h"
#import "VLCLibVLCBridging.h"
#if TARGET_OS_IPHONE
# include "vlc-plugins.h"
#endif
#ifdef HAVE_CONFIG_H
# include "config.h"
#endif
...
...
@@ -49,19 +53,24 @@ static VLCLibrary * sharedLibrary = nil;
{
if
(
self
=
[
super
init
])
{
NSArray
*
vlcParams
=
[[
NSBundle
mainBundle
]
objectForInfoDictionaryKey
:
@"VLCParams"
];
if
(
!
vlcParams
)
{
NSMutableArray
*
defaultParams
=
[
NSMutableArray
array
];
[
defaultParams
addObject
:
@"--play-and-pause"
];
// We want every movie to pause instead of stopping at eof
[
defaultParams
addObject
:
@"--no-color"
];
// Don't use color in output (Xcode doesn't show it)
[
defaultParams
addObject
:
@"--no-media-library"
];
// We don't need the media library
[
defaultParams
addObject
:
@"--no-video-title-show"
];
// Don't show the title on overlay when starting to play
[
defaultParams
addObject
:
@"--verbose=-1"
];
// Let's not wreck the logs
#if TARGET_OS_IPHONE
[
defaultParams
addObject
:
@"--ignore-config"
];
// We don't need the config
// [defaultParams addObject:@"--ffmpeg-fast"]; // Let's disable this as it is error-prone
[
defaultParams
addObject
:
@"--ffmpeg-skiploopfilter=all"
];
#else
[
defaultParams
addObject
:
@"--no-sout-keep"
];
[
defaultParams
addObject
:
@"--vout=macosx"
];
// Select Mac OS X video output
[
defaultParams
addObject
:
@"--text-renderer=quartztext"
];
// our CoreText-based renderer
[
defaultParams
addObject
:
@"--verbose=-1"
];
// Don't polute the stdio log
[
defaultParams
addObject
:
@"--no-color"
];
// Don't use color in output (Xcode doesn't show it)
[
defaultParams
addObject
:
@"--no-media-library"
];
// We don't need the media library
[
defaultParams
addObject
:
@"--play-and-pause"
];
// We want every movie to pause instead of stopping at eof
[
defaultParams
addObject
:
@"--extraintf=macosx_dialog_provider"
];
// Some extra dialog (login, progress) may come up from here
#endif
vlcParams
=
defaultParams
;
}
...
...
@@ -73,7 +82,12 @@ static VLCLibrary * sharedLibrary = nil;
lib_vlc_params
[
paramNum
]
=
[
vlcParam
cStringUsingEncoding
:
NSASCIIStringEncoding
];
paramNum
++
;
}
instance
=
(
void
*
)
libvlc_new
(
sizeof
(
lib_vlc_params
)
/
sizeof
(
lib_vlc_params
[
0
]),
lib_vlc_params
);
unsigned
argc
=
sizeof
(
lib_vlc_params
)
/
sizeof
(
lib_vlc_params
[
0
]);
#if TARGET_OS_IPHONE
instance
=
libvlc_new_with_builtins
(
argc
,
lib_vlc_params
,
vlc_builtins_modules
);
#else
instance
=
libvlc_new
(
argc
,
lib_vlc_params
);
#endif
NSAssert
(
instance
,
@"libvlc failed to initialize"
);
}
return
self
;
...
...
projects/macosx/framework/Sources/VLCMedia.m
View file @
a8b37fbd
This diff is collapsed.
Click to expand it.
projects/macosx/framework/Sources/VLCMediaDiscoverer.m
View file @
a8b37fbd
...
...
@@ -22,7 +22,6 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
*****************************************************************************/
#import <Cocoa/Cocoa.h>
#import "VLCMediaDiscoverer.h"
#import "VLCLibrary.h"
#import "VLCLibVLCBridging.h"
...
...
@@ -101,25 +100,13 @@ static void HandleMediaDiscovererEnded( const libvlc_event_t * event, void * use
return
self
;
}
-
(
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_list_event_manager
(
mdis
);
libvlc_event_detach
(
p_em
,
libvlc_MediaDiscovererStarted
,
HandleMediaDiscovererStarted
,
self
);
libvlc_event_detach
(
p_em
,
libvlc_MediaDiscovererEnded
,
HandleMediaDiscovererEnded
,
self
);
}
[
super
release
];
}
}
-
(
void
)
dealloc
{
libvlc_event_manager_t
*
em
=
libvlc_media_list_event_manager
(
mdis
);
libvlc_event_detach
(
em
,
libvlc_MediaDiscovererStarted
,
HandleMediaDiscovererStarted
,
self
);
libvlc_event_detach
(
em
,
libvlc_MediaDiscovererEnded
,
HandleMediaDiscovererEnded
,
self
);
[[
VLCEventManager
sharedManager
]
cancelCallToObject
:
self
];
[
localizedName
release
];
[
discoveredMedia
release
];
libvlc_media_discoverer_release
(
mdis
);
...
...
projects/macosx/framework/Sources/VLCMediaList.m
View file @
a8b37fbd
...
...
@@ -97,25 +97,13 @@ static void HandleMediaListItemDeleted( const libvlc_event_t * event, void * use
return
self
;
}
-
(
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_list_event_manager
(
p_mlist
);
libvlc_event_detach
(
p_em
,
libvlc_MediaListItemDeleted
,
HandleMediaListItemDeleted
,
self
);
libvlc_event_detach
(
p_em
,
libvlc_MediaListItemAdded
,
HandleMediaListItemAdded
,
self
);
}
[
super
release
];
}
}
-
(
void
)
dealloc
{
libvlc_event_manager_t
*
em
=
libvlc_media_list_event_manager
(
p_mlist
);
libvlc_event_detach
(
em
,
libvlc_MediaListItemDeleted
,
HandleMediaListItemDeleted
,
self
);
libvlc_event_detach
(
em
,
libvlc_MediaListItemAdded
,
HandleMediaListItemAdded
,
self
);
[[
VLCEventManager
sharedManager
]
cancelCallToObject
:
self
];
// Release allocated memory
delegate
=
nil
;
...
...
@@ -132,7 +120,7 @@ static void HandleMediaListItemDeleted( const libvlc_event_t * event, void * use
{
[
content
appendFormat
:
@"%@
\n
"
,
[
self
mediaAtIndex
:
i
]];
}
return
[
NSString
stringWithFormat
:
@"<%@ %p> {
\n
%@}"
,
[
self
class
Name
],
self
,
content
];
return
[
NSString
stringWithFormat
:
@"<%@ %p> {
\n
%@}"
,
[
self
class
],
self
,
content
];
}
-
(
void
)
lock
...
...
projects/macosx/framework/Sources/VLCMediaPlayer.m
View file @
a8b37fbd
...
...
@@ -29,16 +29,20 @@
#import "VLCMediaPlayer.h"
#import "VLCEventManager.h"
#import "VLCLibVLCBridging.h"
#import "VLCVideoView.h"
#if !TARGET_OS_IPHONE
# import "VLCVideoView.h"
#endif
#ifdef HAVE_CONFIG_H
# include "config.h"
#endif
#if !TARGET_OS_IPHONE
/* prevent system sleep */
#import <CoreServices/CoreServices.h>
#
import <CoreServices/CoreServices.h>
/* FIXME: Ugly hack! */
#ifdef __x86_64__
#import <CoreServices/../Frameworks/OSServices.framework/Headers/Power.h>
# ifdef __x86_64__
# import <CoreServices/../Frameworks/OSServices.framework/Headers/Power.h>
# endif
#endif
#include <vlc/vlc.h>
...
...
@@ -180,6 +184,7 @@ static void HandleMediaPlayerMediaChanged(const libvlc_event_t * event, void * s
return
[
self
initWithDrawable
:
nil
];
}
#if !TARGET_OS_IPHONE
-
(
id
)
initWithVideoView
:(
VLCVideoView
*
)
aVideoView
{
return
[
self
initWithDrawable
:
aVideoView
];
...
...
@@ -189,26 +194,15 @@ static void HandleMediaPlayerMediaChanged(const libvlc_event_t * event, void * s
{
return
[
self
initWithDrawable
:
aVideoLayer
];
}
-
(
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 */
[
self
unregisterObservers
];
}
[
super
release
];
}
}
#endif
-
(
void
)
dealloc
{
NSAssert
(
libvlc_media_player_get_state
(
instance
)
==
libvlc_Stopped
,
@"You released the media player before ensuring that it is stopped"
);
[
self
unregisterObservers
];
[[
VLCEventManager
sharedManager
]
cancelCallToObject
:
self
];
// Always get rid of the delegate first so we can stop sending messages to it
// TODO: Should we tell the delegate that we're shutting down?
delegate
=
nil
;
...
...
@@ -240,6 +234,7 @@ static void HandleMediaPlayerMediaChanged(const libvlc_event_t * event, void * s
return
delegate
;
}
#if !TARGET_OS_IPHONE
-
(
void
)
setVideoView
:(
VLCVideoView
*
)
aVideoView
{
[
self
setDrawable
:
aVideoView
];
...
...
@@ -249,6 +244,7 @@ static void HandleMediaPlayerMediaChanged(const libvlc_event_t * event, void * s
{
[
self
setDrawable
:
aVideoLayer
];
}
#endif
-
(
void
)
setDrawable
:(
id
)
aDrawable
{
...
...
@@ -352,13 +348,13 @@ static void HandleMediaPlayerMediaChanged(const libvlc_event_t * event, void * s
return
libvlc_media_player_get_rate
(
instance
);
}
-
(
NS
Size
)
videoSize
-
(
CG
Size
)
videoSize
{
unsigned
height
=
0
,
width
=
0
;
int
failure
=
libvlc_video_get_size
(
instance
,
0
,
&
width
,
&
height
);
if
(
failure
)
[[
NSException
exceptionWithName
:
@"Can't get video size"
reason
:
@"No video output"
userInfo
:
nil
]
raise
];
return
NSMakeSiz
e
(
width
,
height
);
return
CGSizeMak
e
(
width
,
height
);
}
-
(
BOOL
)
hasVideoOut
...
...
@@ -773,15 +769,19 @@ static const VLCMediaPlayerState libvlc_to_local_state[] =
[
self
didChangeValueForKey
:
@"time"
];
}
#if !TARGET_OS_IPHONE
-
(
void
)
delaySleep
{
UpdateSystemActivity
(
UsrActivity
);
}
#endif
-
(
void
)
mediaPlayerPositionChanged
:(
NSNumber
*
)
newPosition
{
#if !TARGET_OS_IPHONE
// This seems to be the most relevant place to delay sleeping and screen saver.
[
self
delaySleep
];
#endif
[
self
willChangeValueForKey
:
@"position"
];
position
=
[
newPosition
floatValue
];
...
...
projects/macosx/framework/Sources/VLCMediaThumbnailer.m
0 → 100644
View file @
a8b37fbd
//
// VLCMediaThumbnailer.m
// VLCKit
//
// Created by Pierre d'Herbemont on 7/10/10.
// Copyright 2010 __MyCompanyName__. All rights reserved.
//
#import <vlc/vlc.h>
#import "VLCMediaThumbnailer.h"
#import "VLCLibVLCBridging.h"
@interface
VLCMediaThumbnailer
()
-
(
void
)
didFetchThumbnail
;
-
(
void
)
notifyDelegate
;
-
(
void
)
fetchThumbnail
;
-
(
void
)
startFetchingThumbnail
;
@property
(
readonly
,
assign
)
void
*
dataPointer
;
@end
static
void
*
lock
(
void
*
opaque
,
void
**
pixels
)
{
VLCMediaThumbnailer
*
thumbnailer
=
opaque
;
*
pixels
=
[
thumbnailer
dataPointer
];
assert
(
*
pixels
);
return
NULL
;
}
static
const
size_t
kDefaultImageWidth
=
320
;
static
const
size_t
kDefaultImageHeight
=
240
;
static
const
float
kSnapshotPosition
=
0
.
5
;
void
unlock
(
void
*
opaque
,
void
*
picture
,
void
*
const
*
p_pixels
)
{
VLCMediaThumbnailer
*
thumbnailer
=
opaque
;
assert
(
!
picture
);
assert
([
thumbnailer
dataPointer
]
==
*
p_pixels
);
// We may already have a thumbnail if we are receiving picture after the first one.
// Just ignore.
if
([
thumbnailer
thumbnail
])
return
;
[
thumbnailer
performSelectorOnMainThread
:
@selector
(
didFetchThumbnail
)
withObject
:
nil
waitUntilDone
:
YES
];
}
void
display
(
void
*
opaque
,
void
*
picture
)
{
}
@implementation
VLCMediaThumbnailer
@synthesize
media
=
_media
;
@synthesize
delegate
=
_delegate
;
@synthesize
thumbnail
=
_thumbnail
;
@synthesize
dataPointer
=
_data
;
@synthesize
thumbnailWidth
=
_thumbnailWidth
;
@synthesize
thumbnailHeight
=
_thumbnailHeight
;
+
(
VLCMediaThumbnailer
*
)
thumbnailerWithMedia
:(
VLCMedia
*
)
media
andDelegate
:(
id
<
VLCMediaThumbnailerDelegate
>
)
delegate
{
id
obj
=
[[[
self
class
]
alloc
]
init
];
[
obj
setMedia
:
media
];
[
obj
setDelegate
:
delegate
];
return
[
obj
autorelease
];
}
-
(
void
)
dealloc
{
NSAssert
(
!
_data
,
@"Data not released"
);
NSAssert
(
!
_mp
,
@"Not properly retained"
);
if
(
_thumbnail
)
CGImageRelease
(
_thumbnail
);
[
_media
release
];
[
super
dealloc
];
}
-
(
void
)
fetchThumbnail
{
NSAssert
(
!
_data
,
@"We are already fetching a thumbnail"
);
[
self
retain
];
// Balanced in -notifyDelegate
if
(
!
[
_media
isParsed
])
{
[
_media
addObserver
:
self
forKeyPath
:
@"parsed"
options
:
0
context
:
NULL
];
[
_media
parse
];
NSAssert
(
!
_parsingTimeoutTimer
,
@"We already have a timer around"
);
_parsingTimeoutTimer
=
[[
NSTimer
scheduledTimerWithTimeInterval
:
10
target
:
self
selector
:
@selector
(
mediaParsingTimedOut
)
userInfo
:
nil
repeats
:
NO
]
retain
];
return
;
}
[
self
startFetchingThumbnail
];
}
-
(
void
)
startFetchingThumbnail
{
NSArray
*
tracks
=
[
_media
tracksInformation
];
// Find the video track
NSDictionary
*
videoTrack
=
nil
;
for
(
NSDictionary
*
track
in
tracks
)
{
NSString
*
type
=
[
track
objectForKey
:
VLCMediaTracksInformationType
];
if
([
type
isEqualToString
:
VLCMediaTracksInformationTypeVideo
])
{
videoTrack
=
track
;
break
;
}
}
unsigned
imageWidth
=
_thumbnailWidth
>
0
?
_thumbnailWidth
:
kDefaultImageWidth
;
unsigned
imageHeight
=
_thumbnailHeight
>
0
?
_thumbnailHeight
:
kDefaultImageHeight
;
if
(
!
videoTrack
)
NSLog
(
@"WARNING: Can't find video track info, still attempting to thumbnail in doubt"
);
else
{
int
videoHeight
=
[[
videoTrack
objectForKey
:
VLCMediaTracksInformationVideoHeight
]
intValue
];
int
videoWidth
=
[[
videoTrack
objectForKey
:
VLCMediaTracksInformationVideoWidth
]
intValue
];
// Constraining to the aspect ratio of the video.
double
ratio
;
if
((
double
)
imageWidth
/
imageHeight
<
(
double
)
videoWidth
/
videoHeight
)
ratio
=
(
double
)
imageHeight
/
videoHeight
;
else
ratio
=
(
double
)
imageWidth
/
videoWidth
;
int
newWidth
=
round
(
videoWidth
*
ratio
);
int
newHeight
=
round
(
videoHeight
*
ratio
);
NSLog
(
@"video %dx%d from %dx%d or %dx%d"
,
newWidth
,
newHeight
,
videoWidth
,
videoHeight
,
imageWidth
,
imageHeight
);
imageWidth
=
newWidth
>
0
?
newWidth
:
imageWidth
;
imageHeight
=
newHeight
>
0
?
newHeight
:
imageHeight
;
}
_effectiveThumbnailHeight
=
imageHeight
;
_effectiveThumbnailWidth
=
imageWidth
;
_data
=
calloc
(
1
,
imageWidth
*
imageHeight
*
4
);
NSAssert
(
_data
,
@"Can't create data"
);
NSAssert
(
!
_mp
,
@"We are already fetching a thumbnail"
);
_mp
=
libvlc_media_player_new
([
VLCLibrary
sharedInstance
]);
libvlc_media_add_option
([
_media
libVLCMediaDescriptor
],
"no-audio"
);
libvlc_media_player_set_media
(
_mp
,
[
_media
libVLCMediaDescriptor
]);
libvlc_video_set_format
(
_mp
,
"RGBA"
,
imageWidth
,
imageHeight
,
4
*
imageWidth
);
libvlc_video_set_callbacks
(
_mp
,
lock
,
unlock
,
display
,
self
);
libvlc_media_player_play
(
_mp
);
libvlc_media_player_set_position
(
_mp
,
kSnapshotPosition
);
}
-
(
void
)
mediaParsingTimedOut
{
NSLog
(
@"WARNING: media thumbnailer media parsing timed out"
);
[
_media
removeObserver
:
self
forKeyPath
:
@"parsed"
];
[
self
startFetchingThumbnail
];
}
-
(
void
)
observeValueForKeyPath
:(
NSString
*
)
keyPath
ofObject
:(
id
)
object
change
:(
NSDictionary
*
)
change
context
:(
void
*
)
context
{
if
(
object
==
_media
&&
[
keyPath
isEqualToString
:
@"parsed"
])
{
if
([
_media
isParsed
])
{
[
_parsingTimeoutTimer
invalidate
];
[
_parsingTimeoutTimer
release
];
_parsingTimeoutTimer
=
nil
;
[
_media
removeObserver
:
self
forKeyPath
:
@"parsed"
];
[
self
startFetchingThumbnail
];
}
return
;
}
return
[
super
observeValueForKeyPath
:
keyPath
ofObject
:
object
change
:
change
context
:
context
];
}
-
(
void
)
didFetchThumbnail
{
// The video thread is blocking on us. Beware not to do too much work.
// Make sure we are getting the right frame
if
(
libvlc_media_player_get_position
(
_mp
)
<
kSnapshotPosition
&&
// Arbitrary choice to work around broken files.
libvlc_media_player_get_length
(
_mp
)
>
1000
)
return
;
NSAssert
(
_data
,
@"We have no data"
);
CGColorSpaceRef
colorSpace
=
CGColorSpaceCreateDeviceRGB
();
const
CGFloat
width
=
_effectiveThumbnailWidth
;
const
CGFloat
height
=
_effectiveThumbnailHeight
;
const
CGFloat
pitch
=
4
*
width
;
CGContextRef
bitmap
=
CGBitmapContextCreate
(
_data
,
width
,
height
,
8
,
pitch
,
colorSpace
,
kCGImageAlphaNoneSkipLast
);
CGColorSpaceRelease
(
colorSpace
);
NSAssert
(
bitmap
,
@"Can't create bitmap"
);
// Create the thumbnail image
//NSAssert(!_thumbnail, @"We already have a thumbnail");
if
(
_thumbnail
)
CGImageRelease
(
_thumbnail
);
_thumbnail
=
CGBitmapContextCreateImage
(
bitmap
);
// Put a new context there.
CGContextRelease
(
bitmap
);
// Make sure we don't block the video thread now
[
self
performSelector
:
@selector
(
notifyDelegate
)
withObject
:
nil
afterDelay
:
0
];
}
-
(
void
)
notifyDelegate
{
// Stop the media player
NSAssert
(
_mp
,
@"We have already destroyed mp"
);
libvlc_media_player_stop
(
_mp
);
libvlc_media_player_release
(
_mp
);
_mp
=
NULL
;
// Now release data
free
(
_data
);
_data
=
NULL
;
// Call delegate
[
_delegate
mediaThumbnailer
:
self
didFinishThumbnail
:
_thumbnail
];
[
self
release
];
// Balancing -fetchThumbnail
}
@end
projects/macosx/framework/Sources/VLCTime.m
View file @
a8b37fbd
...
...
@@ -22,7 +22,7 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
*****************************************************************************/
#import
<VLCTime.h>
#import
"VLCTime.h"
@implementation
VLCTime
/* Factories */
...
...
projects/macosx/framework/VLCKit.xcodeproj/project.pbxproj
View file @
a8b37fbd
...
...
@@ -83,10 +83,12 @@
632A0EC40D38392E00AFC99B
/* VLCStreamOutput.m in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
632A0EC20D38392E00AFC99B
/* VLCStreamOutput.m */
;
};
6341FCAF0D2C0929002A97B7
/* VLCVideoLayer.h in Headers */
=
{
isa
=
PBXBuildFile
;
fileRef
=
6341FCAE0D2C0929002A97B7
/* VLCVideoLayer.h */
;
settings
=
{
ATTRIBUTES
=
(
Public
,
);
};
};
6341FCB10D2C0936002A97B7
/* VLCVideoLayer.m in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
6341FCB00D2C0936002A97B7
/* VLCVideoLayer.m */
;
};
636E974E11E8DCF1002FE8A9
/* VLCMediaThumbnailer.m in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
636E974C11E8DCF1002FE8A9
/* VLCMediaThumbnailer.m */
;
};
637CFB940D2D280900A041B6
/* VLCLibrary.h in Headers */
=
{
isa
=
PBXBuildFile
;
fileRef
=
637CFB930D2D280800A041B6
/* VLCLibrary.h */
;
settings
=
{
ATTRIBUTES
=
(
Public
,
);
};
};
637D5ABD0CF6F2650073EA45
/* VLCMediaDiscoverer.h in Headers */
=
{
isa
=
PBXBuildFile
;
fileRef
=
637D5ABC0CF6F2650073EA45
/* VLCMediaDiscoverer.h */
;
settings
=
{
ATTRIBUTES
=
(
Public
,
);
};
};
637D5ADC0CF6F2720073EA45
/* VLCMediaDiscoverer.m in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
637D5ADB0CF6F2720073EA45
/* VLCMediaDiscoverer.m */
;
};
6384FD080D0DBA20005EB1F7
/* QuartzCore.framework in Frameworks */
=
{
isa
=
PBXBuildFile
;
fileRef
=
6384FD070D0DBA20005EB1F7
/* QuartzCore.framework */
;
};
63D88D93124E9BF600F65FA0
/* VLCMediaThumbnailer.h in Headers */
=
{
isa
=
PBXBuildFile
;
fileRef
=
63D88D92124E9BF600F65FA0
/* VLCMediaThumbnailer.h */
;
};
8DC2EF570486A6940098B216
/* Cocoa.framework in Frameworks */
=
{
isa
=
PBXBuildFile
;
fileRef
=
1058C7B1FEA5585E11CA2CBB
/* Cocoa.framework */
;
};
A7A0CEA40D2EF13000F2C039
/* VLCVideoCommon.h in Headers */
=
{
isa
=
PBXBuildFile
;
fileRef
=
A7A0CEA20D2EF13000F2C039
/* VLCVideoCommon.h */
;
};
A7A0CEA50D2EF13000F2C039
/* VLCVideoCommon.m in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
A7A0CEA30D2EF13000F2C039
/* VLCVideoCommon.m */
;
};
...
...
@@ -173,12 +175,17 @@
632A0EC10D38392E00AFC99B
/* VLCStreamOutput.h */
=
{
isa
=
PBXFileReference
;
fileEncoding
=
4
;
lastKnownFileType
=
sourcecode.c.h
;
name
=
VLCStreamOutput.h
;
path
=
Public/VLCStreamOutput.h
;
sourceTree
=
"<group>"
;
};
632A0EC20D38392E00AFC99B
/* VLCStreamOutput.m */
=
{
isa
=
PBXFileReference
;
fileEncoding
=
4
;
lastKnownFileType
=
sourcecode.c.objc
;
path
=
VLCStreamOutput.m
;
sourceTree
=
"<group>"
;
};
633753FF10ECE1C60072A0D9
/* Configure.sh */
=
{
isa
=
PBXFileReference
;
fileEncoding
=
4
;
lastKnownFileType
=
text.script.sh
;
path
=
Configure.sh
;
sourceTree
=
"<group>"
;
};
634117B911D9344400FA3A70
/* MobileVLCKit.h */
=
{
isa
=
PBXFileReference
;
fileEncoding
=
4
;
lastKnownFileType
=
sourcecode.c.h
;
name
=
MobileVLCKit.h
;
path
=
Public/MobileVLCKit.h
;
sourceTree
=
"<group>"
;
};
6341FCAE0D2C0929002A97B7
/* VLCVideoLayer.h */
=
{
isa
=
PBXFileReference
;
fileEncoding
=
4
;
lastKnownFileType
=
sourcecode.c.h
;
name
=
VLCVideoLayer.h
;
path
=
Public/VLCVideoLayer.h
;
sourceTree
=
"<group>"
;
};
6341FCB00D2C0936002A97B7
/* VLCVideoLayer.m */
=
{
isa
=
PBXFileReference
;
fileEncoding
=
4
;
lastKnownFileType
=
sourcecode.c.objc
;
path
=
VLCVideoLayer.m
;
sourceTree
=
"<group>"
;
};
636E974C11E8DCF1002FE8A9
/* VLCMediaThumbnailer.m */
=
{
isa
=
PBXFileReference
;
fileEncoding
=
4
;
lastKnownFileType
=
sourcecode.c.objc
;
path
=
VLCMediaThumbnailer.m
;
sourceTree
=
"<group>"
;
};
637CFB930D2D280800A041B6
/* VLCLibrary.h */
=
{
isa
=
PBXFileReference
;
fileEncoding
=
4
;
lastKnownFileType
=
sourcecode.c.h
;
name
=
VLCLibrary.h
;
path
=
Public/VLCLibrary.h
;
sourceTree
=
"<group>"
;
};
637D5ABC0CF6F2650073EA45
/* VLCMediaDiscoverer.h */
=
{
isa
=
PBXFileReference
;
fileEncoding
=
30
;
lastKnownFileType
=
sourcecode.c.h
;
name
=
VLCMediaDiscoverer.h
;
path
=
Public/VLCMediaDiscoverer.h
;
sourceTree
=
"<group>"
;
};
637D5ADB0CF6F2720073EA45
/* VLCMediaDiscoverer.m */
=
{
isa
=
PBXFileReference
;
fileEncoding
=
30
;
lastKnownFileType
=
sourcecode.c.objc
;
path
=
VLCMediaDiscoverer.m
;
sourceTree
=
"<group>"
;
};
6384FD070D0DBA20005EB1F7
/* QuartzCore.framework */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
wrapper.framework
;
name
=
QuartzCore.framework
;
path
=
/System/Library/Frameworks/QuartzCore.framework
;
sourceTree
=
"<absolute>"
;
};
63D88C56124E9A5100F65FA0
/* Quartz.framework */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
wrapper.framework
;
name
=
Quartz.framework
;
path
=
System/Library/Frameworks/Quartz.framework
;
sourceTree
=
SDKROOT
;
};
63D88CA9124E9A8200F65FA0
/* ApplicationServices.framework */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
wrapper.framework
;
name
=
ApplicationServices.framework
;
path
=
System/Library/Frameworks/ApplicationServices.framework
;
sourceTree
=
SDKROOT
;
};
63D88D92124E9BF600F65FA0
/* VLCMediaThumbnailer.h */
=
{
isa
=
PBXFileReference
;
fileEncoding
=
4
;
lastKnownFileType
=
sourcecode.c.h
;
name
=
VLCMediaThumbnailer.h
;
path
=
Public/VLCMediaThumbnailer.h
;
sourceTree
=
"<group>"
;
};
8DC2EF5B0486A6940098B216
/* VLCKit.framework */
=
{
isa
=
PBXFileReference
;
explicitFileType
=
wrapper.framework
;
includeInIndex
=
0
;
path
=
VLCKit.framework
;
sourceTree
=
BUILT_PRODUCTS_DIR
;
};
A7A0CEA20D2EF13000F2C039
/* VLCVideoCommon.h */
=
{
isa
=
PBXFileReference
;
fileEncoding
=
4
;
lastKnownFileType
=
sourcecode.c.h
;
name
=
VLCVideoCommon.h
;
path
=
Internal/VLCVideoCommon.h
;
sourceTree
=
"<group>"
;
};
A7A0CEA30D2EF13000F2C039
/* VLCVideoCommon.m */
=
{
isa
=
PBXFileReference
;
fileEncoding
=
4
;
lastKnownFileType
=
sourcecode.c.objc
;
path
=
VLCVideoCommon.m
;
sourceTree
=
"<group>"
;
};
...
...
@@ -247,6 +254,8 @@
089C1665FE841158C02AAC07
/* Resources */
,
0867D69AFE84028FC02AAC07
/* External Frameworks and Libraries */
,
034768DFFF38A50411DB9C8B
/* Products */
,
63D88C56124E9A5100F65FA0
/* Quartz.framework */
,
63D88CA9124E9A8200F65FA0
/* ApplicationServices.framework */
,
);
name
=
VLC
;
sourceTree
=
"<group>"
;
...
...
@@ -281,6 +290,7 @@
EF78BD410CAEEFF600354E6E
/* VLCMediaList.m */
,
63014A781042ACE100534090
/* VLCMediaListPlayer.m */
,
EF8BB8CF0CAFA8D80038A613
/* VLCMediaPlayer.m */
,
636E974C11E8DCF1002FE8A9
/* VLCMediaThumbnailer.m */
,
EF78BD400CAEEFF600354E6E
/* VLCMediaLibrary.m */
,
A7A0CEA30D2EF13000F2C039
/* VLCVideoCommon.m */
,
6341FCB00D2C0936002A97B7
/* VLCVideoLayer.m */
,
...
...
@@ -342,6 +352,7 @@
637CFB960D2D281900A041B6
/* Internal */
=
{
isa
=
PBXGroup
;
children
=
(
63D88D92124E9BF600F65FA0
/* VLCMediaThumbnailer.h */
,
EFD551DC0CC6DD720074CEE1
/* VLCLibVLCBridging.h */
,
EF78BD0D0CAEEEC300354E6E
/* VLCEventManager.h */
,
A7A0CEA20D2EF13000F2C039
/* VLCVideoCommon.h */
,
...
...
@@ -378,6 +389,7 @@
EF6BC9110DA1932F00DD37EF
/* Public */
=
{
isa
=
PBXGroup
;
children
=
(
634117B911D9344400FA3A70
/* MobileVLCKit.h */
,
EF78BD120CAEEEE700354E6E
/* VLCKit.h */
,
637CFB930D2D280800A041B6
/* VLCLibrary.h */
,
EF78BD130CAEEEE700354E6E
/* VLCMedia.h */
,
...
...
@@ -433,6 +445,7 @@
63014B7E1042E64A00534090
/* VLCMediaListPlayer.h in Headers */
,
6309994B110FC791005F46AE
/* VLCExtension.h in Headers */
,
6309994C110FC791005F46AE
/* VLCExtensionsManager.h in Headers */
,
63D88D93124E9BF600F65FA0
/* VLCMediaThumbnailer.h in Headers */
,
);
runOnlyForDeploymentPostprocessing
=
0
;
};
...
...
@@ -467,7 +480,14 @@
isa
=
PBXProject
;
buildConfigurationList
=
1DEB91B108733DA50010E9CD
/* Build configuration list for PBXProject "VLCKit" */
;
compatibilityVersion
=
"Xcode 3.1"
;
developmentRegion
=
English
;
hasScannedForEncodings
=
1
;
knownRegions
=
(
English
,
Japanese
,
French
,
German
,
);
mainGroup
=
0867D691FE84028FC02AAC07
/* VLC */
;
productRefGroup
=
034768DFFF38A50411DB9C8B
/* Products */
;
projectDirPath
=
""
;
...
...
@@ -612,6 +632,7 @@
63014A7A1042ACE100534090
/* VLCMediaListPlayer.m in Sources */
,
63098FDC110E7159005F46AE
/* VLCExtensionsManager.m in Sources */
,
63099116110F0EC3005F46AE
/* VLCExtension.m in Sources */
,
636E974E11E8DCF1002FE8A9
/* VLCMediaThumbnailer.m in Sources */
,
);
runOnlyForDeploymentPostprocessing
=
0
;
};
...
...
projects/macosx/framework/VLC_Prefix.pch
View file @
a8b37fbd
...
...
@@ -3,8 +3,16 @@
//
#ifdef __IPHONE_OS_VERSION_MIN_REQUIRED
# define IPHONE_OS
#endif
#ifdef __OBJC__
#import <Cocoa/Cocoa.h>
# ifndef IPHONE_OS
# import <Cocoa/Cocoa.h>
# else
# import <UIKit/UIKit.h>
# endif
#endif
#ifdef HAVE_CONFIG_H
...
...
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