Skip to content

Instantly share code, notes, and snippets.

- (AudioStreamBasicDescription)parseAudioFileData:(AudioFileID)audioFileID
error:(NSError **)error {
AudioStreamBasicDescription buffDataFormat;
UInt32 formatSize = sizeof(AudioStreamBasicDescription);
OSStatus status = AudioFileGetProperty(audioFileID, kAudioFilePropertyDataFormat, &formatSize, &buffDataFormat);
if (status != noErr) {
NSLog(@"parseAudioFileData failed %d", status);
*error = [NSError errorWithDomain:@"parse data format failed" code:-100 userInfo:nil];
}
- (AudioFileID)loadAudioFile:(NSString *)audioPath {
AudioFileID audioFile;
OSStatus status = AudioFileOpenURL(
(__bridge CFURLRef _Nonnull)([NSURL fileURLWithPath:audioPath]),
kAudioFileReadPermission,
0,
&audioFile);
if (status != noErr) {
NSLog(@"Load file failed %d", status);
return nil;
@SunXiaoShan
SunXiaoShan / AudioToolbox.m
Created July 19, 2019 01:30
AudioToolbox
static const UInt32 maxBufferSize = 0x10000;
static const UInt32 minBufferSize = 0x4000;
static const UInt32 maxBufferNum = 3;
@interface AudioPlayerManager() {
AudioFileID _audioFile;
AudioStreamBasicDescription _dataFormat;
AudioQueueRef _queue;
UInt32 numPacketsToRead;
AudioStreamPacketDescription *packetDescs;
@SunXiaoShan
SunXiaoShan / LoadAudioFilePath.m
Last active July 19, 2019 01:26
AudioToolbox
NSString *audioFilePath = [NSString stringWithFormat:@"%@",
[[NSBundle mainBundle] pathForResource:@"success-notification-alert_A_major"
ofType:@"wav"]];
void getHighlightableChildren(Widget* currentHighlightWiget, WidgetList& list) {
// 取得該 Widget 在哪個頁面上
Page* pagePtr = currentHighlightWiget->getParentPage();
const WidgetList& children = pagePtr->getChildren();
Layer* layer = NULL;
// 取得 highlightable list,部分可用 recursive 方式判斷 isHighlightable() 這個 method 得到
for (WidgetList::const_iterator it = children.begin(); it != children.end(); ++it) {
bool moveHighlight(DirectionType direction) {
bool moved = false;
Widget *currentHighlightedWidget = getHighlightedWidget();
// 若目前沒有 highlight,嘗試尋找一個可以被 highlight 的物件
if (NULL == currentHighlightedWidget) {
setupHighlighted();
moved = hasHighlightedWidget();
class Widget {
public:
Widget();
~Widget();
public:
void setHighlighted();
void setHighlightable(bool active);
void resetHighlight();
bool isHighlighted();
class LibraryPage: Page {
lazy var libraryTab = app.tabBars.buttons["Library"]
var selectIndex: Int = 0
func switchToLibrary() -> Self {
libraryTab.tap()
snapshot("switch to library page")
return self
}
class Page {
open var app:XCUIApplication
required init(_ app: XCUIApplication) {
self.app = app
}
}
import ReplayKit
class ViewController: UIViewController {
@IBOutlet weak var mainView: UIView!
var broadcastPicker: RPSystemBroadcastPickerView?
override func viewDidLoad() {
super.viewDidLoad()