31- (void)observeValueForKeyPath:(NSString*)pKeyPath ofObject:(
id)pObject change:(NSDictionary*)pChangeDict context:(
void*)pContext
39- (void)onNotification:(NSNotification*)pNotification
41 NSString* pNoteName = [pNotification name];
44 (*it).second->handleObservation( pNoteName );
47- (void)setHandlerForObject:(NSObject*)pObject handler:(
avmedia::macavf::MacAVObserverHandler*)pHandler
52- (void)removeHandlerForObject:(NSObject*)pObject
78, mfStopTime( DBL_MAX )
89 [
mpPlayer removeObserver:getObserver() forKeyPath:@"currentItem.status"];
90 AVPlayerItem* pOldPlayerItem = [
mpPlayer currentItem];
91 [[NSNotificationCenter defaultCenter] removeObserver:getObserver()
92 name:AVPlayerItemDidPlayToEndTimeNotification
93 object:pOldPlayerItem];
94 [
getObserver() removeHandlerForObject:pOldPlayerItem];
102 if( [pKeyPath isEqualToString:AVPlayerItemDidPlayToEndTimeNotification])
114 NSString* aNSStr = [NSString stringWithCharacters:reinterpret_cast<unichar const *>(rURL.getStr()) length:rURL.getLength()];
117 NSURL* aNSURL = [NSURL URLWithString: [aNSStr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
120 AVPlayerItem* pPlayerItem = [AVPlayerItem playerItemWithURL:aNSURL];
125 mpPlayer = [AVPlayer playerWithPlayerItem:pPlayerItem];
127 [
mpPlayer setActionAtItemEnd:AVPlayerActionAtItemEndNone];
132 AVPlayerItem* pOldPlayerItem = [
mpPlayer currentItem];
133 [
mpPlayer removeObserver:getObserver() forKeyPath:@"currentItem.status"];
134 [
getObserver() removeHandlerForObject:pOldPlayerItem];
135 [[NSNotificationCenter defaultCenter] removeObserver:getObserver()
136 name:AVPlayerItemDidPlayToEndTimeNotification
137 object:pOldPlayerItem];
139 [
mpPlayer replaceCurrentItemWithPlayerItem:pPlayerItem];
143 [
mpPlayer addObserver:getObserver() forKeyPath:@"currentItem.status" options:0 context:this];
146 [[NSNotificationCenter defaultCenter] addObserver:getObserver()
147 selector:@selector(onNotification:)
148 name:AVPlayerItemDidPlayToEndTimeNotification
150 [
getObserver() setHandlerForObject:pPlayerItem handler:this];
180 const float fRate = [
mpPlayer rate];
181 return (fRate != 0.0);
188 double duration = 0.01;
192 AVPlayerItem* pItem = [
mpPlayer currentItem];
193 if( [pItem status] == AVPlayerItemStatusReadyToPlay )
194 duration = CMTimeGetSeconds( [pItem duration] );
196 duration = CMTimeGetSeconds( [[pItem asset] duration] );
206 [
mpPlayer seekToTime: CMTimeMakeWithSeconds(fTime,1000) ];
268 mfUnmutedVolume = (nVolumeDB <= -40) ? 0.0 : pow( 10.0, nVolumeDB / 20.0 );
272 [
mpPlayer setVolume:mfUnmutedVolume];
282 const float fVolume = [
mpPlayer volume];
287 const int nVolumeDB = (fVolume <= 0) ? -40 : lrint( 20.0*log10(fVolume));
289 return static_cast<sal_Int16
>(nVolumeDB);
295 awt::Size aSize( 0, 0 );
297 AVAsset* pMovie = [[
mpPlayer currentItem] asset];
298 NSArray* pVideoTracks = [pMovie tracksWithMediaType:AVMediaTypeVideo];
299 if ([pVideoTracks
count] > 0)
301 AVAssetTrack* pFirstVideoTrack =
static_cast<AVAssetTrack*
>([pVideoTracks objectAtIndex:0]);
302 const CGSize aPrefSize = [pFirstVideoTrack naturalSize];
303 aSize = awt::Size( aPrefSize.width, aPrefSize.height );
316 sal_IntPtr nNSViewPtr = 0;
318 NSView* pParentView =
reinterpret_cast<NSView*
>(nNSViewPtr);
321 if( (aSize.Width <= 0) || (aSize.Height <= 0) || (pParentView ==
nullptr) )
325 return new ::avmedia::macavf::Window( *
this, pParentView );
332 AVAsset* pMovie = [[
mpPlayer currentItem] asset];
333 if( !pGrabber->create( pMovie ) )
EmbeddedObjectRef * pObject
Sequence< PropertyValue > aArguments
HandlersForObject maHandlersForObject
#define AVMEDIA_MACAVF_PLAYER_SERVICENAME
#define AVMEDIA_MACAVF_PLAYER_IMPLEMENTATIONNAME
#define SAL_WNODEPRECATED_DECLARATIONS_POP
#define SAL_WNODEPRECATED_DECLARATIONS_PUSH