Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
qq_25606643
ijkplayer
提交
302ff85a
I
ijkplayer
项目概览
qq_25606643
/
ijkplayer
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
I
ijkplayer
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
302ff85a
编写于
6月 02, 2015
作者:
Z
Zhang Rui
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
ios: replace AudioSession with AVAudioSession
上级
7d522da0
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
66 addition
and
34 deletion
+66
-34
ios/IJKMediaPlayer/IJKMediaPlayer/IJKAudioKit.m
ios/IJKMediaPlayer/IJKMediaPlayer/IJKAudioKit.m
+45
-18
ios/IJKMediaPlayer/IJKMediaPlayer/ijkmedia/ijksdl/ios/IJKSDLAudioQueueController.m
...iaPlayer/ijkmedia/ijksdl/ios/IJKSDLAudioQueueController.m
+7
-5
ios/IJKMediaPlayer/IJKMediaPlayer/ijkmedia/ijksdl/ios/IJKSDLAudioUnitController.m
...diaPlayer/ijkmedia/ijksdl/ios/IJKSDLAudioUnitController.m
+14
-11
未找到文件。
ios/IJKMediaPlayer/IJKMediaPlayer/IJKAudioKit.m
浏览文件 @
302ff85a
...
...
@@ -24,6 +24,8 @@
#import "IJKAudioKit.h"
#import <AVFoundation/AVFoundation.h>
@implementation
IJKAudioKit
{
__weak
id
<
IJKAudioSessionDelegate
>
_delegate
;
...
...
@@ -47,30 +49,24 @@
return
;
}
OSStatus
status
=
noErr
;
if
(
!
_audioSessionInitialized
)
{
status
=
AudioSessionInitialize
(
NULL
,
kCFRunLoopCommonModes
,
IjkAudioSessionInterruptionListener
,
NULL
);
if
(
status
!=
noErr
)
{
NSLog
(
@"IJKAudioKit: AudioSessionInitialize failed (%d)"
,
(
int
)
status
);
return
;
}
[[
NSNotificationCenter
defaultCenter
]
addObserver
:
self
selector:
@selector
(
handleInterruption
:)
name:
AVAudioSessionInterruptionNotification
object:
[
AVAudioSession
sharedInstance
]];
_audioSessionInitialized
=
YES
;
}
/* Set audio session to mediaplayback */
UInt32
sessionCategory
=
kAudioSessionCategory_MediaPlayback
;
status
=
AudioSessionSetProperty
(
kAudioSessionProperty_AudioCategory
,
sizeof
(
sessionCategory
),
&
sessionCategory
);
if
(
status
!=
noErr
)
{
NSLog
(
@"IJKAudioKit: AudioSessionSetProperty(kAudioSessionProperty_AudioCategory) failed (%d)"
,
(
int
)
status
);
NSError
*
error
=
nil
;
if
(
NO
==
[[
AVAudioSession
sharedInstance
]
setCategory
:
AVAudioSessionCategoryPlayback
error
:
&
error
])
{
NSLog
(
@"IJKAudioKit: AVAudioSession.setCategory() failed: %@
\n
"
,
error
?
[
error
localizedDescription
]
:
@"nil"
);
return
;
}
status
=
AudioSessionSetActive
(
true
)
;
if
(
status
!=
noErr
)
{
NSLog
(
@"IJKAudioKit: A
udioSessionSetActive(true) failed (%d)"
,
(
int
)
status
);
error
=
nil
;
if
(
NO
==
[[
AVAudioSession
sharedInstance
]
setActive
:
YES
error
:
&
error
]
)
{
NSLog
(
@"IJKAudioKit: A
VAudioSession.setActive(YES) failed: %@
\n
"
,
error
?
[
error
localizedDescription
]
:
@"nil"
);
return
;
}
...
...
@@ -78,6 +74,33 @@
return
;
}
-
(
void
)
handleInterruption
:(
NSNotification
*
)
notification
{
int
reason
=
[[[
notification
userInfo
]
valueForKey
:
AVAudioSessionInterruptionTypeKey
]
intValue
];
switch
(
reason
)
{
case
AVAudioSessionInterruptionTypeBegan
:
{
NSLog
(
@"AVAudioSessionInterruptionTypeBegan
\n
"
);
dispatch_async
(
dispatch_get_main_queue
(),
^
{
[
_delegate
ijkAudioBeginInterruption
];
[[
AVAudioSession
sharedInstance
]
setActive
:
YES
error
:
nil
];
});
break
;
}
case
AVAudioSessionInterruptionTypeEnded
:
{
NSLog
(
@"AVAudioSessionInterruptionTypeEnded
\n
"
);
dispatch_async
(
dispatch_get_main_queue
(),
^
{
[
_delegate
ijkAudioEndInterruption
];
@try
{
[[
AVAudioSession
sharedInstance
]
setActive
:
NO
error
:
nil
];
}
@catch
(
NSException
*
exception
)
{
NSLog
(
@"failed to inactive AVAudioSession
\n
"
);
}
});
break
;
}
}
}
static
void
IjkAudioSessionInterruptionListener
(
void
*
inClientData
,
UInt32
inInterruptionState
)
{
id
<
IJKAudioSessionDelegate
>
delegate
=
[
IJKAudioKit
sharedInstance
]
->
_delegate
;
...
...
@@ -89,15 +112,19 @@ static void IjkAudioSessionInterruptionListener(void *inClientData, UInt32 inInt
NSLog
(
@"kAudioSessionBeginInterruption
\n
"
);
dispatch_async
(
dispatch_get_main_queue
(),
^
{
[
delegate
ijkAudioBeginInterruption
];
AudioSessionSetActive
(
false
)
;
[[
AVAudioSession
sharedInstance
]
setActive
:
YES
error
:
nil
]
;
});
break
;
}
case
kAudioSessionEndInterruption
:
{
NSLog
(
@"kAudioSessionEndInterruption
\n
"
);
dispatch_async
(
dispatch_get_main_queue
(),
^
{
AudioSessionSetActive
(
true
);
[
delegate
ijkAudioEndInterruption
];
@try
{
[[
AVAudioSession
sharedInstance
]
setActive
:
NO
error
:
nil
];
}
@catch
(
NSException
*
exception
)
{
NSLog
(
@"failed to inactive AVAudioSession
\n
"
);
}
});
break
;
}
...
...
ios/IJKMediaPlayer/IJKMediaPlayer/ijkmedia/ijksdl/ios/IJKSDLAudioQueueController.m
浏览文件 @
302ff85a
...
...
@@ -25,6 +25,8 @@
#import "IJKSDLAudioQueueController.h"
#import "IJKSDLAudioKit.h"
#import <AVFoundation/AVFoundation.h>
#define kIJKAudioQueueNumberBuffers (3)
@implementation
IJKSDLAudioQueueController
{
...
...
@@ -107,7 +109,11 @@
return
;
_isPaused
=
NO
;
AudioSessionSetActive
(
true
);
NSError
*
error
=
nil
;
if
(
NO
==
[[
AVAudioSession
sharedInstance
]
setActive
:
YES
error
:
&
error
])
{
NSLog
(
@"AudioQueue: AVAudioSession.setActive(YES) failed: %@
\n
"
,
error
?
[
error
localizedDescription
]
:
@"nil"
);
}
OSStatus
status
=
AudioQueueStart
(
_audioQueueRef
,
NULL
);
if
(
status
!=
noErr
)
NSLog
(
@"AudioQueue: AudioQueueStart failed (%d)
\n
"
,
(
int
)
status
);
...
...
@@ -119,9 +125,6 @@
return
;
_isPaused
=
YES
;
// Delay > 1 seconds on ios8
// Maybe we don't need this call in pause
// AudioSessionSetActive(false);
OSStatus
status
=
AudioQueuePause
(
_audioQueueRef
);
if
(
status
!=
noErr
)
NSLog
(
@"AudioQueue: AudioQueuePause failed (%d)
\n
"
,
(
int
)
status
);
...
...
@@ -137,7 +140,6 @@
-
(
void
)
stop
{
// AudioSessionSetActive(false);
if
(
!
_audioQueueRef
)
return
;
...
...
ios/IJKMediaPlayer/IJKMediaPlayer/ijkmedia/ijksdl/ios/IJKSDLAudioUnitController.m
浏览文件 @
302ff85a
...
...
@@ -26,6 +26,8 @@
#include "ijkutil/ijkutil.h"
#import "IJKSDLAudioKit.h"
#import <AVFoundation/AVFoundation.h>
@implementation
IJKSDLAudioUnitController
{
AudioUnit
_auUnit
;
BOOL
_isPaused
;
...
...
@@ -98,7 +100,7 @@
&
streamDescription
,
&
i_param_size
);
if
(
status
!=
noErr
)
{
ALOGE
(
"AudioUnit: failed to verify stream format (%d)"
,
(
int
)
status
);
ALOGE
(
"AudioUnit: failed to verify stream format (%d)
\n
"
,
(
int
)
status
);
}
AURenderCallbackStruct
callback
;
...
...
@@ -109,7 +111,7 @@
kAudioUnitScope_Input
,
0
,
&
callback
,
sizeof
(
callback
));
if
(
status
!=
noErr
)
{
ALOGE
(
"AudioUnit: render callback setup failed (%d)"
,
(
int
)
status
);
ALOGE
(
"AudioUnit: render callback setup failed (%d)
\n
"
,
(
int
)
status
);
self
=
nil
;
return
nil
;
}
...
...
@@ -119,7 +121,7 @@
/* AU initiliaze */
status
=
AudioUnitInitialize
(
auUnit
);
if
(
status
!=
noErr
)
{
ALOGE
(
"AudioUnit: AudioUnitInitialize failed (%d)"
,
(
int
)
status
);
ALOGE
(
"AudioUnit: AudioUnitInitialize failed (%d)
\n
"
,
(
int
)
status
);
self
=
nil
;
return
nil
;
}
...
...
@@ -140,8 +142,14 @@
return
;
_isPaused
=
NO
;
AudioSessionSetActive
(
true
);
AudioOutputUnitStart
(
_auUnit
);
NSError
*
error
=
nil
;
if
(
NO
==
[[
AVAudioSession
sharedInstance
]
setActive
:
YES
error
:
&
error
])
{
NSLog
(
@"AudioUnit: AVAudioSession.setActive(YES) failed: %@
\n
"
,
error
?
[
error
localizedDescription
]
:
@"nil"
);
}
OSStatus
status
=
AudioOutputUnitStart
(
_auUnit
);
if
(
status
!=
noErr
)
NSLog
(
@"AudioUnit: AudioOutputUnitStart failed (%d)
\n
"
,
(
int
)
status
);
}
-
(
void
)
pause
...
...
@@ -150,12 +158,9 @@
return
;
_isPaused
=
YES
;
// Delay > 1 seconds on ios8
// Maybe we don't need this call in pause
// AudioSessionSetActive(false);
OSStatus
status
=
AudioOutputUnitStop
(
_auUnit
);
if
(
status
!=
noErr
)
ALOGE
(
"AudioUnit: failed to stop AudioUnit (%d)"
,
(
int
)
status
);
ALOGE
(
"AudioUnit: failed to stop AudioUnit (%d)
\n
"
,
(
int
)
status
);
}
-
(
void
)
flush
...
...
@@ -168,8 +173,6 @@
-
(
void
)
stop
{
// AudioSessionSetActive(false);
if
(
!
_auUnit
)
return
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录