update
@@ -7,7 +7,7 @@
|
||||
objects = {
|
||||
|
||||
/* Begin PBXBuildFile section */
|
||||
2AA95CD2BA7A94CC2237B3B8 /* libPods-OrderSchedulingNotificationService.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5C3211D21873B481A21262ED /* libPods-OrderSchedulingNotificationService.a */; };
|
||||
484E98B33009439007606B9D /* libPods-OrderSchedulingNotificationService.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 0AC8946386773D3E9F510BE6 /* libPods-OrderSchedulingNotificationService.a */; };
|
||||
791887422A7CCCCD007EA0C1 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 791887402A7CCCCD007EA0C1 /* AppDelegate.swift */; };
|
||||
791887432A7CCCCD007EA0C1 /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 791887412A7CCCCD007EA0C1 /* SceneDelegate.swift */; };
|
||||
791887452A7CD05B007EA0C1 /* MainTabBarController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 791887442A7CD05B007EA0C1 /* MainTabBarController.swift */; };
|
||||
@@ -91,8 +91,7 @@
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
09A2779565B8D8C9A3C1A302 /* Pods-OrderScheduling.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-OrderScheduling.debug.xcconfig"; path = "Target Support Files/Pods-OrderScheduling/Pods-OrderScheduling.debug.xcconfig"; sourceTree = "<group>"; };
|
||||
0F3D6463BE04DB3A3BC4B265 /* Pods-OrderSchedulingNotificationService.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-OrderSchedulingNotificationService.debug.xcconfig"; path = "Target Support Files/Pods-OrderSchedulingNotificationService/Pods-OrderSchedulingNotificationService.debug.xcconfig"; sourceTree = "<group>"; };
|
||||
5C3211D21873B481A21262ED /* libPods-OrderSchedulingNotificationService.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-OrderSchedulingNotificationService.a"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
0AC8946386773D3E9F510BE6 /* libPods-OrderSchedulingNotificationService.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-OrderSchedulingNotificationService.a"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
791887402A7CCCCD007EA0C1 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
|
||||
791887412A7CCCCD007EA0C1 /* SceneDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = "<group>"; };
|
||||
791887442A7CD05B007EA0C1 /* MainTabBarController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainTabBarController.swift; sourceTree = "<group>"; };
|
||||
@@ -170,9 +169,10 @@
|
||||
79FB76052A9C606100DB00A4 /* OrderSchedulingNotificationService.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = OrderSchedulingNotificationService.entitlements; sourceTree = "<group>"; };
|
||||
79FB760E2A9C6CAF00DB00A4 /* newJuheOrderAudio.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = newJuheOrderAudio.wav; sourceTree = "<group>"; };
|
||||
79FB76122A9C6CC100DB00A4 /* newOrderAudio.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = newOrderAudio.wav; sourceTree = "<group>"; };
|
||||
9758FDE3BEDA5A983CAE2DED /* Pods-OrderSchedulingNotificationService.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-OrderSchedulingNotificationService.debug.xcconfig"; path = "Target Support Files/Pods-OrderSchedulingNotificationService/Pods-OrderSchedulingNotificationService.debug.xcconfig"; sourceTree = "<group>"; };
|
||||
98784A61C325B3D6C408016C /* libPods-OrderScheduling.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-OrderScheduling.a"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
A6F7A8FEBD23498BABF3BD58 /* Pods-OrderSchedulingNotificationService.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-OrderSchedulingNotificationService.release.xcconfig"; path = "Target Support Files/Pods-OrderSchedulingNotificationService/Pods-OrderSchedulingNotificationService.release.xcconfig"; sourceTree = "<group>"; };
|
||||
BD034FA1DD7C17CCBA6B0E5D /* Pods-OrderScheduling.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-OrderScheduling.release.xcconfig"; path = "Target Support Files/Pods-OrderScheduling/Pods-OrderScheduling.release.xcconfig"; sourceTree = "<group>"; };
|
||||
F76C33D505526F14E541D0A7 /* Pods-OrderSchedulingNotificationService.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-OrderSchedulingNotificationService.release.xcconfig"; path = "Target Support Files/Pods-OrderSchedulingNotificationService/Pods-OrderSchedulingNotificationService.release.xcconfig"; sourceTree = "<group>"; };
|
||||
/* End PBXFileReference section */
|
||||
|
||||
/* Begin PBXFrameworksBuildPhase section */
|
||||
@@ -188,7 +188,7 @@
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
2AA95CD2BA7A94CC2237B3B8 /* libPods-OrderSchedulingNotificationService.a in Frameworks */,
|
||||
484E98B33009439007606B9D /* libPods-OrderSchedulingNotificationService.a in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
@@ -686,8 +686,8 @@
|
||||
children = (
|
||||
09A2779565B8D8C9A3C1A302 /* Pods-OrderScheduling.debug.xcconfig */,
|
||||
BD034FA1DD7C17CCBA6B0E5D /* Pods-OrderScheduling.release.xcconfig */,
|
||||
0F3D6463BE04DB3A3BC4B265 /* Pods-OrderSchedulingNotificationService.debug.xcconfig */,
|
||||
A6F7A8FEBD23498BABF3BD58 /* Pods-OrderSchedulingNotificationService.release.xcconfig */,
|
||||
9758FDE3BEDA5A983CAE2DED /* Pods-OrderSchedulingNotificationService.debug.xcconfig */,
|
||||
F76C33D505526F14E541D0A7 /* Pods-OrderSchedulingNotificationService.release.xcconfig */,
|
||||
);
|
||||
path = Pods;
|
||||
sourceTree = "<group>";
|
||||
@@ -711,7 +711,7 @@
|
||||
79CECC9F2A8E03CF00B95D8B /* AVFoundation.framework */,
|
||||
79CECC9D2A8E03C200B95D8B /* MediaPlayer.framework */,
|
||||
98784A61C325B3D6C408016C /* libPods-OrderScheduling.a */,
|
||||
5C3211D21873B481A21262ED /* libPods-OrderSchedulingNotificationService.a */,
|
||||
0AC8946386773D3E9F510BE6 /* libPods-OrderSchedulingNotificationService.a */,
|
||||
);
|
||||
name = Frameworks;
|
||||
sourceTree = "<group>";
|
||||
@@ -744,7 +744,7 @@
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 79FB75FD2A9C3BEE00DB00A4 /* Build configuration list for PBXNativeTarget "OrderSchedulingNotificationService" */;
|
||||
buildPhases = (
|
||||
DFA879CCBC9CAB845D24416A /* [CP] Check Pods Manifest.lock */,
|
||||
6EB5BBCDE56F555DA13D87D9 /* [CP] Check Pods Manifest.lock */,
|
||||
79FB75F12A9C3BEE00DB00A4 /* Sources */,
|
||||
79FB75F22A9C3BEE00DB00A4 /* Frameworks */,
|
||||
79FB75F32A9C3BEE00DB00A4 /* Resources */,
|
||||
@@ -836,6 +836,28 @@
|
||||
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-OrderScheduling/Pods-OrderScheduling-resources.sh\"\n";
|
||||
showEnvVarsInLog = 0;
|
||||
};
|
||||
6EB5BBCDE56F555DA13D87D9 /* [CP] Check Pods Manifest.lock */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
inputFileListPaths = (
|
||||
);
|
||||
inputPaths = (
|
||||
"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
|
||||
"${PODS_ROOT}/Manifest.lock",
|
||||
);
|
||||
name = "[CP] Check Pods Manifest.lock";
|
||||
outputFileListPaths = (
|
||||
);
|
||||
outputPaths = (
|
||||
"$(DERIVED_FILE_DIR)/Pods-OrderSchedulingNotificationService-checkManifestLockResult.txt",
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
|
||||
showEnvVarsInLog = 0;
|
||||
};
|
||||
BB88446118A3830B05D88DEC /* [CP] Check Pods Manifest.lock */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
@@ -858,28 +880,6 @@
|
||||
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
|
||||
showEnvVarsInLog = 0;
|
||||
};
|
||||
DFA879CCBC9CAB845D24416A /* [CP] Check Pods Manifest.lock */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
inputFileListPaths = (
|
||||
);
|
||||
inputPaths = (
|
||||
"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
|
||||
"${PODS_ROOT}/Manifest.lock",
|
||||
);
|
||||
name = "[CP] Check Pods Manifest.lock";
|
||||
outputFileListPaths = (
|
||||
);
|
||||
outputPaths = (
|
||||
"$(DERIVED_FILE_DIR)/Pods-OrderSchedulingNotificationService-checkManifestLockResult.txt",
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
|
||||
showEnvVarsInLog = 0;
|
||||
};
|
||||
/* End PBXShellScriptBuildPhase section */
|
||||
|
||||
/* Begin PBXSourcesBuildPhase section */
|
||||
@@ -1182,7 +1182,7 @@
|
||||
};
|
||||
79FB75FE2A9C3BEE00DB00A4 /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = 0F3D6463BE04DB3A3BC4B265 /* Pods-OrderSchedulingNotificationService.debug.xcconfig */;
|
||||
baseConfigurationReference = 9758FDE3BEDA5A983CAE2DED /* Pods-OrderSchedulingNotificationService.debug.xcconfig */;
|
||||
buildSettings = {
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CODE_SIGN_ENTITLEMENTS = OrderSchedulingNotificationService/OrderSchedulingNotificationService.entitlements;
|
||||
@@ -1214,7 +1214,7 @@
|
||||
};
|
||||
79FB75FF2A9C3BEE00DB00A4 /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = A6F7A8FEBD23498BABF3BD58 /* Pods-OrderSchedulingNotificationService.release.xcconfig */;
|
||||
baseConfigurationReference = F76C33D505526F14E541D0A7 /* Pods-OrderSchedulingNotificationService.release.xcconfig */;
|
||||
buildSettings = {
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CODE_SIGN_ENTITLEMENTS = OrderSchedulingNotificationService/OrderSchedulingNotificationService.entitlements;
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
<key>OrderSchedulingNotificationService.xcscheme_^#shared#^_</key>
|
||||
<dict>
|
||||
<key>orderHint</key>
|
||||
<integer>40</integer>
|
||||
<integer>41</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>SuppressBuildableAutocreation</key>
|
||||
|
||||
@@ -317,8 +317,8 @@
|
||||
filePath = "OrderScheduling/Rescue/ViewController/RescueController.swift"
|
||||
startingColumnNumber = "9223372036854775807"
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "549"
|
||||
endingLineNumber = "549"
|
||||
startingLineNumber = "551"
|
||||
endingLineNumber = "551"
|
||||
landmarkName = "tableView(_:cellForRowAt:)"
|
||||
landmarkType = "7">
|
||||
</BreakpointContent>
|
||||
@@ -333,8 +333,8 @@
|
||||
filePath = "OrderScheduling/Rescue/ViewController/RescueController.swift"
|
||||
startingColumnNumber = "9223372036854775807"
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "550"
|
||||
endingLineNumber = "550"
|
||||
startingLineNumber = "552"
|
||||
endingLineNumber = "552"
|
||||
landmarkName = "tableView(_:cellForRowAt:)"
|
||||
landmarkType = "7">
|
||||
</BreakpointContent>
|
||||
@@ -507,8 +507,8 @@
|
||||
filePath = "OrderScheduling/Rescue/ViewController/RescueController.swift"
|
||||
startingColumnNumber = "9223372036854775807"
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "631"
|
||||
endingLineNumber = "631"
|
||||
startingLineNumber = "633"
|
||||
endingLineNumber = "633"
|
||||
landmarkName = "tableView(_:cellForRowAt:)"
|
||||
landmarkType = "7">
|
||||
</BreakpointContent>
|
||||
@@ -523,8 +523,8 @@
|
||||
filePath = "OrderScheduling/Rescue/ViewController/RescueController.swift"
|
||||
startingColumnNumber = "9223372036854775807"
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "632"
|
||||
endingLineNumber = "632"
|
||||
startingLineNumber = "634"
|
||||
endingLineNumber = "634"
|
||||
landmarkName = "tableView(_:cellForRowAt:)"
|
||||
landmarkType = "7">
|
||||
</BreakpointContent>
|
||||
@@ -533,7 +533,7 @@
|
||||
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
||||
<BreakpointContent
|
||||
uuid = "F60CEE6A-AA19-4BDA-96D1-8F3B46A87FF5"
|
||||
shouldBeEnabled = "No"
|
||||
shouldBeEnabled = "Yes"
|
||||
ignoreCount = "0"
|
||||
continueAfterRunningActions = "No"
|
||||
filePath = "Pods/DDCategoryKit_Private/DDCategoryKit_Private/Classes/UIImage+DDCategory/UIImage+DDCategory.m"
|
||||
@@ -555,8 +555,8 @@
|
||||
filePath = "OrderScheduling/Rescue/ViewController/RescueController.swift"
|
||||
startingColumnNumber = "9223372036854775807"
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "777"
|
||||
endingLineNumber = "777"
|
||||
startingLineNumber = "779"
|
||||
endingLineNumber = "779"
|
||||
landmarkName = "collectionView(_:cellForItemAt:)"
|
||||
landmarkType = "7">
|
||||
</BreakpointContent>
|
||||
@@ -571,8 +571,8 @@
|
||||
filePath = "OrderScheduling/Rescue/ViewController/RescueController.swift"
|
||||
startingColumnNumber = "9223372036854775807"
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "778"
|
||||
endingLineNumber = "778"
|
||||
startingLineNumber = "780"
|
||||
endingLineNumber = "780"
|
||||
landmarkName = "collectionView(_:cellForItemAt:)"
|
||||
landmarkType = "7">
|
||||
</BreakpointContent>
|
||||
@@ -2905,5 +2905,85 @@
|
||||
</Locations>
|
||||
</BreakpointContent>
|
||||
</BreakpointProxy>
|
||||
<BreakpointProxy
|
||||
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
||||
<BreakpointContent
|
||||
uuid = "7EFC41FE-B60A-49CB-B9EA-B5807B0B16BA"
|
||||
shouldBeEnabled = "No"
|
||||
ignoreCount = "0"
|
||||
continueAfterRunningActions = "No"
|
||||
filePath = "OrderScheduling/Rescue/ViewController/RescueController.swift"
|
||||
startingColumnNumber = "9223372036854775807"
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "776"
|
||||
endingLineNumber = "776"
|
||||
landmarkName = "collectionView(_:cellForItemAt:)"
|
||||
landmarkType = "7">
|
||||
</BreakpointContent>
|
||||
</BreakpointProxy>
|
||||
<BreakpointProxy
|
||||
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
||||
<BreakpointContent
|
||||
uuid = "F3E4045E-F870-4AFA-B669-3BA74CE4A944"
|
||||
shouldBeEnabled = "No"
|
||||
ignoreCount = "0"
|
||||
continueAfterRunningActions = "No"
|
||||
filePath = "OrderScheduling/Rescue/ViewController/RescueController.swift"
|
||||
startingColumnNumber = "9223372036854775807"
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "774"
|
||||
endingLineNumber = "774"
|
||||
landmarkName = "collectionView(_:cellForItemAt:)"
|
||||
landmarkType = "7">
|
||||
</BreakpointContent>
|
||||
</BreakpointProxy>
|
||||
<BreakpointProxy
|
||||
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
||||
<BreakpointContent
|
||||
uuid = "1FB991B7-D6C8-4379-BE42-64E92BFC5115"
|
||||
shouldBeEnabled = "No"
|
||||
ignoreCount = "0"
|
||||
continueAfterRunningActions = "No"
|
||||
filePath = "OrderScheduling/Rescue/ViewController/RescueController.swift"
|
||||
startingColumnNumber = "9223372036854775807"
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "775"
|
||||
endingLineNumber = "775"
|
||||
landmarkName = "collectionView(_:cellForItemAt:)"
|
||||
landmarkType = "7">
|
||||
<Locations>
|
||||
<Location
|
||||
uuid = "1FB991B7-D6C8-4379-BE42-64E92BFC5115 - f2a3ff53cb33940d"
|
||||
shouldBeEnabled = "Yes"
|
||||
ignoreCount = "0"
|
||||
continueAfterRunningActions = "No"
|
||||
symbolName = "closure #1 () -> () in OrderScheduling.RescuePendingDispatchController.collectionView(_: __C.UICollectionView, cellForItemAt: Foundation.IndexPath) -> __C.UICollectionViewCell"
|
||||
moduleName = "OrderScheduling"
|
||||
usesParentBreakpointCondition = "Yes"
|
||||
urlString = "file:///Users/zd/Desktop/%E4%B8%AD%E9%81%93%E6%95%91%E6%8F%B4/OrderScheduling/OrderScheduling/Rescue/ViewController/RescueController.swift"
|
||||
startingColumnNumber = "9223372036854775807"
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "773"
|
||||
endingLineNumber = "773"
|
||||
offsetFromSymbolStart = "566">
|
||||
</Location>
|
||||
<Location
|
||||
uuid = "1FB991B7-D6C8-4379-BE42-64E92BFC5115 - ec723f9f922c6918"
|
||||
shouldBeEnabled = "Yes"
|
||||
ignoreCount = "0"
|
||||
continueAfterRunningActions = "No"
|
||||
symbolName = "closure #1 @Swift.MainActor () -> () in closure #1 () -> () in OrderScheduling.RescuePendingDispatchController.collectionView(_: __C.UICollectionView, cellForItemAt: Foundation.IndexPath) -> __C.UICollectionViewCell"
|
||||
moduleName = "OrderScheduling"
|
||||
usesParentBreakpointCondition = "Yes"
|
||||
urlString = "file:///Users/zd/Desktop/%E4%B8%AD%E9%81%93%E6%95%91%E6%8F%B4/OrderScheduling/OrderScheduling/Rescue/ViewController/RescueController.swift"
|
||||
startingColumnNumber = "9223372036854775807"
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "774"
|
||||
endingLineNumber = "774"
|
||||
offsetFromSymbolStart = "64">
|
||||
</Location>
|
||||
</Locations>
|
||||
</BreakpointContent>
|
||||
</BreakpointProxy>
|
||||
</Breakpoints>
|
||||
</Bucket>
|
||||
|
||||
@@ -40,7 +40,7 @@ class WebViewController : DDViewController {
|
||||
open override func viewDidLoad() {
|
||||
super.viewDidLoad()
|
||||
|
||||
webView.scrollView.contentInset = UIEdgeInsets(top: -view.safeAreaInsets.top, left: 0, bottom: 0, right: 0)
|
||||
webView.scrollView.contentInsetAdjustmentBehavior = .never
|
||||
webView.backgroundColor = .white
|
||||
webView.navigationDelegate = self
|
||||
webView.uiDelegate = self
|
||||
@@ -68,12 +68,12 @@ class WebViewController : DDViewController {
|
||||
if showNavBar == false {
|
||||
statusBarBackgroundView.snp.makeConstraints { make in
|
||||
make.top.left.right.equalToSuperview()
|
||||
make.height.equalTo(CGRectGetHeight(UIApplication.shared.dd_statusBarFrame))
|
||||
make.height.equalTo(view.safeAreaInsets.top)
|
||||
}
|
||||
|
||||
webView.snp.makeConstraints { make in
|
||||
make.left.right.equalToSuperview()
|
||||
make.top.equalTo(CGRectGetHeight(UIApplication.shared.dd_statusBarFrame) - view.safeAreaInsets.top)
|
||||
make.top.equalTo(view.safeAreaInsets.top)
|
||||
make.bottom.equalTo(-view.safeAreaInsets.bottom)
|
||||
}
|
||||
}else{
|
||||
|
||||
@@ -374,12 +374,14 @@ extension RescueIsIngController {
|
||||
// MARK: JXCategoryViewDelegate,JXCategoryListContainerViewDelegate
|
||||
extension RescueController : JXCategoryViewDelegate,JXCategoryListContainerViewDelegate {
|
||||
func categoryView(_ categoryView: JXCategoryBaseView!, didSelectedItemAt index: Int) {
|
||||
DispatchQueue.main.async { [weak self] in
|
||||
if index == 0 {
|
||||
pendingTableView?.mj_header?.beginRefreshing()
|
||||
self?.pendingTableView?.mj_header?.beginRefreshing()
|
||||
}else if index == 1 {
|
||||
dispatchTableView?.mj_header?.beginRefreshing()
|
||||
self?.dispatchTableView?.mj_header?.beginRefreshing()
|
||||
}else if index == 2 {
|
||||
isRescueTableView?.mj_header?.beginRefreshing()
|
||||
self?.isRescueTableView?.mj_header?.beginRefreshing()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@ import DDControlsKit_Private
|
||||
import DDCategoryKit_Private
|
||||
import DDAutoUIKit_Private
|
||||
import SnapKit
|
||||
import ZFPlayer
|
||||
import DDZFPlayerKit_Private
|
||||
|
||||
open class VehicleMonitoringVideoDetailController : DDViewController {
|
||||
private let player : ZFPlayerController
|
||||
|
||||
19
Podfile
@@ -7,10 +7,9 @@ target 'OrderScheduling' do
|
||||
# Comment the next line if you don't want to use dynamic frameworks
|
||||
use_modular_headers!
|
||||
|
||||
# pod 'CocoaDebug', :configurations => ['Debug']
|
||||
pod 'CocoaDebug'
|
||||
pod 'CocoaDebug', :configurations => ['Debug']
|
||||
pod 'ESTabBarController-swift'
|
||||
pod 'DDCategoryKit_Private'
|
||||
pod 'DDCategoryKit_Private',:path => '/Users/zd/Desktop/PodRepository/DDCategoryKit_Private'
|
||||
pod 'DDBasicControlsKit_Private'
|
||||
pod 'DDColorKit_Private'
|
||||
pod 'DDFontKit_Private'
|
||||
@@ -31,16 +30,8 @@ target 'OrderScheduling' do
|
||||
pod 'MJRefresh'
|
||||
pod 'DDWebImageKit_Private'
|
||||
pod 'ZLPhotoBrowser'
|
||||
pod 'ZFPlayer',:path=> '/Users/zd/Downloads/iOS相关/ZFPlayer-master'
|
||||
pod 'ZFPlayer/ControlView',:path=> '/Users/zd/Downloads/iOS相关/ZFPlayer-master'
|
||||
pod 'ZFPlayer/ijkplayer',:path=> '/Users/zd/Downloads/iOS相关/ZFPlayer-master'
|
||||
pod 'JPush'
|
||||
# pod 'JPushExtension'
|
||||
|
||||
# pod 'ZFPlayer', '~> 4.0'
|
||||
# pod 'ZFPlayer/ControlView'
|
||||
# pod 'ZFPlayer/ijkplayer'
|
||||
# pod 'ZFPlayer/AVPlayer'
|
||||
pod 'DDZFPlayerKit_Private',:subspecs => ['ControlView','ijkplayer']
|
||||
pod 'JPush',:modular_headers => true
|
||||
|
||||
post_install do |installer|
|
||||
installer.pods_project.targets.each do |target|
|
||||
@@ -66,6 +57,6 @@ target 'OrderScheduling' do
|
||||
end
|
||||
|
||||
target 'OrderSchedulingNotificationService' do
|
||||
pod 'JPush'
|
||||
pod 'JPush',:modular_headers => true
|
||||
pod 'JPushExtension'
|
||||
end
|
||||
|
||||
33
Podfile.lock
@@ -274,6 +274,10 @@ PODS:
|
||||
- DDWebImageKit_Private/SDWebImage/Core (0.1.3)
|
||||
- DDWebImageKit_Private/SDWebImage/MapKit (0.1.3):
|
||||
- DDWebImageKit_Private/SDWebImage/Core
|
||||
- DDZFPlayerKit_Private/ControlView (0.1.0):
|
||||
- ZFPlayer/Core
|
||||
- DDZFPlayerKit_Private/ijkplayer (0.1.0):
|
||||
- ZFPlayer/Core
|
||||
- ESTabBarController-swift (2.8.0)
|
||||
- IQKeyboardManagerSwift (6.5.12)
|
||||
- JCore (4.2.1)
|
||||
@@ -291,13 +295,7 @@ PODS:
|
||||
- RxSwift (6.5.0)
|
||||
- SnapKit (5.6.0)
|
||||
- SwiftEntryKit (2.0.0)
|
||||
- ZFPlayer (4.0.5):
|
||||
- ZFPlayer/Core (= 4.0.5)
|
||||
- ZFPlayer/ControlView (4.0.5):
|
||||
- ZFPlayer/Core
|
||||
- ZFPlayer/Core (4.0.5)
|
||||
- ZFPlayer/ijkplayer (4.0.5):
|
||||
- ZFPlayer/Core
|
||||
- ZFPlayer/Core (4.1.4)
|
||||
- ZLPhotoBrowser (4.4.3.2):
|
||||
- ZLPhotoBrowser/Core (= 4.4.3.2)
|
||||
- ZLPhotoBrowser/Core (4.4.3.2)
|
||||
@@ -306,7 +304,7 @@ DEPENDENCIES:
|
||||
- CocoaDebug
|
||||
- DDAutoUIKit_Private
|
||||
- DDBasicControlsKit_Private
|
||||
- DDCategoryKit_Private
|
||||
- DDCategoryKit_Private (from `/Users/zd/Desktop/PodRepository/DDCategoryKit_Private`)
|
||||
- DDColorKit_Private
|
||||
- DDControlsKit_Private
|
||||
- DDFontKit_Private
|
||||
@@ -316,6 +314,8 @@ DEPENDENCIES:
|
||||
- DDTimerKit_Private
|
||||
- DDToastKit_Private
|
||||
- DDWebImageKit_Private
|
||||
- DDZFPlayerKit_Private/ControlView
|
||||
- DDZFPlayerKit_Private/ijkplayer
|
||||
- ESTabBarController-swift
|
||||
- IQKeyboardManagerSwift
|
||||
- JPush
|
||||
@@ -327,16 +327,12 @@ DEPENDENCIES:
|
||||
- RxSwift
|
||||
- SnapKit
|
||||
- SwiftEntryKit
|
||||
- "ZFPlayer (from `/Users/zd/Downloads/iOS相关/ZFPlayer-master`)"
|
||||
- "ZFPlayer/ControlView (from `/Users/zd/Downloads/iOS相关/ZFPlayer-master`)"
|
||||
- "ZFPlayer/ijkplayer (from `/Users/zd/Downloads/iOS相关/ZFPlayer-master`)"
|
||||
- ZLPhotoBrowser
|
||||
|
||||
SPEC REPOS:
|
||||
"git@github.com:DDIsFriend/DDSpecs.git":
|
||||
- DDAutoUIKit_Private
|
||||
- DDBasicControlsKit_Private
|
||||
- DDCategoryKit_Private
|
||||
- DDColorKit_Private
|
||||
- DDControlsKit_Private
|
||||
- DDFontKit_Private
|
||||
@@ -347,6 +343,7 @@ SPEC REPOS:
|
||||
- DDTimerKit_Private
|
||||
- DDToastKit_Private
|
||||
- DDWebImageKit_Private
|
||||
- DDZFPlayerKit_Private
|
||||
https://github.com/CocoaPods/Specs.git:
|
||||
- Alamofire
|
||||
- AMapFoundation-NO-IDFA
|
||||
@@ -368,11 +365,12 @@ SPEC REPOS:
|
||||
- RxSwift
|
||||
- SnapKit
|
||||
- SwiftEntryKit
|
||||
- ZFPlayer
|
||||
- ZLPhotoBrowser
|
||||
|
||||
EXTERNAL SOURCES:
|
||||
ZFPlayer:
|
||||
:path: "/Users/zd/Downloads/iOS相关/ZFPlayer-master"
|
||||
DDCategoryKit_Private:
|
||||
:path: "/Users/zd/Desktop/PodRepository/DDCategoryKit_Private"
|
||||
|
||||
SPEC CHECKSUMS:
|
||||
Alamofire: 0123a34370cb170936ae79a8df46cc62b2edeb88
|
||||
@@ -384,7 +382,7 @@ SPEC CHECKSUMS:
|
||||
CocoaDebug: b38d31464b91a9775928f8667d114db07b136565
|
||||
DDAutoUIKit_Private: 188066b4d13c8096676ddd9efa15974238f6dca3
|
||||
DDBasicControlsKit_Private: 04e64a24551a24e76555835fc14002415db80f94
|
||||
DDCategoryKit_Private: db12e3f6923e2309dd1894fc36c967d6bce94605
|
||||
DDCategoryKit_Private: 03994d39831cb9b49670ae9544e33ff408276051
|
||||
DDColorKit_Private: 77fddb62410a2d5e6fb003083d233c0d7ea0a08f
|
||||
DDControlsKit_Private: f304e041bb171c6cfacaf0fc55c967fd395cf645
|
||||
DDFontKit_Private: 7b8f4ebf0f60622874036202734d8460dc7b3806
|
||||
@@ -395,6 +393,7 @@ SPEC CHECKSUMS:
|
||||
DDTimerKit_Private: 3713d029a72710f42a5dd5a32083d6aad8f51eb0
|
||||
DDToastKit_Private: b6ae3709d110cadca503a037419f3709d1755256
|
||||
DDWebImageKit_Private: b905111547e44626773b729bae9030403a9a0c76
|
||||
DDZFPlayerKit_Private: 20f001957c24e1e3b6c0b758ae866a2944be2149
|
||||
ESTabBarController-swift: 05593a6ad64700b03c0eb60ff625916370aa4136
|
||||
IQKeyboardManagerSwift: 371b08cb39664fb56030f5345c815a4ffc74bbc0
|
||||
JCore: d994e32edb50add8a33135473acca799d882c5fa
|
||||
@@ -408,9 +407,9 @@ SPEC CHECKSUMS:
|
||||
RxSwift: 5710a9e6b17f3c3d6e40d6e559b9fa1e813b2ef8
|
||||
SnapKit: e01d52ebb8ddbc333eefe2132acf85c8227d9c25
|
||||
SwiftEntryKit: 61b5fa36f34a97dd8013e48a7345bc4c4720be9a
|
||||
ZFPlayer: ba6410f1043fc8a3b7769749f860cf237016df09
|
||||
ZFPlayer: 5cf39e8d9f0c2394a014b0db4767b5b5a6bffe13
|
||||
ZLPhotoBrowser: 0563c2bfc7b247b65d023d646012f46cba94101b
|
||||
|
||||
PODFILE CHECKSUM: b1a489d788c25d6e97cbebd727a83cb2e9715c78
|
||||
PODFILE CHECKSUM: 6ad862884fe5a397b1d016373784ead787507fcf
|
||||
|
||||
COCOAPODS: 1.11.3
|
||||
|
||||
@@ -61,9 +61,6 @@ NS_ASSUME_NONNULL_BEGIN
|
||||
/// 锁定屏幕按钮
|
||||
@property (nonatomic, strong, readonly) UIButton *lockBtn;
|
||||
|
||||
/// 横屏时候是否显示自定义状态栏(iOS13+),默认 NO.
|
||||
@property (nonatomic, assign) BOOL showCustomStatusBar;
|
||||
|
||||
/// 播放器
|
||||
@property (nonatomic, weak) ZFPlayerController *player;
|
||||
|
||||
@@ -103,9 +100,6 @@ NS_ASSUME_NONNULL_BEGIN
|
||||
/// 视频尺寸改变
|
||||
- (void)videoPlayer:(ZFPlayerController *)videoPlayer presentationSizeChanged:(CGSize)size;
|
||||
|
||||
/// 视频view已经旋转
|
||||
- (void)videoPlayer:(ZFPlayerController *)videoPlayer orientationWillChange:(ZFOrientationObserver *)observer;
|
||||
|
||||
/// 标题和全屏模式
|
||||
- (void)showTitle:(NSString *_Nullable)title fullScreenMode:(ZFFullScreenMode)fullScreenMode;
|
||||
|
||||
@@ -25,7 +25,6 @@
|
||||
#import "ZFLandScapeControlView.h"
|
||||
#import "UIView+ZFFrame.h"
|
||||
#import "ZFUtilities.h"
|
||||
#import "ZFPlayerStatusBar.h"
|
||||
#if __has_include(<ZFPlayer/ZFPlayer.h>)
|
||||
#import <ZFPlayer/ZFPlayerConst.h>
|
||||
#else
|
||||
@@ -33,8 +32,6 @@
|
||||
#endif
|
||||
|
||||
@interface ZFLandScapeControlView () <ZFSliderViewDelegate>
|
||||
|
||||
@property (nonatomic, strong) ZFPlayerStatusBar *statusBarView;
|
||||
/// 顶部工具栏
|
||||
@property (nonatomic, strong) UIView *topToolView;
|
||||
/// 返回按钮
|
||||
@@ -67,7 +64,6 @@
|
||||
- (instancetype)initWithFrame:(CGRect)frame {
|
||||
if (self = [super initWithFrame:frame]) {
|
||||
[self addSubview:self.topToolView];
|
||||
[self.topToolView addSubview:self.statusBarView];
|
||||
[self.topToolView addSubview:self.backBtn];
|
||||
[self.topToolView addSubview:self.titleLabel];
|
||||
[self addSubview:self.bottomToolView];
|
||||
@@ -105,19 +101,9 @@
|
||||
min_h = iPhoneX ? 110 : 80;
|
||||
self.topToolView.frame = CGRectMake(min_x, min_y, min_w, min_h);
|
||||
|
||||
min_x = 0;
|
||||
min_y = 0;
|
||||
min_w = min_view_w;
|
||||
min_h = 20;
|
||||
self.statusBarView.frame = CGRectMake(min_x, min_y, min_w, min_h);
|
||||
|
||||
min_x = (iPhoneX && UIInterfaceOrientationIsLandscape([UIApplication sharedApplication].statusBarOrientation)) ? 44: 15;
|
||||
if (@available(iOS 13.0, *)) {
|
||||
if (self.showCustomStatusBar) {
|
||||
min_y = self.statusBarView.zf_bottom;
|
||||
} else {
|
||||
min_y = UIInterfaceOrientationIsLandscape([UIApplication sharedApplication].statusBarOrientation) ? 10 : (iPhoneX ? 40 : 20);
|
||||
}
|
||||
} else {
|
||||
min_y = (iPhoneX && UIInterfaceOrientationIsLandscape([UIApplication sharedApplication].statusBarOrientation)) ? 10: (iPhoneX ? 40 : 20);
|
||||
}
|
||||
@@ -245,8 +231,8 @@
|
||||
@zf_weakify(self)
|
||||
[self.player seekToTime:self.player.totalTime*value completionHandler:^(BOOL finished) {
|
||||
@zf_strongify(self)
|
||||
self.slider.isdragging = NO;
|
||||
if (finished) {
|
||||
self.slider.isdragging = NO;
|
||||
if (self.sliderValueChanged) self.sliderValueChanged(value);
|
||||
if (self.seekToPlay) {
|
||||
[self.player.currentPlayerManager play];
|
||||
@@ -290,7 +276,6 @@
|
||||
self.topToolView.alpha = 1;
|
||||
self.bottomToolView.alpha = 1;
|
||||
self.isShow = NO;
|
||||
self.lockBtn.selected = self.player.isLockedScreen;
|
||||
}
|
||||
|
||||
- (void)showControlView {
|
||||
@@ -340,17 +325,6 @@
|
||||
self.lockBtn.hidden = self.player.orientationObserver.fullScreenMode == ZFFullScreenModePortrait;
|
||||
}
|
||||
|
||||
/// 视频view即将旋转
|
||||
- (void)videoPlayer:(ZFPlayerController *)videoPlayer orientationWillChange:(ZFOrientationObserver *)observer {
|
||||
if (self.showCustomStatusBar) {
|
||||
if (self.hidden) {
|
||||
[self.statusBarView destoryTimer];
|
||||
} else {
|
||||
[self.statusBarView startTimer];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
- (void)videoPlayer:(ZFPlayerController *)videoPlayer currentTime:(NSTimeInterval)currentTime totalTime:(NSTimeInterval)totalTime {
|
||||
if (!self.slider.isdragging) {
|
||||
NSString *currentTimeString = [ZFUtilities convertTimeSecond:currentTime];
|
||||
@@ -397,21 +371,8 @@
|
||||
self.lockBtn.hidden = fullScreenMode == ZFFullScreenModePortrait;
|
||||
}
|
||||
|
||||
- (void)setShowCustomStatusBar:(BOOL)showCustomStatusBar {
|
||||
_showCustomStatusBar = showCustomStatusBar;
|
||||
self.statusBarView.hidden = !showCustomStatusBar;
|
||||
}
|
||||
|
||||
#pragma mark - getter
|
||||
|
||||
- (ZFPlayerStatusBar *)statusBarView {
|
||||
if (!_statusBarView) {
|
||||
_statusBarView = [[ZFPlayerStatusBar alloc] init];
|
||||
_statusBarView.hidden = YES;
|
||||
}
|
||||
return _statusBarView;
|
||||
}
|
||||
|
||||
- (UIView *)topToolView {
|
||||
if (!_topToolView) {
|
||||
_topToolView = [[UIView alloc] init];
|
||||
|
Before Width: | Height: | Size: 339 B After Width: | Height: | Size: 339 B |
|
Before Width: | Height: | Size: 513 B After Width: | Height: | Size: 513 B |
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
|
Before Width: | Height: | Size: 3.7 KiB After Width: | Height: | Size: 3.7 KiB |
|
Before Width: | Height: | Size: 4.1 KiB After Width: | Height: | Size: 4.1 KiB |
|
Before Width: | Height: | Size: 3.7 KiB After Width: | Height: | Size: 3.7 KiB |
|
Before Width: | Height: | Size: 3.9 KiB After Width: | Height: | Size: 3.9 KiB |
|
Before Width: | Height: | Size: 1.8 KiB After Width: | Height: | Size: 1.8 KiB |
|
Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 2.3 KiB |
|
Before Width: | Height: | Size: 761 B After Width: | Height: | Size: 761 B |
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
|
Before Width: | Height: | Size: 615 B After Width: | Height: | Size: 615 B |
|
Before Width: | Height: | Size: 834 B After Width: | Height: | Size: 834 B |
|
Before Width: | Height: | Size: 565 B After Width: | Height: | Size: 565 B |
|
Before Width: | Height: | Size: 772 B After Width: | Height: | Size: 772 B |
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
|
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 1.2 KiB |
|
Before Width: | Height: | Size: 2.4 KiB After Width: | Height: | Size: 2.4 KiB |
|
Before Width: | Height: | Size: 3.7 KiB After Width: | Height: | Size: 3.7 KiB |
|
Before Width: | Height: | Size: 3.7 KiB After Width: | Height: | Size: 3.7 KiB |
|
Before Width: | Height: | Size: 4.0 KiB After Width: | Height: | Size: 4.0 KiB |
|
Before Width: | Height: | Size: 407 B After Width: | Height: | Size: 407 B |
|
Before Width: | Height: | Size: 585 B After Width: | Height: | Size: 585 B |
|
Before Width: | Height: | Size: 168 B After Width: | Height: | Size: 168 B |
|
Before Width: | Height: | Size: 188 B After Width: | Height: | Size: 188 B |
|
Before Width: | Height: | Size: 453 B After Width: | Height: | Size: 453 B |
|
Before Width: | Height: | Size: 660 B After Width: | Height: | Size: 660 B |
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
|
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 1.2 KiB |
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
|
Before Width: | Height: | Size: 577 B After Width: | Height: | Size: 577 B |
|
Before Width: | Height: | Size: 2.0 KiB After Width: | Height: | Size: 2.0 KiB |
|
Before Width: | Height: | Size: 3.0 KiB After Width: | Height: | Size: 3.0 KiB |
|
Before Width: | Height: | Size: 2.4 KiB After Width: | Height: | Size: 2.4 KiB |
|
Before Width: | Height: | Size: 3.7 KiB After Width: | Height: | Size: 3.7 KiB |
|
Before Width: | Height: | Size: 3.8 KiB After Width: | Height: | Size: 3.8 KiB |
|
Before Width: | Height: | Size: 4.1 KiB After Width: | Height: | Size: 4.1 KiB |
|
Before Width: | Height: | Size: 3.6 KiB After Width: | Height: | Size: 3.6 KiB |
|
Before Width: | Height: | Size: 3.9 KiB After Width: | Height: | Size: 3.9 KiB |
|
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 1.6 KiB |
|
Before Width: | Height: | Size: 2.5 KiB After Width: | Height: | Size: 2.5 KiB |
|
Before Width: | Height: | Size: 2.6 KiB After Width: | Height: | Size: 2.6 KiB |
|
Before Width: | Height: | Size: 4.1 KiB After Width: | Height: | Size: 4.1 KiB |
@@ -110,9 +110,6 @@
|
||||
/// 是否自定义禁止pan手势,默认 NO.
|
||||
@property (nonatomic, assign) BOOL customDisablePanMovingDirection;
|
||||
|
||||
/// 横屏时候是否显示自定义状态栏(iOS13+),默认 NO.
|
||||
@property (nonatomic, assign) BOOL showCustomStatusBar;
|
||||
|
||||
/// 全屏模式
|
||||
@property (nonatomic, assign) ZFFullScreenMode fullScreenMode;
|
||||
|
||||
@@ -351,6 +351,8 @@
|
||||
if (self.controlViewAppeared) {
|
||||
[self hideControlViewWithAnimated:YES];
|
||||
} else {
|
||||
/// 显示之前先把控制层复位,先隐藏后显示
|
||||
[self hideControlViewWithAnimated:NO];
|
||||
[self showControlViewWithAnimated:YES];
|
||||
}
|
||||
}
|
||||
@@ -528,7 +530,15 @@
|
||||
} else {
|
||||
[self.volumeBrightnessView addSystemVolumeView];
|
||||
}
|
||||
[self.landScapeControlView videoPlayer:videoPlayer orientationWillChange:observer];
|
||||
}
|
||||
|
||||
/// 视频view已经旋转
|
||||
- (void)videoPlayer:(ZFPlayerController *)videoPlayer orientationDidChanged:(ZFOrientationObserver *)observer {
|
||||
if (self.controlViewAppeared) {
|
||||
[self showControlViewWithAnimated:NO];
|
||||
} else {
|
||||
[self hideControlViewWithAnimated:NO];
|
||||
}
|
||||
}
|
||||
|
||||
/// 锁定旋转方向
|
||||
@@ -644,11 +654,6 @@
|
||||
self.player.orientationObserver.fullScreenMode = fullScreenMode;
|
||||
}
|
||||
|
||||
- (void)setShowCustomStatusBar:(BOOL)showCustomStatusBar {
|
||||
_showCustomStatusBar = showCustomStatusBar;
|
||||
self.landScapeControlView.showCustomStatusBar = showCustomStatusBar;
|
||||
}
|
||||
|
||||
#pragma mark - getter
|
||||
|
||||
- (UIImageView *)bgImgView {
|
||||
@@ -188,8 +188,8 @@
|
||||
@zf_weakify(self)
|
||||
[self.player seekToTime:self.player.totalTime*value completionHandler:^(BOOL finished) {
|
||||
@zf_strongify(self)
|
||||
self.slider.isdragging = NO;
|
||||
if (finished) {
|
||||
self.slider.isdragging = NO;
|
||||
if (self.sliderValueChanged) self.sliderValueChanged(value);
|
||||
}
|
||||
}];
|
||||
@@ -35,11 +35,6 @@
|
||||
// 屏幕的高
|
||||
#define ZFPlayer_ScreenHeight [[UIScreen mainScreen] bounds].size.height
|
||||
|
||||
#define UIColorFromHex(rgbValue) [UIColor \
|
||||
colorWithRed:((float)((rgbValue & 0xFF0000) >> 16))/255.0 \
|
||||
green:((float)((rgbValue & 0xFF00) >> 8))/255.0 \
|
||||
blue:((float)(rgbValue & 0xFF))/255.0 alpha:1.0]
|
||||
|
||||
@interface ZFUtilities : NSObject
|
||||
|
||||
+ (NSString *)convertTimeSecond:(NSInteger)timeSecond;
|
||||
@@ -0,0 +1,79 @@
|
||||
/*
|
||||
* IJKAVMoviePlayerController.h
|
||||
*
|
||||
* Copyright (c) 2014 Bilibili
|
||||
* Copyright (c) 2014 Zhang Rui <bbcallen@gmail.com>
|
||||
*
|
||||
* This file is part of ijkPlayer.
|
||||
*
|
||||
* ijkPlayer is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* ijkPlayer is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with ijkPlayer; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
/*
|
||||
File: AVPlayerDemoPlaybackViewController.h
|
||||
Abstract: UIViewController managing a playback view, thumbnail view, and associated playback UI.
|
||||
Version: 1.3
|
||||
|
||||
Disclaimer: IMPORTANT: This Apple software is supplied to you by Apple
|
||||
Inc. ("Apple") in consideration of your agreement to the following
|
||||
terms, and your use, installation, modification or redistribution of
|
||||
this Apple software constitutes acceptance of these terms. If you do
|
||||
not agree with these terms, please do not use, install, modify or
|
||||
redistribute this Apple software.
|
||||
|
||||
In consideration of your agreement to abide by the following terms, and
|
||||
subject to these terms, Apple grants you a personal, non-exclusive
|
||||
license, under Apple's copyrights in this original Apple software (the
|
||||
"Apple Software"), to use, reproduce, modify and redistribute the Apple
|
||||
Software, with or without modifications, in source and/or binary forms;
|
||||
provided that if you redistribute the Apple Software in its entirety and
|
||||
without modifications, you must retain this notice and the following
|
||||
text and disclaimers in all such redistributions of the Apple Software.
|
||||
Neither the name, trademarks, service marks or logos of Apple Inc. may
|
||||
be used to endorse or promote products derived from the Apple Software
|
||||
without specific prior written permission from Apple. Except as
|
||||
expressly stated in this notice, no other rights or licenses, express or
|
||||
implied, are granted by Apple herein, including but not limited to any
|
||||
patent rights that may be infringed by your derivative works or by other
|
||||
works in which the Apple Software may be incorporated.
|
||||
|
||||
The Apple Software is provided by Apple on an "AS IS" basis. APPLE
|
||||
MAKES NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION
|
||||
THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS
|
||||
FOR A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND
|
||||
OPERATION ALONE OR IN COMBINATION WITH YOUR PRODUCTS.
|
||||
|
||||
IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL
|
||||
OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE, REPRODUCTION,
|
||||
MODIFICATION AND/OR DISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED
|
||||
AND WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE),
|
||||
STRICT LIABILITY OR OTHERWISE, EVEN IF APPLE HAS BEEN ADVISED OF THE
|
||||
POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
Copyright (C) 2014 Apple Inc. All Rights Reserved.
|
||||
|
||||
*/
|
||||
|
||||
#import "IJKMediaPlayback.h"
|
||||
|
||||
@interface IJKAVMoviePlayerController : NSObject <IJKMediaPlayback>
|
||||
|
||||
- (id)initWithContentURL:(NSURL *)aUrl;
|
||||
- (id)initWithContentURLString:(NSString *)aUrl;
|
||||
+ (id)getInstance:(NSString *)aUrl;
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,65 @@
|
||||
/*
|
||||
* Copyright (c) 2016 Bilibili
|
||||
* Copyright (c) 2016 Zhang Rui <bbcallen@gmail.com>
|
||||
*
|
||||
* This file is part of ijkPlayer.
|
||||
*
|
||||
* ijkPlayer is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* ijkPlayer is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with ijkPlayer; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
@interface IJKFFMonitor : NSObject
|
||||
|
||||
- (instancetype)init;
|
||||
|
||||
@property(nonatomic) NSDictionary *mediaMeta;
|
||||
@property(nonatomic) NSDictionary *videoMeta;
|
||||
@property(nonatomic) NSDictionary *audioMeta;
|
||||
|
||||
@property(nonatomic, readonly) int64_t duration; // milliseconds
|
||||
@property(nonatomic, readonly) int64_t bitrate; // bit / sec
|
||||
@property(nonatomic, readonly) float fps; // frame / sec
|
||||
@property(nonatomic, readonly) int width; // width
|
||||
@property(nonatomic, readonly) int height; // height
|
||||
@property(nonatomic, readonly) NSString *vcodec; // video codec
|
||||
@property(nonatomic, readonly) NSString *acodec; // audio codec
|
||||
@property(nonatomic, readonly) int sampleRate;
|
||||
@property(nonatomic, readonly) int64_t channelLayout;
|
||||
|
||||
@property(nonatomic) NSString *vdecoder;
|
||||
|
||||
@property(nonatomic) int tcpError;
|
||||
@property(nonatomic) NSString *remoteIp;
|
||||
|
||||
@property(nonatomic) int httpError;
|
||||
@property(nonatomic) NSString *httpUrl;
|
||||
@property(nonatomic) NSString *httpHost;
|
||||
@property(nonatomic) int httpCode;
|
||||
@property(nonatomic) int64_t httpOpenTick;
|
||||
@property(nonatomic) int64_t httpSeekTick;
|
||||
@property(nonatomic) int httpOpenCount;
|
||||
@property(nonatomic) int httpSeekCount;
|
||||
@property(nonatomic) int64_t lastHttpOpenDuration;
|
||||
@property(nonatomic) int64_t lastHttpSeekDuration;
|
||||
@property(nonatomic) int64_t filesize;
|
||||
|
||||
@property(nonatomic) int64_t prepareStartTick;
|
||||
@property(nonatomic) int64_t prepareDuration;
|
||||
@property(nonatomic) int64_t firstVideoFrameLatency;
|
||||
@property(nonatomic) int64_t lastPrerollStartTick;
|
||||
@property(nonatomic) int64_t lastPrerollDuration;
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,155 @@
|
||||
/*
|
||||
* IJKFFMoviePlayerController.h
|
||||
*
|
||||
* Copyright (c) 2013 Bilibili
|
||||
* Copyright (c) 2013 Zhang Rui <bbcallen@gmail.com>
|
||||
*
|
||||
* This file is part of ijkPlayer.
|
||||
*
|
||||
* ijkPlayer is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* ijkPlayer is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with ijkPlayer; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#import "IJKMediaPlayback.h"
|
||||
#import "IJKFFMonitor.h"
|
||||
#import "IJKFFOptions.h"
|
||||
#import "IJKSDLGLViewProtocol.h"
|
||||
|
||||
// media meta
|
||||
#define k_IJKM_KEY_FORMAT @"format"
|
||||
#define k_IJKM_KEY_DURATION_US @"duration_us"
|
||||
#define k_IJKM_KEY_START_US @"start_us"
|
||||
#define k_IJKM_KEY_BITRATE @"bitrate"
|
||||
|
||||
// stream meta
|
||||
#define k_IJKM_KEY_TYPE @"type"
|
||||
#define k_IJKM_VAL_TYPE__VIDEO @"video"
|
||||
#define k_IJKM_VAL_TYPE__AUDIO @"audio"
|
||||
#define k_IJKM_VAL_TYPE__UNKNOWN @"unknown"
|
||||
|
||||
#define k_IJKM_KEY_CODEC_NAME @"codec_name"
|
||||
#define k_IJKM_KEY_CODEC_PROFILE @"codec_profile"
|
||||
#define k_IJKM_KEY_CODEC_LONG_NAME @"codec_long_name"
|
||||
|
||||
// stream: video
|
||||
#define k_IJKM_KEY_WIDTH @"width"
|
||||
#define k_IJKM_KEY_HEIGHT @"height"
|
||||
#define k_IJKM_KEY_FPS_NUM @"fps_num"
|
||||
#define k_IJKM_KEY_FPS_DEN @"fps_den"
|
||||
#define k_IJKM_KEY_TBR_NUM @"tbr_num"
|
||||
#define k_IJKM_KEY_TBR_DEN @"tbr_den"
|
||||
#define k_IJKM_KEY_SAR_NUM @"sar_num"
|
||||
#define k_IJKM_KEY_SAR_DEN @"sar_den"
|
||||
// stream: audio
|
||||
#define k_IJKM_KEY_SAMPLE_RATE @"sample_rate"
|
||||
#define k_IJKM_KEY_CHANNEL_LAYOUT @"channel_layout"
|
||||
|
||||
#define kk_IJKM_KEY_STREAMS @"streams"
|
||||
|
||||
typedef enum IJKLogLevel {
|
||||
k_IJK_LOG_UNKNOWN = 0,
|
||||
k_IJK_LOG_DEFAULT = 1,
|
||||
|
||||
k_IJK_LOG_VERBOSE = 2,
|
||||
k_IJK_LOG_DEBUG = 3,
|
||||
k_IJK_LOG_INFO = 4,
|
||||
k_IJK_LOG_WARN = 5,
|
||||
k_IJK_LOG_ERROR = 6,
|
||||
k_IJK_LOG_FATAL = 7,
|
||||
k_IJK_LOG_SILENT = 8,
|
||||
} IJKLogLevel;
|
||||
|
||||
@interface IJKFFMoviePlayerController : NSObject <IJKMediaPlayback>
|
||||
|
||||
- (id)initWithContentURL:(NSURL *)aUrl
|
||||
withOptions:(IJKFFOptions *)options;
|
||||
|
||||
- (id)initWithContentURLString:(NSString *)aUrlString
|
||||
withOptions:(IJKFFOptions *)options;
|
||||
|
||||
- (id)initWithMoreContent:(NSURL *)aUrl
|
||||
withOptions:(IJKFFOptions *)options
|
||||
withGLView:(UIView<IJKSDLGLViewProtocol> *)glView;
|
||||
|
||||
- (id)initWithMoreContentString:(NSString *)aUrlString
|
||||
withOptions:(IJKFFOptions *)options
|
||||
withGLView:(UIView<IJKSDLGLViewProtocol> *)glView;
|
||||
|
||||
- (void)prepareToPlay;
|
||||
- (void)play;
|
||||
- (void)pause;
|
||||
- (void)stop;
|
||||
- (BOOL)isPlaying;
|
||||
- (int64_t)trafficStatistic;
|
||||
- (float)dropFrameRate;
|
||||
|
||||
- (void)setPauseInBackground:(BOOL)pause;
|
||||
- (BOOL)isVideoToolboxOpen;
|
||||
|
||||
- (void)setHudValue:(NSString *)value forKey:(NSString *)key;
|
||||
|
||||
+ (void)setLogReport:(BOOL)preferLogReport;
|
||||
+ (void)setLogLevel:(IJKLogLevel)logLevel;
|
||||
+ (BOOL)checkIfFFmpegVersionMatch:(BOOL)showAlert;
|
||||
+ (BOOL)checkIfPlayerVersionMatch:(BOOL)showAlert
|
||||
version:(NSString *)version;
|
||||
|
||||
@property(nonatomic, readonly) CGFloat fpsInMeta;
|
||||
@property(nonatomic, readonly) CGFloat fpsAtOutput;
|
||||
@property(nonatomic) BOOL shouldShowHudView;
|
||||
|
||||
- (void)setOptionValue:(NSString *)value
|
||||
forKey:(NSString *)key
|
||||
ofCategory:(IJKFFOptionCategory)category;
|
||||
|
||||
- (void)setOptionIntValue:(int64_t)value
|
||||
forKey:(NSString *)key
|
||||
ofCategory:(IJKFFOptionCategory)category;
|
||||
|
||||
|
||||
|
||||
- (void)setFormatOptionValue: (NSString *)value forKey:(NSString *)key;
|
||||
- (void)setCodecOptionValue: (NSString *)value forKey:(NSString *)key;
|
||||
- (void)setSwsOptionValue: (NSString *)value forKey:(NSString *)key;
|
||||
- (void)setPlayerOptionValue: (NSString *)value forKey:(NSString *)key;
|
||||
|
||||
- (void)setFormatOptionIntValue: (int64_t)value forKey:(NSString *)key;
|
||||
- (void)setCodecOptionIntValue: (int64_t)value forKey:(NSString *)key;
|
||||
- (void)setSwsOptionIntValue: (int64_t)value forKey:(NSString *)key;
|
||||
- (void)setPlayerOptionIntValue: (int64_t)value forKey:(NSString *)key;
|
||||
|
||||
@property (nonatomic, retain) id<IJKMediaUrlOpenDelegate> segmentOpenDelegate;
|
||||
@property (nonatomic, retain) id<IJKMediaUrlOpenDelegate> tcpOpenDelegate;
|
||||
@property (nonatomic, retain) id<IJKMediaUrlOpenDelegate> httpOpenDelegate;
|
||||
@property (nonatomic, retain) id<IJKMediaUrlOpenDelegate> liveOpenDelegate;
|
||||
|
||||
@property (nonatomic, retain) id<IJKMediaNativeInvokeDelegate> nativeInvokeDelegate;
|
||||
|
||||
- (void)didShutdown;
|
||||
|
||||
#pragma mark KVO properties
|
||||
@property (nonatomic, readonly) IJKFFMonitor *monitor;
|
||||
|
||||
@end
|
||||
|
||||
#define IJK_FF_IO_TYPE_READ (1)
|
||||
void IJKFFIOStatDebugCallback(const char *url, int type, int bytes);
|
||||
void IJKFFIOStatRegister(void (*cb)(const char *url, int type, int bytes));
|
||||
|
||||
void IJKFFIOStatCompleteDebugCallback(const char *url,
|
||||
int64_t read_bytes, int64_t total_size,
|
||||
int64_t elpased_time, int64_t total_duration);
|
||||
void IJKFFIOStatCompleteRegister(void (*cb)(const char *url,
|
||||
int64_t read_bytes, int64_t total_size,
|
||||
int64_t elpased_time, int64_t total_duration));
|
||||
@@ -0,0 +1,75 @@
|
||||
/*
|
||||
* IJKFFOptions.h
|
||||
*
|
||||
* Copyright (c) 2013-2015 Bilibili
|
||||
* Copyright (c) 2013-2015 Zhang Rui <bbcallen@gmail.com>
|
||||
*
|
||||
* This file is part of ijkPlayer.
|
||||
*
|
||||
* ijkPlayer is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* ijkPlayer is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with ijkPlayer; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
typedef enum IJKFFOptionCategory {
|
||||
kIJKFFOptionCategoryFormat = 1,
|
||||
kIJKFFOptionCategoryCodec = 2,
|
||||
kIJKFFOptionCategorySws = 3,
|
||||
kIJKFFOptionCategoryPlayer = 4,
|
||||
kIJKFFOptionCategorySwr = 5,
|
||||
} IJKFFOptionCategory;
|
||||
|
||||
// for codec option 'skip_loop_filter' and 'skip_frame'
|
||||
typedef enum IJKAVDiscard {
|
||||
/* We leave some space between them for extensions (drop some
|
||||
* keyframes for intra-only or drop just some bidir frames). */
|
||||
IJK_AVDISCARD_NONE =-16, ///< discard nothing
|
||||
IJK_AVDISCARD_DEFAULT = 0, ///< discard useless packets like 0 size packets in avi
|
||||
IJK_AVDISCARD_NONREF = 8, ///< discard all non reference
|
||||
IJK_AVDISCARD_BIDIR = 16, ///< discard all bidirectional frames
|
||||
IJK_AVDISCARD_NONKEY = 32, ///< discard all frames except keyframes
|
||||
IJK_AVDISCARD_ALL = 48, ///< discard all
|
||||
} IJKAVDiscard;
|
||||
|
||||
struct IjkMediaPlayer;
|
||||
|
||||
@interface IJKFFOptions : NSObject
|
||||
|
||||
+(IJKFFOptions *)optionsByDefault;
|
||||
|
||||
-(void)applyTo:(struct IjkMediaPlayer *)mediaPlayer;
|
||||
|
||||
- (void)setOptionValue:(NSString *)value
|
||||
forKey:(NSString *)key
|
||||
ofCategory:(IJKFFOptionCategory)category;
|
||||
|
||||
- (void)setOptionIntValue:(int64_t)value
|
||||
forKey:(NSString *)key
|
||||
ofCategory:(IJKFFOptionCategory)category;
|
||||
|
||||
|
||||
-(void)setFormatOptionValue: (NSString *)value forKey:(NSString *)key;
|
||||
-(void)setCodecOptionValue: (NSString *)value forKey:(NSString *)key;
|
||||
-(void)setSwsOptionValue: (NSString *)value forKey:(NSString *)key;
|
||||
-(void)setPlayerOptionValue: (NSString *)value forKey:(NSString *)key;
|
||||
|
||||
-(void)setFormatOptionIntValue: (int64_t)value forKey:(NSString *)key;
|
||||
-(void)setCodecOptionIntValue: (int64_t)value forKey:(NSString *)key;
|
||||
-(void)setSwsOptionIntValue: (int64_t)value forKey:(NSString *)key;
|
||||
-(void)setPlayerOptionIntValue: (int64_t)value forKey:(NSString *)key;
|
||||
|
||||
@property(nonatomic) BOOL showHudView;
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,39 @@
|
||||
/*
|
||||
* IJKKVOController.h
|
||||
*
|
||||
* Copyright (c) 2014 Bilibili
|
||||
* Copyright (c) 2014 Zhang Rui <bbcallen@gmail.com>
|
||||
*
|
||||
* This file is part of ijkPlayer.
|
||||
*
|
||||
* ijkPlayer is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* ijkPlayer is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with ijkPlayer; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
@interface IJKKVOController : NSObject
|
||||
|
||||
- (id)initWithTarget:(NSObject *)target;
|
||||
|
||||
- (void)safelyAddObserver:(NSObject *)observer
|
||||
forKeyPath:(NSString *)keyPath
|
||||
options:(NSKeyValueObservingOptions)options
|
||||
context:(void *)context;
|
||||
- (void)safelyRemoveObserver:(NSObject *)observer
|
||||
forKeyPath:(NSString *)keyPath;
|
||||
|
||||
- (void)safelyRemoveAllObservers;
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,32 @@
|
||||
/*
|
||||
* IJKMPMoviePlayerController.h
|
||||
*
|
||||
* Copyright (c) 2013 Bilibili
|
||||
* Copyright (c) 2013 Zhang Rui <bbcallen@gmail.com>
|
||||
*
|
||||
* This file is part of ijkPlayer.
|
||||
*
|
||||
* ijkPlayer is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* ijkPlayer is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with ijkPlayer; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#import "IJKMediaPlayback.h"
|
||||
#import <MediaPlayer/MediaPlayer.h>
|
||||
|
||||
@interface IJKMPMoviePlayerController : MPMoviePlayerController <IJKMediaPlayback>
|
||||
|
||||
- (id)initWithContentURL:(NSURL *)aUrl;
|
||||
- (id)initWithContentURLString:(NSString *)aUrl;
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,63 @@
|
||||
/*
|
||||
* IJKMediaFramework.h
|
||||
*
|
||||
* Copyright (c) 2013 Bilibili
|
||||
* Copyright (c) 2013 Zhang Rui <bbcallen@gmail.com>
|
||||
*
|
||||
* This file is part of ijkPlayer.
|
||||
*
|
||||
* ijkPlayer is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* ijkPlayer is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with ijkPlayer; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
//! Project version number for IJKMediaFramework.
|
||||
FOUNDATION_EXPORT double IJKMediaFrameworkVersionNumber;
|
||||
|
||||
//! Project version string for IJKMediaFramework.
|
||||
FOUNDATION_EXPORT const unsigned char IJKMediaFrameworkVersionString[];
|
||||
|
||||
// In this header, you should import all the public headers of your framework using statements like #import <IJKMediaFrameworkWithSSL/PublicHeader.h>
|
||||
#import <IJKMediaFramework/IJKMediaPlayback.h>
|
||||
#import <IJKMediaFramework/IJKMPMoviePlayerController.h>
|
||||
#import <IJKMediaFramework/IJKFFOptions.h>
|
||||
#import <IJKMediaFramework/IJKFFMoviePlayerController.h>
|
||||
#import <IJKMediaFramework/IJKAVMoviePlayerController.h>
|
||||
#import <IJKMediaFramework/IJKMediaModule.h>
|
||||
#import <IJKMediaFramework/IJKMediaPlayer.h>
|
||||
#import <IJKMediaFramework/IJKNotificationManager.h>
|
||||
#import <IJKMediaFramework/IJKKVOController.h>
|
||||
#import <IJKMediaFramework/IJKSDLGLViewProtocol.h>
|
||||
|
||||
// backward compatible for old names
|
||||
#define IJKMediaPlaybackIsPreparedToPlayDidChangeNotification IJKMPMediaPlaybackIsPreparedToPlayDidChangeNotification
|
||||
#define IJKMoviePlayerLoadStateDidChangeNotification IJKMPMoviePlayerLoadStateDidChangeNotification
|
||||
#define IJKMoviePlayerPlaybackDidFinishNotification IJKMPMoviePlayerPlaybackDidFinishNotification
|
||||
#define IJKMoviePlayerPlaybackDidFinishReasonUserInfoKey IJKMPMoviePlayerPlaybackDidFinishReasonUserInfoKey
|
||||
#define IJKMoviePlayerPlaybackStateDidChangeNotification IJKMPMoviePlayerPlaybackStateDidChangeNotification
|
||||
#define IJKMoviePlayerIsAirPlayVideoActiveDidChangeNotification IJKMPMoviePlayerIsAirPlayVideoActiveDidChangeNotification
|
||||
#define IJKMoviePlayerVideoDecoderOpenNotification IJKMPMoviePlayerVideoDecoderOpenNotification
|
||||
#define IJKMoviePlayerFirstVideoFrameRenderedNotification IJKMPMoviePlayerFirstVideoFrameRenderedNotification
|
||||
#define IJKMoviePlayerFirstAudioFrameRenderedNotification IJKMPMoviePlayerFirstAudioFrameRenderedNotification
|
||||
#define IJKMoviePlayerFirstAudioFrameDecodedNotification IJKMPMoviePlayerFirstAudioFrameDecodedNotification
|
||||
#define IJKMoviePlayerFirstVideoFrameDecodedNotification IJKMPMoviePlayerFirstVideoFrameDecodedNotification
|
||||
#define IJKMoviePlayerOpenInputNotification IJKMPMoviePlayerOpenInputNotification
|
||||
#define IJKMoviePlayerFindStreamInfoNotification IJKMPMoviePlayerFindStreamInfoNotification
|
||||
#define IJKMoviePlayerComponentOpenNotification IJKMPMoviePlayerComponentOpenNotification
|
||||
|
||||
#define IJKMPMoviePlayerAccurateSeekCompleteNotification IJKMPMoviePlayerAccurateSeekCompleteNotification
|
||||
#define IJKMoviePlayerSeekAudioStartNotification IJKMPMoviePlayerSeekAudioStartNotification
|
||||
#define IJKMoviePlayerSeekVideoStartNotification IJKMPMoviePlayerSeekVideoStartNotification
|
||||
|
||||
@@ -0,0 +1,33 @@
|
||||
/*
|
||||
* IJKMediaModule.h
|
||||
*
|
||||
* Copyright (c) 2013 Bilibili
|
||||
* Copyright (c) 2013 Zhang Rui <bbcallen@gmail.com>
|
||||
*
|
||||
* This file is part of ijkPlayer.
|
||||
*
|
||||
* ijkPlayer is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* ijkPlayer is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with ijkPlayer; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
@interface IJKMediaModule : NSObject
|
||||
|
||||
+ (IJKMediaModule *)sharedModule;
|
||||
|
||||
@property(atomic, getter=isAppIdleTimerDisabled) BOOL appIdleTimerDisabled;
|
||||
@property(atomic, getter=isMediaModuleIdleTimerDisabled) BOOL mediaModuleIdleTimerDisabled;
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,227 @@
|
||||
/*
|
||||
* IJKMediaPlayback.h
|
||||
*
|
||||
* Copyright (c) 2013 Bilibili
|
||||
* Copyright (c) 2013 Zhang Rui <bbcallen@gmail.com>
|
||||
*
|
||||
* This file is part of ijkPlayer.
|
||||
*
|
||||
* ijkPlayer is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* ijkPlayer is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with ijkPlayer; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
typedef NS_ENUM(NSInteger, IJKMPMovieScalingMode) {
|
||||
IJKMPMovieScalingModeNone, // No scaling
|
||||
IJKMPMovieScalingModeAspectFit, // Uniform scale until one dimension fits
|
||||
IJKMPMovieScalingModeAspectFill, // Uniform scale until the movie fills the visible bounds. One dimension may have clipped contents
|
||||
IJKMPMovieScalingModeFill // Non-uniform scale. Both render dimensions will exactly match the visible bounds
|
||||
};
|
||||
|
||||
typedef NS_ENUM(NSInteger, IJKMPMoviePlaybackState) {
|
||||
IJKMPMoviePlaybackStateStopped,
|
||||
IJKMPMoviePlaybackStatePlaying,
|
||||
IJKMPMoviePlaybackStatePaused,
|
||||
IJKMPMoviePlaybackStateInterrupted,
|
||||
IJKMPMoviePlaybackStateSeekingForward,
|
||||
IJKMPMoviePlaybackStateSeekingBackward
|
||||
};
|
||||
|
||||
typedef NS_OPTIONS(NSUInteger, IJKMPMovieLoadState) {
|
||||
IJKMPMovieLoadStateUnknown = 0,
|
||||
IJKMPMovieLoadStatePlayable = 1 << 0,
|
||||
IJKMPMovieLoadStatePlaythroughOK = 1 << 1, // Playback will be automatically started in this state when shouldAutoplay is YES
|
||||
IJKMPMovieLoadStateStalled = 1 << 2, // Playback will be automatically paused in this state, if started
|
||||
};
|
||||
|
||||
typedef NS_ENUM(NSInteger, IJKMPMovieFinishReason) {
|
||||
IJKMPMovieFinishReasonPlaybackEnded,
|
||||
IJKMPMovieFinishReasonPlaybackError,
|
||||
IJKMPMovieFinishReasonUserExited
|
||||
};
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
// Thumbnails
|
||||
|
||||
typedef NS_ENUM(NSInteger, IJKMPMovieTimeOption) {
|
||||
IJKMPMovieTimeOptionNearestKeyFrame,
|
||||
IJKMPMovieTimeOptionExact
|
||||
};
|
||||
|
||||
@protocol IJKMediaPlayback;
|
||||
|
||||
#pragma mark IJKMediaPlayback
|
||||
|
||||
@protocol IJKMediaPlayback <NSObject>
|
||||
|
||||
- (void)prepareToPlay;
|
||||
- (void)play;
|
||||
- (void)pause;
|
||||
- (void)stop;
|
||||
- (BOOL)isPlaying;
|
||||
- (void)shutdown;
|
||||
- (void)setPauseInBackground:(BOOL)pause;
|
||||
|
||||
@property(nonatomic, readonly) UIView *view;
|
||||
@property(nonatomic) NSTimeInterval currentPlaybackTime;
|
||||
@property(nonatomic, readonly) NSTimeInterval duration;
|
||||
@property(nonatomic, readonly) NSTimeInterval playableDuration;
|
||||
@property(nonatomic, readonly) NSInteger bufferingProgress;
|
||||
|
||||
@property(nonatomic, readonly) BOOL isPreparedToPlay;
|
||||
@property(nonatomic, readonly) IJKMPMoviePlaybackState playbackState;
|
||||
@property(nonatomic, readonly) IJKMPMovieLoadState loadState;
|
||||
@property(nonatomic, readonly) int isSeekBuffering;
|
||||
@property(nonatomic, readonly) int isAudioSync;
|
||||
@property(nonatomic, readonly) int isVideoSync;
|
||||
|
||||
@property(nonatomic, readonly) int64_t numberOfBytesTransferred;
|
||||
|
||||
@property(nonatomic, readonly) CGSize naturalSize;
|
||||
@property(nonatomic) IJKMPMovieScalingMode scalingMode;
|
||||
@property(nonatomic) BOOL shouldAutoplay;
|
||||
|
||||
@property (nonatomic) BOOL allowsMediaAirPlay;
|
||||
@property (nonatomic) BOOL isDanmakuMediaAirPlay;
|
||||
@property (nonatomic, readonly) BOOL airPlayMediaActive;
|
||||
|
||||
@property (nonatomic) float playbackRate;
|
||||
@property (nonatomic) float playbackVolume;
|
||||
|
||||
- (UIImage *)thumbnailImageAtCurrentTime;
|
||||
|
||||
#pragma mark Notifications
|
||||
|
||||
#ifdef __cplusplus
|
||||
#define IJK_EXTERN extern "C" __attribute__((visibility ("default")))
|
||||
#else
|
||||
#define IJK_EXTERN extern __attribute__((visibility ("default")))
|
||||
#endif
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
// MPMediaPlayback.h
|
||||
|
||||
// Posted when the prepared state changes of an object conforming to the MPMediaPlayback protocol changes.
|
||||
// This supersedes MPMoviePlayerContentPreloadDidFinishNotification.
|
||||
IJK_EXTERN NSString *const IJKMPMediaPlaybackIsPreparedToPlayDidChangeNotification;
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
// MPMoviePlayerController.h
|
||||
// Movie Player Notifications
|
||||
|
||||
// Posted when the scaling mode changes.
|
||||
IJK_EXTERN NSString* const IJKMPMoviePlayerScalingModeDidChangeNotification;
|
||||
|
||||
// Posted when movie playback ends or a user exits playback.
|
||||
IJK_EXTERN NSString* const IJKMPMoviePlayerPlaybackDidFinishNotification;
|
||||
IJK_EXTERN NSString* const IJKMPMoviePlayerPlaybackDidFinishReasonUserInfoKey; // NSNumber (IJKMPMovieFinishReason)
|
||||
|
||||
// Posted when the playback state changes, either programatically or by the user.
|
||||
IJK_EXTERN NSString* const IJKMPMoviePlayerPlaybackStateDidChangeNotification;
|
||||
|
||||
// Posted when the network load state changes.
|
||||
IJK_EXTERN NSString* const IJKMPMoviePlayerLoadStateDidChangeNotification;
|
||||
|
||||
// Posted when the movie player begins or ends playing video via AirPlay.
|
||||
IJK_EXTERN NSString* const IJKMPMoviePlayerIsAirPlayVideoActiveDidChangeNotification;
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
// Movie Property Notifications
|
||||
|
||||
// Calling -prepareToPlay on the movie player will begin determining movie properties asynchronously.
|
||||
// These notifications are posted when the associated movie property becomes available.
|
||||
IJK_EXTERN NSString* const IJKMPMovieNaturalSizeAvailableNotification;
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
// Extend Notifications
|
||||
|
||||
IJK_EXTERN NSString *const IJKMPMoviePlayerVideoDecoderOpenNotification;
|
||||
IJK_EXTERN NSString *const IJKMPMoviePlayerFirstVideoFrameRenderedNotification;
|
||||
IJK_EXTERN NSString *const IJKMPMoviePlayerFirstAudioFrameRenderedNotification;
|
||||
IJK_EXTERN NSString *const IJKMPMoviePlayerFirstAudioFrameDecodedNotification;
|
||||
IJK_EXTERN NSString *const IJKMPMoviePlayerFirstVideoFrameDecodedNotification;
|
||||
IJK_EXTERN NSString *const IJKMPMoviePlayerOpenInputNotification;
|
||||
IJK_EXTERN NSString *const IJKMPMoviePlayerFindStreamInfoNotification;
|
||||
IJK_EXTERN NSString *const IJKMPMoviePlayerComponentOpenNotification;
|
||||
|
||||
IJK_EXTERN NSString *const IJKMPMoviePlayerDidSeekCompleteNotification;
|
||||
IJK_EXTERN NSString *const IJKMPMoviePlayerDidSeekCompleteTargetKey;
|
||||
IJK_EXTERN NSString *const IJKMPMoviePlayerDidSeekCompleteErrorKey;
|
||||
IJK_EXTERN NSString *const IJKMPMoviePlayerDidAccurateSeekCompleteCurPos;
|
||||
IJK_EXTERN NSString *const IJKMPMoviePlayerAccurateSeekCompleteNotification;
|
||||
IJK_EXTERN NSString *const IJKMPMoviePlayerSeekAudioStartNotification;
|
||||
IJK_EXTERN NSString *const IJKMPMoviePlayerSeekVideoStartNotification;
|
||||
|
||||
@end
|
||||
|
||||
#pragma mark IJKMediaUrlOpenDelegate
|
||||
|
||||
// Must equal to the defination in ijkavformat/ijkavformat.h
|
||||
typedef NS_ENUM(NSInteger, IJKMediaEvent) {
|
||||
|
||||
// Notify Events
|
||||
IJKMediaEvent_WillHttpOpen = 1, // attr: url
|
||||
IJKMediaEvent_DidHttpOpen = 2, // attr: url, error, http_code
|
||||
IJKMediaEvent_WillHttpSeek = 3, // attr: url, offset
|
||||
IJKMediaEvent_DidHttpSeek = 4, // attr: url, offset, error, http_code
|
||||
// Control Message
|
||||
IJKMediaCtrl_WillTcpOpen = 0x20001, // IJKMediaUrlOpenData: no args
|
||||
IJKMediaCtrl_DidTcpOpen = 0x20002, // IJKMediaUrlOpenData: error, family, ip, port, fd
|
||||
IJKMediaCtrl_WillHttpOpen = 0x20003, // IJKMediaUrlOpenData: url, segmentIndex, retryCounter
|
||||
IJKMediaCtrl_WillLiveOpen = 0x20005, // IJKMediaUrlOpenData: url, retryCounter
|
||||
IJKMediaCtrl_WillConcatSegmentOpen = 0x20007, // IJKMediaUrlOpenData: url, segmentIndex, retryCounter
|
||||
};
|
||||
|
||||
#define IJKMediaEventAttrKey_url @"url"
|
||||
#define IJKMediaEventAttrKey_host @"host"
|
||||
#define IJKMediaEventAttrKey_error @"error"
|
||||
#define IJKMediaEventAttrKey_time_of_event @"time_of_event"
|
||||
#define IJKMediaEventAttrKey_http_code @"http_code"
|
||||
#define IJKMediaEventAttrKey_offset @"offset"
|
||||
#define IJKMediaEventAttrKey_file_size @"file_size"
|
||||
|
||||
// event of IJKMediaUrlOpenEvent_xxx
|
||||
@interface IJKMediaUrlOpenData: NSObject
|
||||
|
||||
- (id)initWithUrl:(NSString *)url
|
||||
event:(IJKMediaEvent)event
|
||||
segmentIndex:(int)segmentIndex
|
||||
retryCounter:(int)retryCounter;
|
||||
|
||||
@property(nonatomic, readonly) IJKMediaEvent event;
|
||||
@property(nonatomic, readonly) int segmentIndex;
|
||||
@property(nonatomic, readonly) int retryCounter;
|
||||
|
||||
@property(nonatomic, retain) NSString *url;
|
||||
@property(nonatomic, assign) int fd;
|
||||
@property(nonatomic, strong) NSString *msg;
|
||||
@property(nonatomic) int error; // set a negative value to indicate an error has occured.
|
||||
@property(nonatomic, getter=isHandled) BOOL handled; // auto set to YES if url changed
|
||||
@property(nonatomic, getter=isUrlChanged) BOOL urlChanged; // auto set to YES by url changed
|
||||
|
||||
@end
|
||||
|
||||
@protocol IJKMediaUrlOpenDelegate <NSObject>
|
||||
|
||||
- (void)willOpenUrl:(IJKMediaUrlOpenData*) urlOpenData;
|
||||
|
||||
@end
|
||||
|
||||
@protocol IJKMediaNativeInvokeDelegate <NSObject>
|
||||
|
||||
- (int)invoke:(IJKMediaEvent)event attributes:(NSDictionary *)attributes;
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,32 @@
|
||||
/*
|
||||
* IJKMediaPlayer.h
|
||||
*
|
||||
* Copyright (c) 2013 Bilibili
|
||||
* Copyright (c) 2013 Zhang Rui <bbcallen@gmail.com>
|
||||
*
|
||||
* This file is part of ijkPlayer.
|
||||
*
|
||||
* ijkPlayer is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* ijkPlayer is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with ijkPlayer; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#import "IJKMediaPlayback.h"
|
||||
#import "IJKMPMoviePlayerController.h"
|
||||
|
||||
#import "IJKFFOptions.h"
|
||||
#import "IJKFFMoviePlayerController.h"
|
||||
|
||||
#import "IJKAVMoviePlayerController.h"
|
||||
|
||||
#import "IJKMediaModule.h"
|
||||
@@ -0,0 +1,37 @@
|
||||
/*
|
||||
* IJKNotificationManager.h
|
||||
*
|
||||
* Copyright (c) 2016 Bilibili
|
||||
* Copyright (c) 2016 Zhang Rui <bbcallen@gmail.com>
|
||||
*
|
||||
* This file is part of ijkPlayer.
|
||||
*
|
||||
* ijkPlayer is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* ijkPlayer is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with ijkPlayer; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
@interface IJKNotificationManager : NSObject
|
||||
|
||||
- (nullable instancetype)init;
|
||||
|
||||
- (void)addObserver:(nonnull id)observer
|
||||
selector:(nonnull SEL)aSelector
|
||||
name:(nullable NSString *)aName
|
||||
object:(nullable id)anObject;
|
||||
|
||||
- (void)removeAllObservers:(nonnull id)observer;
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,50 @@
|
||||
/*
|
||||
* IJKSDLGLViewProtocol.h
|
||||
*
|
||||
* Copyright (c) 2017 Bilibili
|
||||
* Copyright (c) 2017 raymond <raymondzheng1412@gmail.com>
|
||||
*
|
||||
* This file is part of ijkPlayer.
|
||||
*
|
||||
* ijkPlayer is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* ijkPlayer is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with ijkPlayer; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#ifndef IJKSDLGLViewProtocol_h
|
||||
#define IJKSDLGLViewProtocol_h
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
typedef struct IJKOverlay IJKOverlay;
|
||||
struct IJKOverlay {
|
||||
int w;
|
||||
int h;
|
||||
UInt32 format;
|
||||
int planes;
|
||||
UInt16 *pitches;
|
||||
UInt8 **pixels;
|
||||
int sar_num;
|
||||
int sar_den;
|
||||
CVPixelBufferRef pixel_buffer;
|
||||
};
|
||||
|
||||
@protocol IJKSDLGLViewProtocol <NSObject>
|
||||
- (UIImage*) snapshot;
|
||||
@property(nonatomic, readonly) CGFloat fps;
|
||||
@property(nonatomic) CGFloat scaleFactor;
|
||||
@property(nonatomic) BOOL isThirdGLView;
|
||||
- (void) display_pixels: (IJKOverlay *) overlay;
|
||||
@end
|
||||
|
||||
#endif /* IJKSDLGLViewProtocol_h */
|
||||
@@ -0,0 +1,6 @@
|
||||
framework module IJKMediaFramework {
|
||||
umbrella header "IJKMediaFramework.h"
|
||||
|
||||
export *
|
||||
module * { export * }
|
||||
}
|
||||
@@ -450,7 +450,7 @@
|
||||
|
||||
- (void)setVolume:(float)volume {
|
||||
_volume = MIN(MAX(0, volume), 1);
|
||||
self.player.playbackVolume = _volume;
|
||||
self.player.playbackVolume = volume;
|
||||
}
|
||||
|
||||
@end
|
||||
19
Pods/DDZFPlayerKit_Private/LICENSE
generated
Normal file
@@ -0,0 +1,19 @@
|
||||
Copyright (c) 2023 DDIsFriend <DDIsFriend@163.com>
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
29
Pods/DDZFPlayerKit_Private/README.md
generated
Normal file
@@ -0,0 +1,29 @@
|
||||
# DDZFPlayerKit_Private
|
||||
|
||||
[](https://travis-ci.org/DDIsFriend/DDZFPlayerKit_Private)
|
||||
[](https://cocoapods.org/pods/DDZFPlayerKit_Private)
|
||||
[](https://cocoapods.org/pods/DDZFPlayerKit_Private)
|
||||
[](https://cocoapods.org/pods/DDZFPlayerKit_Private)
|
||||
|
||||
## Example
|
||||
|
||||
To run the example project, clone the repo, and run `pod install` from the Example directory first.
|
||||
|
||||
## Requirements
|
||||
|
||||
## Installation
|
||||
|
||||
DDZFPlayerKit_Private is available through [CocoaPods](https://cocoapods.org). To install
|
||||
it, simply add the following line to your Podfile:
|
||||
|
||||
```ruby
|
||||
pod 'DDZFPlayerKit_Private'
|
||||
```
|
||||
|
||||
## Author
|
||||
|
||||
DDIsFriend, DDIsFriend@163.com
|
||||
|
||||
## License
|
||||
|
||||
DDZFPlayerKit_Private is available under the MIT license. See the LICENSE file for more info.
|
||||
@@ -1 +1 @@
|
||||
../../../DDCategoryKit_Private/DDCategoryKit_Private/Classes/CALayer+DDCategory/CALayer+DDCategory.h
|
||||
../../../../../../PodRepository/DDCategoryKit_Private/DDCategoryKit_Private/Classes/CALayer+DDCategory/CALayer+DDCategory.h
|
||||
@@ -1 +1 @@
|
||||
../../../DDCategoryKit_Private/DDCategoryKit_Private/Classes/DDCategory.h
|
||||
../../../../../../PodRepository/DDCategoryKit_Private/DDCategoryKit_Private/Classes/DDCategory.h
|
||||
@@ -1 +1 @@
|
||||
../../../DDCategoryKit_Private/DDCategoryKit_Private/Classes/NSAttributedString+DDCategory/NSAttributedString+DDCategory.h
|
||||
../../../../../../PodRepository/DDCategoryKit_Private/DDCategoryKit_Private/Classes/NSAttributedString+DDCategory/NSAttributedString+DDCategory.h
|
||||
@@ -1 +1 @@
|
||||
../../../DDCategoryKit_Private/DDCategoryKit_Private/Classes/NSBundle+DDCategory/NSBundle+DDCategory.h
|
||||
../../../../../../PodRepository/DDCategoryKit_Private/DDCategoryKit_Private/Classes/NSBundle+DDCategory/NSBundle+DDCategory.h
|
||||
@@ -1 +1 @@
|
||||
../../../DDCategoryKit_Private/DDCategoryKit_Private/Classes/NSAttributedString+DDCategory/NSMutableAttributedString+DDCategory.h
|
||||
../../../../../../PodRepository/DDCategoryKit_Private/DDCategoryKit_Private/Classes/NSAttributedString+DDCategory/NSMutableAttributedString+DDCategory.h
|
||||