提交 26856df7 编写于 作者: Z Zhang Rui

IJKFFPlayerController: dispatch event to delegate

上级 56fbec73
......@@ -10,7 +10,7 @@
@class IJKMediaControl;
@interface IJKVideoViewController : UIViewController
@interface IJKVideoViewController : UIViewController <IJKMediaPlaybackDelegate>
@property(atomic, retain) id<IJKMediaPlayback> player;
......
......@@ -42,19 +42,19 @@
// NSURL *theMovieURL = [NSURL URLWithString:@"http://edge.v.iask.com/113820563.hlv?KID=sina,viask&Expires=1380124800&ssig=iswfgpZ1Jp"];
// NSURL *theMovieURL = [NSURL URLWithString:@"http://edge.v.iask.com/115380070.hlv?KID=sina,viask&Expires=1380124800&ssig=s5khawIcuO"];
NSURL *theMovieURL = [NSURL URLWithString:@"http://devimages.apple.com/iphone/samples/bipbop/gear1/prog_index.m3u8"];
// self.player = [[IJKMPMoviePlayerController alloc] initWithContentURL:theMovieURL];
self.player = [[IJKFFPlayerController alloc] initWithContentURL:theMovieURL];
[self.player.view setAutoresizingMask:UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight];
[self.view setAutoresizesSubviews:YES];
self.player = [[IJKFFPlayerController alloc] initWithContentURL:theMovieURL];
self.player.playbackDelegate = self;
self.player.view.autoresizingMask = UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight;
self.player.view.frame = self.view.bounds;
self.view.autoresizesSubviews = YES;
[self.view addSubview:self.player.view];
[self.view addSubview:self.mediaControl];
self.mediaControl.delegatePlayer = self.player;
[self.player prepareToPlay];
[self.player.view setFrame: self.view.bounds];
[self.player play];
}
......
......@@ -7,7 +7,9 @@
//
#import "IJKFFPlayerController.h"
#import "IJKFFplayerDef.h"
#import "IJKFFPlayerDef.h"
#import "IJKMediaPlayback.h"
@implementation IJKFFPlayerController {
NSURL *_url;
......@@ -110,99 +112,67 @@
return ret / 1000;
}
- (void)onMediaError:(NSInteger)error
{
}
- (void)onMediaPrepared
{
}
- (void)onMediaCompleted
{
}
- (void)onMediaVideoSizeChanged:(IJKSize)size
{
}
- (void)onMediaSarChanged:(IJKIntPair)sar
{
}
- (void)onMediaBufferingStart
{
}
- (void)onMediaBufferingEnd
{
}
- (void)onMediaBufferingUpdate:(IJKIntPair)buffering
{
}
- (void)onMediaSeekComplete
{
}
- (void)postEvent: (IJKFFPlayerMessage *)msg
{
if (!msg)
return;
id<IJKMediaPlaybackDelegate> delegate = self.playbackDelegate;
if (!delegate)
return;
AVMessage *avmsg = &msg->_msg;
switch (avmsg->what) {
case FFP_MSG_FLUSH:
break;
case FFP_MSG_ERROR:
NSLog(@"FFP_MSG_ERROR: %d", avmsg->arg1);
[self onMediaError:avmsg->arg1];
if ([delegate respondsToSelector:@selector(playerDidFail:)])
[delegate playerDidFail:avmsg->arg1];
break;
case FFP_MSG_PREPARED:
NSLog(@"FFP_MSG_PREPARED:");
[self onMediaPrepared];
if ([delegate respondsToSelector:@selector(playerDidPrepare:)])
[delegate playerDidPrepare];
break;
case FFP_MSG_COMPLETED:
NSLog(@"FFP_MSG_COMPLETED:");
[self onMediaCompleted];
if ([delegate respondsToSelector:@selector(playerDidComplete:)])
[delegate playerDidComplete];
break;
case FFP_MSG_VIDEO_SIZE_CHANGED:
NSLog(@"FFP_MSG_VIDEO_SIZE_CHANGED: %d, %d", avmsg->arg1, avmsg->arg2);
[self onMediaVideoSizeChanged:IJKSizeMake(avmsg->arg1, avmsg->arg2)];
if ([delegate respondsToSelector:@selector(playerDidChangeVideoSize:)])
[delegate playerDidChangeVideoSize:IJKSizeMake(avmsg->arg1, avmsg->arg2)];
break;
case FFP_MSG_SAR_CHANGED:
NSLog(@"FFP_MSG_SAR_CHANGED: %d, %d", avmsg->arg1, avmsg->arg2);
[self onMediaSarChanged:IJKIntPairMake(avmsg->arg1, avmsg->arg2)];
if ([delegate respondsToSelector:@selector(playerDidChangeSampleAspectRatio:)])
[delegate playerDidChangeSampleAspectRatio:IJKSampleAspectRatioMake(avmsg->arg1, avmsg->arg2)];
break;
case FFP_MSG_BUFFERING_START:
NSLog(@"FFP_MSG_BUFFERING_START:");
[self onMediaBufferingStart];
if ([delegate respondsToSelector:@selector(playerDidStartBuffering:)])
[delegate playerDidStartBuffering];
break;
case FFP_MSG_BUFFERING_END:
NSLog(@"FFP_MSG_BUFFERING_END:");
[self onMediaBufferingEnd];
if ([delegate respondsToSelector:@selector(playerDidStopBuffering:)])
[delegate playerDidStopBuffering];
break;
case FFP_MSG_BUFFERING_UPDATE:
NSLog(@"FFP_MSG_BUFFERING_UPDATE: %d, %d", avmsg->arg1, avmsg->arg2);
[self onMediaBufferingUpdate:IJKIntPairMake(avmsg->arg1, avmsg->arg2)];
break;
case FFP_MSG_BUFFERING_BYTES_UPDATE:
NSLog(@"FFP_MSG_BUFFERING_BYTES_UPDATE: %d", avmsg->arg1);
break;
case FFP_MSG_BUFFERING_TIME_UPDATE:
NSLog(@"FFP_MSG_BUFFERING_TIME_UPDATE: %d", avmsg->arg1);
break;
case FFP_MSG_SEEK_COMPLETE:
NSLog(@"FFP_MSG_SEEK_COMPLETE:");
[self onMediaSeekComplete];
if ([delegate respondsToSelector:@selector(playerDidSeek:)])
[delegate playerDidSeek];
break;
default:
NSLog(@"unknown FFP_MSG_xxx(%d)", avmsg->what);
......
......@@ -23,36 +23,3 @@
- (void) recycle:(IJKFFPlayerMessage *)msg;
@end
struct IJKSize {
NSInteger width;
NSInteger height;
};
typedef struct IJKSize IJKSize;
struct IJKIntPair {
NSInteger arg1;
NSInteger arg2;
};
typedef struct IJKIntPair IJKIntPair;
CG_INLINE IJKSize
IJKSizeMake(NSInteger width, NSInteger height)
{
IJKSize size;
size.width = width;
size.height = height;
return size;
}
CG_INLINE IJKIntPair
IJKIntPairMake(NSInteger arg1, NSInteger arg2)
{
IJKIntPair pair;
pair.arg1 = arg1;
pair.arg2 = arg2;
return pair;
}
\ No newline at end of file
......@@ -13,11 +13,53 @@
@protocol IJKMediaPlayback;
struct IJKSize {
NSInteger width;
NSInteger height;
};
typedef struct IJKSize IJKSize;
CG_INLINE IJKSize
IJKSizeMake(NSInteger width, NSInteger height)
{
IJKSize size;
size.width = width;
size.height = height;
return size;
}
struct IJKSampleAspectRatio {
NSInteger numerator;
NSInteger denominator;
};
typedef struct IJKSampleAspectRatio IJKSampleAspectRatio;
CG_INLINE IJKSampleAspectRatio
IJKSampleAspectRatioMake(NSInteger numerator, NSInteger denominator)
{
IJKSampleAspectRatio sampleAspectRatio;
sampleAspectRatio.numerator = numerator;
sampleAspectRatio.denominator = denominator;
return sampleAspectRatio;
}
#pragma mark IJKMediaPlaybackDelegate
@protocol IJKMediaPlaybackDelegate <NSObject>
- (void)onEvent:(id<IJKMediaPlayback>)player;
@optional
- (void)playerDidFail:(NSInteger)error;
- (void)playerDidPrepare;
- (void)playerDidComplete;
- (void)playerDidChangeVideoSize:(IJKSize)size;
- (void)playerDidChangeSampleAspectRatio:(IJKSampleAspectRatio)sampleAspectRatio;
- (void)playerDidStartBuffering;
- (void)playerDidStopBuffering;
- (void)playerDidSeek;
@end
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册