├── examples
├── ios
│ ├── .gitignore
│ ├── FSPlayerDemo
│ │ ├── en.lproj
│ │ │ └── InfoPlist.strings
│ │ ├── Default.png
│ │ ├── Default@2x.png
│ │ ├── Default-568h@2x.png
│ │ ├── XCAssets
│ │ │ ├── AppIcons.xcassets
│ │ │ │ ├── Contents.json
│ │ │ │ └── AppIcon.appiconset
│ │ │ │ │ ├── iTunesArtwork@2x.png
│ │ │ │ │ └── Contents.json
│ │ │ ├── MoviePlayerImages.xcassets
│ │ │ │ └── MoviePlayer
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── btn_player_play.imageset
│ │ │ │ │ ├── btn_player_play.png
│ │ │ │ │ ├── btn_player_play@2x.png
│ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── btn_player_pause.imageset
│ │ │ │ │ ├── btn_player_pause.png
│ │ │ │ │ ├── btn_player_pause@2x.png
│ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── player_top_control_bg.imageset
│ │ │ │ │ ├── player_top_control_bg.png
│ │ │ │ │ ├── player_top_control_bg@2x.png
│ │ │ │ │ └── Contents.json
│ │ │ │ │ └── player_bottom_control_bg.imageset
│ │ │ │ │ ├── player_bottom_control_bg.png
│ │ │ │ │ ├── player_bottom_control_bg@2x.png
│ │ │ │ │ └── Contents.json
│ │ │ └── LaunchImages.xcassets
│ │ │ │ └── LaunchImage.launchimage
│ │ │ │ ├── iphone_ios7_640_1136.png
│ │ │ │ ├── iphone_ios7_640_960.png
│ │ │ │ └── Contents.json
│ │ ├── Images.xcassets
│ │ │ ├── LaunchImage.launchimage
│ │ │ │ ├── Default.png
│ │ │ │ ├── Default@2x.png
│ │ │ │ ├── Default-568h@2x.png
│ │ │ │ └── Contents.json
│ │ │ └── AppIcon.appiconset
│ │ │ │ └── Contents.json
│ │ ├── main.m
│ │ ├── ViewController
│ │ │ ├── Barcode.h
│ │ │ ├── FSDemoMainViewController.h
│ │ │ ├── FSQRCodeScanViewController.h
│ │ │ ├── FSDemoInputURLViewController.h
│ │ │ ├── FSDemoLocalFolderViewController.h
│ │ │ ├── FSDemoSampleViewController.h
│ │ │ ├── FSDemoHistory.h
│ │ │ ├── FSCommon.h
│ │ │ ├── FSQRCodeScanViewController.xib
│ │ │ ├── FSMediaControl.h
│ │ │ └── FSMoviePlayerViewController.h
│ │ ├── AppIcons.xcassets
│ │ │ └── AppIcon.appiconset
│ │ │ │ └── Contents.json
│ │ ├── FSAppDelegate.h
│ │ ├── FSPlayerDemo.pch
│ │ └── FSPlayerDemo-Info.plist
│ ├── FSPlayer.xcodeproj
│ │ └── project.xcworkspace
│ │ │ └── contents.xcworkspacedata
│ ├── FSPlayerDemo.xcworkspace
│ │ └── contents.xcworkspacedata
│ ├── FSPlayerDemo.xcodeproj
│ │ └── project.xcworkspace
│ │ │ └── contents.xcworkspacedata
│ ├── generate-fsplayer.sh
│ └── build-framework.sh
├── macos
│ ├── FSPlayerMacDemo
│ │ ├── Assets.xcassets
│ │ │ ├── Contents.json
│ │ │ ├── info.imageset
│ │ │ │ ├── info.pdf
│ │ │ │ └── Contents.json
│ │ │ ├── menu.imageset
│ │ │ │ ├── menu.pdf
│ │ │ │ └── Contents.json
│ │ │ ├── next.imageset
│ │ │ │ ├── next.png
│ │ │ │ └── Contents.json
│ │ │ ├── play.imageset
│ │ │ │ ├── play.png
│ │ │ │ └── Contents.json
│ │ │ ├── knob_big.imageset
│ │ │ │ ├── 矩形2.pdf
│ │ │ │ └── Contents.json
│ │ │ ├── pause.imageset
│ │ │ │ ├── pause.png
│ │ │ │ └── Contents.json
│ │ │ ├── info_hover.imageset
│ │ │ │ ├── info.pdf
│ │ │ │ └── Contents.json
│ │ │ ├── knob_small.imageset
│ │ │ │ ├── 矩形1.pdf
│ │ │ │ └── Contents.json
│ │ │ ├── previous.imageset
│ │ │ │ ├── previous.png
│ │ │ │ └── Contents.json
│ │ │ ├── AppIcon.appiconset
│ │ │ │ ├── icon_16x16.png
│ │ │ │ ├── icon_32x32.png
│ │ │ │ ├── icon_128x128.png
│ │ │ │ ├── icon_16x16@2x.png
│ │ │ │ ├── icon_256x256.png
│ │ │ │ ├── icon_32x32@2x.png
│ │ │ │ ├── icon_512x512.png
│ │ │ │ ├── icon_128x128@2x.png
│ │ │ │ ├── icon_256x256@2x.png
│ │ │ │ ├── icon_512x512@2x.png
│ │ │ │ └── Contents.json
│ │ │ ├── switch-on.imageset
│ │ │ │ ├── switch-on.pdf
│ │ │ │ └── Contents.json
│ │ │ ├── menu_hover.imageset
│ │ │ │ ├── menu_hover.pdf
│ │ │ │ └── Contents.json
│ │ │ └── switch-off.imageset
│ │ │ │ ├── switch-off.pdf
│ │ │ │ └── Contents.json
│ │ ├── main.m
│ │ ├── CustomView
│ │ │ ├── MRTextField.h
│ │ │ ├── MRBaseView.h
│ │ │ ├── MRTextInfoViewController.h
│ │ │ ├── MRBaseView.m
│ │ │ ├── SHBaseView.h
│ │ │ ├── MRProgressSlider.h
│ │ │ ├── MRTextField.m
│ │ │ └── MRProgressIndicator.h
│ │ ├── MRActionKit
│ │ │ ├── MRActionProcessor+Private.h
│ │ │ ├── MRActionKit.h
│ │ │ ├── MRActionProcessorInternal.h
│ │ │ ├── MRActionProcessor+Private.m
│ │ │ ├── MRActionManager.h
│ │ │ ├── MRActionProcessor.h
│ │ │ ├── MRActionItem.h
│ │ │ └── MRActionProcessor.m
│ │ ├── ViewController
│ │ │ ├── WindowController.h
│ │ │ ├── MRRootViewController.h
│ │ │ ├── MRAutoTestViewController.h
│ │ │ ├── MRInputURLViewController.h
│ │ │ ├── MRPlaylistViewController.h
│ │ │ ├── MRStatisticalViewController.h
│ │ │ ├── MultiRenderSample.h
│ │ │ ├── MRRenderViewAuxProxy.h
│ │ │ ├── WindowController.m
│ │ │ ├── MRPlaylistRowView.h
│ │ │ ├── MRPlayerSettingsViewController.h
│ │ │ ├── MRPlayerSettingsView.h
│ │ │ ├── MultiRenderSample.xib
│ │ │ └── MRPlaylistViewController.m
│ │ ├── AppDelegate.h
│ │ ├── MRUtil
│ │ │ ├── MRGlobalNotification.m
│ │ │ ├── NSString+Ex.h
│ │ │ ├── MRUtil.h
│ │ │ ├── NSFileManager+Sandbox.h
│ │ │ ├── MRUtil+SystemPanel.h
│ │ │ ├── MRGlobalNotification.h
│ │ │ └── NSString+Ex.m
│ │ ├── DragView
│ │ │ └── MRDragView.h
│ │ ├── FSPlayerMacDemo.entitlements
│ │ └── PrefixHeader.pch
│ ├── FSPlayer.xcodeproj
│ │ └── project.xcworkspace
│ │ │ └── contents.xcworkspacedata
│ ├── FSPlayerMacDemo.xcworkspace
│ │ └── contents.xcworkspacedata
│ ├── FSPlayerMacDemo.xcodeproj
│ │ └── project.xcworkspace
│ │ │ └── contents.xcworkspacedata
│ ├── generate-fsplayer.sh
│ └── build-framework.sh
├── tvos
│ ├── FSPlayerTVDemo
│ │ ├── Assets.xcassets
│ │ │ ├── Contents.json
│ │ │ ├── App Icon & Top Shelf Image.brandassets
│ │ │ │ ├── App Icon.imagestack
│ │ │ │ │ ├── Back.imagestacklayer
│ │ │ │ │ │ ├── Contents.json
│ │ │ │ │ │ └── Content.imageset
│ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── Front.imagestacklayer
│ │ │ │ │ │ ├── Contents.json
│ │ │ │ │ │ └── Content.imageset
│ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── Middle.imagestacklayer
│ │ │ │ │ │ ├── Contents.json
│ │ │ │ │ │ └── Content.imageset
│ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── App Icon - App Store.imagestack
│ │ │ │ │ ├── Back.imagestacklayer
│ │ │ │ │ │ ├── Contents.json
│ │ │ │ │ │ └── Content.imageset
│ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── Front.imagestacklayer
│ │ │ │ │ │ ├── Contents.json
│ │ │ │ │ │ └── Content.imageset
│ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── Middle.imagestacklayer
│ │ │ │ │ │ ├── Contents.json
│ │ │ │ │ │ └── Content.imageset
│ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── Top Shelf Image.imageset
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── Top Shelf Image Wide.imageset
│ │ │ │ │ └── Contents.json
│ │ │ │ └── Contents.json
│ │ │ └── AccentColor.colorset
│ │ │ │ └── Contents.json
│ │ ├── ViewController.h
│ │ ├── AppDelegate.h
│ │ ├── main.m
│ │ ├── Base.lproj
│ │ │ ├── LaunchScreen.storyboard
│ │ │ └── Main.storyboard
│ │ └── AppDelegate.m
│ ├── FSPlayer.xcodeproj
│ │ └── project.xcworkspace
│ │ │ └── contents.xcworkspacedata
│ ├── FSPlayerTVDemo.xcodeproj
│ │ └── project.xcworkspace
│ │ │ └── contents.xcworkspacedata
│ ├── FSPlayerTVDemo.xcworkspace
│ │ └── contents.xcworkspacedata
│ ├── generate-fsplayer.sh
│ └── build-framework.sh
└── xcframewrok
│ ├── make-podspec.sh
│ └── template.spec.json
├── .gitmodules
├── module-ios.modulemap
├── module-macos.modulemap
├── module-tvos.modulemap
├── Donate.md
├── ijkmedia
├── ijksdl
│ ├── ios
│ │ └── FSSDLHudViewCell.h
│ ├── metal
│ │ ├── FSMetalView.h
│ │ ├── FSMetalOffscreenRendering.h
│ │ ├── FSMetalPipelineMeta.h
│ │ ├── FSMetalFBO.h
│ │ ├── FSMetalSubtitlePipeline.h
│ │ └── FSMetalRenderer.h
│ ├── mac
│ │ ├── FSHudRowView.h
│ │ └── FSSDLGLView.h
│ ├── apple
│ │ ├── ijk_vout_common.m
│ │ ├── ijksdl_thread_ios.h
│ │ ├── ijksdl_ios.h
│ │ ├── ijksdl_gpu_opengl_macos.h
│ │ ├── ijksdl_aout_ios_audiounit.h
│ │ ├── ijksdl_gpu_metal.h
│ │ ├── FSSDLAudioUnitController.h
│ │ ├── ijk_vout_common.h
│ │ ├── FSSDLAudioQueueController.h
│ │ ├── ijksdl_gpu_opengl_fbo_macos.h
│ │ ├── ijksdl_gpu_opengl_renderer_macos.h
│ │ ├── FSSDLAudioKit.h
│ │ ├── FSSDLHudControl.h
│ │ ├── ijksdl_gpu_opengl_shader_compiler.h
│ │ ├── FSSDLThread.h
│ │ ├── ijksdl_vout_overlay_ffmpeg_hw.h
│ │ ├── ijksdl_vout_overlay_ffmpeg.h
│ │ └── ijksdl_thread_ios.m
│ ├── ijksdl_inc_internal.h
│ ├── ijksdl_stdinc.c
│ ├── ijksdl_error.h
│ ├── ijksdl_error.c
│ ├── ijksdl_video.h
│ ├── ijksdl_class.h
│ ├── ffmpeg
│ │ ├── ijksdl_inc_ffmpeg.h
│ │ ├── ijksdl_image_convert.h
│ │ └── ijksdl_vout_overlay_ffmpeg.h
│ ├── ijksdl_rectangle.h
│ ├── ijksdl.h
│ ├── ijksdl_stdinc.h
│ ├── ijksdl_extra_log.h
│ ├── ijksdl_audio.c
│ └── gles2
│ │ └── color_matrix.h
├── ijkplayer
│ ├── ff_version.c
│ ├── ijkavformat
│ │ ├── ijkioprotocol.h
│ │ └── ijkavformat.h
│ ├── apple
│ │ ├── pipeline
│ │ │ └── ffpipeline_ios.h
│ │ └── ijkplayer_ios.h
│ ├── pipeline
│ │ ├── ffpipeline_ffplay.h
│ │ └── ffpipenode_ffplay_vdec.h
│ ├── ff_fferror.h
│ ├── ff_version.h
│ ├── ff_recorder.h
│ ├── ff_muxer.h
│ ├── ijkavutil
│ │ ├── ijkutils.h
│ │ └── ijkstl.h
│ ├── config.h
│ ├── ff_packet_list.h
│ ├── ff_subtitle_ex.h
│ ├── ijkplayer_internal.h
│ └── ff_ffpipenode.h
├── tools
│ ├── mr_stream_peek.h
│ └── mr_stream_component.h
└── wrapper
│ └── apple
│ ├── FSAudioRendering.h
│ ├── FSMediaModule.h
│ ├── FSVideoRenderView.h
│ ├── FSAudioRendering.m
│ ├── FSNotificationManager.h
│ ├── FSKVOController.h
│ ├── FSPlayerKit.h
│ └── FSVideoRenderView.m
├── deploy.sh
├── .gitignore
├── version.sh
├── doc
└── preflight_checklist.md
└── CHANGELOG.md
/examples/ios/.gitignore:
--------------------------------------------------------------------------------
1 | xcuserdata
2 | xcshareddata
3 | *.xccheckout
4 |
--------------------------------------------------------------------------------
/examples/ios/FSPlayerDemo/en.lproj/InfoPlist.strings:
--------------------------------------------------------------------------------
1 | /* Localized versions of Info.plist keys */
2 |
3 |
--------------------------------------------------------------------------------
/examples/ios/FSPlayerDemo/Default.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/debugly/fsplayer/HEAD/examples/ios/FSPlayerDemo/Default.png
--------------------------------------------------------------------------------
/.gitmodules:
--------------------------------------------------------------------------------
1 | [submodule "FFToolChain"]
2 | path = FFToolChain
3 | url = https://github.com/debugly/MRFFToolChainBuildShell.git
4 |
--------------------------------------------------------------------------------
/examples/ios/FSPlayerDemo/Default@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/debugly/fsplayer/HEAD/examples/ios/FSPlayerDemo/Default@2x.png
--------------------------------------------------------------------------------
/examples/ios/FSPlayerDemo/Default-568h@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/debugly/fsplayer/HEAD/examples/ios/FSPlayerDemo/Default-568h@2x.png
--------------------------------------------------------------------------------
/examples/macos/FSPlayerMacDemo/Assets.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "author" : "xcode",
4 | "version" : 1
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/examples/tvos/FSPlayerTVDemo/Assets.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "author" : "xcode",
4 | "version" : 1
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/examples/ios/FSPlayerDemo/XCAssets/AppIcons.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "author" : "xcode",
4 | "version" : 1
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/module-ios.modulemap:
--------------------------------------------------------------------------------
1 | framework module FSPlayer {
2 | umbrella header "FSPlayerKit.h"
3 | header "FSPlayerDef.h"
4 |
5 | export *
6 | module * { export * }
7 | }
8 |
--------------------------------------------------------------------------------
/examples/ios/FSPlayerDemo/XCAssets/MoviePlayerImages.xcassets/MoviePlayer/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "author" : "xcode",
4 | "version" : 1
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/module-macos.modulemap:
--------------------------------------------------------------------------------
1 | framework module FSPlayer {
2 | umbrella header "FSPlayerKit.h"
3 | header "FSPlayerDef.h"
4 |
5 | export *
6 | module * { export * }
7 | }
8 |
--------------------------------------------------------------------------------
/module-tvos.modulemap:
--------------------------------------------------------------------------------
1 | framework module FSPlayer {
2 | umbrella header "FSPlayerKit.h"
3 | header "FSPlayerDef.h"
4 |
5 | export *
6 | module * { export * }
7 | }
8 |
--------------------------------------------------------------------------------
/examples/macos/FSPlayerMacDemo/Assets.xcassets/info.imageset/info.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/debugly/fsplayer/HEAD/examples/macos/FSPlayerMacDemo/Assets.xcassets/info.imageset/info.pdf
--------------------------------------------------------------------------------
/examples/macos/FSPlayerMacDemo/Assets.xcassets/menu.imageset/menu.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/debugly/fsplayer/HEAD/examples/macos/FSPlayerMacDemo/Assets.xcassets/menu.imageset/menu.pdf
--------------------------------------------------------------------------------
/examples/macos/FSPlayerMacDemo/Assets.xcassets/next.imageset/next.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/debugly/fsplayer/HEAD/examples/macos/FSPlayerMacDemo/Assets.xcassets/next.imageset/next.png
--------------------------------------------------------------------------------
/examples/macos/FSPlayerMacDemo/Assets.xcassets/play.imageset/play.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/debugly/fsplayer/HEAD/examples/macos/FSPlayerMacDemo/Assets.xcassets/play.imageset/play.png
--------------------------------------------------------------------------------
/examples/macos/FSPlayerMacDemo/Assets.xcassets/knob_big.imageset/矩形2.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/debugly/fsplayer/HEAD/examples/macos/FSPlayerMacDemo/Assets.xcassets/knob_big.imageset/矩形2.pdf
--------------------------------------------------------------------------------
/examples/macos/FSPlayerMacDemo/Assets.xcassets/pause.imageset/pause.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/debugly/fsplayer/HEAD/examples/macos/FSPlayerMacDemo/Assets.xcassets/pause.imageset/pause.png
--------------------------------------------------------------------------------
/examples/macos/FSPlayerMacDemo/Assets.xcassets/info_hover.imageset/info.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/debugly/fsplayer/HEAD/examples/macos/FSPlayerMacDemo/Assets.xcassets/info_hover.imageset/info.pdf
--------------------------------------------------------------------------------
/examples/macos/FSPlayerMacDemo/Assets.xcassets/knob_small.imageset/矩形1.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/debugly/fsplayer/HEAD/examples/macos/FSPlayerMacDemo/Assets.xcassets/knob_small.imageset/矩形1.pdf
--------------------------------------------------------------------------------
/examples/ios/FSPlayerDemo/Images.xcassets/LaunchImage.launchimage/Default.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/debugly/fsplayer/HEAD/examples/ios/FSPlayerDemo/Images.xcassets/LaunchImage.launchimage/Default.png
--------------------------------------------------------------------------------
/examples/macos/FSPlayerMacDemo/Assets.xcassets/previous.imageset/previous.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/debugly/fsplayer/HEAD/examples/macos/FSPlayerMacDemo/Assets.xcassets/previous.imageset/previous.png
--------------------------------------------------------------------------------
/examples/ios/FSPlayerDemo/Images.xcassets/LaunchImage.launchimage/Default@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/debugly/fsplayer/HEAD/examples/ios/FSPlayerDemo/Images.xcassets/LaunchImage.launchimage/Default@2x.png
--------------------------------------------------------------------------------
/examples/macos/FSPlayerMacDemo/Assets.xcassets/AppIcon.appiconset/icon_16x16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/debugly/fsplayer/HEAD/examples/macos/FSPlayerMacDemo/Assets.xcassets/AppIcon.appiconset/icon_16x16.png
--------------------------------------------------------------------------------
/examples/macos/FSPlayerMacDemo/Assets.xcassets/AppIcon.appiconset/icon_32x32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/debugly/fsplayer/HEAD/examples/macos/FSPlayerMacDemo/Assets.xcassets/AppIcon.appiconset/icon_32x32.png
--------------------------------------------------------------------------------
/examples/macos/FSPlayerMacDemo/Assets.xcassets/switch-on.imageset/switch-on.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/debugly/fsplayer/HEAD/examples/macos/FSPlayerMacDemo/Assets.xcassets/switch-on.imageset/switch-on.pdf
--------------------------------------------------------------------------------
/examples/macos/FSPlayerMacDemo/Assets.xcassets/AppIcon.appiconset/icon_128x128.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/debugly/fsplayer/HEAD/examples/macos/FSPlayerMacDemo/Assets.xcassets/AppIcon.appiconset/icon_128x128.png
--------------------------------------------------------------------------------
/examples/macos/FSPlayerMacDemo/Assets.xcassets/AppIcon.appiconset/icon_16x16@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/debugly/fsplayer/HEAD/examples/macos/FSPlayerMacDemo/Assets.xcassets/AppIcon.appiconset/icon_16x16@2x.png
--------------------------------------------------------------------------------
/examples/macos/FSPlayerMacDemo/Assets.xcassets/AppIcon.appiconset/icon_256x256.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/debugly/fsplayer/HEAD/examples/macos/FSPlayerMacDemo/Assets.xcassets/AppIcon.appiconset/icon_256x256.png
--------------------------------------------------------------------------------
/examples/macos/FSPlayerMacDemo/Assets.xcassets/AppIcon.appiconset/icon_32x32@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/debugly/fsplayer/HEAD/examples/macos/FSPlayerMacDemo/Assets.xcassets/AppIcon.appiconset/icon_32x32@2x.png
--------------------------------------------------------------------------------
/examples/macos/FSPlayerMacDemo/Assets.xcassets/AppIcon.appiconset/icon_512x512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/debugly/fsplayer/HEAD/examples/macos/FSPlayerMacDemo/Assets.xcassets/AppIcon.appiconset/icon_512x512.png
--------------------------------------------------------------------------------
/examples/macos/FSPlayerMacDemo/Assets.xcassets/menu_hover.imageset/menu_hover.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/debugly/fsplayer/HEAD/examples/macos/FSPlayerMacDemo/Assets.xcassets/menu_hover.imageset/menu_hover.pdf
--------------------------------------------------------------------------------
/examples/macos/FSPlayerMacDemo/Assets.xcassets/switch-off.imageset/switch-off.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/debugly/fsplayer/HEAD/examples/macos/FSPlayerMacDemo/Assets.xcassets/switch-off.imageset/switch-off.pdf
--------------------------------------------------------------------------------
/examples/ios/FSPlayerDemo/Images.xcassets/LaunchImage.launchimage/Default-568h@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/debugly/fsplayer/HEAD/examples/ios/FSPlayerDemo/Images.xcassets/LaunchImage.launchimage/Default-568h@2x.png
--------------------------------------------------------------------------------
/examples/macos/FSPlayerMacDemo/Assets.xcassets/AppIcon.appiconset/icon_128x128@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/debugly/fsplayer/HEAD/examples/macos/FSPlayerMacDemo/Assets.xcassets/AppIcon.appiconset/icon_128x128@2x.png
--------------------------------------------------------------------------------
/examples/macos/FSPlayerMacDemo/Assets.xcassets/AppIcon.appiconset/icon_256x256@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/debugly/fsplayer/HEAD/examples/macos/FSPlayerMacDemo/Assets.xcassets/AppIcon.appiconset/icon_256x256@2x.png
--------------------------------------------------------------------------------
/examples/macos/FSPlayerMacDemo/Assets.xcassets/AppIcon.appiconset/icon_512x512@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/debugly/fsplayer/HEAD/examples/macos/FSPlayerMacDemo/Assets.xcassets/AppIcon.appiconset/icon_512x512@2x.png
--------------------------------------------------------------------------------
/examples/tvos/FSPlayerTVDemo/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon.imagestack/Back.imagestacklayer/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "author" : "xcode",
4 | "version" : 1
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/examples/tvos/FSPlayerTVDemo/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon.imagestack/Front.imagestacklayer/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "author" : "xcode",
4 | "version" : 1
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/examples/tvos/FSPlayerTVDemo/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon.imagestack/Middle.imagestacklayer/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "author" : "xcode",
4 | "version" : 1
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/examples/ios/FSPlayerDemo/XCAssets/AppIcons.xcassets/AppIcon.appiconset/iTunesArtwork@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/debugly/fsplayer/HEAD/examples/ios/FSPlayerDemo/XCAssets/AppIcons.xcassets/AppIcon.appiconset/iTunesArtwork@2x.png
--------------------------------------------------------------------------------
/examples/tvos/FSPlayerTVDemo/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - App Store.imagestack/Back.imagestacklayer/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "author" : "xcode",
4 | "version" : 1
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/examples/tvos/FSPlayerTVDemo/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - App Store.imagestack/Front.imagestacklayer/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "author" : "xcode",
4 | "version" : 1
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/examples/ios/FSPlayer.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/examples/macos/FSPlayer.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/examples/tvos/FSPlayer.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/examples/tvos/FSPlayerTVDemo/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - App Store.imagestack/Middle.imagestacklayer/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "author" : "xcode",
4 | "version" : 1
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/examples/ios/FSPlayerDemo.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/examples/tvos/FSPlayerTVDemo.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/examples/tvos/FSPlayerTVDemo.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/examples/macos/FSPlayerMacDemo.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/examples/tvos/FSPlayerTVDemo/Assets.xcassets/AccentColor.colorset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "colors" : [
3 | {
4 | "idiom" : "universal"
5 | }
6 | ],
7 | "info" : {
8 | "author" : "xcode",
9 | "version" : 1
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/examples/ios/FSPlayerDemo/XCAssets/LaunchImages.xcassets/LaunchImage.launchimage/iphone_ios7_640_1136.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/debugly/fsplayer/HEAD/examples/ios/FSPlayerDemo/XCAssets/LaunchImages.xcassets/LaunchImage.launchimage/iphone_ios7_640_1136.png
--------------------------------------------------------------------------------
/examples/ios/FSPlayerDemo/XCAssets/LaunchImages.xcassets/LaunchImage.launchimage/iphone_ios7_640_960.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/debugly/fsplayer/HEAD/examples/ios/FSPlayerDemo/XCAssets/LaunchImages.xcassets/LaunchImage.launchimage/iphone_ios7_640_960.png
--------------------------------------------------------------------------------
/examples/ios/FSPlayerDemo.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/examples/macos/FSPlayerMacDemo.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/examples/tvos/FSPlayerTVDemo/ViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // ViewController.h
3 | // FSPlayerTVDemo
4 | //
5 | // Created by debugly on 2024/5/23.
6 | //
7 |
8 | #import
9 |
10 | @interface ViewController : UIViewController
11 |
12 |
13 | @end
14 |
15 |
--------------------------------------------------------------------------------
/examples/ios/FSPlayerDemo/XCAssets/MoviePlayerImages.xcassets/MoviePlayer/btn_player_play.imageset/btn_player_play.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/debugly/fsplayer/HEAD/examples/ios/FSPlayerDemo/XCAssets/MoviePlayerImages.xcassets/MoviePlayer/btn_player_play.imageset/btn_player_play.png
--------------------------------------------------------------------------------
/examples/ios/FSPlayerDemo/XCAssets/MoviePlayerImages.xcassets/MoviePlayer/btn_player_pause.imageset/btn_player_pause.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/debugly/fsplayer/HEAD/examples/ios/FSPlayerDemo/XCAssets/MoviePlayerImages.xcassets/MoviePlayer/btn_player_pause.imageset/btn_player_pause.png
--------------------------------------------------------------------------------
/examples/macos/FSPlayerMacDemo/Assets.xcassets/info.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "info.pdf",
5 | "idiom" : "universal"
6 | }
7 | ],
8 | "info" : {
9 | "author" : "xcode",
10 | "version" : 1
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/examples/macos/FSPlayerMacDemo/Assets.xcassets/knob_big.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "矩形2.pdf",
5 | "idiom" : "universal"
6 | }
7 | ],
8 | "info" : {
9 | "author" : "xcode",
10 | "version" : 1
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/examples/macos/FSPlayerMacDemo/Assets.xcassets/menu.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "menu.pdf",
5 | "idiom" : "universal"
6 | }
7 | ],
8 | "info" : {
9 | "author" : "xcode",
10 | "version" : 1
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/examples/ios/FSPlayerDemo/XCAssets/MoviePlayerImages.xcassets/MoviePlayer/btn_player_pause.imageset/btn_player_pause@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/debugly/fsplayer/HEAD/examples/ios/FSPlayerDemo/XCAssets/MoviePlayerImages.xcassets/MoviePlayer/btn_player_pause.imageset/btn_player_pause@2x.png
--------------------------------------------------------------------------------
/examples/ios/FSPlayerDemo/XCAssets/MoviePlayerImages.xcassets/MoviePlayer/btn_player_play.imageset/btn_player_play@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/debugly/fsplayer/HEAD/examples/ios/FSPlayerDemo/XCAssets/MoviePlayerImages.xcassets/MoviePlayer/btn_player_play.imageset/btn_player_play@2x.png
--------------------------------------------------------------------------------
/examples/macos/FSPlayerMacDemo/Assets.xcassets/info_hover.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "info.pdf",
5 | "idiom" : "universal"
6 | }
7 | ],
8 | "info" : {
9 | "author" : "xcode",
10 | "version" : 1
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/examples/macos/FSPlayerMacDemo/Assets.xcassets/knob_small.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "矩形1.pdf",
5 | "idiom" : "universal"
6 | }
7 | ],
8 | "info" : {
9 | "author" : "xcode",
10 | "version" : 1
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/examples/macos/FSPlayerMacDemo/Assets.xcassets/menu_hover.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "menu_hover.pdf",
5 | "idiom" : "universal"
6 | }
7 | ],
8 | "info" : {
9 | "author" : "xcode",
10 | "version" : 1
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/examples/macos/FSPlayerMacDemo/Assets.xcassets/switch-off.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "switch-off.pdf",
5 | "idiom" : "universal"
6 | }
7 | ],
8 | "info" : {
9 | "author" : "xcode",
10 | "version" : 1
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/examples/macos/FSPlayerMacDemo/Assets.xcassets/switch-on.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "switch-on.pdf",
5 | "idiom" : "universal"
6 | }
7 | ],
8 | "info" : {
9 | "author" : "xcode",
10 | "version" : 1
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/examples/ios/FSPlayerDemo/XCAssets/MoviePlayerImages.xcassets/MoviePlayer/player_top_control_bg.imageset/player_top_control_bg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/debugly/fsplayer/HEAD/examples/ios/FSPlayerDemo/XCAssets/MoviePlayerImages.xcassets/MoviePlayer/player_top_control_bg.imageset/player_top_control_bg.png
--------------------------------------------------------------------------------
/examples/ios/FSPlayerDemo/XCAssets/MoviePlayerImages.xcassets/MoviePlayer/player_top_control_bg.imageset/player_top_control_bg@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/debugly/fsplayer/HEAD/examples/ios/FSPlayerDemo/XCAssets/MoviePlayerImages.xcassets/MoviePlayer/player_top_control_bg.imageset/player_top_control_bg@2x.png
--------------------------------------------------------------------------------
/examples/ios/FSPlayerDemo/XCAssets/MoviePlayerImages.xcassets/MoviePlayer/player_bottom_control_bg.imageset/player_bottom_control_bg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/debugly/fsplayer/HEAD/examples/ios/FSPlayerDemo/XCAssets/MoviePlayerImages.xcassets/MoviePlayer/player_bottom_control_bg.imageset/player_bottom_control_bg.png
--------------------------------------------------------------------------------
/examples/ios/FSPlayerDemo/XCAssets/MoviePlayerImages.xcassets/MoviePlayer/player_bottom_control_bg.imageset/player_bottom_control_bg@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/debugly/fsplayer/HEAD/examples/ios/FSPlayerDemo/XCAssets/MoviePlayerImages.xcassets/MoviePlayer/player_bottom_control_bg.imageset/player_bottom_control_bg@2x.png
--------------------------------------------------------------------------------
/examples/tvos/FSPlayerTVDemo/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - App Store.imagestack/Back.imagestacklayer/Content.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "tv"
5 | }
6 | ],
7 | "info" : {
8 | "author" : "xcode",
9 | "version" : 1
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/examples/tvos/FSPlayerTVDemo/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - App Store.imagestack/Front.imagestacklayer/Content.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "tv"
5 | }
6 | ],
7 | "info" : {
8 | "author" : "xcode",
9 | "version" : 1
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/examples/tvos/FSPlayerTVDemo/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - App Store.imagestack/Middle.imagestacklayer/Content.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "tv"
5 | }
6 | ],
7 | "info" : {
8 | "author" : "xcode",
9 | "version" : 1
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/examples/macos/FSPlayerMacDemo/main.m:
--------------------------------------------------------------------------------
1 | //
2 | // main.m
3 | // FSPlayerMacDemo
4 | //
5 | // Created by debugly on 2019/6/25.
6 | // Copyright © 2019 FSPlayer Mac. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | int main(int argc, const char * argv[]) {
12 | return NSApplicationMain(argc, argv);
13 | }
14 |
--------------------------------------------------------------------------------
/examples/tvos/FSPlayerTVDemo/AppDelegate.h:
--------------------------------------------------------------------------------
1 | //
2 | // AppDelegate.h
3 | // FSPlayerTVDemo
4 | //
5 | // Created by debugly on 2024/5/23.
6 | //
7 |
8 | #import
9 |
10 | @interface AppDelegate : UIResponder
11 |
12 | @property (strong, nonatomic) UIWindow *window;
13 |
14 |
15 | @end
16 |
17 |
--------------------------------------------------------------------------------
/Donate.md:
--------------------------------------------------------------------------------
1 |
2 | ## Donate
3 |
4 | 维护本项目花费了大量时间和精力,帮助了很多 iOS/macOS/tvOS 开发者们。
5 |
6 | 为了让本项目长存,给其他开发人员提供更多的帮助,你应该支持作者,请他喝杯咖啡。
7 |
8 | 
9 |
10 | ## 捐赠列表
11 |
12 | 感谢以下朋友,下面是付款是付款时留下的备注:
13 |
14 | - 海阔天也空
15 | - 小猪猪
16 | - 1996GJ
17 | - zdw19840929
18 | - pcccccc
19 | - oyjcmyn
20 | - huabaobao2017
--------------------------------------------------------------------------------
/examples/ios/FSPlayerDemo/XCAssets/AppIcons.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "iTunesArtwork@2x.png",
5 | "idiom" : "universal",
6 | "platform" : "ios",
7 | "size" : "1024x1024"
8 | }
9 | ],
10 | "info" : {
11 | "author" : "xcode",
12 | "version" : 1
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/examples/macos/FSPlayerMacDemo/CustomView/MRTextField.h:
--------------------------------------------------------------------------------
1 | //
2 | // MRTextField.h
3 | // FSPlayerMacDemo
4 | //
5 | // Created by Reach Matt on 2025/4/15.
6 | // Copyright © 2025 FSPlayer. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | NS_ASSUME_NONNULL_BEGIN
12 |
13 | @interface MRTextField : NSTextField
14 |
15 | @end
16 |
17 | NS_ASSUME_NONNULL_END
18 |
--------------------------------------------------------------------------------
/examples/macos/FSPlayerMacDemo/MRActionKit/MRActionProcessor+Private.h:
--------------------------------------------------------------------------------
1 | //
2 | // MRActionProcessor+Private.h
3 | // MRPlayer
4 | //
5 | // Created by debugly on 2019/8/5.
6 | // Copyright © 2022 debugly. All rights reserved.
7 | //
8 |
9 | #import "MRActionProcessor.h"
10 |
11 | @interface MRActionProcessor (Private)
12 |
13 | - (MRActionHandler)handlerForPath:(NSString *)path;
14 |
15 | @end
16 |
--------------------------------------------------------------------------------
/examples/macos/FSPlayerMacDemo/ViewController/WindowController.h:
--------------------------------------------------------------------------------
1 | //
2 | // WindowController.h
3 | // FSPlayerDemo
4 | //
5 | // Created by debugly on 2021/11/2.
6 | // Copyright © 2021 debugly. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | NS_ASSUME_NONNULL_BEGIN
12 |
13 | @interface WindowController : NSWindowController
14 |
15 | @end
16 |
17 | NS_ASSUME_NONNULL_END
18 |
--------------------------------------------------------------------------------
/ijkmedia/ijksdl/ios/FSSDLHudViewCell.h:
--------------------------------------------------------------------------------
1 | //
2 | // FSSDLHudViewCell.h
3 | // FSMediaPlayer
4 | //
5 | // Created by Zhang Rui on 15/12/14.
6 | // Copyright © 2015年 bilibili. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface FSSDLHudViewCell : UITableViewCell
12 |
13 | - (id)init;
14 |
15 | - (void)setHudValue:(NSString *)value forKey:(NSString *)key;
16 |
17 | @end
18 |
--------------------------------------------------------------------------------
/examples/macos/FSPlayerMacDemo/MRActionKit/MRActionKit.h:
--------------------------------------------------------------------------------
1 | //
2 | // MRActionKit.h
3 | // MRFoundation
4 | //
5 | // Created by debugly on 2019/8/5.
6 | // Copyright © 2022 debugly. All rights reserved.
7 | //
8 |
9 | #ifndef MRActionKit_h
10 | #define MRActionKit_h
11 |
12 | #import "MRActionItem.h"
13 | #import "MRActionProcessor.h"
14 | #import "MRActionManager.h"
15 |
16 | #endif /* MRActionKit_h */
17 |
--------------------------------------------------------------------------------
/examples/tvos/FSPlayerTVDemo/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon.imagestack/Back.imagestacklayer/Content.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "tv",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "tv",
9 | "scale" : "2x"
10 | }
11 | ],
12 | "info" : {
13 | "author" : "xcode",
14 | "version" : 1
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/examples/tvos/FSPlayerTVDemo/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon.imagestack/Front.imagestacklayer/Content.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "tv",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "tv",
9 | "scale" : "2x"
10 | }
11 | ],
12 | "info" : {
13 | "author" : "xcode",
14 | "version" : 1
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/examples/tvos/FSPlayerTVDemo/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon.imagestack/Middle.imagestacklayer/Content.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "tv",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "tv",
9 | "scale" : "2x"
10 | }
11 | ],
12 | "info" : {
13 | "author" : "xcode",
14 | "version" : 1
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/examples/macos/FSPlayerMacDemo/AppDelegate.h:
--------------------------------------------------------------------------------
1 | //
2 | // AppDelegate.h
3 | // FSPlayerMacDemo
4 | //
5 | // Created by debugly on 2019/6/25.
6 | // Copyright © 2019 FSPlayer Mac. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface AppDelegate : NSObject
12 |
13 | - (void)openDocument:(id)sender;
14 | - (void)enableComputerSleep:(BOOL)enable;
15 |
16 | @end
17 |
18 |
--------------------------------------------------------------------------------
/examples/macos/FSPlayerMacDemo/ViewController/MRRootViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // MRRootViewController.h
3 | // FSPlayerMacDemo
4 | //
5 | // Created by debugly on 2021/11/1.
6 | // Copyright © 2021 FSPlayer Mac. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | NS_ASSUME_NONNULL_BEGIN
12 |
13 | @interface MRRootViewController : NSViewController
14 |
15 | @end
16 |
17 | NS_ASSUME_NONNULL_END
18 |
--------------------------------------------------------------------------------
/examples/macos/FSPlayerMacDemo/ViewController/MRAutoTestViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // MRAutoTestViewController.h
3 | // FSPlayerMacDemo
4 | //
5 | // Created by debugly on 2024/1/15.
6 | // Copyright © 2024 FSPlayer Mac. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | NS_ASSUME_NONNULL_BEGIN
12 |
13 | @interface MRAutoTestViewController : NSViewController
14 |
15 | @end
16 |
17 | NS_ASSUME_NONNULL_END
18 |
--------------------------------------------------------------------------------
/examples/macos/FSPlayerMacDemo/ViewController/MRInputURLViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // MRInputURLViewController.h
3 | // FSPlayerMacDemo
4 | //
5 | // Created by Reach Matt on 2025/4/15.
6 | // Copyright © 2025 FSPlayer. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | NS_ASSUME_NONNULL_BEGIN
12 |
13 | @interface MRInputURLViewController : NSViewController
14 |
15 | @end
16 |
17 | NS_ASSUME_NONNULL_END
18 |
--------------------------------------------------------------------------------
/examples/macos/FSPlayerMacDemo/ViewController/MRPlaylistViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // MRPlaylistViewController.h
3 | // FSPlayerMacDemo
4 | //
5 | // Created by debugly on 2024/1/24.
6 | // Copyright © 2024 FSPlayer Mac. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | NS_ASSUME_NONNULL_BEGIN
12 |
13 | @interface MRPlaylistViewController : NSViewController
14 |
15 | @end
16 |
17 | NS_ASSUME_NONNULL_END
18 |
--------------------------------------------------------------------------------
/examples/tvos/FSPlayerTVDemo/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon.imagestack/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "author" : "xcode",
4 | "version" : 1
5 | },
6 | "layers" : [
7 | {
8 | "filename" : "Front.imagestacklayer"
9 | },
10 | {
11 | "filename" : "Middle.imagestacklayer"
12 | },
13 | {
14 | "filename" : "Back.imagestacklayer"
15 | }
16 | ]
17 | }
18 |
--------------------------------------------------------------------------------
/examples/macos/FSPlayerMacDemo/ViewController/MRStatisticalViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // MRStatisticalViewController.h
3 | // FSPlayerMacDemo
4 | //
5 | // Created by debugly on 2024/1/15.
6 | // Copyright © 2024 FSPlayer Mac. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | NS_ASSUME_NONNULL_BEGIN
12 |
13 | @interface MRStatisticalViewController : NSViewController
14 |
15 | @end
16 |
17 | NS_ASSUME_NONNULL_END
18 |
--------------------------------------------------------------------------------
/examples/ios/FSPlayerDemo/main.m:
--------------------------------------------------------------------------------
1 | //
2 | // main.m
3 | // FSMediaDemo
4 | //
5 | // Created by ZhangRui on 13-9-19.
6 | // Copyright (c) 2013年 bilibili. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | #import "FSAppDelegate.h"
12 |
13 | int main(int argc, char *argv[])
14 | {
15 | @autoreleasepool {
16 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([FSAppDelegate class]));
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/examples/macos/FSPlayerMacDemo/CustomView/MRBaseView.h:
--------------------------------------------------------------------------------
1 | //
2 | // MRBaseView.h
3 | // FSPlayerMacDemo
4 | //
5 | // Created by debugly on 2022/2/25.
6 | // Copyright © 2022 FSPlayer Mac. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | NS_ASSUME_NONNULL_BEGIN
12 |
13 | @interface MRBaseView : NSView
14 |
15 | @property (nonatomic,assign) IBInspectable CGFloat cornerRadius;
16 |
17 | @end
18 |
19 | NS_ASSUME_NONNULL_END
20 |
--------------------------------------------------------------------------------
/examples/tvos/FSPlayerTVDemo/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - App Store.imagestack/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "author" : "xcode",
4 | "version" : 1
5 | },
6 | "layers" : [
7 | {
8 | "filename" : "Front.imagestacklayer"
9 | },
10 | {
11 | "filename" : "Middle.imagestacklayer"
12 | },
13 | {
14 | "filename" : "Back.imagestacklayer"
15 | }
16 | ]
17 | }
18 |
--------------------------------------------------------------------------------
/examples/macos/FSPlayerMacDemo/MRUtil/MRGlobalNotification.m:
--------------------------------------------------------------------------------
1 | //
2 | // MRGlobalNotification.m
3 | // FSPlayerDemo
4 | //
5 | // Created by debugly on 2019/3/14.
6 | // Copyright © 2019 debugly. All rights reserved.
7 | //
8 |
9 | #import "MRGlobalNotification.h"
10 |
11 | DEFINE_CONST_STRING(kPlayExplorerMovieNotificationName_G);
12 | DEFINE_CONST_STRING(kPlayNetMovieNotificationName_G);
13 |
14 | @implementation MRGlobalNotification
15 |
16 | @end
17 |
--------------------------------------------------------------------------------
/examples/macos/FSPlayerMacDemo/Assets.xcassets/next.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "next.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "author" : "xcode",
19 | "version" : 1
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/examples/macos/FSPlayerMacDemo/Assets.xcassets/play.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "play.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "author" : "xcode",
19 | "version" : 1
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/examples/macos/FSPlayerMacDemo/MRActionKit/MRActionProcessorInternal.h:
--------------------------------------------------------------------------------
1 | //
2 | // MRActionProcessorInternal.h
3 | // MRPlayer
4 | //
5 | // Created by debugly on 2019/8/5.
6 | // Copyright © 2022 debugly. All rights reserved.
7 | //
8 |
9 | #import "MRActionProcessor.h"
10 |
11 | @interface MRActionProcessor ()
12 |
13 | @property (nonatomic, strong) NSDictionary *acitonHandlerMap;
14 | @property (nonatomic, copy, readwrite) NSString *scheme;
15 |
16 | @end
17 |
--------------------------------------------------------------------------------
/examples/macos/FSPlayerMacDemo/Assets.xcassets/pause.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "pause.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "author" : "xcode",
19 | "version" : 1
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/examples/macos/FSPlayerMacDemo/ViewController/MultiRenderSample.h:
--------------------------------------------------------------------------------
1 | //
2 | // MultiRenderSample.h
3 | // FSPlayerMacDemo
4 | //
5 | // Created by debugly on 2023/4/6.
6 | // Copyright © 2023 FSPlayer Mac. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | NS_ASSUME_NONNULL_BEGIN
12 |
13 | @interface MultiRenderSample : NSViewController
14 |
15 | @property (nonatomic, strong) NSURL *contentURL;
16 |
17 | @end
18 |
19 | NS_ASSUME_NONNULL_END
20 |
--------------------------------------------------------------------------------
/examples/macos/FSPlayerMacDemo/Assets.xcassets/previous.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "previous.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "author" : "xcode",
19 | "version" : 1
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/examples/macos/FSPlayerMacDemo/MRUtil/NSString+Ex.h:
--------------------------------------------------------------------------------
1 | //
2 | // NSString+Ex.h
3 | // FSPlayerDemo
4 | //
5 | // Created by debugly on 2023/6/15.
6 | // Copyright © 2023 debugly. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | NS_ASSUME_NONNULL_BEGIN
12 |
13 | @interface NSString (Ex)
14 |
15 | - (NSString *)md5Hash;
16 | - (NSString *)percentEncoding;
17 | - (NSString *)percentDecoding;
18 |
19 | @end
20 |
21 | NS_ASSUME_NONNULL_END
22 |
--------------------------------------------------------------------------------
/ijkmedia/ijksdl/metal/FSMetalView.h:
--------------------------------------------------------------------------------
1 | //
2 | // FSMetalView.h
3 | // FFmpegTutorial-macOS
4 | //
5 | // Created by debugly on 2022/11/22.
6 | // Copyright © 2022 debugly's Awesome FFmpeg Tutotial. All rights reserved.
7 | //
8 |
9 | #import "FSVideoRenderingProtocol.h"
10 | @import MetalKit;
11 |
12 | NS_ASSUME_NONNULL_BEGIN
13 |
14 | NS_CLASS_AVAILABLE(10_13, 11_0)
15 | @interface FSMetalView : MTKView
16 |
17 | @end
18 |
19 | NS_ASSUME_NONNULL_END
20 |
--------------------------------------------------------------------------------
/examples/macos/FSPlayerMacDemo/CustomView/MRTextInfoViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // MRTextInfoViewController.h
3 | // FSPlayerMacDemo
4 | //
5 | // Created by debugly on 2023/5/25.
6 | // Copyright © 2023 FSPlayer Mac. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | NS_ASSUME_NONNULL_BEGIN
12 |
13 | @interface MRTextInfoViewController : NSViewController
14 |
15 | - (instancetype)initWithText:(NSString *)text;
16 | - (void)updateText:(NSString *)text;
17 |
18 | @end
19 |
20 | NS_ASSUME_NONNULL_END
21 |
--------------------------------------------------------------------------------
/examples/macos/FSPlayerMacDemo/MRActionKit/MRActionProcessor+Private.m:
--------------------------------------------------------------------------------
1 | //
2 | // MRActionProcessor+Private.m
3 | // MRPlayer
4 | //
5 | // Created by debugly on 2019/8/5.
6 | // Copyright © 2022 debugly. All rights reserved.
7 | //
8 |
9 | #import "MRActionProcessor+Private.h"
10 | #import "MRActionProcessorInternal.h"
11 |
12 | @implementation MRActionProcessor (Private)
13 |
14 | - (MRActionHandler)handlerForPath:(NSString *)path
15 | {
16 | return [self.acitonHandlerMap objectForKey:path];
17 | }
18 |
19 | @end
20 |
--------------------------------------------------------------------------------
/examples/ios/FSPlayerDemo/ViewController/Barcode.h:
--------------------------------------------------------------------------------
1 | //
2 | // Barcode.h
3 | // featurebuild
4 | //
5 | // Created by Jake Widmer on 10/5/13.
6 | // Copyright (c) 2013 Jake Widmer. All rights reserved.
7 | //
8 |
9 | #import
10 | #import
11 |
12 | @interface Barcode : NSObject
13 |
14 | + (Barcode * )processMetadataObject:(AVMetadataMachineReadableCodeObject*) code;
15 | - (NSString *) getBarcodeType;
16 | - (NSString *) getBarcodeData;
17 | - (void) printBarcodeData;
18 | @end
19 |
--------------------------------------------------------------------------------
/examples/tvos/FSPlayerTVDemo/main.m:
--------------------------------------------------------------------------------
1 | //
2 | // main.m
3 | // FSPlayerTVDemo
4 | //
5 | // Created by ifox on 2025/5/2.
6 | //
7 |
8 | #import
9 | #import "AppDelegate.h"
10 |
11 | int main(int argc, char * argv[]) {
12 | NSString * appDelegateClassName;
13 | @autoreleasepool {
14 | // Setup code that might create autoreleased objects goes here.
15 | appDelegateClassName = NSStringFromClass([AppDelegate class]);
16 | }
17 | return UIApplicationMain(argc, argv, nil, appDelegateClassName);
18 | }
19 |
--------------------------------------------------------------------------------
/examples/tvos/FSPlayerTVDemo/Assets.xcassets/App Icon & Top Shelf Image.brandassets/Top Shelf Image.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "tv",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "tv",
9 | "scale" : "2x"
10 | },
11 | {
12 | "idiom" : "tv-marketing",
13 | "scale" : "1x"
14 | },
15 | {
16 | "idiom" : "tv-marketing",
17 | "scale" : "2x"
18 | }
19 | ],
20 | "info" : {
21 | "author" : "xcode",
22 | "version" : 1
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/examples/ios/FSPlayerDemo/XCAssets/MoviePlayerImages.xcassets/MoviePlayer/btn_player_pause.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "btn_player_pause.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "filename" : "btn_player_pause@2x.png",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "version" : 1,
20 | "author" : "xcode"
21 | }
22 | }
--------------------------------------------------------------------------------
/examples/ios/FSPlayerDemo/XCAssets/MoviePlayerImages.xcassets/MoviePlayer/btn_player_play.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "btn_player_play.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "filename" : "btn_player_play@2x.png",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "version" : 1,
20 | "author" : "xcode"
21 | }
22 | }
--------------------------------------------------------------------------------
/examples/tvos/FSPlayerTVDemo/Assets.xcassets/App Icon & Top Shelf Image.brandassets/Top Shelf Image Wide.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "tv",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "tv",
9 | "scale" : "2x"
10 | },
11 | {
12 | "idiom" : "tv-marketing",
13 | "scale" : "1x"
14 | },
15 | {
16 | "idiom" : "tv-marketing",
17 | "scale" : "2x"
18 | }
19 | ],
20 | "info" : {
21 | "author" : "xcode",
22 | "version" : 1
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/examples/ios/FSPlayerDemo/XCAssets/MoviePlayerImages.xcassets/MoviePlayer/player_top_control_bg.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "player_top_control_bg.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "filename" : "player_top_control_bg@2x.png",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "version" : 1,
20 | "author" : "xcode"
21 | }
22 | }
--------------------------------------------------------------------------------
/examples/ios/FSPlayerDemo/XCAssets/MoviePlayerImages.xcassets/MoviePlayer/player_bottom_control_bg.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "player_bottom_control_bg.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "filename" : "player_bottom_control_bg@2x.png",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "version" : 1,
20 | "author" : "xcode"
21 | }
22 | }
--------------------------------------------------------------------------------
/examples/macos/FSPlayerMacDemo/MRActionKit/MRActionManager.h:
--------------------------------------------------------------------------------
1 | //
2 | // MRActionManager.h
3 | // MRPlayer
4 | //
5 | // Created by debugly on 2019/8/2.
6 | // Copyright © 2022 debugly. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @class MRActionProcessor,MRActionItem;
12 | @interface MRActionManager : NSObject
13 |
14 | + (BOOL)handleActionWithURL:(NSString *)url error:(NSError **)error;
15 | + (BOOL)handleActionWithItem:(MRActionItem *)item error:(NSError *__autoreleasing *)error;
16 | + (void)registerProcessor:(MRActionProcessor *)processor;
17 |
18 | @end
19 |
--------------------------------------------------------------------------------
/examples/macos/FSPlayerMacDemo/ViewController/MRRenderViewAuxProxy.h:
--------------------------------------------------------------------------------
1 | //
2 | // MRRenderViewAuxProxy.h
3 | // FSPlayerMacDemo
4 | //
5 | // Created by debugly on 2023/4/6.
6 | // Copyright © 2023 FSPlayer Mac. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | NS_ASSUME_NONNULL_BEGIN
12 |
13 | @interface MRRenderViewAuxProxy : NSView
14 |
15 | - (void)addRenderView:(NSView *)view;
16 | - (void)removeRenderView:(NSView *)view;
17 |
18 | @end
19 |
20 | NS_ASSUME_NONNULL_END
21 |
--------------------------------------------------------------------------------
/deploy.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | # deploy lastest tag and master branch to github.
3 |
4 | branch="${1:-master}"
5 |
6 | url=$(git remote get-url github >/dev/null 2>&1)
7 |
8 | if [[ $? -ne 0 ]]; then
9 | echo 'add github remote'
10 | git remote add github git@github.com:debugly/ijkplayer.git
11 | fi
12 |
13 | echo '=== will fetch github tags ==='
14 | git fetch github --tag
15 | echo "=== will push $branch branch to github ==="
16 | git push github $branch
17 | tag=$(git describe --abbrev=0 --tags)
18 | echo "=== latest tag is ${tag} ==="
19 | #git push github ${tag} --force
20 | git remote remove github
--------------------------------------------------------------------------------
/examples/macos/FSPlayerMacDemo/MRActionKit/MRActionProcessor.h:
--------------------------------------------------------------------------------
1 | //
2 | // MRActionProcessor.h
3 | // MRPlayer
4 | //
5 | // Created by debugly on 2019/8/5.
6 | // Copyright © 2022 debugly. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @class MRActionItem;
12 |
13 | typedef void (^MRActionHandler)(MRActionItem *item);
14 |
15 | @interface MRActionProcessor : NSObject
16 |
17 | @property (nonatomic, copy, readonly) NSString *scheme;
18 |
19 | - (instancetype)initWithScheme:(NSString *)scheme;
20 |
21 | - (void)registerHandler:(MRActionHandler)handler forPath:(NSString *)path;
22 |
23 | @end
24 |
--------------------------------------------------------------------------------
/examples/macos/FSPlayerMacDemo/DragView/MRDragView.h:
--------------------------------------------------------------------------------
1 | //
2 | // MRDragView.h
3 | // FFmpegTutorial-macOS
4 | //
5 | // Created by debugly on 2020/12/2.
6 | //
7 |
8 | #import
9 |
10 | NS_ASSUME_NONNULL_BEGIN
11 |
12 | @protocol MRDragViewDelegate
13 |
14 | - (NSDragOperation)acceptDragOperation:(NSArray *)list;
15 | //默认追加,按下option替换
16 | - (void)handleDragFileList:(NSArray *)fileUrls append:(BOOL)append;
17 |
18 | @end
19 |
20 | @interface MRDragView : NSView
21 |
22 | @property (weak, nonatomic) IBOutlet id delegate;
23 |
24 | @end
25 |
26 | NS_ASSUME_NONNULL_END
27 |
--------------------------------------------------------------------------------
/ijkmedia/ijksdl/mac/FSHudRowView.h:
--------------------------------------------------------------------------------
1 | //
2 | // FSHudRowView.h
3 | // FFmpegTutorial-macOS
4 | //
5 | // Created by debugly on 2020/11/27.
6 | //
7 |
8 | #import
9 |
10 | NS_ASSUME_NONNULL_BEGIN
11 |
12 | typedef enum : NSUInteger {
13 | KSeparactorStyleFull,
14 | KSeparactorStyleHeadPadding,
15 | KSeparactorStyleNone,
16 | } KSeparactorStyle;
17 |
18 | @interface FSHudRowView : NSTableRowView
19 |
20 | @property KSeparactorStyle sepStyle;
21 |
22 | - (void)updateTitle:(NSString *)title;
23 | - (void)updateDetail:(NSString *)title;
24 |
25 | @end
26 |
27 | NS_ASSUME_NONNULL_END
28 |
--------------------------------------------------------------------------------
/examples/macos/FSPlayerMacDemo/MRUtil/MRUtil.h:
--------------------------------------------------------------------------------
1 | //
2 | // MRUtil.h
3 | // FFmpegTutorial-macOS
4 | //
5 | // Created by debugly on 2020/12/2.
6 | //
7 |
8 | #import
9 | #import
10 |
11 | NS_ASSUME_NONNULL_BEGIN
12 |
13 | @interface MRUtil : NSObject
14 |
15 | + (NSArray *)audioType;
16 | + (NSArray *)videoType;
17 | + (NSArray *)subtitleType;
18 | + (NSArray *)pictureType;
19 | + (NSArray *)acceptMediaType;
20 |
21 | + (BOOL)saveImageToFile:(CGImageRef)img path:(NSString *)imgPath;
22 | + (NSArray *)parseXPlayList:(NSURL*)url;
23 |
24 | @end
25 |
26 | NS_ASSUME_NONNULL_END
27 |
--------------------------------------------------------------------------------
/examples/macos/FSPlayerMacDemo/CustomView/MRBaseView.m:
--------------------------------------------------------------------------------
1 | //
2 | // MRBaseView.m
3 | // FSPlayerMacDemo
4 | //
5 | // Created by debugly on 2022/2/25.
6 | // Copyright © 2022 FSPlayer Mac. All rights reserved.
7 | //
8 |
9 | #import "MRBaseView.h"
10 | #import
11 |
12 | @implementation MRBaseView
13 |
14 | IB_DESIGNABLE;
15 |
16 | - (void)setCornerRadius:(CGFloat)radius
17 | {
18 | if (_cornerRadius != radius) {
19 | _cornerRadius = radius;
20 | if (_cornerRadius > 0) {
21 | [self setWantsLayer:YES];
22 | self.layer.cornerRadius = radius;
23 | self.layer.masksToBounds = YES;
24 | }
25 | }
26 | }
27 |
28 | @end
29 |
--------------------------------------------------------------------------------
/examples/ios/FSPlayerDemo/XCAssets/LaunchImages.xcassets/LaunchImage.launchimage/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "extent" : "full-screen",
5 | "filename" : "iphone_ios7_640_960.png",
6 | "idiom" : "iphone",
7 | "minimum-system-version" : "7.0",
8 | "orientation" : "portrait",
9 | "scale" : "2x"
10 | },
11 | {
12 | "extent" : "full-screen",
13 | "filename" : "iphone_ios7_640_1136.png",
14 | "idiom" : "iphone",
15 | "minimum-system-version" : "7.0",
16 | "orientation" : "portrait",
17 | "scale" : "2x",
18 | "subtype" : "retina4"
19 | }
20 | ],
21 | "info" : {
22 | "author" : "xcode",
23 | "version" : 1
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/examples/macos/FSPlayerMacDemo/ViewController/WindowController.m:
--------------------------------------------------------------------------------
1 | //
2 | // WindowController.m
3 | // FSPlayerDemo
4 | //
5 | // Created by debugly on 2021/11/2.
6 | // Copyright © 2021 debugly. All rights reserved.
7 | //
8 |
9 | #import "WindowController.h"
10 |
11 | @interface WindowController ()
12 |
13 | @end
14 |
15 | @implementation WindowController
16 |
17 | - (void)keyDown:(NSEvent *)event
18 | {
19 | if (self.window.contentViewController) {
20 | if ([self.window.contentViewController respondsToSelector:@selector(keyDown:)]) {
21 | [self.window.contentViewController keyDown:event];
22 | return;
23 | }
24 | }
25 | return [super keyDown:event];
26 | }
27 |
28 | @end
29 |
--------------------------------------------------------------------------------
/examples/macos/FSPlayerMacDemo/FSPlayerMacDemo.entitlements:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | com.apple.security.app-sandbox
6 |
7 | com.apple.security.files.downloads.read-only
8 |
9 | com.apple.security.assets.music.read-only
10 |
11 | com.apple.security.assets.movies.read-only
12 |
13 | com.apple.security.assets.pictures.read-write
14 |
15 | com.apple.security.files.user-selected.read-only
16 |
17 | com.apple.security.network.client
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/ijkmedia/ijksdl/metal/FSMetalOffscreenRendering.h:
--------------------------------------------------------------------------------
1 | //
2 | // FSMetalOffscreenRendering.h
3 | // FFmpegTutorial-macOS
4 | //
5 | // Created by debugly on 2022/12/2.
6 | // Copyright © 2022 debugly's Awesome FFmpeg Tutotial. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | NS_ASSUME_NONNULL_BEGIN
12 | @protocol MTLDevice,MTLCommandBuffer,MTLRenderCommandEncoder;
13 | @import CoreGraphics;
14 |
15 | NS_CLASS_AVAILABLE(10_13, 11_0)
16 | @interface FSMetalOffscreenRendering : NSObject
17 |
18 | - (CGImageRef)snapshot:(CGSize)targetSize
19 | device:(id )device
20 | commandBuffer:(id)commandBuffer
21 | doUploadPicture:(void(^)(id))block;
22 |
23 | @end
24 |
25 | NS_ASSUME_NONNULL_END
26 |
--------------------------------------------------------------------------------
/examples/macos/FSPlayerMacDemo/MRActionKit/MRActionItem.h:
--------------------------------------------------------------------------------
1 | //
2 | // MRActionItem.h
3 | // MRFoundation
4 | //
5 | // Created by debugly on 2019/8/5.
6 | // Copyright © 2022 debugly. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface MRActionItem : NSObject
12 |
13 | @property (nonatomic, copy, readonly) NSString *scheme;
14 | @property (nonatomic, copy, readonly) NSString *host;
15 | @property (nonatomic, copy, readonly) NSNumber *port;
16 | @property (nonatomic, copy, readonly) NSString *path;
17 | @property (nonatomic, copy, readonly) NSString *query;
18 | @property (nonatomic, strong, readonly) NSDictionary *queryMap;
19 |
20 | - (instancetype)initWithURLString:(NSString *)string;
21 | + (instancetype)actionItemWithString:(NSString *)string;
22 |
23 | @end
24 |
--------------------------------------------------------------------------------
/examples/ios/FSPlayerDemo/ViewController/FSDemoMainViewController.h:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2015 Gdier
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | #import
18 |
19 | @interface FSDemoMainViewController : UIViewController
20 |
21 | @end
22 |
--------------------------------------------------------------------------------
/examples/ios/FSPlayerDemo/ViewController/FSQRCodeScanViewController.h:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2015 Gdier
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | #import
18 |
19 | @interface FSQRCodeScanViewController : UIViewController
20 |
21 | @end
22 |
--------------------------------------------------------------------------------
/examples/ios/FSPlayerDemo/ViewController/FSDemoInputURLViewController.h:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2015 Gdier
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | #import
18 |
19 | @interface FSDemoInputURLViewController : UIViewController
20 |
21 | @end
22 |
--------------------------------------------------------------------------------
/examples/ios/generate-fsplayer.sh:
--------------------------------------------------------------------------------
1 | #! /usr/bin/env bash
2 | #
3 | # Copyright (C) 2024 Matt Reach
4 |
5 | # Licensed under the Apache License, Version 2.0 (the "License");
6 | # you may not use this file except in compliance with the License.
7 | # You may obtain a copy of the License at
8 | #
9 | # http://www.apache.org/licenses/LICENSE-2.0
10 | #
11 | # Unless required by applicable law or agreed to in writing, software
12 | # distributed under the License is distributed on an "AS IS" BASIS,
13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | # See the License for the specific language governing permissions and
15 | # limitations under the License.
16 |
17 | THIS_DIR=$(DIRNAME=$(dirname "$0"); cd "$DIRNAME"; pwd)
18 | cd "$THIS_DIR"
19 |
20 | set -e
21 |
22 | xcodegen -p . -s ../../FSPlayer.yml
--------------------------------------------------------------------------------
/ijkmedia/ijksdl/metal/FSMetalPipelineMeta.h:
--------------------------------------------------------------------------------
1 | //
2 | // FSMetalPipelineMeta.h
3 | // FSPlayer
4 | //
5 | // Created by debugly on 2023/6/26.
6 | //
7 |
8 | #import
9 | #import "FSMetalShaderTypes.h"
10 | #import
11 |
12 | NS_ASSUME_NONNULL_BEGIN
13 | NS_CLASS_AVAILABLE(10_13, 11_0)
14 | @interface FSMetalPipelineMeta : NSObject
15 |
16 | @property (nonatomic) BOOL hdr;
17 | @property (nonatomic) BOOL fullRange;
18 | @property (nonatomic) NSString* fragmentName;
19 | @property (nonatomic) FSColorTransferFunc transferFunc;
20 | @property (nonatomic) FSYUV2RGBColorMatrixType convertMatrixType;
21 |
22 | + (FSMetalPipelineMeta *)createWithCVPixelbuffer:(CVPixelBufferRef)pixelBuffer;
23 | - (BOOL)metaMatchedCVPixelbuffer:(CVPixelBufferRef)pixelBuffer;
24 |
25 | @end
26 |
27 | NS_ASSUME_NONNULL_END
28 |
--------------------------------------------------------------------------------
/examples/macos/generate-fsplayer.sh:
--------------------------------------------------------------------------------
1 | #! /usr/bin/env bash
2 | #
3 | # Copyright (C) 2024 Matt Reach
4 |
5 | # Licensed under the Apache License, Version 2.0 (the "License");
6 | # you may not use this file except in compliance with the License.
7 | # You may obtain a copy of the License at
8 | #
9 | # http://www.apache.org/licenses/LICENSE-2.0
10 | #
11 | # Unless required by applicable law or agreed to in writing, software
12 | # distributed under the License is distributed on an "AS IS" BASIS,
13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | # See the License for the specific language governing permissions and
15 | # limitations under the License.
16 |
17 | THIS_DIR=$(DIRNAME=$(dirname "$0"); cd "$DIRNAME"; pwd)
18 | cd "$THIS_DIR"
19 |
20 | set -e
21 |
22 | xcodegen -p . -s ../../FSPlayer.yml
--------------------------------------------------------------------------------
/examples/tvos/generate-fsplayer.sh:
--------------------------------------------------------------------------------
1 | #! /usr/bin/env bash
2 | #
3 | # Copyright (C) 2024 Matt Reach
4 |
5 | # Licensed under the Apache License, Version 2.0 (the "License");
6 | # you may not use this file except in compliance with the License.
7 | # You may obtain a copy of the License at
8 | #
9 | # http://www.apache.org/licenses/LICENSE-2.0
10 | #
11 | # Unless required by applicable law or agreed to in writing, software
12 | # distributed under the License is distributed on an "AS IS" BASIS,
13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | # See the License for the specific language governing permissions and
15 | # limitations under the License.
16 |
17 | THIS_DIR=$(DIRNAME=$(dirname "$0"); cd "$DIRNAME"; pwd)
18 | cd "$THIS_DIR"
19 |
20 | set -e
21 |
22 | xcodegen -p . -s ../../FSPlayer.yml
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # -----
2 | build/
3 | ffmpeg-temp/
4 | android/ffmpeg-*
5 | android/openssl-*
6 | ijkmedia/ijkyuv/
7 | ijkmedia/ijksoundtouch
8 | ijkprof/android-ndk-profiler/
9 |
10 | # built application files
11 | *.apk
12 | *.ap_
13 |
14 | # files for the dex VM
15 | *.dex
16 |
17 | # Java class files
18 | *.class
19 |
20 | # generated files
21 | ijkmedia/ijkplayer/ijkversion.h
22 |
23 | # Local configuration file (sdk path, etc)
24 | local.properties
25 |
26 | # Android Studio
27 | .idea
28 | .gradle
29 | build/
30 |
31 | #macOS
32 | .DS_Store
33 | # Xcode
34 | xcuserdata
35 | xcshareddata
36 | *.xccheckout
37 | # Cocopods
38 | examples/macos/Release
39 | examples/ios/Release-iphoneos
40 | examples/ios/Release-iphonesimulator
41 | examples/tvos/Release-appletvos
42 | examples/tvos/Release-appletvsimulator
43 | examples/xcframewrok/FSPlayer.xcframework
44 |
--------------------------------------------------------------------------------
/examples/macos/FSPlayerMacDemo/ViewController/MRPlaylistRowView.h:
--------------------------------------------------------------------------------
1 | //
2 | // MRPlaylistRowView.h
3 | // FSPlayerMacDemo
4 | //
5 | // Created by debugly on 2024/1/24.
6 | // Copyright © 2024 FSPlayer Mac. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | NS_ASSUME_NONNULL_BEGIN
12 |
13 | typedef enum : NSUInteger {
14 | KSeparactorStyleFull,
15 | KSeparactorStyleHeadPadding,
16 | KSeparactorStyleNone,
17 | } KSeparactorStyle;
18 |
19 | @interface MRPlaylistRowData : NSObject
20 |
21 | @property(nonatomic) NSString *key;
22 | @property(nonatomic) NSString *value;
23 |
24 | @end
25 |
26 | @interface MRPlaylistRowView : NSTableRowView
27 |
28 | @property KSeparactorStyle sepStyle;
29 |
30 | - (void)updateData:(MRPlaylistRowData *)data;
31 |
32 | @end
33 |
34 | NS_ASSUME_NONNULL_END
35 |
--------------------------------------------------------------------------------
/examples/macos/FSPlayerMacDemo/ViewController/MRPlayerSettingsViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // MRPlayerSettingsViewController.h
3 | // FSPlayerMacDemo
4 | //
5 | // Created by debugly on 2024/1/24.
6 | // Copyright © 2024 FSPlayer Mac. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | NS_ASSUME_NONNULL_BEGIN
12 |
13 | typedef void(^MRPlayerSettingsExchangeStreamBlock)(int);
14 | typedef void(^MRPlayerSettingsCloseStreamBlock)(NSString *);
15 |
16 | @interface MRPlayerSettingsViewController : NSViewController
17 |
18 | - (void)exchangeToNextSubtitle;
19 | - (void)updateTracks:(NSDictionary *)dic;
20 | - (void)onCloseCurrentStream:(MRPlayerSettingsCloseStreamBlock)block;
21 | - (void)onExchangeSelectedStream:(MRPlayerSettingsExchangeStreamBlock)block;
22 | - (void)onCaptureShot:(dispatch_block_t)block;
23 |
24 | @end
25 |
26 | NS_ASSUME_NONNULL_END
27 |
--------------------------------------------------------------------------------
/examples/tvos/FSPlayerTVDemo/Assets.xcassets/App Icon & Top Shelf Image.brandassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "assets" : [
3 | {
4 | "filename" : "App Icon - App Store.imagestack",
5 | "idiom" : "tv",
6 | "role" : "primary-app-icon",
7 | "size" : "1280x768"
8 | },
9 | {
10 | "filename" : "App Icon.imagestack",
11 | "idiom" : "tv",
12 | "role" : "primary-app-icon",
13 | "size" : "400x240"
14 | },
15 | {
16 | "filename" : "Top Shelf Image Wide.imageset",
17 | "idiom" : "tv",
18 | "role" : "top-shelf-image-wide",
19 | "size" : "2320x720"
20 | },
21 | {
22 | "filename" : "Top Shelf Image.imageset",
23 | "idiom" : "tv",
24 | "role" : "top-shelf-image",
25 | "size" : "1920x720"
26 | }
27 | ],
28 | "info" : {
29 | "author" : "xcode",
30 | "version" : 1
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/version.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | set -e
4 |
5 | VERSION_NAME=1.0.2
6 | VERSION_TARGET=$1
7 |
8 | echo "alter version to $VERSION_NAME"
9 |
10 | do_version_readme() {
11 | sed -i "" "s#\(.*releases/download/\)\([[:digit:]][[:digit:].]*\)\(/FSPlayer.spec.json\)#\1$VERSION_NAME\3#g" README.md
12 | }
13 |
14 | do_version_xcode() {
15 | sed -i "" "s/\([[:space:]]*MARKETING_VERSION:[[:space:]]\)[[:digit:].]*[[:digit:]]/\1$VERSION_NAME/g" FSPlayer.yml
16 | ./examples/ios/generate-fsplayer.sh
17 | ./examples/tvos/generate-fsplayer.sh
18 | ./examples/macos/generate-fsplayer.sh
19 | }
20 |
21 | if [ "$VERSION_TARGET" = "readme" ]; then
22 | do_version_readme
23 | elif [ "$VERSION_TARGET" = "show" ]; then
24 | echo $VERSION_NAME
25 | elif [ "$VERSION_TARGET" = "xcode" ]; then
26 | do_version_xcode
27 | else
28 | do_version_readme
29 | do_version_xcode
30 | fi
31 |
32 |
--------------------------------------------------------------------------------
/ijkmedia/ijksdl/metal/FSMetalFBO.h:
--------------------------------------------------------------------------------
1 | //
2 | // FSMetalFBO.h
3 | // FSPlayer
4 | //
5 | // Created by debugly on 2024/4/10.
6 | //
7 |
8 | #import
9 | #import
10 | #import
11 |
12 | NS_ASSUME_NONNULL_BEGIN
13 |
14 |
15 | @protocol MTLRenderCommandEncoder,MTLParallelRenderCommandEncoder,MTLCommandBuffer,MTLDevice;
16 |
17 | @interface FSMetalFBO : NSObject
18 |
19 | - (instancetype)init:(id)device
20 | size:(CGSize)targetSize;
21 |
22 | - (BOOL)canReuse:(CGSize)size;
23 | - (id)createRenderEncoder:(id)commandBuffer;
24 | - (id)createParallelRenderEncoder:(id)commandBuffer;
25 | - (CGSize)size;
26 | - (CVPixelBufferRef)pixelBuffer;
27 | - (id)texture;
28 |
29 | @end
30 |
31 | NS_ASSUME_NONNULL_END
32 |
--------------------------------------------------------------------------------
/examples/ios/FSPlayerDemo/ViewController/FSDemoLocalFolderViewController.h:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2015 Gdier
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | #import
18 |
19 | @interface FSDemoLocalFolderViewController : UITableViewController
20 |
21 | - (instancetype)initWithFolderPath:(NSString *)folderPath;
22 |
23 | @end
24 |
--------------------------------------------------------------------------------
/examples/ios/FSPlayerDemo/AppIcons.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "iphone",
5 | "size" : "29x29",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "iphone",
10 | "size" : "29x29",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "iphone",
15 | "size" : "40x40",
16 | "scale" : "2x"
17 | },
18 | {
19 | "idiom" : "iphone",
20 | "size" : "57x57",
21 | "scale" : "1x"
22 | },
23 | {
24 | "idiom" : "iphone",
25 | "size" : "57x57",
26 | "scale" : "2x"
27 | },
28 | {
29 | "idiom" : "iphone",
30 | "size" : "60x60",
31 | "scale" : "2x"
32 | },
33 | {
34 | "idiom" : "iphone",
35 | "size" : "60x60",
36 | "scale" : "3x"
37 | }
38 | ],
39 | "info" : {
40 | "version" : 1,
41 | "author" : "xcode"
42 | }
43 | }
--------------------------------------------------------------------------------
/examples/ios/FSPlayerDemo/Images.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "iphone",
5 | "size" : "29x29",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "iphone",
10 | "size" : "29x29",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "iphone",
15 | "size" : "40x40",
16 | "scale" : "2x"
17 | },
18 | {
19 | "idiom" : "iphone",
20 | "size" : "57x57",
21 | "scale" : "1x"
22 | },
23 | {
24 | "idiom" : "iphone",
25 | "size" : "57x57",
26 | "scale" : "2x"
27 | },
28 | {
29 | "idiom" : "iphone",
30 | "size" : "60x60",
31 | "scale" : "2x"
32 | },
33 | {
34 | "idiom" : "iphone",
35 | "size" : "60x60",
36 | "scale" : "3x"
37 | }
38 | ],
39 | "info" : {
40 | "version" : 1,
41 | "author" : "xcode"
42 | }
43 | }
--------------------------------------------------------------------------------
/examples/macos/FSPlayerMacDemo/ViewController/MRPlayerSettingsView.h:
--------------------------------------------------------------------------------
1 | //
2 | // MRPlayerSettingsView.h
3 | // FSPlayerMacDemo
4 | //
5 | // Created by debugly on 2024/5/16.
6 | // Copyright © 2024 FSPlayer Mac. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | NS_ASSUME_NONNULL_BEGIN
12 |
13 | @interface MRPlayerSettingsView : NSView
14 |
15 | - (void)exchangeToNextSubtitle;
16 |
17 | - (void)addAudioItemWithTitle:(NSString *)title;
18 | - (void)addVideoItemWithTitle:(NSString *)title;
19 | - (void)addSubtitleItemWithTitle:(NSString *)title;
20 |
21 | - (void)removeAllAudioItems;
22 | - (void)removeAllVideoItems;
23 | - (void)removeAllSubtileItems;
24 | - (void)removeAllItems;
25 |
26 | - (void)selectAudioItemWithTitle:(NSString *)title;
27 | - (void)selectVideoItemWithTitle:(NSString *)title;
28 | - (void)selectSubtitleItemWithTitle:(NSString *)title;
29 |
30 | @end
31 |
32 | NS_ASSUME_NONNULL_END
33 |
--------------------------------------------------------------------------------
/doc/preflight_checklist.md:
--------------------------------------------------------------------------------
1 | ChangeLog
2 | -----------------------
3 | * Update NEWS.md
4 | * Update README.md
5 | * Commit and push
6 |
7 | FFmpeg
8 | -----------------------
9 | * Build and test iOS and Android demo locally
10 | * Modify ffmpeg version in init-ios.sh and init-android.sh
11 | * Modify ffmpeg version in `IJKFFMoviePlayerController` (by running `sh init-ios.sh`)
12 | * Commit and push
13 |
14 | OpenSSL
15 | ----------------------
16 | * Check openssl latest stable version
17 |
18 | ijkplayer
19 | -----------------------
20 | * Update version.sh
21 | * Create a tag (subtitle)
22 | * Commit and push (TAG ONLY)
23 |
24 | Travis-ci
25 | -----------------------
26 | * Modify ijk version in `.travis.yaml` in iOS and Android ci repo.
27 | * Ensure compile task has been started on travis-ci.
28 | * Ensure Andoird release has been released in bintray.
29 |
30 | Take off
31 | -----------------------
32 | * Push master to github
33 |
--------------------------------------------------------------------------------
/examples/ios/FSPlayerDemo/ViewController/FSDemoSampleViewController.h:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2013-2015 Bilibili
3 | * Copyright (C) 2013-2015 Zhang Rui
4 | * Copyright (c) 2019 debugly
5 | *
6 | * Licensed under the Apache License, Version 2.0 (the "License");
7 | * you may not use this file except in compliance with the License.
8 | * You may obtain a copy of the License at
9 | *
10 | * http://www.apache.org/licenses/LICENSE-2.0
11 | *
12 | * Unless required by applicable law or agreed to in writing, software
13 | * distributed under the License is distributed on an "AS IS" BASIS,
14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 | * See the License for the specific language governing permissions and
16 | * limitations under the License.
17 | */
18 |
19 | #import
20 |
21 | @interface FSDemoSampleViewController : UIViewController
22 |
23 | @end
24 |
--------------------------------------------------------------------------------
/examples/macos/FSPlayerMacDemo/PrefixHeader.pch:
--------------------------------------------------------------------------------
1 | //
2 | // PrefixHeader.pch
3 | // FSPlayerMacDemo
4 | //
5 | // Created by debugly on 2022/2/24.
6 | // Copyright © 2022 FSPlayer Mac. All rights reserved.
7 | //
8 |
9 | #ifndef PrefixHeader_pch
10 | #define PrefixHeader_pch
11 |
12 | // Include any system framework and library headers here that should be included in all compilation units.
13 | // You will also need to set the Prefix Header build setting of one or more of your targets to reference this file.
14 |
15 | #ifndef __MRWS__
16 | #define __MRWS__
17 |
18 | #ifndef __weakSelf__
19 | #define __weakSelf__ __weak typeof(self)weakSelf = self;
20 | #endif
21 |
22 | #ifndef __strongSelf__
23 | #define __strongSelf__ __strong typeof(weakSelf)self = weakSelf;
24 | #endif
25 |
26 | #define __weakObj(obj) __weak typeof(obj)weak##obj = obj;
27 | #define __strongObj(obj) __strong typeof(weak##obj)obj = weak##obj;
28 |
29 | #endif
30 |
31 | #endif /* PrefixHeader_pch */
32 |
--------------------------------------------------------------------------------
/ijkmedia/ijkplayer/ff_version.c:
--------------------------------------------------------------------------------
1 | /*
2 | * ff_version.c
3 | *
4 | * Copyright (c) 2025 debugly
5 | *
6 | * This file is part of FSPlayer.
7 | *
8 | * FSPlayer is free software; you can redistribute it and/or
9 | * modify it under the terms of the GNU Lesser General Public
10 | * License as published by the Free Software Foundation; either
11 | * version 3 of the License, or (at your option) any later version.
12 | *
13 | * FSPlayer is distributed in the hope that it will be useful,
14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 | * Lesser General Public License for more details.
17 | *
18 | * You should have received a copy of the GNU Lesser General Public
19 | * License along with FSPlayer; if not, write to the Free Software
20 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
21 | */
22 |
23 | #include "ff_version.h"
24 |
--------------------------------------------------------------------------------
/ijkmedia/ijksdl/apple/ijk_vout_common.m:
--------------------------------------------------------------------------------
1 | /*
2 | * ijk_vout_common.m
3 | *
4 | * Copyright (c) 2023 debugly
5 | *
6 | * This file is part of FSPlayer.
7 | *
8 | * FSPlayer is free software; you can redistribute it and/or
9 | * modify it under the terms of the GNU Lesser General Public
10 | * License as published by the Free Software Foundation; either
11 | * version 3 of the License, or (at your option) any later version.
12 | *
13 | * FSPlayer is distributed in the hope that it will be useful,
14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 | * Lesser General Public License for more details.
17 | *
18 | * You should have received a copy of the GNU Lesser General Public
19 | * License along with FSPlayer; if not, write to the Free Software
20 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
21 | */
22 |
23 | #import "ijk_vout_common.h"
24 |
--------------------------------------------------------------------------------
/examples/xcframewrok/make-podspec.sh:
--------------------------------------------------------------------------------
1 | #! /usr/bin/env bash
2 | #
3 | # Copyright (C) 2024 Matt Reach
4 |
5 | # Licensed under the Apache License, Version 2.0 (the "License");
6 | # you may not use this file except in compliance with the License.
7 | # You may obtain a copy of the License at
8 | #
9 | # http://www.apache.org/licenses/LICENSE-2.0
10 | #
11 | # Unless required by applicable law or agreed to in writing, software
12 | # distributed under the License is distributed on an "AS IS" BASIS,
13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | # See the License for the specific language governing permissions and
15 | # limitations under the License.
16 |
17 | THIS_DIR=$(DIRNAME=$(dirname "$0"); cd "$DIRNAME"; pwd)
18 | cd "$THIS_DIR"
19 |
20 | set -e
21 | version=${1:-$(grep -m 1 VERSION_NAME= ../../version.sh | awk -F = '{printf "%s",$2}')}
22 |
23 | fn=FSPlayer.spec.json
24 | cat 'template.spec.json' \
25 | | sed "s/__VERSION__/${version}/" \
26 | > "${fn}"
--------------------------------------------------------------------------------
/ijkmedia/tools/mr_stream_peek.h:
--------------------------------------------------------------------------------
1 | //
2 | // mr_stream_peek.h
3 | //
4 | // FSPlayer not use the file, but the file will be used by other module in app.
5 | //
6 | // Created by debugly on 2023/9/7.
7 | //
8 |
9 | #ifndef mr_stream_peek_h
10 | #define mr_stream_peek_h
11 |
12 | #include
13 | typedef struct MRStreamPeeker MRStreamPeeker;
14 |
15 | int mr_stream_peek_create(MRStreamPeeker **peeker_out,int frameCacheCount);
16 | int mr_stream_peek_open_filepath(MRStreamPeeker *peeker, const char *file_name, int idx);
17 |
18 | int mr_stream_peek_get_opened_stream_idx(MRStreamPeeker *peeker);
19 | int mr_stream_peek_seek_to(MRStreamPeeker *peeker, float sec);
20 | int mr_stream_peek_get_data(MRStreamPeeker *peeker, unsigned char *buffer, int len, double * pts_begin, double * pts_end);
21 | int mr_stream_peek_close(MRStreamPeeker *peeker);
22 | void mr_stream_peek_destroy(MRStreamPeeker **peeker_out);
23 | int mr_stream_peek_get_buffer_size(int millisecond);
24 | int mr_stream_duration(MRStreamPeeker *peeker);
25 |
26 | #endif /* mr_stream_peek_h */
27 |
--------------------------------------------------------------------------------
/examples/ios/FSPlayerDemo/FSAppDelegate.h:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2013-2015 Bilibili
3 | * Copyright (C) 2013-2015 Zhang Rui
4 | * Copyright (c) 2019 debugly
5 | *
6 | * Licensed under the Apache License, Version 2.0 (the "License");
7 | * you may not use this file except in compliance with the License.
8 | * You may obtain a copy of the License at
9 | *
10 | * http://www.apache.org/licenses/LICENSE-2.0
11 | *
12 | * Unless required by applicable law or agreed to in writing, software
13 | * distributed under the License is distributed on an "AS IS" BASIS,
14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 | * See the License for the specific language governing permissions and
16 | * limitations under the License.
17 | */
18 |
19 | #import
20 |
21 | @interface FSAppDelegate : UIResponder
22 |
23 | @property (strong, nonatomic) UIWindow *window;
24 | @property (strong, nonatomic) UIViewController *viewController;
25 |
26 | @end
27 |
--------------------------------------------------------------------------------
/examples/macos/FSPlayerMacDemo/MRActionKit/MRActionProcessor.m:
--------------------------------------------------------------------------------
1 | //
2 | // MRActionProcessor.m
3 | // MRPlayer
4 | //
5 | // Created by debugly on 2019/8/5.
6 | // Copyright © 2022 debugly. All rights reserved.
7 | //
8 |
9 | #import "MRActionProcessor.h"
10 | #import "MRActionProcessorInternal.h"
11 |
12 | @implementation MRActionProcessor
13 |
14 | - (instancetype)initWithScheme:(NSString *)scheme
15 | {
16 | self = [super init];
17 | if (self) {
18 | self.scheme = scheme;
19 | }
20 | return self;
21 | }
22 |
23 | - (void)registerHandler:(MRActionHandler)handler forPath:(NSString *)path
24 | {
25 | NSParameterAssert(path);
26 | NSMutableDictionary *map = [NSMutableDictionary dictionaryWithCapacity:3];
27 | if (self.acitonHandlerMap) {
28 | [map addEntriesFromDictionary:self.acitonHandlerMap];
29 | }
30 |
31 | if (handler) {
32 | [map setObject:[handler copy] forKey:path];
33 | } else {
34 | [map removeObjectForKey:path];
35 | }
36 |
37 | self.acitonHandlerMap = [map copy];
38 | }
39 |
40 | @end
41 |
--------------------------------------------------------------------------------
/examples/ios/FSPlayerDemo/FSPlayerDemo.pch:
--------------------------------------------------------------------------------
1 | //
2 | // FSMediaMacDemo.pch
3 | // FSMediaMacDemo
4 | //
5 | // Created by debugly on 2022/2/24.
6 | // Copyright © 2022 FS Mac. All rights reserved.
7 | //
8 |
9 | #ifndef FSMediaMacDemo_pch
10 | #define FSMediaMacDemo_pch
11 |
12 | // Include any system framework and library headers here that should be included in all compilation units.
13 | // You will also need to set the Prefix Header build setting of one or more of your targets to reference this file.
14 |
15 | //#ifdef __OBJC__
16 | //#import
17 | //#import
18 | //#endif
19 |
20 |
21 | #ifndef __MRWS__
22 | #define __MRWS__
23 |
24 | #ifndef __weakSelf__
25 | #define __weakSelf__ __weak typeof(self)weakSelf = self;
26 | #endif
27 |
28 | #ifndef __strongSelf__
29 | #define __strongSelf__ __strong typeof(weakSelf)self = weakSelf;
30 | #endif
31 |
32 | #define __weakObj(obj) __weak typeof(obj)weak##obj = obj;
33 | #define __strongObj(obj) __strong typeof(weak##obj)obj = weak##obj;
34 |
35 | #endif
36 |
37 | #endif /* FSMediaMacDemo_pch */
38 |
--------------------------------------------------------------------------------
/ijkmedia/ijksdl/apple/ijksdl_thread_ios.h:
--------------------------------------------------------------------------------
1 | /*
2 | * ijksdl_thread_ios.h
3 | *
4 | * Copyright (c) 2013 Bilibili
5 | * Copyright (c) 2013 Zhang Rui
6 | * Copyright (c) 2019 debugly
7 | *
8 | * This file is part of FSPlayer.
9 | *
10 | * FSPlayer is free software; you can redistribute it and/or
11 | * modify it under the terms of the GNU Lesser General Public
12 | * License as published by the Free Software Foundation; either
13 | * version 3 of the License, or (at your option) any later version.
14 | *
15 | * FSPlayer is distributed in the hope that it will be useful,
16 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
17 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
18 | * Lesser General Public License for more details.
19 | *
20 | * You should have received a copy of the GNU Lesser General Public
21 | * License along with FSPlayer; if not, write to the Free Software
22 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
23 | */
24 |
25 | #import
26 |
--------------------------------------------------------------------------------
/examples/ios/FSPlayerDemo/Images.xcassets/LaunchImage.launchimage/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "orientation" : "portrait",
5 | "idiom" : "iphone",
6 | "filename" : "Default@2x.png",
7 | "minimum-system-version" : "7.0",
8 | "scale" : "2x"
9 | },
10 | {
11 | "orientation" : "portrait",
12 | "idiom" : "iphone",
13 | "filename" : "Default-568h@2x.png",
14 | "minimum-system-version" : "7.0",
15 | "subtype" : "retina4",
16 | "scale" : "2x"
17 | },
18 | {
19 | "orientation" : "portrait",
20 | "idiom" : "iphone",
21 | "filename" : "Default.png",
22 | "scale" : "1x"
23 | },
24 | {
25 | "orientation" : "portrait",
26 | "idiom" : "iphone",
27 | "filename" : "Default@2x.png",
28 | "scale" : "2x"
29 | },
30 | {
31 | "orientation" : "portrait",
32 | "idiom" : "iphone",
33 | "filename" : "Default-568h@2x.png",
34 | "subtype" : "retina4",
35 | "scale" : "2x"
36 | }
37 | ],
38 | "info" : {
39 | "version" : 1,
40 | "author" : "xcode"
41 | }
42 | }
--------------------------------------------------------------------------------
/ijkmedia/ijkplayer/ijkavformat/ijkioprotocol.h:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2016 Bilibili
3 | * Copyright (c) 2016 Raymond Zheng
4 | * Copyright (c) 2019 debugly
5 | *
6 | * This file is part of FSPlayer.
7 | *
8 | * FSPlayer is free software; you can redistribute it and/or
9 | * modify it under the terms of the GNU Lesser General Public
10 | * License as published by the Free Software Foundation; either
11 | * version 3 of the License, or (at your option) any later version.
12 | *
13 | * FSPlayer is distributed in the hope that it will be useful,
14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 | * Lesser General Public License for more details.
17 | *
18 | * You should have received a copy of the GNU Lesser General Public
19 | * License along with FSPlayer; if not, write to the Free Software
20 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
21 | */
22 | #include "ijkiourl.h"
23 |
24 | int ijkio_alloc_url(IjkURLContext **inner, const char *url);
25 |
--------------------------------------------------------------------------------
/examples/macos/FSPlayerMacDemo/MRUtil/NSFileManager+Sandbox.h:
--------------------------------------------------------------------------------
1 | //
2 | // NSFileManager+Sandbox.h
3 | // MRFoundation
4 | //
5 | // Created by debugly on 2019/11/5.
6 | //
7 | #import
8 |
9 | NS_ASSUME_NONNULL_BEGIN
10 | @interface NSFileManager (Sandbox)
11 |
12 |
13 | /// 创建文件夹,中间文件夹会自动创建
14 | /// @param aDir 文件夹路径
15 | /// @return some err
16 | + (NSError * _Nullable)mr_mkdirP:(NSString *)aDir;
17 |
18 | /// 先删除文件夹,然后再重新创建文件夹,中间文件夹会自动创建
19 | /// @param aDir 文件夹路径
20 | /// @return some err
21 | + (NSError * _Nullable)mr_rm_mkdirP:(NSString *)aDir;
22 |
23 | /// 沙河 目录下创建 path 目录
24 | /// @param directory 对应类型 path 相对于 directory 的目录
25 | /// @return 完整的路径
26 | + (NSString * _Nullable)mr_DirWithType:(NSSearchPathDirectory)directory
27 | WithPathComponent:(NSString *_Nullable)path;
28 |
29 | /// 沙河目录下创建 [path/path2/...] 目录
30 | /// @param directory 对应类型 pathArr 相对于 NSSearchPathDirectory 的目录数组
31 | /// @return 完整的路径
32 | + (NSString * _Nullable)mr_DirWithType:(NSSearchPathDirectory)directory
33 | WithPathComponents:(NSArray*_Nullable)pathArr;
34 |
35 | @end
36 | NS_ASSUME_NONNULL_END
37 |
--------------------------------------------------------------------------------
/examples/macos/FSPlayerMacDemo/MRUtil/MRUtil+SystemPanel.h:
--------------------------------------------------------------------------------
1 | //
2 | // MRUtil+SystemPanel.h
3 | // FSPlayerDemo
4 | //
5 | // Created by debugly on 2020/3/11.
6 | // Copyright © 2021 debugly.. All rights reserved.
7 | //
8 |
9 | #import "MRUtil.h"
10 |
11 | NS_ASSUME_NONNULL_BEGIN
12 |
13 | @interface MRUtil(SystemPanel)
14 |
15 | ///展示系统选择文件面板:可以选择单个视频,也可以选择文件夹
16 | + (NSArray *)showSystemChooseVideoPanalForLocal;
17 | ///展示系统选择文件面板;选择视频文件[{bookmark,url,type}]//type:0,movie;1,subtitle;
18 | + (NSArray *)showSystemChooseVideoPanel;
19 | ///展示系统选择文件面板;选择视频文件[{bookmark,url,type}]//type:0,movie;1,subtitle; 自动关联(下载、影片)文件夹
20 | + (NSArray *)showSystemChooseVideoPanelAutoScan;
21 | ///展示系统选择文件面板;选择视频、字幕文件[{bookmark,url,type}]//type:0,movie;1,subtitle
22 | + (NSArray *)showSystemChooseVideoPanel4Share;
23 | ///展示系统选择文件夹面板;
24 | + (NSArray *)showSystemChooseFolderPanel;
25 | ///递归扫描文件夹
26 | + (NSArray *)scanFolder:(NSURL *)url filter:(NSArray*)types;
27 | + (NSDictionary *)makeBookmarkWithURL:(NSURL *)url;
28 |
29 | @end
30 |
31 | NS_ASSUME_NONNULL_END
32 |
--------------------------------------------------------------------------------
/ijkmedia/ijksdl/metal/FSMetalSubtitlePipeline.h:
--------------------------------------------------------------------------------
1 | //
2 | // FSMetalSubtitlePipeline.h
3 | // FSPlayer
4 | //
5 | // Created by debugly on 2022/12/23.
6 | //
7 |
8 | @import MetalKit;
9 |
10 | NS_ASSUME_NONNULL_BEGIN
11 |
12 | typedef enum : NSUInteger {
13 | FSMetalSubtitleOutFormatDIRECT,
14 | FSMetalSubtitleOutFormatSWAP_RB
15 | } FSMetalSubtitleOutFormat;
16 |
17 | typedef enum : NSUInteger {
18 | FSMetalSubtitleInFormatBRGA,
19 | FSMetalSubtitleInFormatA8,
20 | } FSMetalSubtitleInFormat;
21 |
22 | API_AVAILABLE(macos(10.13),ios(11.0),tvos(12.0))
23 | @interface FSMetalSubtitlePipeline : NSObject
24 |
25 | - (instancetype)initWithDevice:(id)device
26 | inFormat:(FSMetalSubtitleInFormat)inFormat
27 | outFormat:(FSMetalSubtitleOutFormat)outFormat;
28 |
29 | - (BOOL)createRenderPipelineIfNeed;
30 | - (void)updateSubtitleVertexIfNeed:(CGRect)rect;
31 | - (void)drawTexture:(id)subTexture encoder:(id)encoder;
32 | - (void)drawTexture:(id)subTexture encoder:(id)encoder colors:(void *)colors;
33 |
34 | @end
35 |
36 | NS_ASSUME_NONNULL_END
37 |
--------------------------------------------------------------------------------
/ijkmedia/tools/mr_stream_component.h:
--------------------------------------------------------------------------------
1 | //
2 | // mr_stream_component.h
3 | //
4 | // FSPlayer not use the file, but the file will be used by other module in app.
5 | //
6 | // Created by debugly on 2023/9/7.
7 | //
8 |
9 | #ifndef mr_stream_component_h
10 | #define mr_stream_component_h
11 |
12 | #include
13 |
14 | typedef struct MRStreamComponent MRStreamComponent;
15 | typedef struct AVStream AVStream;
16 | typedef struct AVCodecContext AVCodecContext;
17 | typedef struct PacketQueue PacketQueue;
18 | typedef struct FrameQueue FrameQueue;
19 | typedef struct AVFormatContext AVFormatContext;
20 |
21 | //when hasn't ic, not support seek;
22 | int streamComponent_open(MRStreamComponent **scp, int stream_index, AVFormatContext* ic, AVCodecContext *avctx, PacketQueue* packetq, FrameQueue* frameq);
23 | int streamComponent_close(MRStreamComponent **scp);
24 | int streamComponent_get_stream(MRStreamComponent *sc);
25 | int streamComponent_seek_to(MRStreamComponent *sc, int sec);
26 | int streamComponent_get_pkt_serial(MRStreamComponent *sc);
27 | int streamComponent_eof_and_pkt_empty(MRStreamComponent *sc);
28 |
29 | #endif /* mr_stream_component_h */
30 |
--------------------------------------------------------------------------------
/ijkmedia/ijksdl/apple/ijksdl_ios.h:
--------------------------------------------------------------------------------
1 | /*
2 | * ijksdl_ios.h
3 | *
4 | * Copyright (c) 2013 Bilibili
5 | * Copyright (c) 2013 Zhang Rui
6 | * Copyright (c) 2019 debugly
7 | *
8 | * This file is part of FSPlayer.
9 | *
10 | * FSPlayer is free software; you can redistribute it and/or
11 | * modify it under the terms of the GNU Lesser General Public
12 | * License as published by the Free Software Foundation; either
13 | * version 3 of the License, or (at your option) any later version.
14 | *
15 | * FSPlayer is distributed in the hope that it will be useful,
16 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
17 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
18 | * Lesser General Public License for more details.
19 | *
20 | * You should have received a copy of the GNU Lesser General Public
21 | * License along with FSPlayer; if not, write to the Free Software
22 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
23 | */
24 |
25 | #include "../ijksdl.h"
26 | #include "ijksdl_aout_ios_audiounit.h"
27 | #import "ijksdl_vout_ios_gles2.h"
28 |
--------------------------------------------------------------------------------
/ijkmedia/ijksdl/apple/ijksdl_gpu_opengl_macos.h:
--------------------------------------------------------------------------------
1 | /*
2 | * ijksdl_gpu_opengl_macos.h
3 | *
4 | * Copyright (c) 2024 debugly
5 | *
6 | * This file is part of FSPlayer.
7 | *
8 | * FSPlayer is free software; you can redistribute it and/or
9 | * modify it under the terms of the GNU Lesser General Public
10 | * License as published by the Free Software Foundation; either
11 | * version 3 of the License, or (at your option) any later version.
12 | *
13 | * FSPlayer is distributed in the hope that it will be useful,
14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 | * Lesser General Public License for more details.
17 | *
18 | * You should have received a copy of the GNU Lesser General Public
19 | * License along with FSPlayer; if not, write to the Free Software
20 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
21 | */
22 |
23 | #import
24 |
25 | @class NSOpenGLContext;
26 | typedef struct SDL_GPU SDL_GPU;
27 |
28 | SDL_GPU *SDL_CreateGPU_WithGLContext(NSOpenGLContext * context);
29 |
--------------------------------------------------------------------------------
/examples/ios/FSPlayerDemo/ViewController/FSDemoHistory.h:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2015 Gdier
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | #import
18 |
19 | @interface FSDemoHistoryItem : NSObject
20 |
21 | @property(nonatomic,strong) NSString *title;
22 | @property(nonatomic,strong) NSURL *url;
23 |
24 | @end
25 |
26 | @interface FSDemoHistory : NSObject
27 |
28 | + (instancetype)instance;
29 |
30 | @property(nonatomic,strong,readonly) NSArray *list;
31 |
32 | - (void)removeAtIndex:(NSUInteger)index;
33 | - (void)add:(FSDemoHistoryItem *)item;
34 |
35 | @end
36 |
--------------------------------------------------------------------------------
/ijkmedia/ijksdl/apple/ijksdl_aout_ios_audiounit.h:
--------------------------------------------------------------------------------
1 | /*
2 | * ijksdl_aout_ios_audiounit.h
3 | *
4 | * Copyright (c) 2013 Bilibili
5 | * Copyright (c) 2013 Zhang Rui
6 | * Copyright (c) 2019 debugly
7 | *
8 | * This file is part of FSPlayer.
9 | *
10 | * FSPlayer is free software; you can redistribute it and/or
11 | * modify it under the terms of the GNU Lesser General Public
12 | * License as published by the Free Software Foundation; either
13 | * version 3 of the License, or (at your option) any later version.
14 | *
15 | * FSPlayer is distributed in the hope that it will be useful,
16 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
17 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
18 | * Lesser General Public License for more details.
19 | *
20 | * You should have received a copy of the GNU Lesser General Public
21 | * License along with FSPlayer; if not, write to the Free Software
22 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
23 | */
24 |
25 | #include "ijksdl/ijksdl_aout.h"
26 |
27 | SDL_Aout *SDL_AoutIos_CreateForAudioUnit(void);
28 |
--------------------------------------------------------------------------------
/examples/ios/FSPlayerDemo/ViewController/FSCommon.h:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2013-2015 Bilibili
3 | * Copyright (C) 2013-2015 Zhang Rui
4 | * Copyright (c) 2019 debugly
5 | *
6 | * Licensed under the Apache License, Version 2.0 (the "License");
7 | * you may not use this file except in compliance with the License.
8 | * You may obtain a copy of the License at
9 | *
10 | * http://www.apache.org/licenses/LICENSE-2.0
11 | *
12 | * Unless required by applicable law or agreed to in writing, software
13 | * distributed under the License is distributed on an "AS IS" BASIS,
14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 | * See the License for the specific language governing permissions and
16 | * limitations under the License.
17 | */
18 |
19 | #import
20 |
21 | #define IOS_OLDER_THAN_6 ( [ [ [ UIDevice currentDevice ] systemVersion ] floatValue ] < 6.0 )
22 | #define IOS_NEWER_OR_EQUAL_TO_6 ( [ [ [ UIDevice currentDevice ] systemVersion ] floatValue ] >= 6.0 )
23 | #define IOS_NEWER_OR_EQUAL_TO_7 ( [ [ [ UIDevice currentDevice ] systemVersion ] floatValue ] >= 7.0 )
24 |
--------------------------------------------------------------------------------
/ijkmedia/ijksdl/apple/ijksdl_gpu_metal.h:
--------------------------------------------------------------------------------
1 | /*
2 | * ijksdl_gpu_metal.h
3 | *
4 | * Copyright (c) 2024 debugly
5 | *
6 | * This file is part of FSPlayer.
7 | *
8 | * FSPlayer is free software; you can redistribute it and/or
9 | * modify it under the terms of the GNU Lesser General Public
10 | * License as published by the Free Software Foundation; either
11 | * version 3 of the License, or (at your option) any later version.
12 | *
13 | * FSPlayer is distributed in the hope that it will be useful,
14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 | * Lesser General Public License for more details.
17 | *
18 | * You should have received a copy of the GNU Lesser General Public
19 | * License along with FSPlayer; if not, write to the Free Software
20 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
21 | */
22 |
23 | #import
24 |
25 | @protocol MTLDevice;
26 | typedef struct SDL_GPU SDL_GPU;
27 |
28 | API_AVAILABLE(macos(10.13),ios(11.0),tvos(12.0))
29 | SDL_GPU *SDL_CreateGPU_WithMTLDevice(iddevice);
30 |
--------------------------------------------------------------------------------
/ijkmedia/ijksdl/mac/FSSDLGLView.h:
--------------------------------------------------------------------------------
1 | /*
2 | * FSSDLGLView.h
3 | *
4 | * Copyright (c) 2013 Bilibili
5 | * Copyright (c) 2013 Zhang Rui
6 | * Copyright (c) 2019 debugly
7 | *
8 | * based on https://github.com/kolyvan/kxmovie
9 | *
10 | * This file is part of FSPlayer.
11 | *
12 | * FSPlayer is free software; you can redistribute it and/or
13 | * modify it under the terms of the GNU Lesser General Public
14 | * License as published by the Free Software Foundation; either
15 | * version 3 of the License, or (at your option) any later version.
16 | *
17 | * FSPlayer is distributed in the hope that it will be useful,
18 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
19 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
20 | * Lesser General Public License for more details.
21 | *
22 | * You should have received a copy of the GNU Lesser General Public
23 | * License along with FSPlayer; if not, write to the Free Software
24 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
25 | */
26 |
27 | #import "FSVideoRenderingProtocol.h"
28 |
29 | @interface FSSDLGLView : NSOpenGLView
30 |
31 | @end
32 |
--------------------------------------------------------------------------------
/ijkmedia/ijkplayer/ijkavformat/ijkavformat.h:
--------------------------------------------------------------------------------
1 | /*
2 | * ijkavformat.h
3 | *
4 | * Copyright (c) 2003 Bilibili
5 | * Copyright (c) 2003 Fabrice Bellard
6 | * Copyright (c) 2013 Zhang Rui
7 | * Copyright (c) 2019 debugly
8 | *
9 | * This file is part of FSPlayer.
10 | *
11 | * FSPlayer is free software; you can redistribute it and/or
12 | * modify it under the terms of the GNU Lesser General Public
13 | * License as published by the Free Software Foundation; either
14 | * version 3 of the License, or (at your option) any later version.
15 | *
16 | * FSPlayer is distributed in the hope that it will be useful,
17 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
19 | * Lesser General Public License for more details.
20 | *
21 | * You should have received a copy of the GNU Lesser General Public
22 | * License along with FSPlayer; if not, write to the Free Software
23 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
24 | */
25 |
26 | #ifndef AVFORMAT_IJKAVFORMAT_H
27 | #define AVFORMAT_IJKAVFORMAT_H
28 |
29 | #define AV_PKT_FLAG_DISCONTINUITY 0x0100
30 |
31 | #endif
32 |
--------------------------------------------------------------------------------
/ijkmedia/ijkplayer/apple/pipeline/ffpipeline_ios.h:
--------------------------------------------------------------------------------
1 | /*
2 | * ffpipeline_ios.h
3 | *
4 | * Copyright (c) 2014 Zhou Quan
5 | * Copyright (c) 2019 debugly
6 | *
7 | * This file is part of FSPlayer.
8 | *
9 | * FSPlayer is free software; you can redistribute it and/or
10 | * modify it under the terms of the GNU Lesser General Public
11 | * License as published by the Free Software Foundation; either
12 | * version 3 of the License, or (at your option) any later version.
13 | *
14 | * FSPlayer is distributed in the hope that it will be useful,
15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17 | * Lesser General Public License for more details.
18 | *
19 | * You should have received a copy of the GNU Lesser General Public
20 | * License along with FSPlayer; if not, write to the Free Software
21 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
22 | */
23 |
24 | #ifndef FFPLAY__FF_FFPIPELINE_IOS_H
25 | #define FFPLAY__FF_FFPIPELINE_IOS_H
26 |
27 | #include "ijkplayer/ff_ffpipeline.h"
28 |
29 | struct FFPlayer;
30 |
31 | FS_Pipeline *ffpipeline_create_from_ios(struct FFPlayer *ffp);
32 |
33 | #endif
34 |
--------------------------------------------------------------------------------
/ijkmedia/ijksdl/metal/FSMetalRenderer.h:
--------------------------------------------------------------------------------
1 | //
2 | // FSMetalRenderer.h
3 | // FFmpegTutorial-macOS
4 | //
5 | // Created by debugly on 2022/11/23.
6 | // Copyright © 2022 debugly's Awesome FFmpeg Tutotial. All rights reserved.
7 | //
8 |
9 | @import MetalKit;
10 | #import "FSMetalShaderTypes.h"
11 |
12 | NS_ASSUME_NONNULL_BEGIN
13 | NS_CLASS_AVAILABLE(10_13, 11_0)
14 | @interface FSMetalRenderer : NSObject
15 |
16 | @property (nonatomic, assign) float rotateDegrees;
17 | @property (nonatomic, assign) int rotateType;//x:1,y:2,z:3
18 | @property (nonatomic, assign) float autoZRotateDegrees;
19 | @property (nonatomic, assign) CGSize vertexRatio;
20 | @property (nonatomic, assign) CGSize textureCrop;
21 | //非HDR视频设置无效
22 | @property (nonatomic, assign) float hdrPercentage;
23 |
24 | - (BOOL)isHDR;
25 | - (instancetype)initWithDevice:(id)device
26 | colorPixelFormat:(MTLPixelFormat)colorPixelFormat;
27 |
28 | - (BOOL)matchPixelBuffer:(CVPixelBufferRef)pixelBuffer;
29 | - (void)updateColorAdjustment:(vector_float4)c;
30 |
31 | - (BOOL)createRenderPipelineIfNeed:(CVPixelBufferRef)pixelBuffer blend:(BOOL)blend;
32 | - (void)uploadTextureWithEncoder:(id)encoder
33 | textures:(NSArray*)textures;
34 | @end
35 |
36 | NS_ASSUME_NONNULL_END
37 |
--------------------------------------------------------------------------------
/CHANGELOG.md:
--------------------------------------------------------------------------------
1 | tag 1.0.3
2 | --------------------------------
3 |
4 | - rename subtitle option to subtitle_mix
5 | - support custom audio rendering
6 | - support get video-master diff
7 | - add libwebp decoder
8 | - add webp demuxer for animated webp images
9 | - fix removeFromSuperview triggered reshape crash when use OpenGL backend
10 | - fix the display of PNG images with transparency channels
11 |
12 | tag 1.0.2
13 | --------------------------------
14 |
15 | - upgrade FFmpeg to 7.1.1
16 | - upgrade openssl to 3.5.0
17 | - add dvdnav dependency
18 | - fix some hls/ts can’t use videotoolbox accel bug
19 | - fix shutdown crash when use OpenGL backend
20 | - fix snapshot not keep video rational bug when use metal backend
21 |
22 | tag 1.0.1
23 | --------------------------------
24 |
25 | - fix dash file error "unterminated entity reference" #7
26 | - example abandon CocoaPods
27 | - support choose audio channel(left,right,stereo)
28 | - support fast record video
29 | - fix metal maybe display pink frame bug
30 |
31 | tag 1.0.0
32 | --------------------------------
33 |
34 | - use FFmpeg n6.1.1
35 | - the bdmv detection time is saved and detection in read_thread
36 | - fix opengl display first PIX_FMT_PAL8 subtitle bug
37 | - fix ijkio eof bug
38 | - max-buffer-size increate to 500MB
39 | - fix ass subtitle bottom margin bug
40 |
--------------------------------------------------------------------------------
/ijkmedia/ijksdl/ijksdl_inc_internal.h:
--------------------------------------------------------------------------------
1 | /*
2 | * ijksdl_inc_internal.h
3 | *
4 | * Copyright (c) 2013 Bilibili
5 | * Copyright (c) 2013 Zhang Rui
6 | * Copyright (c) 2019 debugly
7 | *
8 | * This file is part of FSPlayer.
9 | *
10 | * FSPlayer is free software; you can redistribute it and/or
11 | * modify it under the terms of the GNU Lesser General Public
12 | * License as published by the Free Software Foundation; either
13 | * version 3 of the License, or (at your option) any later version.
14 | *
15 | * FSPlayer is distributed in the hope that it will be useful,
16 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
17 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
18 | * Lesser General Public License for more details.
19 | *
20 | * You should have received a copy of the GNU Lesser General Public
21 | * License along with FSPlayer; if not, write to the Free Software
22 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
23 | */
24 |
25 | #ifndef FSPLAYER__IJKSDL_INC_INTERNAL_H
26 | #define FSPLAYER__IJKSDL_INC_INTERNAL_H
27 |
28 | #include
29 |
30 | #include "ijksdl_log.h"
31 | #include "ijksdl_misc.h"
32 | #include "ijksdl_stdinc.h"
33 |
34 | #define SDLTRACE ALOGD
35 |
36 | #endif
37 |
--------------------------------------------------------------------------------
/ijkmedia/ijksdl/ijksdl_stdinc.c:
--------------------------------------------------------------------------------
1 | /*****************************************************************************
2 | * ijksdl_stdinc.c
3 | *****************************************************************************
4 | *
5 | * Copyright (c) 2013 Bilibili
6 | * Copyright (c) 2013 Zhang Rui
7 | * Copyright (c) 2019 debugly
8 | *
9 | * This file is part of FSPlayer.
10 | *
11 | * FSPlayer is free software; you can redistribute it and/or
12 | * modify it under the terms of the GNU Lesser General Public
13 | * License as published by the Free Software Foundation; either
14 | * version 3 of the License, or (at your option) any later version.
15 | *
16 | * FSPlayer is distributed in the hope that it will be useful,
17 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
19 | * Lesser General Public License for more details.
20 | *
21 | * You should have received a copy of the GNU Lesser General Public
22 | * License along with FSPlayer; if not, write to the Free Software
23 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
24 | */
25 |
26 | #include "ijksdl_stdinc.h"
27 |
28 | char *SDL_getenv(const char *name)
29 | {
30 | return NULL;
31 | }
32 |
33 |
--------------------------------------------------------------------------------
/ijkmedia/ijkplayer/pipeline/ffpipeline_ffplay.h:
--------------------------------------------------------------------------------
1 | /*
2 | * ffpipeline_ffplay.h
3 | *
4 | * Copyright (c) 2014 Bilibili
5 | * Copyright (c) 2014 Zhang Rui
6 | * Copyright (c) 2019 debugly
7 | *
8 | * This file is part of FSPlayer.
9 | *
10 | * FSPlayer is free software; you can redistribute it and/or
11 | * modify it under the terms of the GNU Lesser General Public
12 | * License as published by the Free Software Foundation; either
13 | * version 3 of the License, or (at your option) any later version.
14 | *
15 | * FSPlayer is distributed in the hope that it will be useful,
16 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
17 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
18 | * Lesser General Public License for more details.
19 | *
20 | * You should have received a copy of the GNU Lesser General Public
21 | * License along with FSPlayer; if not, write to the Free Software
22 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
23 | */
24 |
25 | #ifndef FFPLAY__FF_FFPIPELINE_FFPLAY_H
26 | #define FFPLAY__FF_FFPIPELINE_FFPLAY_H
27 |
28 | #include "../ff_ffpipeline.h"
29 |
30 | // There is no default aout for ffplay.
31 | // FS_Pipeline *ffpipeline_create_from_ffplay(FFPlayer *ffp);
32 |
33 | #endif
34 |
--------------------------------------------------------------------------------
/ijkmedia/ijksdl/ijksdl_error.h:
--------------------------------------------------------------------------------
1 | /*****************************************************************************
2 | * ijksdl_error.h
3 | *****************************************************************************
4 | *
5 | * Copyright (c) 2013 Bilibili
6 | * Copyright (c) 2013 Zhang Rui
7 | * Copyright (c) 2019 debugly
8 | *
9 | * This file is part of FSPlayer.
10 | *
11 | * FSPlayer is free software; you can redistribute it and/or
12 | * modify it under the terms of the GNU Lesser General Public
13 | * License as published by the Free Software Foundation; either
14 | * version 3 of the License, or (at your option) any later version.
15 | *
16 | * FSPlayer is distributed in the hope that it will be useful,
17 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
19 | * Lesser General Public License for more details.
20 | *
21 | * You should have received a copy of the GNU Lesser General Public
22 | * License along with FSPlayer; if not, write to the Free Software
23 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
24 | */
25 |
26 | #ifndef FSSDL__IJKSDL_ERROR_H
27 | #define FSSDL__IJKSDL_ERROR_H
28 |
29 | const char *SDL_GetError(void);
30 |
31 | #endif
32 |
--------------------------------------------------------------------------------
/ijkmedia/ijkplayer/ff_fferror.h:
--------------------------------------------------------------------------------
1 | /*
2 | * ff_fferror.h
3 | *
4 | * Copyright (c) 2003 Bilibili
5 | * Copyright (c) 2003 Fabrice Bellard
6 | * Copyright (c) 2013 Zhang Rui
7 | * Copyright (c) 2019 debugly
8 | *
9 | * This file is part of FSPlayer.
10 | *
11 | * FSPlayer is free software; you can redistribute it and/or
12 | * modify it under the terms of the GNU Lesser General Public
13 | * License as published by the Free Software Foundation; either
14 | * version 3 of the License, or (at your option) any later version.
15 | *
16 | * FSPlayer is distributed in the hope that it will be useful,
17 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
19 | * Lesser General Public License for more details.
20 | *
21 | * You should have received a copy of the GNU Lesser General Public
22 | * License along with FSPlayer; if not, write to the Free Software
23 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
24 | */
25 |
26 | #ifndef FFPLAY__FF_FFERROR_H
27 | #define FFPLAY__FF_FFERROR_H
28 |
29 | #define EIJK_FAILED -1
30 | #define EIJK_OUT_OF_MEMORY -2
31 | #define EIJK_INVALID_STATE -3
32 | #define EIJK_NULL_IS_PTR -4
33 |
34 | #endif
35 |
--------------------------------------------------------------------------------
/ijkmedia/ijksdl/apple/FSSDLAudioUnitController.h:
--------------------------------------------------------------------------------
1 | /*
2 | * FSSDLAudioUnitController.h
3 | *
4 | * Copyright (c) 2013 Bilibili
5 | * Copyright (c) 2013 Zhang Rui
6 | * Copyright (c) 2019 debugly
7 | *
8 | * based on https://github.com/kolyvan/kxmovie
9 | *
10 | * This file is part of FSPlayer.
11 | *
12 | * FSPlayer is free software; you can redistribute it and/or
13 | * modify it under the terms of the GNU Lesser General Public
14 | * License as published by the Free Software Foundation; either
15 | * version 3 of the License, or (at your option) any later version.
16 | *
17 | * FSPlayer is distributed in the hope that it will be useful,
18 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
19 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
20 | * Lesser General Public License for more details.
21 | *
22 | * You should have received a copy of the GNU Lesser General Public
23 | * License along with FSPlayer; if not, write to the Free Software
24 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
25 | */
26 |
27 | #import "FSAudioRenderingProtocol.h"
28 |
29 | @interface FSSDLAudioUnitController : NSObject
30 |
31 | @property (nonatomic, readonly) FSAudioSpec * spec;
32 |
33 | @end
34 |
--------------------------------------------------------------------------------
/ijkmedia/ijksdl/apple/ijk_vout_common.h:
--------------------------------------------------------------------------------
1 | /*
2 | * ijk_vout_common.h
3 | *
4 | * Copyright (c) 2023 debugly
5 | *
6 | * This file is part of FSPlayer.
7 | *
8 | * FSPlayer is free software; you can redistribute it and/or
9 | * modify it under the terms of the GNU Lesser General Public
10 | * License as published by the Free Software Foundation; either
11 | * version 3 of the License, or (at your option) any later version.
12 | *
13 | * FSPlayer is distributed in the hope that it will be useful,
14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 | * Lesser General Public License for more details.
17 | *
18 | * You should have received a copy of the GNU Lesser General Public
19 | * License along with FSPlayer; if not, write to the Free Software
20 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
21 | */
22 |
23 | #ifndef FSSDL__IJKSDL_VOUT_COMMON_H
24 | #define FSSDL__IJKSDL_VOUT_COMMON_H
25 |
26 | #define FS_TransferFunction_ITU_R_2100_HLG CFSTR("ITU_R_2100_HLG")
27 | #define FS_TransferFunction_SMPTE_ST_2084_PQ CFSTR("SMPTE_ST_2084_PQ")
28 | #define FS_TransferFunction_SMPTE_ST_428_1 CFSTR("SMPTE_ST_428_1")
29 | #define FS_TransferFunction_Linear CFSTR("Linear")
30 |
31 | #endif
32 |
--------------------------------------------------------------------------------
/ijkmedia/ijksdl/ijksdl_error.c:
--------------------------------------------------------------------------------
1 | /*****************************************************************************
2 | * ijksdl_error.c
3 | *****************************************************************************
4 | *
5 | * Copyright (c) 2013 Bilibili
6 | * Copyright (c) 2013 Zhang Rui
7 | * Copyright (c) 2019 debugly
8 | *
9 | * This file is part of FSPlayer.
10 | *
11 | * FSPlayer is free software; you can redistribute it and/or
12 | * modify it under the terms of the GNU Lesser General Public
13 | * License as published by the Free Software Foundation; either
14 | * version 3 of the License, or (at your option) any later version.
15 | *
16 | * FSPlayer is distributed in the hope that it will be useful,
17 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
19 | * Lesser General Public License for more details.
20 | *
21 | * You should have received a copy of the GNU Lesser General Public
22 | * License along with FSPlayer; if not, write to the Free Software
23 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
24 | */
25 |
26 | #include "ijksdl_error.h"
27 | #include "ijksdl_stdinc.h"
28 |
29 | const char *SDL_GetError(void)
30 | {
31 | return NULL;
32 | }
33 |
--------------------------------------------------------------------------------
/ijkmedia/ijkplayer/pipeline/ffpipenode_ffplay_vdec.h:
--------------------------------------------------------------------------------
1 | /*
2 | * ffpipenode_ffplay_vdec.h
3 | *
4 | * Copyright (c) 2014 Bilibili
5 | * Copyright (c) 2014 Zhang Rui
6 | * Copyright (c) 2019 debugly
7 | *
8 | * This file is part of FSPlayer.
9 | *
10 | * FSPlayer is free software; you can redistribute it and/or
11 | * modify it under the terms of the GNU Lesser General Public
12 | * License as published by the Free Software Foundation; either
13 | * version 3 of the License, or (at your option) any later version.
14 | *
15 | * FSPlayer is distributed in the hope that it will be useful,
16 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
17 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
18 | * Lesser General Public License for more details.
19 | *
20 | * You should have received a copy of the GNU Lesser General Public
21 | * License along with FSPlayer; if not, write to the Free Software
22 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
23 | */
24 |
25 | #ifndef FFPLAY__FF_FFPIPENODE_FFPLAY_VDEC_H
26 | #define FFPLAY__FF_FFPIPENODE_FFPLAY_VDEC_H
27 |
28 | #include "ff_ffpipenode.h"
29 |
30 | struct FFPlayer;
31 |
32 | FS_Pipenode *ffpipenode_create_video_decoder_from_ffplay(struct FFPlayer *ffp);
33 |
34 | #endif
35 |
--------------------------------------------------------------------------------
/ijkmedia/wrapper/apple/FSAudioRendering.h:
--------------------------------------------------------------------------------
1 | /*
2 | * FSAudioRendering.h
3 | *
4 | * Copyright (c) 2023 debugly
5 | *
6 | * This file is part of FSPlayer.
7 | *
8 | * FSPlayer is free software; you can redistribute it and/or
9 | * modify it under the terms of the GNU Lesser General Public
10 | * License as published by the Free Software Foundation; either
11 | * version 3 of the License, or (at your option) any later version.
12 | *
13 | * FSPlayer is distributed in the hope that it will be useful,
14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 | * Lesser General Public License for more details.
17 | *
18 | * You should have received a copy of the GNU Lesser General Public
19 | * License along with FSPlayer; if not, write to the Free Software
20 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
21 | */
22 |
23 | // you can use below mthods, create ijk internal render view.
24 |
25 | #import
26 |
27 | NS_ASSUME_NONNULL_BEGIN
28 |
29 | @interface FSAudioRendering : NSObject
30 |
31 | + (id)createAudioUnitRendering;
32 | + (id)createAudioQueueRendering;
33 |
34 | @end
35 |
36 | NS_ASSUME_NONNULL_END
37 |
--------------------------------------------------------------------------------
/ijkmedia/ijksdl/ijksdl_video.h:
--------------------------------------------------------------------------------
1 | /*****************************************************************************
2 | * ijksdl_video.h
3 | *****************************************************************************
4 | *
5 | * Copyright (c) 2013 Bilibili
6 | * Copyright (c) 2013 Zhang Rui
7 | * Copyright (c) 2019 debugly
8 | *
9 | * This file is part of FSPlayer.
10 | *
11 | * FSPlayer is free software; you can redistribute it and/or
12 | * modify it under the terms of the GNU Lesser General Public
13 | * License as published by the Free Software Foundation; either
14 | * version 3 of the License, or (at your option) any later version.
15 | *
16 | * FSPlayer is distributed in the hope that it will be useful,
17 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
19 | * Lesser General Public License for more details.
20 | *
21 | * You should have received a copy of the GNU Lesser General Public
22 | * License along with FSPlayer; if not, write to the Free Software
23 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
24 | */
25 |
26 | #ifndef FSSDL__IJKSDL_VIDEO_H
27 | #define FSSDL__IJKSDL_VIDEO_H
28 |
29 | #include "ijksdl_stdinc.h"
30 | #include "ijksdl_fourcc.h"
31 |
32 | #endif
33 |
--------------------------------------------------------------------------------
/ijkmedia/ijksdl/ijksdl_class.h:
--------------------------------------------------------------------------------
1 | /*****************************************************************************
2 | * ijksdl_class.h
3 | *****************************************************************************
4 | *
5 | * Copyright (c) 2013 Bilibili
6 | * Copyright (c) 2013 Zhang Rui
7 | * Copyright (c) 2019 debugly
8 | *
9 | * This file is part of FSPlayer.
10 | *
11 | * FSPlayer is free software; you can redistribute it and/or
12 | * modify it under the terms of the GNU Lesser General Public
13 | * License as published by the Free Software Foundation; either
14 | * version 3 of the License, or (at your option) any later version.
15 | *
16 | * FSPlayer is distributed in the hope that it will be useful,
17 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
19 | * Lesser General Public License for more details.
20 | *
21 | * You should have received a copy of the GNU Lesser General Public
22 | * License along with FSPlayer; if not, write to the Free Software
23 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
24 | */
25 |
26 | #ifndef FSSDL__IJKSDL_CLASS_H
27 | #define FSSDL__IJKSDL_CLASS_H
28 |
29 | typedef struct SDL_Class {
30 | const char *name;
31 | } SDL_Class;
32 |
33 | #endif
34 |
--------------------------------------------------------------------------------
/examples/macos/FSPlayerMacDemo/ViewController/MultiRenderSample.xib:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/ijkmedia/ijksdl/apple/FSSDLAudioQueueController.h:
--------------------------------------------------------------------------------
1 | /*
2 | * FSSDLAudioQueueController.h
3 | *
4 | * Copyright (c) 2013-2014 Bilibili
5 | * Copyright (c) 2013-2014 Zhang Rui
6 | * Copyright (c) 2019 debugly
7 | *
8 | * based on https://github.com/kolyvan/kxmovie
9 | *
10 | * This file is part of FSPlayer.
11 | *
12 | * FSPlayer is free software; you can redistribute it and/or
13 | * modify it under the terms of the GNU Lesser General Public
14 | * License as published by the Free Software Foundation; either
15 | * version 3 of the License, or (at your option) any later version.
16 | *
17 | * FSPlayer is distributed in the hope that it will be useful,
18 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
19 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
20 | * Lesser General Public License for more details.
21 | *
22 | * You should have received a copy of the GNU Lesser General Public
23 | * License along with FSPlayer; if not, write to the Free Software
24 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
25 | */
26 |
27 | #import
28 | #import "FSAudioRenderingProtocol.h"
29 |
30 | @interface FSSDLAudioQueueController : NSObject
31 |
32 | @property (nonatomic, readonly) FSAudioSpec * spec;
33 |
34 | @end
35 |
--------------------------------------------------------------------------------
/ijkmedia/wrapper/apple/FSMediaModule.h:
--------------------------------------------------------------------------------
1 | /*
2 | * FSMediaModule.h
3 | *
4 | * Copyright (c) 2013 Bilibili
5 | * Copyright (c) 2013 Zhang Rui
6 | * Copyright (c) 2019 debugly
7 | *
8 | * This file is part of FSPlayer.
9 | *
10 | * FSPlayer is free software; you can redistribute it and/or
11 | * modify it under the terms of the GNU Lesser General Public
12 | * License as published by the Free Software Foundation; either
13 | * version 3 of the License, or (at your option) any later version.
14 | *
15 | * FSPlayer is distributed in the hope that it will be useful,
16 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
17 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
18 | * Lesser General Public License for more details.
19 | *
20 | * You should have received a copy of the GNU Lesser General Public
21 | * License along with FSPlayer; if not, write to the Free Software
22 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
23 | */
24 |
25 | #import
26 |
27 | @interface FSMediaModule : NSObject
28 |
29 | + (FSMediaModule *)sharedModule;
30 |
31 | @property(atomic, getter=isAppIdleTimerDisabled) BOOL appIdleTimerDisabled;
32 | @property(atomic, getter=isMediaModuleIdleTimerDisabled) BOOL mediaModuleIdleTimerDisabled;
33 |
34 | @end
35 |
--------------------------------------------------------------------------------
/examples/macos/FSPlayerMacDemo/CustomView/SHBaseView.h:
--------------------------------------------------------------------------------
1 | //
2 | // AppDelegate.h
3 | // FSPlayerDemo
4 | //
5 | // Created by debugly on 2021/12/01.
6 | // Copyright © 2021 debugly. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @class SHBaseView;
12 | @protocol SHBaseViewDelegate
13 | @optional;
14 | - (void)baseView:(SHBaseView *)baseView mouseEntered:(NSEvent *)event;
15 | - (void)baseView:(SHBaseView *)baseView mouseExited:(NSEvent *)event;
16 | - (void)baseView:(SHBaseView *)baseView mouseMoved:(NSEvent *)event;
17 | - (void)baseView:(SHBaseView *)baseView mouseDown:(NSEvent *)event;
18 | - (void)baseView:(SHBaseView *)baseView mouseUp:(NSEvent *)event;
19 | - (void)baseView:(SHBaseView *)baseView mouseDragged:(NSEvent *)theEvent;
20 | - (BOOL)baseView:(SHBaseView *)baseView cursorNeedUpdate:(NSEvent *)event;
21 |
22 | @end
23 |
24 | @interface SHBaseView : NSView
25 |
26 | @property (strong, nonatomic) IBInspectable NSColor *backgroundColor;
27 | @property (weak) IBOutlet id delegate;
28 | //default is YES;
29 | @property (assign, nonatomic) IBInspectable BOOL userInteraction;
30 | //default is NO;
31 | @property (assign, nonatomic) IBInspectable BOOL needTracking;
32 | @property (copy, nonatomic) NSString *name;
33 | @property (nonatomic, assign) NSEdgeInsets inset;
34 | @property (readwrite) IBInspectable NSInteger tag;
35 |
36 | @end
37 |
--------------------------------------------------------------------------------
/ijkmedia/ijksdl/apple/ijksdl_gpu_opengl_fbo_macos.h:
--------------------------------------------------------------------------------
1 | /*
2 | * ijksdl_gpu_opengl_fbo_macos.h
3 | *
4 | * Copyright (c) 2024 debugly
5 | *
6 | * This file is part of FSPlayer.
7 | *
8 | * FSPlayer is free software; you can redistribute it and/or
9 | * modify it under the terms of the GNU Lesser General Public
10 | * License as published by the Free Software Foundation; either
11 | * version 3 of the License, or (at your option) any later version.
12 | *
13 | * FSPlayer is distributed in the hope that it will be useful,
14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 | * Lesser General Public License for more details.
17 | *
18 | * You should have received a copy of the GNU Lesser General Public
19 | * License along with FSPlayer; if not, write to the Free Software
20 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
21 | */
22 |
23 | #import
24 |
25 | NS_ASSUME_NONNULL_BEGIN
26 |
27 | @protocol FSSDLSubtitleTextureWrapper;
28 | @interface FSSDLOpenGLFBO : NSObject
29 |
30 | @property(nonatomic, readonly) id texture;
31 |
32 | - (instancetype)initWithSize:(CGSize)size;
33 | - (BOOL)canReuse:(CGSize)size;
34 | - (CGSize)size;
35 | - (void)bind;
36 |
37 | @end
38 |
39 | NS_ASSUME_NONNULL_END
40 |
--------------------------------------------------------------------------------
/examples/macos/FSPlayerMacDemo/CustomView/MRProgressSlider.h:
--------------------------------------------------------------------------------
1 | //
2 | // MRProgressSlider.h
3 | // FSPlayerMacDemo
4 | //
5 | // Created by debugly on 2021/5/17.
6 | // Copyright © 2021 FSPlayer Mac 版. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | NS_ASSUME_NONNULL_BEGIN
12 |
13 | @interface MRProgressSlider : NSView
14 |
15 | @property (nonatomic, strong) IBInspectable NSImage * knobImage;
16 | @property (nonatomic, strong) IBInspectable NSImage * hoverknobImage;
17 | //主色调
18 | @property (nonatomic, strong) IBInspectable NSColor *mainColor;
19 | //背景颜色
20 | @property (nonatomic, strong) IBInspectable NSColor *bgColor;
21 | //进度[min-max];
22 | @property (nonatomic, assign) IBInspectable CGFloat currentValue;
23 | //最大值
24 | @property (nonatomic, assign) IBInspectable CGFloat maxValue;
25 | //最小值
26 | @property (nonatomic, assign) IBInspectable CGFloat minValue;
27 |
28 | //分段个数和颜色
29 | @property (nonatomic, assign) IBInspectable NSInteger segementCount;
30 | @property (nonatomic, strong) IBInspectable NSColor *segementColor;
31 |
32 | @property (assign, nonatomic) BOOL userInteraction;
33 | @property (readwrite) NSInteger tag;
34 | //默认横向,可以使用竖向的
35 | @property (assign, nonatomic) BOOL useVertical;
36 | //停止拖拽时回调
37 | - (void)onDraggedIndicator:(void(^)(double progress,MRProgressSlider *indicator,BOOL isEndDrag))handler;
38 | - (int)currentIndex;
39 |
40 | @end
41 |
42 | NS_ASSUME_NONNULL_END
43 |
--------------------------------------------------------------------------------
/ijkmedia/wrapper/apple/FSVideoRenderView.h:
--------------------------------------------------------------------------------
1 | /*
2 | * FSVideoRenderView.h
3 | *
4 | * Copyright (c) 2023 debugly
5 | *
6 | * This file is part of FSPlayer.
7 | *
8 | * FSPlayer is free software; you can redistribute it and/or
9 | * modify it under the terms of the GNU Lesser General Public
10 | * License as published by the Free Software Foundation; either
11 | * version 3 of the License, or (at your option) any later version.
12 | *
13 | * FSPlayer is distributed in the hope that it will be useful,
14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 | * Lesser General Public License for more details.
17 | *
18 | * You should have received a copy of the GNU Lesser General Public
19 | * License along with FSPlayer; if not, write to the Free Software
20 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
21 | */
22 |
23 | // you can use below mthods, create ijk internal render view.
24 |
25 | #import
26 |
27 | NS_ASSUME_NONNULL_BEGIN
28 |
29 | @interface FSVideoRenderView : NSObject
30 |
31 | #if TARGET_OS_OSX
32 | + (UIView *)createGLRenderView;
33 | #endif
34 |
35 | + (UIView *)createMetalRenderView NS_AVAILABLE(10_13, 11_0);
36 |
37 | @end
38 |
39 | NS_ASSUME_NONNULL_END
40 |
--------------------------------------------------------------------------------
/ijkmedia/ijksdl/apple/ijksdl_gpu_opengl_renderer_macos.h:
--------------------------------------------------------------------------------
1 | /*
2 | * ijksdl_gpu_opengl_renderer_macos.h
3 | *
4 | * Copyright (c) 2024 debugly
5 | *
6 | * This file is part of FSPlayer.
7 | *
8 | * FSPlayer is free software; you can redistribute it and/or
9 | * modify it under the terms of the GNU Lesser General Public
10 | * License as published by the Free Software Foundation; either
11 | * version 3 of the License, or (at your option) any later version.
12 | *
13 | * FSPlayer is distributed in the hope that it will be useful,
14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 | * Lesser General Public License for more details.
17 | *
18 | * You should have received a copy of the GNU Lesser General Public
19 | * License along with FSPlayer; if not, write to the Free Software
20 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
21 | */
22 |
23 | #import
24 |
25 | @class FSSDLOpenGLFBO;
26 | @protocol FSSDLSubtitleTextureWrapper;
27 |
28 | @interface FSSDLOpenGLSubRenderer : NSObject
29 |
30 | - (void)setupOpenGLProgramIfNeed;
31 | - (void)clean;
32 | - (void)bindFBO:(FSSDLOpenGLFBO *)fbo;
33 | - (void)updateSubtitleVertexIfNeed:(CGRect)rect;
34 | - (void)drawTexture:(id)subTexture colors:(void *)colors;
35 |
36 | @end
37 |
--------------------------------------------------------------------------------
/ijkmedia/ijkplayer/ff_version.h:
--------------------------------------------------------------------------------
1 | /*
2 | * ff_version.h
3 | *
4 | * Copyright (c) 2025 debugly
5 | *
6 | * This file is part of FSPlayer.
7 | *
8 | * FSPlayer is free software; you can redistribute it and/or
9 | * modify it under the terms of the GNU Lesser General Public
10 | * License as published by the Free Software Foundation; either
11 | * version 3 of the License, or (at your option) any later version.
12 | *
13 | * FSPlayer is distributed in the hope that it will be useful,
14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 | * Lesser General Public License for more details.
17 | *
18 | * You should have received a copy of the GNU Lesser General Public
19 | * License along with FSPlayer; if not, write to the Free Software
20 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
21 | */
22 |
23 | #ifndef ff_version_h
24 | #define ff_version_h
25 |
26 | #include "libavformat/version_major.h"
27 |
28 | #define IS_FFMPEG_7 (LIBAVFORMAT_VERSION_MAJOR >= 61)
29 | #define IS_LESS_THAN_FFMPEG_7 (LIBAVFORMAT_VERSION_MAJOR < 61)
30 | #define IS_FFMPEG_6 (LIBAVFORMAT_VERSION_MAJOR >= 60)
31 | #define IS_FFMPEG_5 (LIBAVFORMAT_VERSION_MAJOR >= 59)
32 | #define IS_FFMPEG_4 (LIBAVFORMAT_VERSION_MAJOR >= 58)
33 |
34 | #endif /* ff_version_h */
35 |
--------------------------------------------------------------------------------
/examples/macos/build-framework.sh:
--------------------------------------------------------------------------------
1 | #! /usr/bin/env bash
2 | #
3 | # Copyright (C) 2024 Matt Reach
4 |
5 | # Licensed under the Apache License, Version 2.0 (the "License");
6 | # you may not use this file except in compliance with the License.
7 | # You may obtain a copy of the License at
8 | #
9 | # http://www.apache.org/licenses/LICENSE-2.0
10 | #
11 | # Unless required by applicable law or agreed to in writing, software
12 | # distributed under the License is distributed on an "AS IS" BASIS,
13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | # See the License for the specific language governing permissions and
15 | # limitations under the License.
16 |
17 | THIS_DIR=$(DIRNAME=$(dirname "$0"); cd "$DIRNAME"; pwd)
18 | cd "$THIS_DIR"
19 |
20 | set -e
21 |
22 | if [[ ! -d FSPlayer.xcodeproj ]]; then
23 | ./generate-fsplayer.sh
24 | fi
25 |
26 | # 1
27 | PROJECT_NAME="FSPlayer.xcodeproj"
28 | TARGET_NAME="FSPlayer-macOS"
29 |
30 | WORK_DIR="Release"
31 |
32 | # 2
33 | if [ -d ${WORK_DIR} ]; then
34 | rm -rf ${WORK_DIR}
35 | fi
36 |
37 | # 3
38 | # project方式
39 | # xcodebuild -showsdks
40 | # Build the framework for device and simulator with all architectures.
41 |
42 | xcodebuild -project ${PROJECT_NAME} -target ${TARGET_NAME} \
43 | -configuration Release \
44 | -sdk macosx -arch x86_64 -arch arm64 \
45 | BUILD_DIR=. \
46 | clean build
47 |
48 | echo "macos framework dir:$WORK_DIR"
--------------------------------------------------------------------------------
/ijkmedia/ijkplayer/ff_recorder.h:
--------------------------------------------------------------------------------
1 | /*
2 | * ff_recorder.h
3 | *
4 | * Copyright (c) 2025 debugly
5 | *
6 | * This file is part of FSPlayer.
7 | *
8 | * FSPlayer is free software; you can redistribute it and/or
9 | * modify it under the terms of the GNU Lesser General Public
10 | * License as published by the Free Software Foundation; either
11 | * version 3 of the License, or (at your option) any later version.
12 | *
13 | * FSPlayer is distributed in the hope that it will be useful,
14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 | * Lesser General Public License for more details.
17 | *
18 | * You should have received a copy of the GNU Lesser General Public
19 | * License along with FSPlayer; if not, write to the Free Software
20 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
21 | */
22 |
23 | /* record video */
24 |
25 | #ifndef ff_recorder_h
26 | #define ff_recorder_h
27 |
28 | #include
29 | struct FFPlayer;
30 | struct AVFrame;
31 | struct AVFormatContext;
32 |
33 | int ff_create_recorder(void **out_ffr, const char *file_name, const struct AVFormatContext *ifmt_ctx);
34 | int ff_start_recorder(void *ffr);
35 | int ff_write_recorder(void *ffr, struct AVFrame *frame);
36 | void ff_stop_recorder(void *ffr);
37 | int ff_destroy_recorder(void **ffr);
38 |
39 | #endif /* ff_recorder_h */
40 |
--------------------------------------------------------------------------------
/ijkmedia/ijksdl/ffmpeg/ijksdl_inc_ffmpeg.h:
--------------------------------------------------------------------------------
1 | /*
2 | * ijksdl_ffinc.h
3 | * ffmpeg headers
4 | *
5 | * Copyright (c) 2013 Bilibili
6 | * Copyright (c) 2013 Zhang Rui
7 | * Copyright (c) 2019 debugly
8 | *
9 | * This file is part of FSPlayer.
10 | *
11 | * FSPlayer is free software; you can redistribute it and/or
12 | * modify it under the terms of the GNU Lesser General Public
13 | * License as published by the Free Software Foundation; either
14 | * version 3 of the License, or (at your option) any later version.
15 | *
16 | * FSPlayer is distributed in the hope that it will be useful,
17 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
19 | * Lesser General Public License for more details.
20 | *
21 | * You should have received a copy of the GNU Lesser General Public
22 | * License along with FSPlayer; if not, write to the Free Software
23 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
24 | */
25 |
26 | #ifndef FSSDL__FFMPEG__IJKSDL_FFINC_H
27 | #define FSSDL__FFMPEG__IJKSDL_FFINC_H
28 |
29 | #include "libavutil/imgutils.h"
30 | #include "libavutil/pixfmt.h"
31 | #include "libavutil/frame.h"
32 | #include "libavutil/common.h"
33 | #include "libavcodec/avcodec.h"
34 | #include "libswscale/swscale.h"
35 |
36 | #include "../ijksdl_inc_internal.h"
37 |
38 | #endif
39 |
--------------------------------------------------------------------------------
/ijkmedia/ijksdl/apple/FSSDLAudioKit.h:
--------------------------------------------------------------------------------
1 | /*
2 | * FSSDLAudioKit.h
3 | *
4 | * Copyright (c) 2013-2014 Bilibili
5 | * Copyright (c) 2013-2014 Zhang Rui
6 | * Copyright (c) 2019 debugly
7 | *
8 | * based on https://github.com/kolyvan/kxmovie
9 | *
10 | * This file is part of FSPlayer.
11 | *
12 | * FSPlayer is free software; you can redistribute it and/or
13 | * modify it under the terms of the GNU Lesser General Public
14 | * License as published by the Free Software Foundation; either
15 | * version 3 of the License, or (at your option) any later version.
16 | *
17 | * FSPlayer is distributed in the hope that it will be useful,
18 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
19 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
20 | * Lesser General Public License for more details.
21 | *
22 | * You should have received a copy of the GNU Lesser General Public
23 | * License along with FSPlayer; if not, write to the Free Software
24 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
25 | */
26 |
27 | #import
28 |
29 | @class FSAudioSpec;
30 | void FSSDLGetAudioComponentDescriptionFromSpec(FSAudioSpec *spec, AudioComponentDescription *desc);
31 | void FSSDLGetAudioStreamBasicDescriptionFromSpec(FSAudioSpec *spec, AudioStreamBasicDescription *desc);
32 | void FSSDLCalculateAudioSpec(FSAudioSpec * spec);
33 |
--------------------------------------------------------------------------------
/ijkmedia/wrapper/apple/FSAudioRendering.m:
--------------------------------------------------------------------------------
1 | /*
2 | * FSAudioRendering.m
3 | *
4 | * Copyright (c) 2023 debugly
5 | *
6 | * This file is part of FSPlayer.
7 | *
8 | * FSPlayer is free software; you can redistribute it and/or
9 | * modify it under the terms of the GNU Lesser General Public
10 | * License as published by the Free Software Foundation; either
11 | * version 3 of the License, or (at your option) any later version.
12 | *
13 | * FSPlayer is distributed in the hope that it will be useful,
14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 | * Lesser General Public License for more details.
17 | *
18 | * You should have received a copy of the GNU Lesser General Public
19 | * License along with FSPlayer; if not, write to the Free Software
20 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
21 | */
22 |
23 | #import "FSAudioRendering.h"
24 | #import "FSSDLAudioQueueController.h"
25 | #import "FSSDLAudioUnitController.h"
26 |
27 | @implementation FSAudioSpec
28 |
29 | @end
30 |
31 | @implementation FSAudioRendering
32 |
33 | + (id)createAudioUnitRendering
34 | {
35 | return [FSSDLAudioUnitController new];
36 | }
37 |
38 | + (id)createAudioQueueRendering
39 | {
40 | return [FSSDLAudioQueueController new];
41 | }
42 |
43 | @end
44 |
--------------------------------------------------------------------------------
/ijkmedia/wrapper/apple/FSNotificationManager.h:
--------------------------------------------------------------------------------
1 | /*
2 | * FSNotificationManager.h
3 | *
4 | * Copyright (c) 2016 Bilibili
5 | * Copyright (c) 2016 Zhang Rui
6 | * Copyright (c) 2019 debugly
7 | *
8 | * This file is part of FSPlayer.
9 | *
10 | * FSPlayer is free software; you can redistribute it and/or
11 | * modify it under the terms of the GNU Lesser General Public
12 | * License as published by the Free Software Foundation; either
13 | * version 3 of the License, or (at your option) any later version.
14 | *
15 | * FSPlayer is distributed in the hope that it will be useful,
16 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
17 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
18 | * Lesser General Public License for more details.
19 | *
20 | * You should have received a copy of the GNU Lesser General Public
21 | * License along with FSPlayer; if not, write to the Free Software
22 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
23 | */
24 |
25 | #import
26 | NS_ASSUME_NONNULL_BEGIN
27 | @interface FSNotificationManager : NSObject
28 |
29 | - (instancetype)init;
30 |
31 | - (void)addObserver:(id)observer
32 | selector:(SEL)aSelector
33 | name:(NSString *)aName
34 | object:(nullable id)anObject;
35 |
36 | - (void)removeAllObservers:(id)observer;
37 |
38 | @end
39 | NS_ASSUME_NONNULL_END
40 |
--------------------------------------------------------------------------------
/ijkmedia/ijksdl/ffmpeg/ijksdl_image_convert.h:
--------------------------------------------------------------------------------
1 | /*
2 | * ijksdl_ffinc.h
3 | * ffmpeg headers
4 | *
5 | * Copyright (c) 2013 Bilibili
6 | * Copyright (c) 2013 Zhang Rui
7 | * Copyright (c) 2019 debugly
8 | *
9 | * This file is part of FSPlayer.
10 | *
11 | * FSPlayer is free software; you can redistribute it and/or
12 | * modify it under the terms of the GNU Lesser General Public
13 | * License as published by the Free Software Foundation; either
14 | * version 3 of the License, or (at your option) any later version.
15 | *
16 | * FSPlayer is distributed in the hope that it will be useful,
17 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
19 | * Lesser General Public License for more details.
20 | *
21 | * You should have received a copy of the GNU Lesser General Public
22 | * License along with FSPlayer; if not, write to the Free Software
23 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
24 | */
25 |
26 | #ifndef FSSDL__FFMPEG__IJKSDL_IMAGE_CONVERT_H
27 | #define FSSDL__FFMPEG__IJKSDL_IMAGE_CONVERT_H
28 |
29 | #include
30 | #include "ijksdl_inc_ffmpeg.h"
31 |
32 | int ijk_image_convert(int width, int height,
33 | enum AVPixelFormat dst_format, uint8_t **dst_data, int *dst_linesize,
34 | enum AVPixelFormat src_format, const uint8_t **src_data, const int *src_linesize);
35 |
36 | #endif
37 |
--------------------------------------------------------------------------------
/ijkmedia/ijksdl/apple/FSSDLHudControl.h:
--------------------------------------------------------------------------------
1 | /*
2 | * FSSDLHudControl.h
3 | *
4 | * Copyright (c) 2013-2014 Bilibili
5 | * Copyright (c) 2013-2014 Zhang Rui
6 | * Copyright (c) 2019 debugly
7 | *
8 | * This file is part of FSPlayer.
9 | *
10 | * FSPlayer is free software; you can redistribute it and/or
11 | * modify it under the terms of the GNU Lesser General Public
12 | * License as published by the Free Software Foundation; either
13 | * version 3 of the License, or (at your option) any later version.
14 | *
15 | * FSPlayer is distributed in the hope that it will be useful,
16 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
17 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
18 | * Lesser General Public License for more details.
19 | *
20 | * You should have received a copy of the GNU Lesser General Public
21 | * License along with FSPlayer; if not, write to the Free Software
22 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
23 | */
24 |
25 | #import
26 | #import
27 | #if TARGET_OS_OSX
28 | #import
29 | typedef NSView UIView;
30 | #else
31 | #import
32 | #endif
33 |
34 | @interface FSSDLHudControl : NSObject
35 |
36 | - (UIView *)contentView;
37 | - (void)destroyContentView;
38 | - (void)setHudValue:(NSString *)value forKey:(NSString *)key;
39 | - (NSDictionary *)allHudItem;
40 |
41 | @end
42 |
43 |
--------------------------------------------------------------------------------
/ijkmedia/ijkplayer/ff_muxer.h:
--------------------------------------------------------------------------------
1 | /*
2 | * ff_muxer.h
3 | *
4 | * Copyright (c) 2025 debugly
5 | *
6 | * This file is part of FSPlayer.
7 | *
8 | * FSPlayer is free software; you can redistribute it and/or
9 | * modify it under the terms of the GNU Lesser General Public
10 | * License as published by the Free Software Foundation; either
11 | * version 3 of the License, or (at your option) any later version.
12 | *
13 | * FSPlayer is distributed in the hope that it will be useful,
14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 | * Lesser General Public License for more details.
17 | *
18 | * You should have received a copy of the GNU Lesser General Public
19 | * License along with FSPlayer; if not, write to the Free Software
20 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
21 | */
22 |
23 | /* fast record video */
24 |
25 | #ifndef ff_muxer_h
26 | #define ff_muxer_h
27 |
28 | #include
29 | struct FFPlayer;
30 | struct AVPacket;
31 | struct AVFormatContext;
32 |
33 | int ff_create_muxer(void **out_ffr, const char *file_name, const struct AVFormatContext *ifmt_ctx, int audio_stream, int video_stream);
34 | int ff_start_muxer(void *ffr);
35 | int ff_write_audio_muxer(void *ffr, struct AVPacket *packet);
36 | int ff_write_video_muxer(void *ffr, struct AVPacket *packet);
37 | void ff_stop_muxer(void *ffr);
38 | int ff_destroy_muxer(void **ffr);
39 |
40 | #endif /* ff_muxer_h */
41 |
--------------------------------------------------------------------------------
/ijkmedia/ijksdl/apple/ijksdl_gpu_opengl_shader_compiler.h:
--------------------------------------------------------------------------------
1 | /*
2 | * ijksdl_gpu_opengl_shader_compiler.h
3 | *
4 | * Copyright (c) 2024 debugly
5 | *
6 | * This file is part of FSPlayer.
7 | *
8 | * FSPlayer is free software; you can redistribute it and/or
9 | * modify it under the terms of the GNU Lesser General Public
10 | * License as published by the Free Software Foundation; either
11 | * version 3 of the License, or (at your option) any later version.
12 | *
13 | * FSPlayer is distributed in the hope that it will be useful,
14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 | * Lesser General Public License for more details.
17 | *
18 | * You should have received a copy of the GNU Lesser General Public
19 | * License along with FSPlayer; if not, write to the Free Software
20 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
21 | */
22 |
23 | #import
24 |
25 | NS_ASSUME_NONNULL_BEGIN
26 |
27 | @interface FSSDLOpenGLCompiler : NSObject
28 |
29 | @property (copy) NSString *vsh;
30 | @property (copy) NSString *fsh;
31 |
32 | - (instancetype)initWithvsh:(NSString *)vshName
33 | fsh:(NSString *)fshName;
34 | - (BOOL)compileIfNeed;
35 | - (uint32_t)program;
36 | - (void)active;
37 | - (int)getUniformLocation:(const char *)name;
38 | - (int)getAttribLocation:(const char *)name;
39 |
40 | @end
41 |
42 | NS_ASSUME_NONNULL_END
43 |
--------------------------------------------------------------------------------
/examples/ios/FSPlayerDemo/ViewController/FSQRCodeScanViewController.xib:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/ijkmedia/ijkplayer/ijkavutil/ijkutils.h:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2016 Bilibili
3 | * Copyright (c) 2016 Raymond Zheng
4 | * Copyright (c) 2019 debugly
5 | *
6 | * This file is part of FSPlayer.
7 | *
8 | * FSPlayer is free software; you can redistribute it and/or
9 | * modify it under the terms of the GNU Lesser General Public
10 | * License as published by the Free Software Foundation; either
11 | * version 3 of the License, or (at your option) any later version.
12 | *
13 | * FSPlayer is distributed in the hope that it will be useful,
14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 | * Lesser General Public License for more details.
17 | *
18 | * You should have received a copy of the GNU Lesser General Public
19 | * License along with FSPlayer; if not, write to the Free Software
20 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
21 | */
22 |
23 | #ifndef FSAVUTIL_IJKUTILS_H
24 | #define FSAVUTIL_IJKUTILS_H
25 |
26 | #include "ijktree.h"
27 |
28 | #include
29 | #include
30 | #include
31 |
32 | typedef struct IjkAVIOInterruptCB {
33 | int (*callback)(void*);
34 | void *opaque;
35 | } IjkAVIOInterruptCB;
36 |
37 | typedef struct IjkCacheTreeInfo {
38 | struct IjkAVTreeNode *root;
39 | int64_t physical_init_pos;
40 | int64_t physical_size;
41 | int64_t file_size;
42 | } IjkCacheTreeInfo;
43 |
44 | #endif // FSAVUTIL_IJKUTILS_H
45 |
--------------------------------------------------------------------------------
/ijkmedia/wrapper/apple/FSKVOController.h:
--------------------------------------------------------------------------------
1 | /*
2 | * FSKVOController.h
3 | *
4 | * Copyright (c) 2014 Bilibili
5 | * Copyright (c) 2014 Zhang Rui
6 | * Copyright (c) 2019 debugly
7 | *
8 | * This file is part of FSPlayer.
9 | *
10 | * FSPlayer is free software; you can redistribute it and/or
11 | * modify it under the terms of the GNU Lesser General Public
12 | * License as published by the Free Software Foundation; either
13 | * version 3 of the License, or (at your option) any later version.
14 | *
15 | * FSPlayer is distributed in the hope that it will be useful,
16 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
17 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
18 | * Lesser General Public License for more details.
19 | *
20 | * You should have received a copy of the GNU Lesser General Public
21 | * License along with FSPlayer; if not, write to the Free Software
22 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
23 | */
24 |
25 | #import
26 |
27 | @interface FSKVOController : NSObject
28 |
29 | - (id)initWithTarget:(NSObject *)target;
30 |
31 | - (void)safelyAddObserver:(NSObject *)observer
32 | forKeyPath:(NSString *)keyPath
33 | options:(NSKeyValueObservingOptions)options
34 | context:(void *)context;
35 | - (void)safelyRemoveObserver:(NSObject *)observer
36 | forKeyPath:(NSString *)keyPath;
37 |
38 | - (void)safelyRemoveAllObservers;
39 |
40 | @end
41 |
--------------------------------------------------------------------------------
/ijkmedia/ijksdl/ijksdl_rectangle.h:
--------------------------------------------------------------------------------
1 | /*****************************************************************************
2 | * ijksdl_rectangle.h
3 | *****************************************************************************
4 | *
5 | * Copyright (c) 2024 debugly
6 | *
7 | * This file is part of FSPlayer.
8 | *
9 | * FSPlayer is free software; you can redistribute it and/or
10 | * modify it under the terms of the GNU Lesser General Public
11 | * License as published by the Free Software Foundation; either
12 | * version 3 of the License, or (at your option) any later version.
13 | *
14 | * FSPlayer is distributed in the hope that it will be useful,
15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17 | * Lesser General Public License for more details.
18 | *
19 | * You should have received a copy of the GNU Lesser General Public
20 | * License along with FSPlayer; if not, write to the Free Software
21 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
22 | */
23 |
24 | #ifndef ijksdl_rectangle_h
25 | #define ijksdl_rectangle_h
26 |
27 | #include
28 |
29 | // 定义矩形结构体
30 | typedef struct SDL_Rectangle{
31 | int x, y; // 左上角坐标
32 | int w, h; //
33 | int stride;
34 | } SDL_Rectangle;
35 |
36 | int isZeroRectangle(SDL_Rectangle rect);
37 | // 计算两个矩形的并集
38 | SDL_Rectangle SDL_union_rectangle(SDL_Rectangle rect1, SDL_Rectangle rect2);
39 |
40 | #define SDL_Zero_Rectangle (SDL_Rectangle){0,0,0,0}
41 |
42 | #endif /* ijksdl_rectangle_h */
43 |
--------------------------------------------------------------------------------
/examples/ios/FSPlayerDemo/FSPlayerDemo-Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleDisplayName
8 | ${PRODUCT_NAME}
9 | CFBundleExecutable
10 | ${EXECUTABLE_NAME}
11 | CFBundleIcons
12 |
13 | CFBundleIcons~ipad
14 |
15 | CFBundleIdentifier
16 | $(PRODUCT_BUNDLE_IDENTIFIER)
17 | CFBundleInfoDictionaryVersion
18 | 6.0
19 | CFBundleName
20 | ${PRODUCT_NAME}
21 | CFBundlePackageType
22 | APPL
23 | CFBundleShortVersionString
24 | 0.4.2
25 | CFBundleSignature
26 | ????
27 | CFBundleVersion
28 | 402
29 | LSRequiresIPhoneOS
30 |
31 | NSAppTransportSecurity
32 |
33 | NSAllowsArbitraryLoads
34 |
35 |
36 | UIFileSharingEnabled
37 |
38 | UILaunchStoryboardName
39 | LaunchScreen
40 | UIRequiredDeviceCapabilities
41 |
42 | armv7
43 |
44 | NSPhotoLibraryUsageDescription
45 | save record video
46 | NSPhotoLibraryAddUsageDescription
47 | save record video
48 |
49 |
50 |
--------------------------------------------------------------------------------
/ijkmedia/ijksdl/apple/FSSDLThread.h:
--------------------------------------------------------------------------------
1 | /*
2 | * FSSDLThread.h
3 | *
4 | * Copyright (c) 2013-2014 Bilibili
5 | * Copyright (c) 2013-2014 Zhang Rui
6 | * Copyright (c) 2019 debugly
7 | *
8 | * This file is part of FSPlayer.
9 | *
10 | * FSPlayer is free software; you can redistribute it and/or
11 | * modify it under the terms of the GNU Lesser General Public
12 | * License as published by the Free Software Foundation; either
13 | * version 3 of the License, or (at your option) any later version.
14 | *
15 | * FSPlayer is distributed in the hope that it will be useful,
16 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
17 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
18 | * Lesser General Public License for more details.
19 | *
20 | * You should have received a copy of the GNU Lesser General Public
21 | * License along with FSPlayer; if not, write to the Free Software
22 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
23 | */
24 |
25 | #import
26 |
27 | NS_ASSUME_NONNULL_BEGIN
28 |
29 | @interface FSSDLThread : NSObject
30 |
31 | @property (nonatomic, copy) NSString *name;
32 | @property (nonatomic, strong, readonly) NSThread *thread;
33 |
34 | - (instancetype)initWithName:(NSString *)name;
35 |
36 | - (void)performSelector:(SEL)aSelector
37 | withTarget:(nullable id)target
38 | withObject:(nullable id)arg
39 | waitUntilDone:(BOOL)wait;
40 |
41 | - (void)start;
42 | - (void)stop;
43 |
44 | @end
45 |
46 | NS_ASSUME_NONNULL_END
47 |
--------------------------------------------------------------------------------
/ijkmedia/ijkplayer/apple/ijkplayer_ios.h:
--------------------------------------------------------------------------------
1 | /*
2 | * ijkplayer_ios.h
3 | *
4 | * Copyright (c) 2013 Bilibili
5 | * Copyright (c) 2013 Zhang Rui
6 | * Copyright (c) 2019 debugly
7 | *
8 | * This file is part of FSPlayer.
9 | *
10 | * FSPlayer is free software; you can redistribute it and/or
11 | * modify it under the terms of the GNU Lesser General Public
12 | * License as published by the Free Software Foundation; either
13 | * version 3 of the License, or (at your option) any later version.
14 | *
15 | * FSPlayer is distributed in the hope that it will be useful,
16 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
17 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
18 | * Lesser General Public License for more details.
19 | *
20 | * You should have received a copy of the GNU Lesser General Public
21 | * License along with FSPlayer; if not, write to the Free Software
22 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
23 | */
24 |
25 | #include "ijkplayer/ijkplayer.h"
26 | #import "FSVideoRenderingProtocol.h"
27 | #import "FSAudioRenderingProtocol.h"
28 |
29 | // ref_count is 1 after open
30 | IjkMediaPlayer *ijkmp_ios_create(int (*msg_loop)(void*));
31 |
32 | void ijkmp_ios_set_glview(IjkMediaPlayer *mp, UIView* glView);
33 | void ijkmp_ios_set_audio_controller(IjkMediaPlayer *mp, id audioRendering);
34 | void ijkmp_ios_set_automatically_setup_audio_session(IjkMediaPlayer *mp, bool automaticallySetupAudioSession);
35 |
--------------------------------------------------------------------------------
/examples/macos/FSPlayerMacDemo/CustomView/MRTextField.m:
--------------------------------------------------------------------------------
1 | //
2 | // MRTextField.m
3 | // FSPlayerMacDemo
4 | //
5 | // Created by Reach Matt on 2025/4/15.
6 | // Copyright © 2025 FSPlayer. All rights reserved.
7 | //
8 |
9 | #import "MRTextField.h"
10 |
11 | @implementation MRTextField
12 |
13 | - (BOOL)becomeFirstResponder
14 | {
15 | BOOL success = [super becomeFirstResponder];
16 | if (success) {
17 | NSTextView * textView = (NSTextView *)[self currentEditor];
18 | //光标放到末尾
19 | [textView moveToEndOfLine:nil];
20 | }
21 | return success;
22 | }
23 |
24 | - (BOOL)performKeyEquivalent:(NSEvent *)event
25 | {
26 | // The command key is the ONLY modifier key being pressed.
27 | if (([event modifierFlags] & NSEventModifierFlagDeviceIndependentFlagsMask) == NSEventModifierFlagCommand) {
28 | SEL action = NULL;
29 | NSString *character = [event charactersIgnoringModifiers];
30 | if ([character isEqualToString:@"x"]) {
31 | action = @selector(cut:);
32 | } else if ([character isEqualToString:@"c"]) {
33 | action = @selector(copy:);
34 | } else if ([character isEqualToString:@"v"]) {
35 | action = @selector(paste:);
36 | } else if ([character isEqualToString:@"a"]) {
37 | action = @selector(selectAll:);
38 | }
39 | id target = [[self window] firstResponder];
40 | if ([target respondsToSelector:action]) {
41 | return [NSApp sendAction:action to:target from:self];
42 | }
43 | }
44 |
45 | return [super performKeyEquivalent:event];
46 | }
47 | @end
48 |
--------------------------------------------------------------------------------
/ijkmedia/ijkplayer/config.h:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2015 Bilibili
3 | * Copyright (c) 2015 Zhang Rui
4 | * Copyright (c) 2019 debugly
5 | *
6 | * This file is part of FSPlayer.
7 | *
8 | * FSPlayer is free software; you can redistribute it and/or
9 | * modify it under the terms of the GNU Lesser General Public
10 | * License as published by the Free Software Foundation; either
11 | * version 3 of the License, or (at your option) any later version.
12 | *
13 | * FSPlayer is distributed in the hope that it will be useful,
14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 | * Lesser General Public License for more details.
17 | *
18 | * You should have received a copy of the GNU Lesser General Public
19 | * License along with FSPlayer; if not, write to the Free Software
20 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
21 | */
22 |
23 | #ifndef FFPLAY__CONFIG_H
24 | #define FFPLAY__CONFIG_H
25 |
26 | #include "libffmpeg/config.h"
27 |
28 | // FIXME: merge filter related code and enable it
29 | // remove these lines to enable avfilter
30 | #ifdef CONFIG_AUDIO_AVFILTER
31 | #undef CONFIG_AUDIO_AVFILTER
32 | #endif
33 | #define CONFIG_AUDIO_AVFILTER 0
34 |
35 | #ifdef CONFIG_VIDEO_AVFILTER
36 | #undef CONFIG_VIDEO_AVFILTER
37 | #endif
38 | #define CONFIG_VIDEO_AVFILTER 0
39 |
40 |
41 | #ifdef FFP_SUB
42 | #undef FFP_SUB
43 | #endif
44 |
45 | #ifndef FFMPEG_LOG_TAG
46 | #define FFMPEG_LOG_TAG "FSMPEG"
47 | #endif
48 |
49 | #endif//FFPLAY__CONFIG_H
50 |
--------------------------------------------------------------------------------
/ijkmedia/wrapper/apple/FSPlayerKit.h:
--------------------------------------------------------------------------------
1 | /*
2 | * FSPlayerKit.h
3 | *
4 | * Copyright (c) 2019 debugly
5 | *
6 | * This file is part of FSPlayer.
7 | *
8 | * FSPlayer is free software; you can redistribute it and/or
9 | * modify it under the terms of the GNU Lesser General Public
10 | * License as published by the Free Software Foundation; either
11 | * version 3 of the License, or (at your option) any later version.
12 | *
13 | * FSPlayer is distributed in the hope that it will be useful,
14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 | * Lesser General Public License for more details.
17 | *
18 | * You should have received a copy of the GNU Lesser General Public
19 | * License along with FSPlayer; if not, write to the Free Software
20 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
21 | */
22 |
23 | #ifndef FSPlayerKit_h
24 | #define FSPlayerKit_h
25 |
26 |
27 | #if TARGET_OS_IOS || TARGET_OS_TV
28 | #import
29 | #else
30 | #import
31 | #endif
32 |
33 | #import
34 | #import
35 | #import
36 | #import
37 | #import
38 | #import
39 | #import
40 | #import
41 | #import
42 | #import
43 | #import
44 | #endif /* FSPlayerKit_h */
45 |
--------------------------------------------------------------------------------
/ijkmedia/ijkplayer/ff_packet_list.h:
--------------------------------------------------------------------------------
1 | /*
2 | * ff_packet_list.h
3 | *
4 | * Copyright (c) 2022 debugly
5 | *
6 | * This file is part of FSPlayer.
7 | *
8 | * FSPlayer is free software; you can redistribute it and/or
9 | * modify it under the terms of the GNU Lesser General Public
10 | * License as published by the Free Software Foundation; either
11 | * version 3 of the License, or (at your option) any later version.
12 | *
13 | * FSPlayer is distributed in the hope that it will be useful,
14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 | * Lesser General Public License for more details.
17 | *
18 | * You should have received a copy of the GNU Lesser General Public
19 | * License along with FSPlayer; if not, write to the Free Software
20 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
21 | */
22 |
23 | #ifndef ff_packet_list_h
24 | #define ff_packet_list_h
25 |
26 | #include "ff_ffplay_def.h"
27 |
28 | int packet_queue_put_private(PacketQueue *q, AVPacket *pkt);
29 | int packet_queue_put(PacketQueue *q, AVPacket *pkt);
30 | int packet_queue_put_nullpacket(PacketQueue *q, AVPacket *pkt, int stream_index);
31 | /* packet queue handling */
32 | int packet_queue_init(PacketQueue *q);
33 | void packet_queue_flush(PacketQueue *q);
34 | void packet_queue_destroy(PacketQueue *q);
35 | void packet_queue_abort(PacketQueue *q);
36 | void packet_queue_start(PacketQueue *q);
37 | int packet_queue_get(PacketQueue *q, AVPacket *pkt, int block, int *serial);
38 |
39 | #endif /* ff_packet_list_h */
40 |
--------------------------------------------------------------------------------
/ijkmedia/ijksdl/ffmpeg/ijksdl_vout_overlay_ffmpeg.h:
--------------------------------------------------------------------------------
1 | /*****************************************************************************
2 | * ijksdl_vout_overlay_ffmpeg.h
3 | *****************************************************************************
4 | *
5 | * Copyright (c) 2013 Bilibili
6 | * Copyright (c) 2013 Zhang Rui
7 | * Copyright (c) 2019 debugly
8 | *
9 | * This file is part of FSPlayer.
10 | *
11 | * ijkPlayer is free software; you can redistribute it and/or
12 | * modify it under the terms of the GNU Lesser General Public
13 | * License as published by the Free Software Foundation; either
14 | * version 3 of the License, or (at your option) any later version.
15 | *
16 | * FSPlayer is distributed in the hope that it will be useful,
17 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
19 | * Lesser General Public License for more details.
20 | *
21 | * You should have received a copy of the GNU Lesser General Public
22 | * License along with ijkPlayer; if not, write to the Free Software
23 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
24 | */
25 |
26 | #ifndef IJKSDL__FFMPEG__IJKSDL_VOUT_OVERLAY_FFMPEG_H
27 | #define IJKSDL__FFMPEG__IJKSDL_VOUT_OVERLAY_FFMPEG_H
28 |
29 | #include "../ijksdl_stdinc.h"
30 | #include "../ijksdl_vout.h"
31 | #include "ijksdl_inc_ffmpeg.h"
32 |
33 | // TODO: 9 alignment to speed up memcpy when display
34 | SDL_VoutOverlay *SDL_VoutFFmpeg_CreateOverlay(int width, int height, int frame_format, SDL_Vout *vout);
35 |
36 | #endif
37 |
--------------------------------------------------------------------------------
/ijkmedia/ijksdl/ijksdl.h:
--------------------------------------------------------------------------------
1 | /*****************************************************************************
2 | * ijksdl.h
3 | *****************************************************************************
4 | *
5 | * Copyright (c) 2013 Bilibili
6 | * Copyright (c) 2013 Zhang Rui
7 | * Copyright (c) 2019 debugly
8 | *
9 | * This file is part of FSPlayer.
10 | *
11 | * FSPlayer is free software; you can redistribute it and/or
12 | * modify it under the terms of the GNU Lesser General Public
13 | * License as published by the Free Software Foundation; either
14 | * version 3 of the License, or (at your option) any later version.
15 | *
16 | * FSPlayer is distributed in the hope that it will be useful,
17 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
19 | * Lesser General Public License for more details.
20 | *
21 | * You should have received a copy of the GNU Lesser General Public
22 | * License along with FSPlayer; if not, write to the Free Software
23 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
24 | */
25 |
26 | #ifndef FSSDL__IJKSDL_H
27 | #define FSSDL__IJKSDL_H
28 |
29 | #include "ijksdl_audio.h"
30 | #include "ijksdl_aout.h"
31 | #include "ijksdl_class.h"
32 | #include "ijksdl_error.h"
33 | #include "ijksdl_log.h"
34 | #include "ijksdl_misc.h"
35 | #include "ijksdl_mutex.h"
36 | #include "ijksdl_thread.h"
37 | #include "ijksdl_timer.h"
38 | #include "ijksdl_video.h"
39 | #include "ijksdl_vout.h"
40 |
41 | #include "ffmpeg/ijksdl_vout_overlay_ffmpeg.h"
42 |
43 | #endif
44 |
--------------------------------------------------------------------------------
/examples/macos/FSPlayerMacDemo/Assets.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "icon_16x16.png",
5 | "idiom" : "mac",
6 | "scale" : "1x",
7 | "size" : "16x16"
8 | },
9 | {
10 | "filename" : "icon_16x16@2x.png",
11 | "idiom" : "mac",
12 | "scale" : "2x",
13 | "size" : "16x16"
14 | },
15 | {
16 | "filename" : "icon_32x32.png",
17 | "idiom" : "mac",
18 | "scale" : "1x",
19 | "size" : "32x32"
20 | },
21 | {
22 | "filename" : "icon_32x32@2x.png",
23 | "idiom" : "mac",
24 | "scale" : "2x",
25 | "size" : "32x32"
26 | },
27 | {
28 | "filename" : "icon_128x128.png",
29 | "idiom" : "mac",
30 | "scale" : "1x",
31 | "size" : "128x128"
32 | },
33 | {
34 | "filename" : "icon_128x128@2x.png",
35 | "idiom" : "mac",
36 | "scale" : "2x",
37 | "size" : "128x128"
38 | },
39 | {
40 | "filename" : "icon_256x256.png",
41 | "idiom" : "mac",
42 | "scale" : "1x",
43 | "size" : "256x256"
44 | },
45 | {
46 | "filename" : "icon_256x256@2x.png",
47 | "idiom" : "mac",
48 | "scale" : "2x",
49 | "size" : "256x256"
50 | },
51 | {
52 | "filename" : "icon_512x512.png",
53 | "idiom" : "mac",
54 | "scale" : "1x",
55 | "size" : "512x512"
56 | },
57 | {
58 | "filename" : "icon_512x512@2x.png",
59 | "idiom" : "mac",
60 | "scale" : "2x",
61 | "size" : "512x512"
62 | }
63 | ],
64 | "info" : {
65 | "author" : "xcode",
66 | "version" : 1
67 | }
68 | }
69 |
--------------------------------------------------------------------------------
/ijkmedia/ijksdl/apple/ijksdl_vout_overlay_ffmpeg_hw.h:
--------------------------------------------------------------------------------
1 | /*****************************************************************************
2 | * ijksdl_vout_overlay_videotoolbox.h
3 | *****************************************************************************
4 | *
5 | * Copyright (c) 2014 ZhouQuan
6 | * Copyright (c) 2019 debugly
7 | *
8 | * This file is part of FSPlayer.
9 | *
10 | * FSPlayer is free software; you can redistribute it and/or
11 | * modify it under the terms of the GNU Lesser General Public
12 | * License as published by the Free Software Foundation; either
13 | * version 3 of the License, or (at your option) any later version.
14 | *
15 | * FSPlayer is distributed in the hope that it will be useful,
16 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
17 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
18 | * Lesser General Public License for more details.
19 | *
20 | * You should have received a copy of the GNU Lesser General Public
21 | * License along with FSPlayer; if not, write to the Free Software
22 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
23 | */
24 |
25 | #ifndef __IJKMediaPlayer__ijksdl_vout_overlay_ffmpeg_hw__
26 | #define __IJKMediaPlayer__ijksdl_vout_overlay_ffmpeg_hw__
27 |
28 | #import
29 | #include "ijksdl_stdinc.h"
30 | #include "ijksdl_vout.h"
31 | #include "ijksdl_inc_ffmpeg.h"
32 |
33 | SDL_VoutOverlay *SDL_VoutFFmpeg_HW_CreateOverlay(int width, int height, SDL_Vout *vout);
34 | CVPixelBufferRef SDL_VoutFFmpeg_HW_GetCVPixelBufferRef(SDL_VoutOverlay *overlay);
35 |
36 | #endif
37 |
--------------------------------------------------------------------------------
/ijkmedia/ijksdl/ijksdl_stdinc.h:
--------------------------------------------------------------------------------
1 | /*****************************************************************************
2 | * ijksdl_stdinc.h
3 | *****************************************************************************
4 | *
5 | * Copyright (c) 2013 Bilibili
6 | * Copyright (c) 2013 Zhang Rui
7 | * Copyright (c) 2019 debugly
8 | *
9 | * This file is part of FSPlayer.
10 | *
11 | * FSPlayer is free software; you can redistribute it and/or
12 | * modify it under the terms of the GNU Lesser General Public
13 | * License as published by the Free Software Foundation; either
14 | * version 3 of the License, or (at your option) any later version.
15 | *
16 | * FSPlayer is distributed in the hope that it will be useful,
17 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
19 | * Lesser General Public License for more details.
20 | *
21 | * You should have received a copy of the GNU Lesser General Public
22 | * License along with FSPlayer; if not, write to the Free Software
23 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
24 | */
25 |
26 | #ifndef FSSDL__IJKSDL_STDINC_H
27 | #define FSSDL__IJKSDL_STDINC_H
28 |
29 | #include
30 | #include
31 | #include
32 |
33 | typedef int8_t Sint8;
34 | typedef uint8_t Uint8;
35 | typedef int16_t Sint16;
36 | typedef uint16_t Uint16;
37 | typedef int32_t Sint32;
38 | typedef uint32_t Uint32;
39 | typedef int64_t Sint64;
40 | typedef uint64_t Uint64;
41 |
42 | char *SDL_getenv(const char *name);
43 |
44 | #endif
45 |
--------------------------------------------------------------------------------
/examples/macos/FSPlayerMacDemo/MRUtil/MRGlobalNotification.h:
--------------------------------------------------------------------------------
1 | //
2 | // MRGlobalNotification.h
3 | // FSPlayerDemo
4 | //
5 | // Created by debugly on 2019/3/14.
6 | // Copyright © 2019 debugly. All rights reserved.
7 | //
8 | // 全局通知定义
9 |
10 | #import
11 |
12 | #ifndef __MRECS__
13 | #define __MRECS__
14 |
15 | #define EXPORT_CONST_STRING(key) FOUNDATION_EXPORT NSString *const key
16 | #define STRINGME_(x) #x
17 | #define STRINGME(x) STRINGME_(x)
18 | #define STRINGME2OC(x) @STRINGME(x)
19 | #define DEFINE_CONST_STRING(key) NSString *const key = STRINGME2OC(key)
20 |
21 | #endif
22 |
23 |
24 | ///播放资源管理器打开的本地视频通知,参数为 obj = [ { bookmark,url },... ]
25 | EXPORT_CONST_STRING(kPlayExplorerMovieNotificationName_G);
26 | ///播放在线视频,参数为 links = [ url1,url2,... ]
27 | EXPORT_CONST_STRING(kPlayNetMovieNotificationName_G);
28 | #define POST_NOTIFICATION(_name_,_obj_,_info_) \
29 | [[NSNotificationCenter defaultCenter] \
30 | postNotificationName: _name_ \
31 | object: _obj_ \
32 | userInfo: _info_]
33 |
34 | #define OBSERVER_NOTIFICATION(_observer_,_sel_,_name_,_obj_) \
35 | [[NSNotificationCenter defaultCenter] \
36 | addObserver:_observer_ \
37 | selector:@selector(_sel_) \
38 | name:_name_ \
39 | object:_obj_ ]
40 |
41 | #define STOP_OBSERING_NOTIFICATION(_observer_,_name_,_obj_) \
42 | [[NSNotificationCenter defaultCenter] \
43 | removeObserver: _observer_ \
44 | name: _name_ \
45 | object: _obj_]
46 |
47 | @interface MRGlobalNotification : NSObject
48 |
49 | @end
50 |
--------------------------------------------------------------------------------
/examples/macos/FSPlayerMacDemo/ViewController/MRPlaylistViewController.m:
--------------------------------------------------------------------------------
1 | //
2 | // MRPlaylistViewController.m
3 | // FSPlayerMacDemo
4 | //
5 | // Created by debugly on 2024/1/24.
6 | // Copyright © 2024 FSPlayer Mac. All rights reserved.
7 | //
8 |
9 | #import "MRPlaylistViewController.h"
10 | #import "MRPlaylistRowView.h"
11 |
12 | @interface MRPlaylistViewController ()
13 |
14 | @property (nonatomic, strong) NSMutableArray *hudDataArray;
15 |
16 | @end
17 |
18 | @implementation MRPlaylistViewController
19 |
20 | - (void)viewDidLoad {
21 | [super viewDidLoad];
22 | // Do view setup here.
23 | }
24 |
25 | - (NSMutableArray *)hudDataArray
26 | {
27 | if (!_hudDataArray) {
28 | _hudDataArray = [NSMutableArray array];
29 | }
30 | return _hudDataArray;
31 | }
32 |
33 | - (NSInteger)numberOfRowsInTableView:(NSTableView *)tableView
34 | {
35 | return [self.hudDataArray count];
36 | }
37 |
38 | - (nullable NSView *)tableView:(NSTableView *)tableView viewForTableColumn:(nullable NSTableColumn *)tableColumn row:(NSInteger)row
39 | {
40 | return nil;
41 | }
42 |
43 | - (NSTableRowView *)tableView:(NSTableView *)tableView rowViewForRow:(NSInteger)row
44 | {
45 | MRPlaylistRowView *rowView = [tableView makeViewWithIdentifier:@"Row" owner:self];
46 | if (rowView == nil) {
47 | rowView = [[MRPlaylistRowView alloc]init];
48 | rowView.identifier = @"Row";
49 | }
50 | if (row < [self.hudDataArray count]) {
51 | MRPlaylistRowData *data = [self.hudDataArray objectAtIndex:row];
52 | [rowView updateData:data];
53 | }
54 |
55 | return rowView;
56 | }
57 | @end
58 |
--------------------------------------------------------------------------------
/ijkmedia/ijkplayer/ff_subtitle_ex.h:
--------------------------------------------------------------------------------
1 | /*
2 | * ff_subtitle_ex.h
3 | *
4 | * Copyright (c) 2022 debugly
5 | *
6 | * This file is part of FSPlayer.
7 | *
8 | * FSPlayer is free software; you can redistribute it and/or
9 | * modify it under the terms of the GNU Lesser General Public
10 | * License as published by the Free Software Foundation; either
11 | * version 3 of the License, or (at your option) any later version.
12 | *
13 | * FSPlayer is distributed in the hope that it will be useful,
14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 | * Lesser General Public License for more details.
17 | *
18 | * You should have received a copy of the GNU Lesser General Public
19 | * License along with FSPlayer; if not, write to the Free Software
20 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
21 | */
22 |
23 |
24 | #ifndef ff_subtitle_ex_h
25 | #define ff_subtitle_ex_h
26 |
27 | #include
28 |
29 | typedef struct FFExSubtitle FFExSubtitle;
30 | typedef struct PacketQueue PacketQueue;
31 | typedef struct AVStream AVStream;
32 | typedef struct AVDictionary AVDictionary;
33 |
34 | int exSub_open_input(FFExSubtitle **subp, PacketQueue * pktq, const char *file_name, float startTime, AVDictionary *opts);
35 | void exSub_start_read(FFExSubtitle *sub);
36 | void exSub_close_input(FFExSubtitle **sub);
37 | AVStream * exSub_get_stream(FFExSubtitle *sub);
38 | int exSub_get_stream_id(FFExSubtitle *sub);
39 | //when return zero means succ;
40 | int exSub_seek_to(FFExSubtitle *sub, float sec);
41 |
42 | #endif /* ff_subtitle_ex_h */
43 |
--------------------------------------------------------------------------------
/examples/tvos/FSPlayerTVDemo/Base.lproj/LaunchScreen.storyboard:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |