提交 4b682907 编写于 作者: Z Zhang Rui

IJKFFPlayer: add msg pool

上级 401d22ab
......@@ -12,6 +12,7 @@
@implementation IJKFFPlayerController {
NSURL *_url;
IjkMediaPlayer *_mediaPlayer;
IJKFFPlayerMessagePool *_msgPool;
}
@synthesize view = _view;
......@@ -29,6 +30,8 @@
_url = aUrl;
_mediaPlayer = ijkmp_ios_create(media_player_msg_loop);
_msgPool = [[IJKFFPlayerMessagePool alloc] init];
ijkmp_set_weak_thiz(_mediaPlayer, (__bridge_retained void *) self);
IJKSDLGLView *glView = [[IJKSDLGLView alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
......@@ -205,6 +208,12 @@
NSLog(@"unknown FFP_MSG_xxx(%d)", avmsg->what);
break;
}
[_msgPool recycle:msg];
}
- (IJKFFPlayerMessage *) obtainMessage {
return [_msgPool obtain];
}
inline static IJKFFPlayerController *ffplayerRetain(void *arg) {
......@@ -219,7 +228,10 @@ int media_player_msg_loop(void* arg)
while (ffpController && true) {
@autoreleasepool {
IJKFFPlayerMessage *msg = [[IJKFFPlayerMessage alloc] init];
IJKFFPlayerMessage *msg = [ffpController obtainMessage];
if (!msg)
break;
int retval = ijkmp_get_msg(mp, &msg->_msg, 1);
if (retval < 0)
break;
......
......@@ -16,6 +16,14 @@
@end
@interface IJKFFPlayerMessagePool : NSObject
- (IJKFFPlayerMessagePool *)init;
- (IJKFFPlayerMessage *) obtain;
- (void) recycle:(IJKFFPlayerMessage *)msg;
@end
struct IJKSize {
NSInteger width;
......
......@@ -9,4 +9,48 @@
#import "IJKFFPlayerDef.h"
@implementation IJKFFPlayerMessage
@end
@implementation IJKFFPlayerMessagePool{
NSMutableArray *_array;
}
- (IJKFFPlayerMessagePool *)init
{
self = [super init];
if (self) {
_array = [[NSMutableArray alloc] init];
}
return self;
}
- (IJKFFPlayerMessage *) obtain
{
IJKFFPlayerMessage *msg = nil;
@synchronized(self) {
NSUInteger count = [_array count];
if (count > 0) {
msg = [_array objectAtIndex:count - 1];
[_array removeLastObject];
}
}
if (!msg)
msg = [[IJKFFPlayerMessage alloc] init];
return msg;
}
- (void) recycle:(IJKFFPlayerMessage *)msg
{
if (!msg)
return;
@synchronized(self) {
if ([_array count] <= 10)
[_array addObject:msg];
}
}
@end
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册