├── .github
└── ISSUE_TEMPLATE
│ ├── bug_report.md
│ └── feature_request.md
├── .gitignore
├── Android
├── PlayerProj
│ ├── .gitignore
│ ├── LICENSE.txt
│ ├── animplayer
│ │ ├── .gitignore
│ │ ├── build.gradle
│ │ ├── proguard-rules.pro
│ │ ├── publish.gradle
│ │ └── src
│ │ │ ├── main
│ │ │ ├── AndroidManifest.xml
│ │ │ ├── java
│ │ │ │ └── com
│ │ │ │ │ └── tencent
│ │ │ │ │ └── qgame
│ │ │ │ │ └── animplayer
│ │ │ │ │ ├── AnimConfig.kt
│ │ │ │ │ ├── AnimConfigManager.kt
│ │ │ │ │ ├── AnimPlayer.kt
│ │ │ │ │ ├── AnimView.kt
│ │ │ │ │ ├── AudioPlayer.kt
│ │ │ │ │ ├── Constant.kt
│ │ │ │ │ ├── Decoder.kt
│ │ │ │ │ ├── EGLUtil.kt
│ │ │ │ │ ├── HardDecoder.kt
│ │ │ │ │ ├── IAnimView.kt
│ │ │ │ │ ├── IRenderListener.kt
│ │ │ │ │ ├── Render.kt
│ │ │ │ │ ├── RenderConstant.kt
│ │ │ │ │ ├── YUVRender.kt
│ │ │ │ │ ├── YUVShader.kt
│ │ │ │ │ ├── file
│ │ │ │ │ ├── AssetsFileContainer.kt
│ │ │ │ │ ├── FileContainer.kt
│ │ │ │ │ ├── IFileContainer.kt
│ │ │ │ │ ├── StreamContainer.kt
│ │ │ │ │ └── StreamMediaDataSource.kt
│ │ │ │ │ ├── inter
│ │ │ │ │ ├── IAnimListener.kt
│ │ │ │ │ ├── IFetchResource.kt
│ │ │ │ │ └── OnResourceClickListener.kt
│ │ │ │ │ ├── mask
│ │ │ │ │ ├── MaskAnimPlugin.kt
│ │ │ │ │ ├── MaskConfig.kt
│ │ │ │ │ ├── MaskRender.kt
│ │ │ │ │ └── MaskShader.kt
│ │ │ │ │ ├── mix
│ │ │ │ │ ├── Frame.kt
│ │ │ │ │ ├── MixAnimPlugin.kt
│ │ │ │ │ ├── MixRender.kt
│ │ │ │ │ ├── MixShader.kt
│ │ │ │ │ ├── MixTouch.kt
│ │ │ │ │ ├── Resource.kt
│ │ │ │ │ └── Src.kt
│ │ │ │ │ ├── plugin
│ │ │ │ │ ├── AnimPluginManager.kt
│ │ │ │ │ └── IAnimPlugin.kt
│ │ │ │ │ ├── textureview
│ │ │ │ │ └── InnerTextureView.kt
│ │ │ │ │ └── util
│ │ │ │ │ ├── ALog.kt
│ │ │ │ │ ├── BitmapUtil.kt
│ │ │ │ │ ├── GlFloatArray.kt
│ │ │ │ │ ├── MediaUtil.kt
│ │ │ │ │ ├── ScaleTypeUtil.kt
│ │ │ │ │ ├── ShaderUtil.kt
│ │ │ │ │ ├── SpeedControlUtil.kt
│ │ │ │ │ ├── TexCoordsUtil.kt
│ │ │ │ │ ├── TextureLoadUtil.kt
│ │ │ │ │ └── VertexUtil.kt
│ │ │ └── res
│ │ │ │ └── values
│ │ │ │ └── strings.xml
│ │ │ └── test
│ │ │ └── java
│ │ │ └── com
│ │ │ └── tencent
│ │ │ └── qgame
│ │ │ └── animplayer
│ │ │ └── ExampleUnitTest.java
│ ├── animtool
│ │ ├── .gitignore
│ │ ├── build.gradle
│ │ └── src
│ │ │ └── main
│ │ │ └── java
│ │ │ └── com
│ │ │ └── tencent
│ │ │ └── qgame
│ │ │ └── playerproj
│ │ │ └── animtool
│ │ │ ├── AnimTool.java
│ │ │ ├── CommonArg.java
│ │ │ ├── CommonArgTool.java
│ │ │ ├── GetAlphaFrame.java
│ │ │ ├── Main.java
│ │ │ ├── Md5Util.java
│ │ │ ├── Mp4BoxTool.java
│ │ │ ├── ProcessUtil.java
│ │ │ ├── TLog.java
│ │ │ ├── data
│ │ │ └── PointRect.java
│ │ │ ├── ui
│ │ │ ├── OpenSourceUI.java
│ │ │ ├── ToolUI.java
│ │ │ └── VapxUI.java
│ │ │ └── vapx
│ │ │ ├── FrameSet.java
│ │ │ ├── GetMaskFrame.java
│ │ │ └── SrcSet.java
│ ├── app
│ │ ├── .gitignore
│ │ ├── build.gradle
│ │ ├── proguard-rules.pro
│ │ └── src
│ │ │ ├── main
│ │ │ ├── AndroidManifest.xml
│ │ │ ├── assets
│ │ │ │ ├── demo.mp4
│ │ │ │ ├── mask_blur_demo.mp4
│ │ │ │ ├── mask_trunk_demo.mp4
│ │ │ │ ├── special_size_750.mp4
│ │ │ │ └── vapx.mp4
│ │ │ ├── java
│ │ │ │ └── com
│ │ │ │ │ └── tencent
│ │ │ │ │ └── qgame
│ │ │ │ │ └── playerproj
│ │ │ │ │ ├── MainActivity.kt
│ │ │ │ │ └── player
│ │ │ │ │ ├── AnimActiveDemoActivity.kt
│ │ │ │ │ ├── AnimSimpleDemoActivity.kt
│ │ │ │ │ ├── AnimSpecialSizeDemoActivity.kt
│ │ │ │ │ ├── AnimVapxDemoActivity.kt
│ │ │ │ │ └── FileUtil.kt
│ │ │ └── res
│ │ │ │ ├── drawable
│ │ │ │ ├── bg.png
│ │ │ │ ├── head1.png
│ │ │ │ ├── head2.png
│ │ │ │ ├── ic_launcher_background.xml
│ │ │ │ └── icon.png
│ │ │ │ ├── layout
│ │ │ │ ├── activity_anim_simple_demo.xml
│ │ │ │ └── activity_main.xml
│ │ │ │ └── values
│ │ │ │ ├── colors.xml
│ │ │ │ ├── strings.xml
│ │ │ │ └── styles.xml
│ │ │ └── test
│ │ │ └── java
│ │ │ └── com
│ │ │ └── tencent
│ │ │ └── qgame
│ │ │ └── playerproj
│ │ │ └── ExampleUnitTest.kt
│ ├── bintrayv1.gradle
│ ├── build.gradle
│ ├── gradle
│ │ └── wrapper
│ │ │ ├── gradle-wrapper.jar
│ │ │ └── gradle-wrapper.properties
│ ├── gradlew
│ ├── gradlew.bat
│ ├── installv1.gradle
│ ├── publish-mavencentral.gradle
│ └── settings.gradle
└── README.md
├── CONTRIBUTING.md
├── Introduction.md
├── LICENSE.txt
├── MavenCentral.md
├── QGVAPlayer.podspec
├── README.md
├── README_en.md
├── iOS
├── .gitignore
├── CHANGELOG.md
├── QGVAPlayer
│ ├── QGVAPlayer.xcodeproj
│ │ ├── project.pbxproj
│ │ ├── project.xcworkspace
│ │ │ ├── contents.xcworkspacedata
│ │ │ ├── xcshareddata
│ │ │ │ └── IDEWorkspaceChecks.plist
│ │ │ └── xcuserdata
│ │ │ │ └── chanceguo.xcuserdatad
│ │ │ │ └── UserInterfaceState.xcuserstate
│ │ └── xcuserdata
│ │ │ └── chanceguo.xcuserdatad
│ │ │ └── xcschemes
│ │ │ └── xcschememanagement.plist
│ ├── QGVAPlayer
│ │ ├── Classes
│ │ │ ├── Controllers
│ │ │ │ ├── Decoders
│ │ │ │ │ ├── QGBaseDecoder.h
│ │ │ │ │ ├── QGBaseDecoder.m
│ │ │ │ │ ├── QGMP4FrameHWDecoder.h
│ │ │ │ │ └── QGMP4FrameHWDecoder.m
│ │ │ │ ├── QGAnimatedImageBufferManager.h
│ │ │ │ ├── QGAnimatedImageBufferManager.m
│ │ │ │ ├── QGAnimatedImageDecodeConfig.h
│ │ │ │ ├── QGAnimatedImageDecodeConfig.m
│ │ │ │ ├── QGAnimatedImageDecodeManager.h
│ │ │ │ ├── QGAnimatedImageDecodeManager.m
│ │ │ │ ├── QGAnimatedImageDecodeThread.h
│ │ │ │ ├── QGAnimatedImageDecodeThread.m
│ │ │ │ ├── QGAnimatedImageDecodeThreadPool.h
│ │ │ │ ├── QGAnimatedImageDecodeThreadPool.m
│ │ │ │ ├── QGVAPConfigManager.h
│ │ │ │ └── QGVAPConfigManager.m
│ │ │ ├── MP4Parser
│ │ │ │ ├── QGMP4Box.h
│ │ │ │ ├── QGMP4Box.m
│ │ │ │ ├── QGMP4Parser.h
│ │ │ │ └── QGMP4Parser.m
│ │ │ ├── Models
│ │ │ │ ├── QGBaseAnimatedImageFrame+Displaying.h
│ │ │ │ ├── QGBaseAnimatedImageFrame+Displaying.m
│ │ │ │ ├── QGBaseAnimatedImageFrame.h
│ │ │ │ ├── QGBaseAnimatedImageFrame.m
│ │ │ │ ├── QGBaseDFileInfo.h
│ │ │ │ ├── QGBaseDFileInfo.m
│ │ │ │ ├── QGMP4AnimatedImageFrame.h
│ │ │ │ ├── QGMP4AnimatedImageFrame.m
│ │ │ │ ├── QGMP4HWDFileInfo.h
│ │ │ │ ├── QGMP4HWDFileInfo.m
│ │ │ │ ├── QGVAPConfigModel.h
│ │ │ │ ├── QGVAPConfigModel.m
│ │ │ │ ├── QGVAPMaskInfo.h
│ │ │ │ ├── QGVAPMaskInfo.m
│ │ │ │ ├── QGVAPTextureLoader.h
│ │ │ │ └── QGVAPTextureLoader.m
│ │ │ ├── QGVAPWrapView.h
│ │ │ ├── QGVAPWrapView.m
│ │ │ ├── QGVAPlayer.h
│ │ │ ├── UIView+VAP.h
│ │ │ ├── UIView+VAP.m
│ │ │ ├── Utils
│ │ │ │ ├── Categorys
│ │ │ │ │ ├── NSArray+VAPUtil.h
│ │ │ │ │ ├── NSArray+VAPUtil.m
│ │ │ │ │ ├── NSDictionary+VAPUtil.h
│ │ │ │ │ ├── NSDictionary+VAPUtil.m
│ │ │ │ │ ├── NSNotificationCenter+VAPThreadSafe.h
│ │ │ │ │ ├── NSNotificationCenter+VAPThreadSafe.m
│ │ │ │ │ ├── UIColor+VAPUtil.h
│ │ │ │ │ ├── UIColor+VAPUtil.m
│ │ │ │ │ ├── UIDevice+VAPUtil.h
│ │ │ │ │ ├── UIDevice+VAPUtil.m
│ │ │ │ │ ├── UIGestureRecognizer+VAPUtil.h
│ │ │ │ │ ├── UIGestureRecognizer+VAPUtil.m
│ │ │ │ │ ├── UIView+MP4HWDecode.h
│ │ │ │ │ └── UIView+MP4HWDecode.m
│ │ │ │ ├── Logger
│ │ │ │ │ ├── QGVAPLogger.h
│ │ │ │ │ └── QGVAPLogger.m
│ │ │ │ ├── QGVAPMetalShaderFunctionLoader.h
│ │ │ │ ├── QGVAPMetalShaderFunctionLoader.m
│ │ │ │ ├── QGVAPMetalUtil.h
│ │ │ │ ├── QGVAPMetalUtil.m
│ │ │ │ ├── QGVAPSafeMutableArray.h
│ │ │ │ ├── QGVAPSafeMutableArray.m
│ │ │ │ ├── QGVAPSafeMutableDictionary.h
│ │ │ │ ├── QGVAPSafeMutableDictionary.m
│ │ │ │ ├── QGVAPWeakProxy.h
│ │ │ │ └── QGVAPWeakProxy.m
│ │ │ ├── VAPMacros.h
│ │ │ └── Views
│ │ │ │ ├── Metal
│ │ │ │ ├── QGHWDMetalRenderer.h
│ │ │ │ ├── QGHWDMetalRenderer.m
│ │ │ │ ├── QGHWDMetalView.h
│ │ │ │ ├── QGHWDMetalView.m
│ │ │ │ └── Vapx
│ │ │ │ │ ├── QGVAPMetalRenderer.h
│ │ │ │ │ ├── QGVAPMetalRenderer.m
│ │ │ │ │ ├── QGVAPMetalView.h
│ │ │ │ │ └── QGVAPMetalView.m
│ │ │ │ └── OpenGL
│ │ │ │ ├── QGHWDMP4OpenGLView.h
│ │ │ │ └── QGHWDMP4OpenGLView.m
│ │ ├── Info.plist
│ │ └── Shaders
│ │ │ ├── QGHWDMetalShaderSourceDefine.h
│ │ │ ├── QGHWDShaderTypes.h
│ │ │ └── QGHWDShaders.metal
│ └── QGVAPlayerTests
│ │ ├── Info.plist
│ │ └── QGVAPlayerTests.m
├── QGVAPlayerDemo
│ ├── QGVAPlayerDemo.xcodeproj
│ │ ├── project.pbxproj
│ │ ├── project.xcworkspace
│ │ │ ├── contents.xcworkspacedata
│ │ │ ├── xcshareddata
│ │ │ │ └── IDEWorkspaceChecks.plist
│ │ │ └── xcuserdata
│ │ │ │ └── chanceguo.xcuserdatad
│ │ │ │ ├── IDEFindNavigatorScopes.plist
│ │ │ │ └── UserInterfaceState.xcuserstate
│ │ └── xcuserdata
│ │ │ └── chanceguo.xcuserdatad
│ │ │ └── xcschemes
│ │ │ └── xcschememanagement.plist
│ ├── QGVAPlayerDemo
│ │ ├── AppDelegate.h
│ │ ├── AppDelegate.m
│ │ ├── Assets.xcassets
│ │ │ ├── AppIcon.appiconset
│ │ │ │ └── Contents.json
│ │ │ └── Contents.json
│ │ ├── Base.lproj
│ │ │ ├── LaunchScreen.storyboard
│ │ │ └── Main.storyboard
│ │ ├── Info.plist
│ │ ├── ViewController.h
│ │ ├── ViewController.m
│ │ └── main.m
│ ├── QGVAPlayerDemoTests
│ │ ├── Info.plist
│ │ └── QGVAPlayerDemoTests.m
│ ├── QGVAPlayerDemoUITests
│ │ ├── Info.plist
│ │ └── QGVAPlayerDemoUITests.m
│ └── Resource
│ │ ├── demo.mp4
│ │ ├── qq.png
│ │ └── vap.mp4
├── QGVAPlayerDemoSwift
│ ├── QGVAPlayerDemoSwift.xcodeproj
│ │ ├── project.pbxproj
│ │ └── project.xcworkspace
│ │ │ ├── contents.xcworkspacedata
│ │ │ └── xcshareddata
│ │ │ └── IDEWorkspaceChecks.plist
│ └── QGVAPlayerDemoSwift
│ │ ├── AppDelegate.swift
│ │ ├── Assets.xcassets
│ │ ├── AccentColor.colorset
│ │ │ └── Contents.json
│ │ ├── AppIcon.appiconset
│ │ │ └── Contents.json
│ │ └── Contents.json
│ │ ├── Base.lproj
│ │ ├── LaunchScreen.storyboard
│ │ └── Main.storyboard
│ │ ├── Info.plist
│ │ ├── QGVAPlayer-Bridging-Header.h
│ │ ├── SceneDelegate.swift
│ │ └── ViewController.swift
└── README.md
├── images
├── anim1.gif
├── anim2.gif
├── anim3.gif
├── anim4.gif
├── anim5.gif
├── icons.png
├── pic1.png
├── pic2.png
├── pic3.png
├── pic4.png
└── pic5.png
├── tool
├── JsonDesc.md
├── Mac_Tool.md
├── README.md
├── README_en.md
├── images
│ ├── 1.png
│ ├── 2.png
│ ├── 3.png
│ ├── 4.png
│ ├── vap_field_info.png
│ ├── vaptool_java_01.png
│ └── vaptool_java_02.png
├── simple_demo
│ ├── 000.png
│ ├── 001.png
│ ├── 002.png
│ ├── 003.png
│ ├── 004.png
│ ├── 005.png
│ ├── 006.png
│ ├── 007.png
│ ├── 008.png
│ ├── 009.png
│ ├── 010.png
│ ├── 011.png
│ ├── 012.png
│ ├── 013.png
│ ├── 014.png
│ ├── 015.png
│ ├── 016.png
│ ├── 017.png
│ ├── 018.png
│ ├── 019.png
│ ├── 020.png
│ ├── 021.png
│ ├── 022.png
│ ├── 023.png
│ ├── 024.png
│ ├── 025.png
│ ├── 026.png
│ ├── 027.png
│ ├── 028.png
│ ├── 029.png
│ ├── 030.png
│ ├── 031.png
│ ├── 032.png
│ ├── 033.png
│ ├── 034.png
│ ├── 035.png
│ ├── 036.png
│ ├── 037.png
│ ├── 038.png
│ ├── 039.png
│ ├── 040.png
│ ├── 041.png
│ ├── 042.png
│ ├── 043.png
│ ├── 044.png
│ ├── 045.png
│ ├── 046.png
│ ├── 047.png
│ ├── 048.png
│ ├── 049.png
│ ├── 050.png
│ ├── 051.png
│ ├── 052.png
│ ├── 053.png
│ ├── 054.png
│ ├── 055.png
│ ├── 056.png
│ ├── 057.png
│ ├── 058.png
│ ├── 059.png
│ ├── 060.png
│ ├── 061.png
│ ├── 062.png
│ ├── 063.png
│ ├── 064.png
│ ├── 065.png
│ ├── 066.png
│ ├── 067.png
│ ├── 068.png
│ ├── 069.png
│ ├── 070.png
│ ├── 071.png
│ ├── 072.png
│ ├── 073.png
│ ├── 074.png
│ ├── 075.png
│ ├── 076.png
│ ├── 077.png
│ ├── 078.png
│ └── 079.png
├── vapxTool
│ ├── VapxTool.xcodeproj
│ │ ├── project.pbxproj
│ │ ├── project.xcworkspace
│ │ │ └── contents.xcworkspacedata
│ │ └── xcshareddata
│ │ │ └── xcschemes
│ │ │ └── VapxTool.xcscheme
│ ├── VapxTool
│ │ ├── AppDelegate.h
│ │ ├── AppDelegate.m
│ │ ├── Assets.xcassets
│ │ │ ├── AppIcon.appiconset
│ │ │ │ ├── Contents.json
│ │ │ │ └── icons8-idea-64.png
│ │ │ ├── Contents.json
│ │ │ ├── addMergeInfo.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ └── add.png
│ │ │ └── close.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ └── close.png
│ │ ├── Base.lproj
│ │ │ └── Main.storyboard
│ │ ├── Draft_License_VAP_HK20200804.txt
│ │ ├── Info.plist
│ │ ├── Utils
│ │ │ ├── NSArray+HWDUtil.h
│ │ │ ├── NSArray+HWDUtil.m
│ │ │ ├── NSDictionary+HWDUtil.h
│ │ │ └── NSDictionary+HWDUtil.m
│ │ ├── VapxTool.entitlements
│ │ ├── ViewController.h
│ │ ├── ViewController.m
│ │ ├── controllers
│ │ │ ├── VapxAlphaExtractor.h
│ │ │ ├── VapxAlphaExtractor.m
│ │ │ ├── VapxFileHelper.h
│ │ │ ├── VapxFileHelper.m
│ │ │ ├── VapxLayoutManager.h
│ │ │ ├── VapxLayoutManager.m
│ │ │ ├── VapxMP4Decoder.h
│ │ │ ├── VapxMP4Decoder.m
│ │ │ ├── VapxMaskInfoGenerator.h
│ │ │ ├── VapxMaskInfoGenerator.m
│ │ │ ├── VapxMp4Editor.h
│ │ │ ├── VapxMp4Editor.m
│ │ │ ├── VapxProcessor.h
│ │ │ └── VapxProcessor.m
│ │ ├── main.m
│ │ ├── models
│ │ │ ├── QGVAPConfigModel.h
│ │ │ └── QGVAPConfigModel.m
│ │ └── views
│ │ │ ├── VapMergeInfoView.h
│ │ │ ├── VapMergeInfoView.m
│ │ │ ├── VapProgressHUD.h
│ │ │ └── VapProgressHUD.m
│ ├── VapxToolTests
│ │ ├── Info.plist
│ │ └── VapxToolTests.m
│ ├── VapxToolUITests
│ │ ├── Info.plist
│ │ └── VapxToolUITests.m
│ └── frameworks
│ │ ├── Bento4-SDK-1-5-1-628
│ │ └── bin
│ │ │ ├── aac2mp4
│ │ │ ├── libBento4C.dylib
│ │ │ ├── mp42aac
│ │ │ ├── mp42avc
│ │ │ ├── mp42hevc
│ │ │ ├── mp42hls
│ │ │ ├── mp42ts
│ │ │ ├── mp4compact
│ │ │ ├── mp4dash
│ │ │ ├── mp4dashclone
│ │ │ ├── mp4dcfpackager
│ │ │ ├── mp4decrypt
│ │ │ ├── mp4dump
│ │ │ ├── mp4edit
│ │ │ ├── mp4encrypt
│ │ │ ├── mp4extract
│ │ │ ├── mp4fragment
│ │ │ ├── mp4hls
│ │ │ ├── mp4iframeindex
│ │ │ ├── mp4info
│ │ │ ├── mp4mux
│ │ │ ├── mp4rtphintinfo
│ │ │ ├── mp4split
│ │ │ └── mp4tag
│ │ └── ffmpeg
└── vapx_demo
│ ├── mask
│ └── name
│ │ ├── 000.png
│ │ ├── 001.png
│ │ ├── 002.png
│ │ ├── 003.png
│ │ ├── 004.png
│ │ ├── 005.png
│ │ ├── 006.png
│ │ ├── 007.png
│ │ ├── 008.png
│ │ ├── 009.png
│ │ ├── 010.png
│ │ ├── 011.png
│ │ ├── 012.png
│ │ ├── 013.png
│ │ ├── 014.png
│ │ ├── 015.png
│ │ ├── 016.png
│ │ ├── 017.png
│ │ ├── 018.png
│ │ ├── 019.png
│ │ ├── 020.png
│ │ ├── 021.png
│ │ ├── 022.png
│ │ ├── 023.png
│ │ ├── 024.png
│ │ ├── 025.png
│ │ ├── 026.png
│ │ ├── 027.png
│ │ ├── 028.png
│ │ ├── 029.png
│ │ ├── 030.png
│ │ ├── 031.png
│ │ ├── 032.png
│ │ ├── 033.png
│ │ ├── 034.png
│ │ ├── 035.png
│ │ ├── 036.png
│ │ ├── 037.png
│ │ ├── 038.png
│ │ ├── 039.png
│ │ ├── 040.png
│ │ ├── 041.png
│ │ ├── 042.png
│ │ ├── 043.png
│ │ ├── 044.png
│ │ ├── 045.png
│ │ ├── 046.png
│ │ ├── 047.png
│ │ ├── 048.png
│ │ ├── 049.png
│ │ ├── 050.png
│ │ ├── 051.png
│ │ ├── 052.png
│ │ ├── 053.png
│ │ ├── 054.png
│ │ ├── 055.png
│ │ ├── 056.png
│ │ ├── 057.png
│ │ ├── 058.png
│ │ ├── 059.png
│ │ ├── 060.png
│ │ ├── 061.png
│ │ ├── 062.png
│ │ ├── 063.png
│ │ ├── 064.png
│ │ ├── 065.png
│ │ ├── 066.png
│ │ ├── 067.png
│ │ ├── 068.png
│ │ ├── 069.png
│ │ ├── 070.png
│ │ ├── 071.png
│ │ ├── 072.png
│ │ ├── 073.png
│ │ ├── 074.png
│ │ ├── 075.png
│ │ ├── 076.png
│ │ ├── 077.png
│ │ ├── 078.png
│ │ ├── 079.png
│ │ ├── 080.png
│ │ ├── 081.png
│ │ ├── 082.png
│ │ ├── 083.png
│ │ ├── 084.png
│ │ ├── 085.png
│ │ ├── 086.png
│ │ ├── 087.png
│ │ ├── 088.png
│ │ ├── 089.png
│ │ ├── 090.png
│ │ ├── 091.png
│ │ ├── 092.png
│ │ ├── 093.png
│ │ ├── 094.png
│ │ ├── 095.png
│ │ ├── 096.png
│ │ ├── 097.png
│ │ ├── 098.png
│ │ ├── 099.png
│ │ ├── 100.png
│ │ ├── 101.png
│ │ ├── 102.png
│ │ ├── 103.png
│ │ ├── 104.png
│ │ ├── 105.png
│ │ ├── 106.png
│ │ ├── 107.png
│ │ ├── 108.png
│ │ ├── 109.png
│ │ ├── 110.png
│ │ ├── 111.png
│ │ ├── 112.png
│ │ ├── 113.png
│ │ ├── 114.png
│ │ ├── 115.png
│ │ ├── 116.png
│ │ ├── 117.png
│ │ ├── 118.png
│ │ └── 119.png
│ └── png
│ ├── 000.png
│ ├── 001.png
│ ├── 002.png
│ ├── 003.png
│ ├── 004.png
│ ├── 005.png
│ ├── 006.png
│ ├── 007.png
│ ├── 008.png
│ ├── 009.png
│ ├── 010.png
│ ├── 011.png
│ ├── 012.png
│ ├── 013.png
│ ├── 014.png
│ ├── 015.png
│ ├── 016.png
│ ├── 017.png
│ ├── 018.png
│ ├── 019.png
│ ├── 020.png
│ ├── 021.png
│ ├── 022.png
│ ├── 023.png
│ ├── 024.png
│ ├── 025.png
│ ├── 026.png
│ ├── 027.png
│ ├── 028.png
│ ├── 029.png
│ ├── 030.png
│ ├── 031.png
│ ├── 032.png
│ ├── 033.png
│ ├── 034.png
│ ├── 035.png
│ ├── 036.png
│ ├── 037.png
│ ├── 038.png
│ ├── 039.png
│ ├── 040.png
│ ├── 041.png
│ ├── 042.png
│ ├── 043.png
│ ├── 044.png
│ ├── 045.png
│ ├── 046.png
│ ├── 047.png
│ ├── 048.png
│ ├── 049.png
│ ├── 050.png
│ ├── 051.png
│ ├── 052.png
│ ├── 053.png
│ ├── 054.png
│ ├── 055.png
│ ├── 056.png
│ ├── 057.png
│ ├── 058.png
│ ├── 059.png
│ ├── 060.png
│ ├── 061.png
│ ├── 062.png
│ ├── 063.png
│ ├── 064.png
│ ├── 065.png
│ ├── 066.png
│ ├── 067.png
│ ├── 068.png
│ ├── 069.png
│ ├── 070.png
│ ├── 071.png
│ ├── 072.png
│ ├── 073.png
│ ├── 074.png
│ ├── 075.png
│ ├── 076.png
│ ├── 077.png
│ ├── 078.png
│ ├── 079.png
│ ├── 080.png
│ ├── 081.png
│ ├── 082.png
│ ├── 083.png
│ ├── 084.png
│ ├── 085.png
│ ├── 086.png
│ ├── 087.png
│ ├── 088.png
│ ├── 089.png
│ ├── 090.png
│ ├── 091.png
│ ├── 092.png
│ ├── 093.png
│ ├── 094.png
│ ├── 095.png
│ ├── 096.png
│ ├── 097.png
│ ├── 098.png
│ ├── 099.png
│ ├── 100.png
│ ├── 101.png
│ ├── 102.png
│ ├── 103.png
│ ├── 104.png
│ ├── 105.png
│ ├── 106.png
│ ├── 107.png
│ ├── 108.png
│ ├── 109.png
│ ├── 110.png
│ ├── 111.png
│ ├── 112.png
│ ├── 113.png
│ ├── 114.png
│ ├── 115.png
│ ├── 116.png
│ ├── 117.png
│ ├── 118.png
│ └── 119.png
└── web
├── .babelrc
├── .eslintignore
├── .eslintrc.js
├── .gitignore
├── .prettierignore
├── .prettierrc
├── README.md
├── demo
├── .babelrc
├── .editorconfig
├── .eslintignore
├── .eslintrc.js
├── .gitignore
├── .postcssrc.js
├── README.md
├── build
│ ├── build.js
│ ├── check-versions.js
│ ├── logo.png
│ ├── utils.js
│ ├── vue-loader.conf.js
│ ├── webpack.base.conf.js
│ ├── webpack.dev.conf.js
│ └── webpack.prod.conf.js
├── config
│ ├── dev.env.js
│ ├── index.js
│ └── prod.env.js
├── index.html
├── package-lock.json
├── package.json
├── src
│ ├── App.vue
│ ├── assets
│ │ └── logo.png
│ ├── components
│ │ ├── HelloWorld.vue
│ │ ├── demo.json
│ │ └── demo.mp4
│ ├── main.js
│ └── router
│ │ └── index.js
└── static
│ └── .gitkeep
├── dist
├── gl-util.d.ts
├── index.d.ts
├── type.d.ts
├── vap-frame-parser.d.ts
├── vap.js
├── vap.min.js
├── video.d.ts
└── webgl-render-vap.d.ts
├── package-lock.json
├── package.json
├── rollup.config.dist.js
├── rollup.config.js
├── rollup.tsconfig.json
├── src
├── gl-util.ts
├── index.ts
├── type.ts
├── vap-frame-parser.ts
├── video.ts
└── webgl-render-vap.ts
└── tsconfig.json
/.github/ISSUE_TEMPLATE/bug_report.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Bug report
3 | about: Create a report to help us improve
4 | title: ''
5 | labels: ''
6 | assignees: ''
7 |
8 | ---
9 |
10 | # issue 模版
11 |
12 | 1. 问题描述(重现路径)
13 | 2. 运行环境(手机型号,Android/iOS版本等)
14 | 3. 相关日志
15 | 4. 播放错误的文件(可选)
16 |
17 | # issue template
18 |
19 | 1. Problem description
20 | 2. Running environment (mobile phone model, Android/iOS version, etc.)
21 | 3. Logs
22 | 4. Error file (optional)
23 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/feature_request.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Feature request
3 | about: Suggest an idea for this project
4 | title: ''
5 | labels: ''
6 | assignees: ''
7 |
8 | ---
9 |
10 | **Is your feature request related to a problem? Please describe.**
11 | A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
12 |
13 | **Describe the solution you'd like**
14 | A clear and concise description of what you want to happen.
15 |
16 | **Describe alternatives you've considered**
17 | A clear and concise description of any alternative solutions or features you've considered.
18 |
19 | **Additional context**
20 | Add any other context or screenshots about the feature request here.
21 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # dependencies
2 | node_modules
3 | # logs
4 | npm-debug.log
5 |
6 | # Nuxt generate
7 | .vscode
8 |
9 | .idea
10 |
11 | # sw.*
12 |
13 | .cache
14 |
15 | #mac cache
16 | .DS_Store
17 |
--------------------------------------------------------------------------------
/Android/PlayerProj/.gitignore:
--------------------------------------------------------------------------------
1 | *.iml
2 | .gradle
3 | /local.properties
4 | /.idea/caches/build_file_checksums.ser
5 | /.idea/libraries
6 | /.idea/modules.xml
7 | /.idea/workspace.xml
8 | .idea
9 | .DS_Store
10 | /build
11 | /captures
12 | .externalNativeBuild
13 | gradle.properties
--------------------------------------------------------------------------------
/Android/PlayerProj/animplayer/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 |
--------------------------------------------------------------------------------
/Android/PlayerProj/animplayer/build.gradle:
--------------------------------------------------------------------------------
1 | apply plugin: 'com.android.library'
2 | apply plugin: 'kotlin-android'
3 | apply plugin: 'kotlin-android-extensions'
4 |
5 | android {
6 | compileSdkVersion 28
7 |
8 | defaultConfig {
9 | minSdkVersion 16
10 | targetSdkVersion 28
11 | versionCode 1
12 | versionName "1.0"
13 | }
14 |
15 | buildTypes {
16 | release {
17 | minifyEnabled false
18 | proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
19 | }
20 | }
21 |
22 | }
23 |
24 | dependencies {
25 | implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version") {
26 | exclude module: 'annotations'
27 | }
28 | }
29 |
30 | // jcenter 上传(这个要在底部)
31 | // 上传需要执行此任务 IDE -> gradle-> Tasks/publishing/bintrayUpload
32 | // apply from: file("publish.gradle")
33 |
34 |
35 | // maven central
36 | // 上传指令./gradlew uploadArchives
37 | // https://s01.oss.sonatype.org/
38 | // Staging Repositories -> close -> release
39 | // apply from: "../publish-mavencentral.gradle"
40 |
--------------------------------------------------------------------------------
/Android/PlayerProj/animplayer/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | # Add project specific ProGuard rules here.
2 | # You can control the set of applied configuration files using the
3 | # proguardFiles setting in build.gradle.
4 | #
5 | # For more details, see
6 | # http://developer.android.com/guide/developing/tools/proguard.html
7 |
8 | # If your project uses WebView with JS, uncomment the following
9 | # and specify the fully qualified class name to the JavaScript interface
10 | # class:
11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
12 | # public *;
13 | #}
14 |
15 | # Uncomment this to preserve the line number information for
16 | # debugging stack traces.
17 | #-keepattributes SourceFile,LineNumberTable
18 |
19 | # If you keep the line number information, uncomment this to
20 | # hide the original source file name.
21 | #-renamesourcefileattribute SourceFile
22 |
--------------------------------------------------------------------------------
/Android/PlayerProj/animplayer/publish.gradle:
--------------------------------------------------------------------------------
1 | ext {
2 | // 此处填写刚才建立的maven仓库的仓库名称
3 | bintrayRepo = 'maven'
4 | // library的group id
5 | publishedGroupId = 'com.egame.vap'
6 | // library网站地址
7 | siteUrl = 'https://github.com/Tencent/vap'
8 | // library仓库地址
9 | gitUrl = 'https://github.com/Tencent/vap'
10 |
11 | // 注册时候的bintray username
12 | developerId = 'hexleo'
13 | // 开发者名称
14 | developerName = 'hexleo'
15 | // 开发者邮箱
16 | developerEmail = 'wanghailiang333@gmail.com'
17 |
18 | // 开源许可证
19 | licenseName = 'MIT'
20 | licenseUrl = 'http://opensource.org/licenses/MIT'
21 | allLicenses = ["MIT"]
22 |
23 | // library artifact(单个module一般就填写library name)
24 | artifact = 'animplayer'
25 | libraryName = 'animplayer'
26 | libraryVersion = '2.0.15'
27 | libraryDescription = ''
28 | // bintrayName 是你在网页Repository页面能看到的名称
29 | bintrayName = 'vap'
30 | }
31 |
32 | apply from: '../installv1.gradle'
33 | apply from: '../bintrayv1.gradle'
34 |
--------------------------------------------------------------------------------
/Android/PlayerProj/animplayer/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
3 |
--------------------------------------------------------------------------------
/Android/PlayerProj/animplayer/src/main/java/com/tencent/qgame/animplayer/file/IFileContainer.kt:
--------------------------------------------------------------------------------
1 | /*
2 | * Tencent is pleased to support the open source community by making vap available.
3 | *
4 | * Copyright (C) 2020 THL A29 Limited, a Tencent company. All rights reserved.
5 | *
6 | * Licensed under the MIT License (the "License"); you may not use this file except in
7 | * compliance with the License. You may obtain a copy of the License at
8 | *
9 | * http://opensource.org/licenses/MIT
10 | *
11 | * Unless required by applicable law or agreed to in writing, software distributed under the License is
12 | * distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
13 | * either express or implied. See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 | package com.tencent.qgame.animplayer.file
17 |
18 | import android.media.MediaExtractor
19 |
20 | interface IFileContainer {
21 |
22 | fun setDataSource(extractor: MediaExtractor)
23 |
24 | fun startRandomRead()
25 |
26 | fun read(b: ByteArray, off: Int, len: Int): Int
27 |
28 | fun skip(pos: Long)
29 |
30 | fun closeRandomRead()
31 |
32 | fun close()
33 |
34 | }
--------------------------------------------------------------------------------
/Android/PlayerProj/animplayer/src/main/java/com/tencent/qgame/animplayer/inter/IFetchResource.kt:
--------------------------------------------------------------------------------
1 | /*
2 | * Tencent is pleased to support the open source community by making vap available.
3 | *
4 | * Copyright (C) 2020 THL A29 Limited, a Tencent company. All rights reserved.
5 | *
6 | * Licensed under the MIT License (the "License"); you may not use this file except in
7 | * compliance with the License. You may obtain a copy of the License at
8 | *
9 | * http://opensource.org/licenses/MIT
10 | *
11 | * Unless required by applicable law or agreed to in writing, software distributed under the License is
12 | * distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
13 | * either express or implied. See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 | package com.tencent.qgame.animplayer.inter
17 |
18 | import android.graphics.Bitmap
19 | import com.tencent.qgame.animplayer.mix.Resource
20 |
21 | /**
22 | * 获取资源
23 | */
24 | interface IFetchResource {
25 | // 获取图片 (暂时不支持Bitmap.Config.ALPHA_8 主要是因为一些机型opengl兼容问题)
26 | fun fetchImage(resource: Resource, result:(Bitmap?) -> Unit)
27 |
28 | // 获取文字
29 | fun fetchText(resource: Resource, result:(String?) -> Unit)
30 |
31 | // 资源释放通知
32 | fun releaseResource(resources: List)
33 | }
--------------------------------------------------------------------------------
/Android/PlayerProj/animplayer/src/main/java/com/tencent/qgame/animplayer/inter/OnResourceClickListener.kt:
--------------------------------------------------------------------------------
1 | /*
2 | * Tencent is pleased to support the open source community by making vap available.
3 | *
4 | * Copyright (C) 2020 THL A29 Limited, a Tencent company. All rights reserved.
5 | *
6 | * Licensed under the MIT License (the "License"); you may not use this file except in
7 | * compliance with the License. You may obtain a copy of the License at
8 | *
9 | * http://opensource.org/licenses/MIT
10 | *
11 | * Unless required by applicable law or agreed to in writing, software distributed under the License is
12 | * distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
13 | * either express or implied. See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 | package com.tencent.qgame.animplayer.inter
17 |
18 | import com.tencent.qgame.animplayer.mix.Resource
19 |
20 | interface OnResourceClickListener {
21 |
22 | // 返回被点击的资源
23 | fun onClick(resource: Resource)
24 | }
--------------------------------------------------------------------------------
/Android/PlayerProj/animplayer/src/main/java/com/tencent/qgame/animplayer/mix/Resource.kt:
--------------------------------------------------------------------------------
1 | /*
2 | * Tencent is pleased to support the open source community by making vap available.
3 | *
4 | * Copyright (C) 2020 THL A29 Limited, a Tencent company. All rights reserved.
5 | *
6 | * Licensed under the MIT License (the "License"); you may not use this file except in
7 | * compliance with the License. You may obtain a copy of the License at
8 | *
9 | * http://opensource.org/licenses/MIT
10 | *
11 | * Unless required by applicable law or agreed to in writing, software distributed under the License is
12 | * distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
13 | * either express or implied. See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 | package com.tencent.qgame.animplayer.mix
17 |
18 | import android.graphics.Bitmap
19 | import com.tencent.qgame.animplayer.PointRect
20 |
21 | /**
22 | * 资源描述
23 | */
24 | class Resource(src: Src) {
25 | var id = ""
26 | var type = Src.SrcType.UNKNOWN
27 | var loadType = Src.LoadType.UNKNOWN
28 | var tag = ""
29 | var bitmap: Bitmap? = null
30 | var curPoint: PointRect? = null // src在当前帧的位置信息
31 |
32 | init {
33 | id = src.srcId
34 | type = src.srcType
35 | loadType = src.loadType
36 | tag = src.srcTag
37 | bitmap = src.bitmap
38 | }
39 | }
--------------------------------------------------------------------------------
/Android/PlayerProj/animplayer/src/main/java/com/tencent/qgame/animplayer/textureview/InnerTextureView.kt:
--------------------------------------------------------------------------------
1 | package com.tencent.qgame.animplayer.textureview
2 |
3 | import android.content.Context
4 | import android.util.AttributeSet
5 | import android.view.MotionEvent
6 | import android.view.TextureView
7 | import com.tencent.qgame.animplayer.AnimPlayer
8 |
9 | class InnerTextureView @JvmOverloads constructor(
10 | context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0
11 | ) : TextureView(context, attrs, defStyleAttr) {
12 |
13 | var player: AnimPlayer? = null
14 |
15 | override fun dispatchTouchEvent(ev: MotionEvent?): Boolean {
16 | val res = player?.isRunning() == true
17 | && ev != null
18 | && player?.pluginManager?.onDispatchTouchEvent(ev) == true
19 | return if (!res) super.dispatchTouchEvent(ev) else true
20 | }
21 | }
--------------------------------------------------------------------------------
/Android/PlayerProj/animplayer/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | animplayer
3 |
4 |
--------------------------------------------------------------------------------
/Android/PlayerProj/animplayer/src/test/java/com/tencent/qgame/animplayer/ExampleUnitTest.java:
--------------------------------------------------------------------------------
1 | package com.tencent.qgame.animplayer;
2 |
3 | import org.junit.Test;
4 |
5 | import static org.junit.Assert.*;
6 |
7 | /**
8 | * Example local unit test, which will execute on the development machine (host).
9 | *
10 | * @see Testing documentation
11 | */
12 | public class ExampleUnitTest {
13 | @Test
14 | public void addition_isCorrect() {
15 | assertEquals(4, 2 + 2);
16 | }
17 | }
--------------------------------------------------------------------------------
/Android/PlayerProj/animtool/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 |
--------------------------------------------------------------------------------
/Android/PlayerProj/animtool/build.gradle:
--------------------------------------------------------------------------------
1 | apply plugin: 'java-library'
2 |
3 | dependencies {
4 | implementation fileTree(dir: 'libs', include: ['*.jar'])
5 | }
6 |
7 | sourceCompatibility = "7"
8 | targetCompatibility = "7"
9 | buildscript {
10 | repositories {
11 | mavenCentral()
12 | }
13 | dependencies {
14 | }
15 | }
16 | repositories {
17 | mavenCentral()
18 | }
19 |
20 | jar {
21 | manifest {
22 | attributes(
23 | 'Main-Class': 'com.tencent.qgame.playerproj.animtool.Main'
24 | )
25 | }
26 | }
--------------------------------------------------------------------------------
/Android/PlayerProj/animtool/src/main/java/com/tencent/qgame/playerproj/animtool/data/PointRect.java:
--------------------------------------------------------------------------------
1 | package com.tencent.qgame.playerproj.animtool.data;
2 |
3 | public class PointRect {
4 |
5 | public int x = 0;
6 | public int y = 0;
7 | public int w = 0;
8 | public int h = 0;
9 |
10 | public PointRect() {
11 | }
12 |
13 | public PointRect(int x, int y, int w, int h) {
14 | this.x = x;
15 | this.y = y;
16 | this.w = w;
17 | this.h = h;
18 | }
19 |
20 | @Override
21 | public String toString() {
22 | return "["+ x +","+ y +","+ w +","+ h +"]";
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/Android/PlayerProj/app/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 |
--------------------------------------------------------------------------------
/Android/PlayerProj/app/build.gradle:
--------------------------------------------------------------------------------
1 | apply plugin: 'com.android.application'
2 |
3 | apply plugin: 'kotlin-android'
4 | apply plugin: 'kotlin-android-extensions'
5 |
6 | android {
7 | compileSdkVersion 28
8 | defaultConfig {
9 | applicationId "com.tencent.qgame.playerproj"
10 | minSdkVersion 16
11 | targetSdkVersion 28
12 | versionCode 1
13 | versionName "1.0"
14 | }
15 | buildTypes {
16 | release {
17 | minifyEnabled false
18 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
19 | }
20 | }
21 | lintOptions {
22 | abortOnError false
23 | }
24 | }
25 |
26 | dependencies {
27 | implementation fileTree(dir: 'libs', include: ['*.jar'])
28 | implementation"org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
29 | implementation project(":animplayer")
30 | }
31 |
--------------------------------------------------------------------------------
/Android/PlayerProj/app/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | # Add project specific ProGuard rules here.
2 | # You can control the set of applied configuration files using the
3 | # proguardFiles setting in build.gradle.
4 | #
5 | # For more details, see
6 | # http://developer.android.com/guide/developing/tools/proguard.html
7 |
8 | # If your project uses WebView with JS, uncomment the following
9 | # and specify the fully qualified class name to the JavaScript interface
10 | # class:
11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
12 | # public *;
13 | #}
14 |
15 | # Uncomment this to preserve the line number information for
16 | # debugging stack traces.
17 | #-keepattributes SourceFile,LineNumberTable
18 |
19 | # If you keep the line number information, uncomment this to
20 | # hide the original source file name.
21 | #-renamesourcefileattribute SourceFile
22 |
--------------------------------------------------------------------------------
/Android/PlayerProj/app/src/main/assets/demo.mp4:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/Android/PlayerProj/app/src/main/assets/demo.mp4
--------------------------------------------------------------------------------
/Android/PlayerProj/app/src/main/assets/mask_blur_demo.mp4:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/Android/PlayerProj/app/src/main/assets/mask_blur_demo.mp4
--------------------------------------------------------------------------------
/Android/PlayerProj/app/src/main/assets/mask_trunk_demo.mp4:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/Android/PlayerProj/app/src/main/assets/mask_trunk_demo.mp4
--------------------------------------------------------------------------------
/Android/PlayerProj/app/src/main/assets/special_size_750.mp4:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/Android/PlayerProj/app/src/main/assets/special_size_750.mp4
--------------------------------------------------------------------------------
/Android/PlayerProj/app/src/main/assets/vapx.mp4:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/Android/PlayerProj/app/src/main/assets/vapx.mp4
--------------------------------------------------------------------------------
/Android/PlayerProj/app/src/main/res/drawable/bg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/Android/PlayerProj/app/src/main/res/drawable/bg.png
--------------------------------------------------------------------------------
/Android/PlayerProj/app/src/main/res/drawable/head1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/Android/PlayerProj/app/src/main/res/drawable/head1.png
--------------------------------------------------------------------------------
/Android/PlayerProj/app/src/main/res/drawable/head2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/Android/PlayerProj/app/src/main/res/drawable/head2.png
--------------------------------------------------------------------------------
/Android/PlayerProj/app/src/main/res/drawable/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/Android/PlayerProj/app/src/main/res/drawable/icon.png
--------------------------------------------------------------------------------
/Android/PlayerProj/app/src/main/res/layout/activity_anim_simple_demo.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
10 |
17 |
22 |
27 |
28 |
29 |
30 |
31 |
36 |
37 |
--------------------------------------------------------------------------------
/Android/PlayerProj/app/src/main/res/values/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #008577
4 | #00574B
5 | #D81B60
6 |
7 |
--------------------------------------------------------------------------------
/Android/PlayerProj/app/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | AnimPlayer
3 |
4 |
--------------------------------------------------------------------------------
/Android/PlayerProj/app/src/main/res/values/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/Android/PlayerProj/app/src/test/java/com/tencent/qgame/playerproj/ExampleUnitTest.kt:
--------------------------------------------------------------------------------
1 | package com.tencent.qgame.playerproj
2 |
3 | import org.junit.Test
4 |
5 | import org.junit.Assert.*
6 |
7 | /**
8 | * Example local unit test, which will execute on the development machine (host).
9 | *
10 | * See [testing documentation](http://d.android.com/tools/testing).
11 | */
12 | class ExampleUnitTest {
13 | @Test
14 | fun addition_isCorrect() {
15 | assertEquals(4, 2 + 2)
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/Android/PlayerProj/build.gradle:
--------------------------------------------------------------------------------
1 | // Top-level build file where you can add configuration options common to all sub-projects/modules.
2 |
3 | buildscript {
4 | ext.kotlin_version = '1.3.50'
5 | repositories {
6 | google()
7 | // jcenter()
8 | mavenCentral()
9 | }
10 | dependencies {
11 | classpath 'com.android.tools.build:gradle:3.2.1'
12 | classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
13 | // classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.8.4'
14 | // classpath 'com.github.dcendents:android-maven-gradle-plugin:2.1'
15 | // NOTE: Do not place your application dependencies here; they belong
16 | // in the individual module build.gradle files
17 | }
18 | }
19 |
20 | allprojects {
21 | repositories {
22 | google()
23 | // jcenter()
24 | mavenCentral()
25 | }
26 | tasks.withType(Javadoc).all { enabled = false }
27 | }
28 |
29 | task clean(type: Delete) {
30 | delete rootProject.buildDir
31 | }
32 |
--------------------------------------------------------------------------------
/Android/PlayerProj/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/Android/PlayerProj/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/Android/PlayerProj/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | distributionBase=GRADLE_USER_HOME
2 | distributionPath=wrapper/dists
3 | distributionUrl=https\://services.gradle.org/distributions/gradle-4.6-all.zip
4 | zipStoreBase=GRADLE_USER_HOME
5 | zipStorePath=wrapper/dists
6 |
--------------------------------------------------------------------------------
/Android/PlayerProj/installv1.gradle:
--------------------------------------------------------------------------------
1 | apply plugin: 'com.github.dcendents.android-maven'
2 |
3 | group = publishedGroupId // Maven Group ID for the artifact
4 |
5 | install {
6 | repositories.mavenInstaller {
7 | // This generates POM.xml with proper parameters
8 | pom {
9 | project {
10 | packaging 'aar'
11 | groupId publishedGroupId
12 | artifactId artifact
13 |
14 | // Add your description here
15 | name libraryName
16 | description libraryDescription
17 | url siteUrl
18 |
19 | // Set your license
20 | licenses {
21 | license {
22 | name licenseName
23 | url licenseUrl
24 | }
25 | }
26 | developers {
27 | developer {
28 | id developerId
29 | name developerName
30 | email developerEmail
31 | }
32 | }
33 | scm {
34 | connection gitUrl
35 | developerConnection gitUrl
36 | url siteUrl
37 |
38 | }
39 | }
40 | }
41 | }
42 | }
--------------------------------------------------------------------------------
/Android/PlayerProj/settings.gradle:
--------------------------------------------------------------------------------
1 | include ':app', ':animtool', ':animplayer'
2 |
--------------------------------------------------------------------------------
/CONTRIBUTING.md:
--------------------------------------------------------------------------------
1 | # Contributing
2 | 遇到任何问题或者有好的建议,欢迎提issue/pull request
--------------------------------------------------------------------------------
/MavenCentral.md:
--------------------------------------------------------------------------------
1 | This file is used to verify. OSSRH-67862
2 |
--------------------------------------------------------------------------------
/iOS/QGVAPlayer/QGVAPlayer.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/iOS/QGVAPlayer/QGVAPlayer.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/iOS/QGVAPlayer/QGVAPlayer.xcodeproj/project.xcworkspace/xcuserdata/chanceguo.xcuserdatad/UserInterfaceState.xcuserstate:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/iOS/QGVAPlayer/QGVAPlayer.xcodeproj/project.xcworkspace/xcuserdata/chanceguo.xcuserdatad/UserInterfaceState.xcuserstate
--------------------------------------------------------------------------------
/iOS/QGVAPlayer/QGVAPlayer.xcodeproj/xcuserdata/chanceguo.xcuserdatad/xcschemes/xcschememanagement.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | SchemeUserState
6 |
7 | QGVAPlayer.xcscheme_^#shared#^_
8 |
9 | orderHint
10 | 1
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/iOS/QGVAPlayer/QGVAPlayer/Classes/Controllers/QGAnimatedImageBufferManager.h:
--------------------------------------------------------------------------------
1 | // QGAnimatedImageBufferManager.h
2 | // Tencent is pleased to support the open source community by making vap available.
3 | //
4 | // Copyright (C) 2020 THL A29 Limited, a Tencent company. All rights reserved.
5 | //
6 | // Licensed under the MIT License (the "License"); you may not use this file except in
7 | // compliance with the License. You may obtain a copy of the License at
8 | //
9 | // http://opensource.org/licenses/MIT
10 | //
11 | // Unless required by applicable law or agreed to in writing, software distributed under the License is
12 | // distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
13 | // either express or implied. See the License for the specific language governing permissions and
14 | // limitations under the License.
15 |
16 | #import
17 | #import "QGAnimatedImageDecodeConfig.h"
18 | #import "QGBaseAnimatedImageFrame.h"
19 |
20 | @interface QGAnimatedImageBufferManager : NSObject
21 |
22 | @property (nonatomic, strong) NSMutableArray *buffers;//缓冲
23 |
24 | - (instancetype)initWithConfig:(QGAnimatedImageDecodeConfig *)config;
25 | - (QGBaseAnimatedImageFrame *)getBufferedFrame:(NSInteger)frameIndex;
26 | - (BOOL)isBufferFull;
27 | - (QGBaseAnimatedImageFrame *)popVideoFrame;
28 |
29 | @end
30 |
--------------------------------------------------------------------------------
/iOS/QGVAPlayer/QGVAPlayer/Classes/Controllers/QGAnimatedImageDecodeConfig.h:
--------------------------------------------------------------------------------
1 | // QGAnimatedImageDecodeConfig.h
2 | // Tencent is pleased to support the open source community by making vap available.
3 | //
4 | // Copyright (C) 2020 THL A29 Limited, a Tencent company. All rights reserved.
5 | //
6 | // Licensed under the MIT License (the "License"); you may not use this file except in
7 | // compliance with the License. You may obtain a copy of the License at
8 | //
9 | // http://opensource.org/licenses/MIT
10 | //
11 | // Unless required by applicable law or agreed to in writing, software distributed under the License is
12 | // distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
13 | // either express or implied. See the License for the specific language governing permissions and
14 | // limitations under the License.
15 |
16 | #import
17 |
18 | @interface QGAnimatedImageDecodeConfig : NSObject
19 |
20 | @property (nonatomic, assign) NSInteger threadCount;//线程数
21 | @property (nonatomic, assign) NSInteger bufferCount;//缓冲数
22 |
23 | + (instancetype)defaultConfig;
24 |
25 | @end
26 |
--------------------------------------------------------------------------------
/iOS/QGVAPlayer/QGVAPlayer/Classes/Controllers/QGAnimatedImageDecodeConfig.m:
--------------------------------------------------------------------------------
1 | // QGAnimatedImageDecodeConfig.m
2 | // Tencent is pleased to support the open source community by making vap available.
3 | //
4 | // Copyright (C) 2020 THL A29 Limited, a Tencent company. All rights reserved.
5 | //
6 | // Licensed under the MIT License (the "License"); you may not use this file except in
7 | // compliance with the License. You may obtain a copy of the License at
8 | //
9 | // http://opensource.org/licenses/MIT
10 | //
11 | // Unless required by applicable law or agreed to in writing, software distributed under the License is
12 | // distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
13 | // either express or implied. See the License for the specific language governing permissions and
14 | // limitations under the License.
15 |
16 | #import "QGAnimatedImageDecodeConfig.h"
17 |
18 | @implementation QGAnimatedImageDecodeConfig
19 |
20 | + (instancetype)defaultConfig {
21 |
22 | QGAnimatedImageDecodeConfig *config = [QGAnimatedImageDecodeConfig new];
23 | config.threadCount= 1;
24 | config.bufferCount = 5;
25 | return config;
26 | }
27 |
28 | @end
29 |
--------------------------------------------------------------------------------
/iOS/QGVAPlayer/QGVAPlayer/Classes/Controllers/QGAnimatedImageDecodeThread.h:
--------------------------------------------------------------------------------
1 | // QGAnimatedImageDecodeThread.h
2 | // Tencent is pleased to support the open source community by making vap available.
3 | //
4 | // Copyright (C) 2020 THL A29 Limited, a Tencent company. All rights reserved.
5 | //
6 | // Licensed under the MIT License (the "License"); you may not use this file except in
7 | // compliance with the License. You may obtain a copy of the License at
8 | //
9 | // http://opensource.org/licenses/MIT
10 | //
11 | // Unless required by applicable law or agreed to in writing, software distributed under the License is
12 | // distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
13 | // either express or implied. See the License for the specific language governing permissions and
14 | // limitations under the License.
15 |
16 | #import
17 |
18 | @interface QGAnimatedImageDecodeThread : NSThread
19 |
20 | @property (nonatomic, assign) BOOL occupied; //是否被解码器占用
21 | @property (nonatomic, readonly) NSString *sequenceDec; //线程标识信息
22 |
23 | @end
24 |
--------------------------------------------------------------------------------
/iOS/QGVAPlayer/QGVAPlayer/Classes/Controllers/QGAnimatedImageDecodeThread.m:
--------------------------------------------------------------------------------
1 | // QGAnimatedImageDecodeThread.m
2 | // Tencent is pleased to support the open source community by making vap available.
3 | //
4 | // Copyright (C) 2020 THL A29 Limited, a Tencent company. All rights reserved.
5 | //
6 | // Licensed under the MIT License (the "License"); you may not use this file except in
7 | // compliance with the License. You may obtain a copy of the License at
8 | //
9 | // http://opensource.org/licenses/MIT
10 | //
11 | // Unless required by applicable law or agreed to in writing, software distributed under the License is
12 | // distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
13 | // either express or implied. See the License for the specific language governing permissions and
14 | // limitations under the License.
15 |
16 | #import "QGAnimatedImageDecodeThread.h"
17 |
18 | @implementation QGAnimatedImageDecodeThread
19 |
20 | - (NSString *)sequenceDec
21 | {
22 | #ifdef DEBUG
23 | return [NSString stringWithFormat:@"%@",@([[self valueForKeyPath:@"private.seqNum"] integerValue])];//
24 | #else
25 | return [self description];
26 | #endif
27 | }
28 |
29 | @end
30 |
--------------------------------------------------------------------------------
/iOS/QGVAPlayer/QGVAPlayer/Classes/Controllers/QGAnimatedImageDecodeThreadPool.h:
--------------------------------------------------------------------------------
1 | // QGAnimatedImageDecodeThreadPool.h
2 | // Tencent is pleased to support the open source community by making vap available.
3 | //
4 | // Copyright (C) 2020 THL A29 Limited, a Tencent company. All rights reserved.
5 | //
6 | // Licensed under the MIT License (the "License"); you may not use this file except in
7 | // compliance with the License. You may obtain a copy of the License at
8 | //
9 | // http://opensource.org/licenses/MIT
10 | //
11 | // Unless required by applicable law or agreed to in writing, software distributed under the License is
12 | // distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
13 | // either express or implied. See the License for the specific language governing permissions and
14 | // limitations under the License.
15 |
16 | #import
17 | #import "QGAnimatedImageDecodeThread.h"
18 |
19 | @interface QGAnimatedImageDecodeThreadPool : NSObject
20 |
21 | + (instancetype)sharedPool;
22 | - (QGAnimatedImageDecodeThread *)getDecodeThread;
23 |
24 | @end
25 |
--------------------------------------------------------------------------------
/iOS/QGVAPlayer/QGVAPlayer/Classes/Models/QGBaseAnimatedImageFrame+Displaying.h:
--------------------------------------------------------------------------------
1 | // QGBaseAnimatedImageFrame+Displaying.h
2 | // Tencent is pleased to support the open source community by making vap available.
3 | //
4 | // Copyright (C) 2020 THL A29 Limited, a Tencent company. All rights reserved.
5 | //
6 | // Licensed under the MIT License (the "License"); you may not use this file except in
7 | // compliance with the License. You may obtain a copy of the License at
8 | //
9 | // http://opensource.org/licenses/MIT
10 | //
11 | // Unless required by applicable law or agreed to in writing, software distributed under the License is
12 | // distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
13 | // either express or implied. See the License for the specific language governing permissions and
14 | // limitations under the License.
15 |
16 | #import "QGBaseAnimatedImageFrame.h"
17 |
18 | @interface QGBaseAnimatedImageFrame (Displaying)
19 |
20 | @property (nonatomic, strong) NSDate *startDate; //开始播放的时间
21 | @property (nonatomic, assign) NSTimeInterval decodeTime; //解码时间
22 |
23 | - (BOOL)shouldFinishDisplaying; //是否需要结束播放(根据播放时长来决定)
24 |
25 | @end
26 |
--------------------------------------------------------------------------------
/iOS/QGVAPlayer/QGVAPlayer/Classes/Models/QGBaseAnimatedImageFrame.h:
--------------------------------------------------------------------------------
1 | // QGBaseAnimatedImageFrame.h
2 | // Tencent is pleased to support the open source community by making vap available.
3 | //
4 | // Copyright (C) 2020 THL A29 Limited, a Tencent company. All rights reserved.
5 | //
6 | // Licensed under the MIT License (the "License"); you may not use this file except in
7 | // compliance with the License. You may obtain a copy of the License at
8 | //
9 | // http://opensource.org/licenses/MIT
10 | //
11 | // Unless required by applicable law or agreed to in writing, software distributed under the License is
12 | // distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
13 | // either express or implied. See the License for the specific language governing permissions and
14 | // limitations under the License.
15 |
16 | #import
17 |
18 | @interface QGBaseAnimatedImageFrame : NSObject
19 |
20 | @property (atomic, assign) NSInteger frameIndex; //当前帧索引
21 | @property (atomic, assign) NSTimeInterval duration; //播放时长
22 | /** pts */
23 | @property (atomic, assign) uint64_t pts;
24 |
25 | @end
26 |
--------------------------------------------------------------------------------
/iOS/QGVAPlayer/QGVAPlayer/Classes/Models/QGBaseAnimatedImageFrame.m:
--------------------------------------------------------------------------------
1 | // QGBaseAnimatedImageFrame.m
2 | // Tencent is pleased to support the open source community by making vap available.
3 | //
4 | // Copyright (C) 2020 THL A29 Limited, a Tencent company. All rights reserved.
5 | //
6 | // Licensed under the MIT License (the "License"); you may not use this file except in
7 | // compliance with the License. You may obtain a copy of the License at
8 | //
9 | // http://opensource.org/licenses/MIT
10 | //
11 | // Unless required by applicable law or agreed to in writing, software distributed under the License is
12 | // distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
13 | // either express or implied. See the License for the specific language governing permissions and
14 | // limitations under the License.
15 |
16 | #import "QGBaseAnimatedImageFrame.h"
17 |
18 | @implementation QGBaseAnimatedImageFrame
19 |
20 | @end
21 |
--------------------------------------------------------------------------------
/iOS/QGVAPlayer/QGVAPlayer/Classes/Models/QGBaseDFileInfo.h:
--------------------------------------------------------------------------------
1 | // QGBaseDFileInfo.h
2 | // Tencent is pleased to support the open source community by making vap available.
3 | //
4 | // Copyright (C) 2020 THL A29 Limited, a Tencent company. All rights reserved.
5 | //
6 | // Licensed under the MIT License (the "License"); you may not use this file except in
7 | // compliance with the License. You may obtain a copy of the License at
8 | //
9 | // http://opensource.org/licenses/MIT
10 | //
11 | // Unless required by applicable law or agreed to in writing, software distributed under the License is
12 | // distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
13 | // either express or implied. See the License for the specific language governing permissions and
14 | // limitations under the License.
15 |
16 | #import
17 |
18 | @interface QGBaseDFileInfo : NSObject
19 |
20 | @property (nonatomic, strong) NSString *filePath; //文件路径
21 | @property (atomic, assign) NSInteger occupiedCount; //作用类似retainCount
22 |
23 | @end
24 |
--------------------------------------------------------------------------------
/iOS/QGVAPlayer/QGVAPlayer/Classes/Models/QGBaseDFileInfo.m:
--------------------------------------------------------------------------------
1 | // QGBaseDFileInfo.m
2 | // Tencent is pleased to support the open source community by making vap available.
3 | //
4 | // Copyright (C) 2020 THL A29 Limited, a Tencent company. All rights reserved.
5 | //
6 | // Licensed under the MIT License (the "License"); you may not use this file except in
7 | // compliance with the License. You may obtain a copy of the License at
8 | //
9 | // http://opensource.org/licenses/MIT
10 | //
11 | // Unless required by applicable law or agreed to in writing, software distributed under the License is
12 | // distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
13 | // either express or implied. See the License for the specific language governing permissions and
14 | // limitations under the License.
15 |
16 | #import "QGBaseDFileInfo.h"
17 |
18 | @implementation QGBaseDFileInfo
19 |
20 | @end
21 |
--------------------------------------------------------------------------------
/iOS/QGVAPlayer/QGVAPlayer/Classes/Models/QGMP4AnimatedImageFrame.h:
--------------------------------------------------------------------------------
1 | // QGMP4AnimatedImageFrame.h
2 | // Tencent is pleased to support the open source community by making vap available.
3 | //
4 | // Copyright (C) 2020 THL A29 Limited, a Tencent company. All rights reserved.
5 | //
6 | // Licensed under the MIT License (the "License"); you may not use this file except in
7 | // compliance with the License. You may obtain a copy of the License at
8 | //
9 | // http://opensource.org/licenses/MIT
10 | //
11 | // Unless required by applicable law or agreed to in writing, software distributed under the License is
12 | // distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
13 | // either express or implied. See the License for the specific language governing permissions and
14 | // limitations under the License.
15 |
16 | #import "QGBaseAnimatedImageFrame.h"
17 | #import
18 |
19 | @interface QGMP4AnimatedImageFrame : QGBaseAnimatedImageFrame
20 |
21 | @property (nonatomic, assign) CVPixelBufferRef pixelBuffer;
22 | @property (nonatomic, assign) int defaultFps;
23 |
24 | @end
25 |
--------------------------------------------------------------------------------
/iOS/QGVAPlayer/QGVAPlayer/Classes/Models/QGMP4AnimatedImageFrame.m:
--------------------------------------------------------------------------------
1 | // QGMP4AnimatedImageFrame.m
2 | // Tencent is pleased to support the open source community by making vap available.
3 | //
4 | // Copyright (C) 2020 THL A29 Limited, a Tencent company. All rights reserved.
5 | //
6 | // Licensed under the MIT License (the "License"); you may not use this file except in
7 | // compliance with the License. You may obtain a copy of the License at
8 | //
9 | // http://opensource.org/licenses/MIT
10 | //
11 | // Unless required by applicable law or agreed to in writing, software distributed under the License is
12 | // distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
13 | // either express or implied. See the License for the specific language governing permissions and
14 | // limitations under the License.
15 |
16 | #import "QGMP4AnimatedImageFrame.h"
17 |
18 | @implementation QGMP4AnimatedImageFrame
19 |
20 | - (void)dealloc {
21 |
22 | //释放image buffer
23 | if (self.pixelBuffer) {
24 | CVPixelBufferRelease(self.pixelBuffer);
25 | }
26 | }
27 |
28 | @end
29 |
--------------------------------------------------------------------------------
/iOS/QGVAPlayer/QGVAPlayer/Classes/Models/QGMP4HWDFileInfo.h:
--------------------------------------------------------------------------------
1 | // QGMP4HWDFileInfo.h
2 | // Tencent is pleased to support the open source community by making vap available.
3 | //
4 | // Copyright (C) 2020 THL A29 Limited, a Tencent company. All rights reserved.
5 | //
6 | // Licensed under the MIT License (the "License"); you may not use this file except in
7 | // compliance with the License. You may obtain a copy of the License at
8 | //
9 | // http://opensource.org/licenses/MIT
10 | //
11 | // Unless required by applicable law or agreed to in writing, software distributed under the License is
12 | // distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
13 | // either express or implied. See the License for the specific language governing permissions and
14 | // limitations under the License.
15 |
16 | #import "QGBaseDFileInfo.h"
17 | #import "QGMP4Parser.h"
18 |
19 | @interface QGMP4HWDFileInfo : QGBaseDFileInfo
20 |
21 | @property (nonatomic, strong) QGMP4ParserProxy *mp4Parser;
22 |
23 | @end
24 |
--------------------------------------------------------------------------------
/iOS/QGVAPlayer/QGVAPlayer/Classes/Models/QGMP4HWDFileInfo.m:
--------------------------------------------------------------------------------
1 | // QGMP4HWDFileInfo.m
2 | // Tencent is pleased to support the open source community by making vap available.
3 | //
4 | // Copyright (C) 2020 THL A29 Limited, a Tencent company. All rights reserved.
5 | //
6 | // Licensed under the MIT License (the "License"); you may not use this file except in
7 | // compliance with the License. You may obtain a copy of the License at
8 | //
9 | // http://opensource.org/licenses/MIT
10 | //
11 | // Unless required by applicable law or agreed to in writing, software distributed under the License is
12 | // distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
13 | // either express or implied. See the License for the specific language governing permissions and
14 | // limitations under the License.
15 |
16 | #import "QGMP4HWDFileInfo.h"
17 |
18 | @implementation QGMP4HWDFileInfo
19 |
20 | @end
21 |
--------------------------------------------------------------------------------
/iOS/QGVAPlayer/QGVAPlayer/Classes/Models/QGVAPMaskInfo.m:
--------------------------------------------------------------------------------
1 | // QGVAPMaskInfo.m
2 | // Tencent is pleased to support the open source community by making vap available.
3 | //
4 | // Copyright (C) 2020 THL A29 Limited, a Tencent company. All rights reserved.
5 | //
6 | // Licensed under the MIT License (the "License"); you may not use this file except in
7 | // compliance with the License. You may obtain a copy of the License at
8 | //
9 | // http://opensource.org/licenses/MIT
10 | //
11 | // Unless required by applicable law or agreed to in writing, software distributed under the License is
12 | // distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
13 | // either express or implied. See the License for the specific language governing permissions and
14 | // limitations under the License.
15 |
16 | #import "QGVAPMaskInfo.h"
17 | #import "QGVAPTextureLoader.h"
18 | #import "QGHWDMetalRenderer.h"
19 |
20 | @implementation QGVAPMaskInfo
21 |
22 | @synthesize texture = _texture;
23 |
24 | - (id)texture {
25 | if (!_texture) {
26 | _texture = [QGVAPTextureLoader loadTextureWithData:self.data device:kQGHWDMetalRendererDevice width:self.dataSize.width height:self.dataSize.height];
27 | }
28 | return _texture;
29 | }
30 |
31 | @end
32 |
--------------------------------------------------------------------------------
/iOS/QGVAPlayer/QGVAPlayer/Classes/QGVAPlayer.h:
--------------------------------------------------------------------------------
1 | // QGVAPlayer.h
2 | // Tencent is pleased to support the open source community by making vap available.
3 | //
4 | // Copyright (C) 2020 THL A29 Limited, a Tencent company. All rights reserved.
5 | //
6 | // Licensed under the MIT License (the "License"); you may not use this file except in
7 | // compliance with the License. You may obtain a copy of the License at
8 | //
9 | // http://opensource.org/licenses/MIT
10 | //
11 | // Unless required by applicable law or agreed to in writing, software distributed under the License is
12 | // distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
13 | // either express or implied. See the License for the specific language governing permissions and
14 | // limitations under the License.
15 |
16 | #import
17 | #import "UIView+VAP.h"
18 |
19 | //! Project version number for QGVAPlayer.
20 | FOUNDATION_EXPORT double QGVAPlayerVersionNumber;
21 |
22 | //! Project version string for QGVAPlayer.
23 | FOUNDATION_EXPORT const unsigned char QGVAPlayerVersionString[];
24 |
25 | // In this header, you should import all the public headers of your framework using statements like #import
26 |
27 |
28 |
--------------------------------------------------------------------------------
/iOS/QGVAPlayer/QGVAPlayer/Classes/Utils/Categorys/NSArray+VAPUtil.h:
--------------------------------------------------------------------------------
1 | // NSArray+VAPUtil.h
2 | // Tencent is pleased to support the open source community by making vap available.
3 | //
4 | // Copyright (C) 2020 THL A29 Limited, a Tencent company. All rights reserved.
5 | //
6 | // Licensed under the MIT License (the "License"); you may not use this file except in
7 | // compliance with the License. You may obtain a copy of the License at
8 | //
9 | // http://opensource.org/licenses/MIT
10 | //
11 | // Unless required by applicable law or agreed to in writing, software distributed under the License is
12 | // distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
13 | // either express or implied. See the License for the specific language governing permissions and
14 | // limitations under the License.
15 |
16 | #import
17 |
18 | @interface NSArray (VAPUtil)
19 |
20 | - (CGRect)hwd_rectValue;
21 |
22 | @end
23 |
--------------------------------------------------------------------------------
/iOS/QGVAPlayer/QGVAPlayer/Classes/Utils/Categorys/NSArray+VAPUtil.m:
--------------------------------------------------------------------------------
1 | // NSArray+VAPUtil.m
2 | // Tencent is pleased to support the open source community by making vap available.
3 | //
4 | // Copyright (C) 2020 THL A29 Limited, a Tencent company. All rights reserved.
5 | //
6 | // Licensed under the MIT License (the "License"); you may not use this file except in
7 | // compliance with the License. You may obtain a copy of the License at
8 | //
9 | // http://opensource.org/licenses/MIT
10 | //
11 | // Unless required by applicable law or agreed to in writing, software distributed under the License is
12 | // distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
13 | // either express or implied. See the License for the specific language governing permissions and
14 | // limitations under the License.
15 |
16 | #import "NSArray+VAPUtil.h"
17 |
18 | @implementation NSArray (VAPUtil)
19 |
20 | - (CGRect)hwd_rectValue {
21 |
22 | if (self.count < 4) {
23 | return CGRectZero;
24 | }
25 | for (int i = 0; i < self.count; i++) {
26 | id value = self[i];
27 | if (i >= 4) {
28 | break ;
29 | }
30 | if (![value isKindOfClass:[NSString class]] && ![value isKindOfClass:[NSNumber class]]) {
31 | return CGRectZero;
32 | }
33 | }
34 | return CGRectMake([self[0] floatValue], [self[1] floatValue], [self[2] floatValue], [self[3] floatValue]);
35 | }
36 |
37 | @end
38 |
--------------------------------------------------------------------------------
/iOS/QGVAPlayer/QGVAPlayer/Classes/Utils/Categorys/NSDictionary+VAPUtil.h:
--------------------------------------------------------------------------------
1 | // NSDictionary+VAPUtil.h
2 | // Tencent is pleased to support the open source community by making vap available.
3 | //
4 | // Copyright (C) 2020 THL A29 Limited, a Tencent company. All rights reserved.
5 | //
6 | // Licensed under the MIT License (the "License"); you may not use this file except in
7 | // compliance with the License. You may obtain a copy of the License at
8 | //
9 | // http://opensource.org/licenses/MIT
10 | //
11 | // Unless required by applicable law or agreed to in writing, software distributed under the License is
12 | // distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
13 | // either express or implied. See the License for the specific language governing permissions and
14 | // limitations under the License.
15 |
16 | #import
17 |
18 |
19 | @interface NSDictionary (VAPUtil)
20 |
21 | - (CGFloat)hwd_floatValue:(NSString *)key;
22 | - (NSInteger)hwd_integerValue:(NSString *)key;
23 | - (NSString *)hwd_stringValue:(NSString *)key;
24 | - (NSDictionary *)hwd_dicValue:(NSString *)key;
25 | - (NSArray *)hwd_arrValue:(NSString *)key;
26 |
27 | @end
28 |
29 |
--------------------------------------------------------------------------------
/iOS/QGVAPlayer/QGVAPlayer/Classes/Utils/Categorys/UIColor+VAPUtil.h:
--------------------------------------------------------------------------------
1 | // UIColor+VAPUtil.h
2 | // Tencent is pleased to support the open source community by making vap available.
3 | //
4 | // Copyright (C) 2020 THL A29 Limited, a Tencent company. All rights reserved.
5 | //
6 | // Licensed under the MIT License (the "License"); you may not use this file except in
7 | // compliance with the License. You may obtain a copy of the License at
8 | //
9 | // http://opensource.org/licenses/MIT
10 | //
11 | // Unless required by applicable law or agreed to in writing, software distributed under the License is
12 | // distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
13 | // either express or implied. See the License for the specific language governing permissions and
14 | // limitations under the License.
15 |
16 | #import
17 |
18 | NS_ASSUME_NONNULL_BEGIN
19 |
20 | @interface UIColor (VAPUtil)
21 |
22 | + (instancetype)hwd_colorWithHexString:(NSString *)hexStr;
23 |
24 | @end
25 |
26 | NS_ASSUME_NONNULL_END
27 |
--------------------------------------------------------------------------------
/iOS/QGVAPlayer/QGVAPlayer/Classes/Utils/Categorys/UIDevice+VAPUtil.m:
--------------------------------------------------------------------------------
1 | // UIDevice+VAPUtil.m
2 | // Tencent is pleased to support the open source community by making vap available.
3 | //
4 | // Copyright (C) 2020 THL A29 Limited, a Tencent company. All rights reserved.
5 | //
6 | // Licensed under the MIT License (the "License"); you may not use this file except in
7 | // compliance with the License. You may obtain a copy of the License at
8 | //
9 | // http://opensource.org/licenses/MIT
10 | //
11 | // Unless required by applicable law or agreed to in writing, software distributed under the License is
12 | // distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
13 | // either express or implied. See the License for the specific language governing permissions and
14 | // limitations under the License.
15 |
16 | #import "UIDevice+VAPUtil.h"
17 |
18 | MTLResourceOptions getDefaultMTLResourceOption() {
19 |
20 | if (@available(iOS 9.0, *)) {
21 | return MTLResourceStorageModeShared;
22 | } else {
23 | return MTLResourceCPUCacheModeDefaultCache;
24 | }
25 | }
26 | @implementation UIDevice (VAPUtil)
27 |
28 | + (double)systemVersionNum {
29 |
30 | static double version;
31 | static dispatch_once_t onceToken;
32 | dispatch_once(&onceToken, ^{
33 | version = [UIDevice currentDevice].systemVersion.doubleValue;
34 | });
35 | return version;
36 | }
37 |
38 | @end
39 |
--------------------------------------------------------------------------------
/iOS/QGVAPlayer/QGVAPlayer/Classes/Utils/Categorys/UIGestureRecognizer+VAPUtil.h:
--------------------------------------------------------------------------------
1 | // UIGestureRecognizer+VAPUtil.h
2 | // Tencent is pleased to support the open source community by making vap available.
3 | //
4 | // Copyright (C) 2020 THL A29 Limited, a Tencent company. All rights reserved.
5 | //
6 | // Licensed under the MIT License (the "License"); you may not use this file except in
7 | // compliance with the License. You may obtain a copy of the License at
8 | //
9 | // http://opensource.org/licenses/MIT
10 | //
11 | // Unless required by applicable law or agreed to in writing, software distributed under the License is
12 | // distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
13 | // either express or implied. See the License for the specific language governing permissions and
14 | // limitations under the License.
15 |
16 | #import
17 |
18 | @interface UIGestureRecognizer (VAPUtil)
19 |
20 | - (instancetype)initWithVapActionBlock:(void (^)(id sender))block;
21 |
22 | - (void)addVapActionBlock:(void (^)(id sender))block;
23 |
24 | - (void)removeAllVapActionBlocks;
25 |
26 | @end
27 |
--------------------------------------------------------------------------------
/iOS/QGVAPlayer/QGVAPlayer/Classes/Utils/Categorys/UIView+MP4HWDecode.h:
--------------------------------------------------------------------------------
1 | // UIView+MP4HWDecode.h
2 | // Tencent is pleased to support the open source community by making vap available.
3 | //
4 | // Copyright (C) 2020 THL A29 Limited, a Tencent company. All rights reserved.
5 | //
6 | // Licensed under the MIT License (the "License"); you may not use this file except in
7 | // compliance with the License. You may obtain a copy of the License at
8 | //
9 | // http://opensource.org/licenses/MIT
10 | //
11 | // Unless required by applicable law or agreed to in writing, software distributed under the License is
12 | // distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
13 | // either express or implied. See the License for the specific language governing permissions and
14 | // limitations under the License.
15 |
16 | #import
17 | #import "UIView+VAP.h"
18 |
19 | NS_ASSUME_NONNULL_BEGIN
20 |
21 | @interface UIView (MP4HWDecode)
22 |
23 | @end
24 |
25 | NS_ASSUME_NONNULL_END
26 |
--------------------------------------------------------------------------------
/iOS/QGVAPlayer/QGVAPlayer/Classes/Utils/Categorys/UIView+MP4HWDecode.m:
--------------------------------------------------------------------------------
1 | // UIView+MP4HWDecode.m
2 | // Tencent is pleased to support the open source community by making vap available.
3 | //
4 | // Copyright (C) 2020 THL A29 Limited, a Tencent company. All rights reserved.
5 | //
6 | // Licensed under the MIT License (the "License"); you may not use this file except in
7 | // compliance with the License. You may obtain a copy of the License at
8 | //
9 | // http://opensource.org/licenses/MIT
10 | //
11 | // Unless required by applicable law or agreed to in writing, software distributed under the License is
12 | // distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
13 | // either express or implied. See the License for the specific language governing permissions and
14 | // limitations under the License.
15 |
16 | #import "UIView+MP4HWDecode.h"
17 |
18 | @implementation UIView (MP4HWDecode)
19 |
20 | @end
21 |
--------------------------------------------------------------------------------
/iOS/QGVAPlayer/QGVAPlayer/Classes/Utils/QGVAPMetalShaderFunctionLoader.h:
--------------------------------------------------------------------------------
1 | // QGVAPMetalShaderFunctionLoader.h
2 | // Tencent is pleased to support the open source community by making vap available.
3 | //
4 | // Copyright (C) 2020 THL A29 Limited, a Tencent company. All rights reserved.
5 | //
6 | // Licensed under the MIT License (the "License"); you may not use this file except in
7 | // compliance with the License. You may obtain a copy of the License at
8 | //
9 | // http://opensource.org/licenses/MIT
10 | //
11 | // Unless required by applicable law or agreed to in writing, software distributed under the License is
12 | // distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
13 | // either express or implied. See the License for the specific language governing permissions and
14 | // limitations under the License.
15 |
16 | #import
17 | #import
18 |
19 | @interface QGVAPMetalShaderFunctionLoader : NSObject
20 |
21 | - (instancetype)initWithDevice:(id)device;
22 | - (id)loadFunctionWithName:(NSString *)funcName;
23 |
24 | @end
25 |
--------------------------------------------------------------------------------
/iOS/QGVAPlayer/QGVAPlayer/Classes/Utils/QGVAPSafeMutableArray.h:
--------------------------------------------------------------------------------
1 | // QGVAPSafeMutableArray.h
2 | // Tencent is pleased to support the open source community by making vap available.
3 | //
4 | // Copyright (C) 2020 THL A29 Limited, a Tencent company. All rights reserved.
5 | //
6 | // Licensed under the MIT License (the "License"); you may not use this file except in
7 | // compliance with the License. You may obtain a copy of the License at
8 | //
9 | // http://opensource.org/licenses/MIT
10 | //
11 | // Unless required by applicable law or agreed to in writing, software distributed under the License is
12 | // distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
13 | // either express or implied. See the License for the specific language governing permissions and
14 | // limitations under the License.
15 |
16 | #import
17 |
18 |
19 | /**
20 | This class inherits from NSMutableArray,make it tread safe and allow Recursive lock.
21 |
22 | @discussion access performance would lower than NSMutableArray, or using semaphore but equal to @sychronized.
23 |
24 | @warning Fast enumerate and enumerator are not thread safe
25 | */
26 | @interface QGVAPSafeMutableArray : NSMutableArray
27 |
28 | @end
29 |
--------------------------------------------------------------------------------
/iOS/QGVAPlayer/QGVAPlayer/Classes/Utils/QGVAPSafeMutableDictionary.h:
--------------------------------------------------------------------------------
1 | // QGVAPSafeMutableDictionary.h
2 | // Tencent is pleased to support the open source community by making vap available.
3 | //
4 | // Copyright (C) 2020 THL A29 Limited, a Tencent company. All rights reserved.
5 | //
6 | // Licensed under the MIT License (the "License"); you may not use this file except in
7 | // compliance with the License. You may obtain a copy of the License at
8 | //
9 | // http://opensource.org/licenses/MIT
10 | //
11 | // Unless required by applicable law or agreed to in writing, software distributed under the License is
12 | // distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
13 | // either express or implied. See the License for the specific language governing permissions and
14 | // limitations under the License.
15 |
16 | #import
17 |
18 | /**
19 | This class inherits from NSMutableDictionary, make it thread safe and allow Recursive lock.
20 |
21 | @discussion access performance would lower than NSMutableDictionary, or using semaphore but equal to @sychronized.
22 |
23 | @warning Fast enumerate and enumerator are not thread safe
24 | */
25 | @interface QGVAPSafeMutableDictionary : NSMutableDictionary
26 |
27 | @end
28 |
--------------------------------------------------------------------------------
/iOS/QGVAPlayer/QGVAPlayer/Classes/Utils/QGVAPWeakProxy.h:
--------------------------------------------------------------------------------
1 | // QGVAPWeakProxy.h
2 | // Tencent is pleased to support the open source community by making vap available.
3 | //
4 | // Copyright (C) 2020 THL A29 Limited, a Tencent company. All rights reserved.
5 | //
6 | // Licensed under the MIT License (the "License"); you may not use this file except in
7 | // compliance with the License. You may obtain a copy of the License at
8 | //
9 | // http://opensource.org/licenses/MIT
10 | //
11 | // Unless required by applicable law or agreed to in writing, software distributed under the License is
12 | // distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
13 | // either express or implied. See the License for the specific language governing permissions and
14 | // limitations under the License.
15 |
16 | #import
17 |
18 | @interface QGVAPWeakProxy : NSObject
19 |
20 | - (instancetype)initWithTarget:(id)target;
21 |
22 | + (instancetype)proxyWithTarget:(id)target;
23 |
24 | @end
25 |
--------------------------------------------------------------------------------
/iOS/QGVAPlayer/QGVAPlayer/Classes/Views/Metal/Vapx/QGVAPMetalView.h:
--------------------------------------------------------------------------------
1 | // QGVAPMetalView.h
2 | // Tencent is pleased to support the open source community by making vap available.
3 | //
4 | // Copyright (C) 2020 THL A29 Limited, a Tencent company. All rights reserved.
5 | //
6 | // Licensed under the MIT License (the "License"); you may not use this file except in
7 | // compliance with the License. You may obtain a copy of the License at
8 | //
9 | // http://opensource.org/licenses/MIT
10 | //
11 | // Unless required by applicable law or agreed to in writing, software distributed under the License is
12 | // distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
13 | // either express or implied. See the License for the specific language governing permissions and
14 | // limitations under the License.
15 |
16 | #import
17 | #import "QGVAPConfigModel.h"
18 |
19 | @class QGVAPMaskInfo;
20 |
21 | @protocol QGVAPMetalViewDelegate
22 |
23 | - (void)onMetalViewUnavailable;
24 |
25 | @end
26 |
27 | @interface QGVAPMetalView : UIView
28 |
29 | @property (nonatomic, weak) id delegate;
30 | @property (nonatomic, strong) QGVAPCommonInfo *commonInfo;
31 | @property (nonatomic, strong) QGVAPMaskInfo *maskInfo;
32 |
33 | - (void)display:(CVPixelBufferRef)pixelBuffer mergeInfos:(NSArray *)infos;
34 |
35 | - (void)dispose;
36 |
37 | @end
38 |
--------------------------------------------------------------------------------
/iOS/QGVAPlayer/QGVAPlayer/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | $(DEVELOPMENT_LANGUAGE)
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | FMWK
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleVersion
20 | $(CURRENT_PROJECT_VERSION)
21 |
22 |
23 |
--------------------------------------------------------------------------------
/iOS/QGVAPlayer/QGVAPlayerTests/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | $(DEVELOPMENT_LANGUAGE)
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | BNDL
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleVersion
20 | 1
21 |
22 |
23 |
--------------------------------------------------------------------------------
/iOS/QGVAPlayerDemo/QGVAPlayerDemo.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/iOS/QGVAPlayerDemo/QGVAPlayerDemo.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/iOS/QGVAPlayerDemo/QGVAPlayerDemo.xcodeproj/project.xcworkspace/xcuserdata/chanceguo.xcuserdatad/IDEFindNavigatorScopes.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/iOS/QGVAPlayerDemo/QGVAPlayerDemo.xcodeproj/project.xcworkspace/xcuserdata/chanceguo.xcuserdatad/UserInterfaceState.xcuserstate:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/iOS/QGVAPlayerDemo/QGVAPlayerDemo.xcodeproj/project.xcworkspace/xcuserdata/chanceguo.xcuserdatad/UserInterfaceState.xcuserstate
--------------------------------------------------------------------------------
/iOS/QGVAPlayerDemo/QGVAPlayerDemo.xcodeproj/xcuserdata/chanceguo.xcuserdatad/xcschemes/xcschememanagement.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | SchemeUserState
6 |
7 | QGVAPlayerDemo.xcscheme_^#shared#^_
8 |
9 | orderHint
10 | 0
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/iOS/QGVAPlayerDemo/QGVAPlayerDemo/AppDelegate.h:
--------------------------------------------------------------------------------
1 | // AppDelegate.h
2 | // Tencent is pleased to support the open source community by making vap available.
3 | //
4 | // Copyright (C) 2020 THL A29 Limited, a Tencent company. All rights reserved.
5 | //
6 | // Licensed under the MIT License (the "License"); you may not use this file except in
7 | // compliance with the License. You may obtain a copy of the License at
8 | //
9 | // http://opensource.org/licenses/MIT
10 | //
11 | // Unless required by applicable law or agreed to in writing, software distributed under the License is
12 | // distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
13 | // either express or implied. See the License for the specific language governing permissions and
14 | // limitations under the License.
15 |
16 | #import
17 |
18 | @interface AppDelegate : UIResponder
19 |
20 | @property (strong, nonatomic) UIWindow *window;
21 |
22 |
23 | @end
24 |
25 |
--------------------------------------------------------------------------------
/iOS/QGVAPlayerDemo/QGVAPlayerDemo/Assets.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | }
6 | }
--------------------------------------------------------------------------------
/iOS/QGVAPlayerDemo/QGVAPlayerDemo/ViewController.h:
--------------------------------------------------------------------------------
1 | // ViewController.h
2 | // Tencent is pleased to support the open source community by making vap available.
3 | //
4 | // Copyright (C) 2020 THL A29 Limited, a Tencent company. All rights reserved.
5 | //
6 | // Licensed under the MIT License (the "License"); you may not use this file except in
7 | // compliance with the License. You may obtain a copy of the License at
8 | //
9 | // http://opensource.org/licenses/MIT
10 | //
11 | // Unless required by applicable law or agreed to in writing, software distributed under the License is
12 | // distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
13 | // either express or implied. See the License for the specific language governing permissions and
14 | // limitations under the License.
15 |
16 | #import
17 |
18 | @interface ViewController : UIViewController
19 |
20 |
21 | @end
22 |
23 |
--------------------------------------------------------------------------------
/iOS/QGVAPlayerDemo/QGVAPlayerDemo/main.m:
--------------------------------------------------------------------------------
1 | // main.m
2 | // Tencent is pleased to support the open source community by making vap available.
3 | //
4 | // Copyright (C) 2020 THL A29 Limited, a Tencent company. All rights reserved.
5 | //
6 | // Licensed under the MIT License (the "License"); you may not use this file except in
7 | // compliance with the License. You may obtain a copy of the License at
8 | //
9 | // http://opensource.org/licenses/MIT
10 | //
11 | // Unless required by applicable law or agreed to in writing, software distributed under the License is
12 | // distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
13 | // either express or implied. See the License for the specific language governing permissions and
14 | // limitations under the License.
15 |
16 | #import
17 | #import "AppDelegate.h"
18 |
19 | int main(int argc, char * argv[]) {
20 | @autoreleasepool {
21 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/iOS/QGVAPlayerDemo/QGVAPlayerDemoTests/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | $(DEVELOPMENT_LANGUAGE)
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | BNDL
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleVersion
20 | 1
21 |
22 |
23 |
--------------------------------------------------------------------------------
/iOS/QGVAPlayerDemo/QGVAPlayerDemoUITests/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | $(DEVELOPMENT_LANGUAGE)
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | BNDL
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleVersion
20 | 1
21 |
22 |
23 |
--------------------------------------------------------------------------------
/iOS/QGVAPlayerDemo/Resource/demo.mp4:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/iOS/QGVAPlayerDemo/Resource/demo.mp4
--------------------------------------------------------------------------------
/iOS/QGVAPlayerDemo/Resource/qq.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/iOS/QGVAPlayerDemo/Resource/qq.png
--------------------------------------------------------------------------------
/iOS/QGVAPlayerDemo/Resource/vap.mp4:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/iOS/QGVAPlayerDemo/Resource/vap.mp4
--------------------------------------------------------------------------------
/iOS/QGVAPlayerDemoSwift/QGVAPlayerDemoSwift.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/iOS/QGVAPlayerDemoSwift/QGVAPlayerDemoSwift.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/iOS/QGVAPlayerDemoSwift/QGVAPlayerDemoSwift/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 |
--------------------------------------------------------------------------------
/iOS/QGVAPlayerDemoSwift/QGVAPlayerDemoSwift/Assets.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "author" : "xcode",
4 | "version" : 1
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/iOS/QGVAPlayerDemoSwift/QGVAPlayerDemoSwift/QGVAPlayer-Bridging-Header.h:
--------------------------------------------------------------------------------
1 | // QGVAPlayer-Bridging-Header.h
2 | // Tencent is pleased to support the open source community by making vap available.
3 | //
4 | // Copyright (C) 2020 THL A29 Limited, a Tencent company. All rights reserved.
5 | //
6 | // Licensed under the MIT License (the "License"); you may not use this file except in
7 | // compliance with the License. You may obtain a copy of the License at
8 | //
9 | // http://opensource.org/licenses/MIT
10 | //
11 | // Unless required by applicable law or agreed to in writing, software distributed under the License is
12 | // distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
13 | // either express or implied. See the License for the specific language governing permissions and
14 | // limitations under the License.
15 |
16 | #ifndef QGVAPlayer_Bridging_Header_h
17 | #define QGVAPlayer_Bridging_Header_h
18 |
19 | #import "UIView+VAP.h"
20 | #import "QGVAPConfigModel.h"
21 | #import "QGVAPWrapView.h"
22 |
23 | #endif /* QGVAPlayer_Bridging_Header_h */
24 |
--------------------------------------------------------------------------------
/images/anim1.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/images/anim1.gif
--------------------------------------------------------------------------------
/images/anim2.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/images/anim2.gif
--------------------------------------------------------------------------------
/images/anim3.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/images/anim3.gif
--------------------------------------------------------------------------------
/images/anim4.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/images/anim4.gif
--------------------------------------------------------------------------------
/images/anim5.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/images/anim5.gif
--------------------------------------------------------------------------------
/images/icons.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/images/icons.png
--------------------------------------------------------------------------------
/images/pic1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/images/pic1.png
--------------------------------------------------------------------------------
/images/pic2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/images/pic2.png
--------------------------------------------------------------------------------
/images/pic3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/images/pic3.png
--------------------------------------------------------------------------------
/images/pic4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/images/pic4.png
--------------------------------------------------------------------------------
/images/pic5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/images/pic5.png
--------------------------------------------------------------------------------
/tool/JsonDesc.md:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/tool/images/1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/images/1.png
--------------------------------------------------------------------------------
/tool/images/2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/images/2.png
--------------------------------------------------------------------------------
/tool/images/3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/images/3.png
--------------------------------------------------------------------------------
/tool/images/4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/images/4.png
--------------------------------------------------------------------------------
/tool/images/vap_field_info.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/images/vap_field_info.png
--------------------------------------------------------------------------------
/tool/images/vaptool_java_01.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/images/vaptool_java_01.png
--------------------------------------------------------------------------------
/tool/images/vaptool_java_02.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/images/vaptool_java_02.png
--------------------------------------------------------------------------------
/tool/simple_demo/000.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/simple_demo/000.png
--------------------------------------------------------------------------------
/tool/simple_demo/001.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/simple_demo/001.png
--------------------------------------------------------------------------------
/tool/simple_demo/002.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/simple_demo/002.png
--------------------------------------------------------------------------------
/tool/simple_demo/003.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/simple_demo/003.png
--------------------------------------------------------------------------------
/tool/simple_demo/004.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/simple_demo/004.png
--------------------------------------------------------------------------------
/tool/simple_demo/005.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/simple_demo/005.png
--------------------------------------------------------------------------------
/tool/simple_demo/006.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/simple_demo/006.png
--------------------------------------------------------------------------------
/tool/simple_demo/007.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/simple_demo/007.png
--------------------------------------------------------------------------------
/tool/simple_demo/008.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/simple_demo/008.png
--------------------------------------------------------------------------------
/tool/simple_demo/009.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/simple_demo/009.png
--------------------------------------------------------------------------------
/tool/simple_demo/010.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/simple_demo/010.png
--------------------------------------------------------------------------------
/tool/simple_demo/011.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/simple_demo/011.png
--------------------------------------------------------------------------------
/tool/simple_demo/012.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/simple_demo/012.png
--------------------------------------------------------------------------------
/tool/simple_demo/013.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/simple_demo/013.png
--------------------------------------------------------------------------------
/tool/simple_demo/014.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/simple_demo/014.png
--------------------------------------------------------------------------------
/tool/simple_demo/015.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/simple_demo/015.png
--------------------------------------------------------------------------------
/tool/simple_demo/016.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/simple_demo/016.png
--------------------------------------------------------------------------------
/tool/simple_demo/017.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/simple_demo/017.png
--------------------------------------------------------------------------------
/tool/simple_demo/018.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/simple_demo/018.png
--------------------------------------------------------------------------------
/tool/simple_demo/019.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/simple_demo/019.png
--------------------------------------------------------------------------------
/tool/simple_demo/020.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/simple_demo/020.png
--------------------------------------------------------------------------------
/tool/simple_demo/021.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/simple_demo/021.png
--------------------------------------------------------------------------------
/tool/simple_demo/022.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/simple_demo/022.png
--------------------------------------------------------------------------------
/tool/simple_demo/023.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/simple_demo/023.png
--------------------------------------------------------------------------------
/tool/simple_demo/024.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/simple_demo/024.png
--------------------------------------------------------------------------------
/tool/simple_demo/025.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/simple_demo/025.png
--------------------------------------------------------------------------------
/tool/simple_demo/026.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/simple_demo/026.png
--------------------------------------------------------------------------------
/tool/simple_demo/027.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/simple_demo/027.png
--------------------------------------------------------------------------------
/tool/simple_demo/028.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/simple_demo/028.png
--------------------------------------------------------------------------------
/tool/simple_demo/029.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/simple_demo/029.png
--------------------------------------------------------------------------------
/tool/simple_demo/030.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/simple_demo/030.png
--------------------------------------------------------------------------------
/tool/simple_demo/031.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/simple_demo/031.png
--------------------------------------------------------------------------------
/tool/simple_demo/032.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/simple_demo/032.png
--------------------------------------------------------------------------------
/tool/simple_demo/033.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/simple_demo/033.png
--------------------------------------------------------------------------------
/tool/simple_demo/034.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/simple_demo/034.png
--------------------------------------------------------------------------------
/tool/simple_demo/035.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/simple_demo/035.png
--------------------------------------------------------------------------------
/tool/simple_demo/036.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/simple_demo/036.png
--------------------------------------------------------------------------------
/tool/simple_demo/037.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/simple_demo/037.png
--------------------------------------------------------------------------------
/tool/simple_demo/038.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/simple_demo/038.png
--------------------------------------------------------------------------------
/tool/simple_demo/039.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/simple_demo/039.png
--------------------------------------------------------------------------------
/tool/simple_demo/040.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/simple_demo/040.png
--------------------------------------------------------------------------------
/tool/simple_demo/041.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/simple_demo/041.png
--------------------------------------------------------------------------------
/tool/simple_demo/042.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/simple_demo/042.png
--------------------------------------------------------------------------------
/tool/simple_demo/043.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/simple_demo/043.png
--------------------------------------------------------------------------------
/tool/simple_demo/044.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/simple_demo/044.png
--------------------------------------------------------------------------------
/tool/simple_demo/045.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/simple_demo/045.png
--------------------------------------------------------------------------------
/tool/simple_demo/046.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/simple_demo/046.png
--------------------------------------------------------------------------------
/tool/simple_demo/047.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/simple_demo/047.png
--------------------------------------------------------------------------------
/tool/simple_demo/048.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/simple_demo/048.png
--------------------------------------------------------------------------------
/tool/simple_demo/049.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/simple_demo/049.png
--------------------------------------------------------------------------------
/tool/simple_demo/050.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/simple_demo/050.png
--------------------------------------------------------------------------------
/tool/simple_demo/051.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/simple_demo/051.png
--------------------------------------------------------------------------------
/tool/simple_demo/052.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/simple_demo/052.png
--------------------------------------------------------------------------------
/tool/simple_demo/053.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/simple_demo/053.png
--------------------------------------------------------------------------------
/tool/simple_demo/054.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/simple_demo/054.png
--------------------------------------------------------------------------------
/tool/simple_demo/055.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/simple_demo/055.png
--------------------------------------------------------------------------------
/tool/simple_demo/056.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/simple_demo/056.png
--------------------------------------------------------------------------------
/tool/simple_demo/057.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/simple_demo/057.png
--------------------------------------------------------------------------------
/tool/simple_demo/058.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/simple_demo/058.png
--------------------------------------------------------------------------------
/tool/simple_demo/059.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/simple_demo/059.png
--------------------------------------------------------------------------------
/tool/simple_demo/060.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/simple_demo/060.png
--------------------------------------------------------------------------------
/tool/simple_demo/061.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/simple_demo/061.png
--------------------------------------------------------------------------------
/tool/simple_demo/062.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/simple_demo/062.png
--------------------------------------------------------------------------------
/tool/simple_demo/063.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/simple_demo/063.png
--------------------------------------------------------------------------------
/tool/simple_demo/064.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/simple_demo/064.png
--------------------------------------------------------------------------------
/tool/simple_demo/065.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/simple_demo/065.png
--------------------------------------------------------------------------------
/tool/simple_demo/066.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/simple_demo/066.png
--------------------------------------------------------------------------------
/tool/simple_demo/067.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/simple_demo/067.png
--------------------------------------------------------------------------------
/tool/simple_demo/068.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/simple_demo/068.png
--------------------------------------------------------------------------------
/tool/simple_demo/069.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/simple_demo/069.png
--------------------------------------------------------------------------------
/tool/simple_demo/070.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/simple_demo/070.png
--------------------------------------------------------------------------------
/tool/simple_demo/071.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/simple_demo/071.png
--------------------------------------------------------------------------------
/tool/simple_demo/072.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/simple_demo/072.png
--------------------------------------------------------------------------------
/tool/simple_demo/073.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/simple_demo/073.png
--------------------------------------------------------------------------------
/tool/simple_demo/074.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/simple_demo/074.png
--------------------------------------------------------------------------------
/tool/simple_demo/075.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/simple_demo/075.png
--------------------------------------------------------------------------------
/tool/simple_demo/076.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/simple_demo/076.png
--------------------------------------------------------------------------------
/tool/simple_demo/077.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/simple_demo/077.png
--------------------------------------------------------------------------------
/tool/simple_demo/078.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/simple_demo/078.png
--------------------------------------------------------------------------------
/tool/simple_demo/079.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/simple_demo/079.png
--------------------------------------------------------------------------------
/tool/vapxTool/VapxTool.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/tool/vapxTool/VapxTool/AppDelegate.h:
--------------------------------------------------------------------------------
1 | // Tencent is pleased to support the open source community by making vap available.
2 | //
3 | // Copyright (C) 2020 THL A29 Limited, a Tencent company. All rights reserved.
4 | //
5 | // Licensed under the MIT License (the "License"); you may not use this file except in
6 | // compliance with the License. You may obtain a copy of the License at
7 | //
8 | // http://opensource.org/licenses/MIT
9 | //
10 | // Unless required by applicable law or agreed to in writing, software distributed under the License is
11 | // distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
12 | // either express or implied. See the License for the specific language governing permissions and
13 | // limitations under the License.
14 |
15 | #import
16 |
17 | @interface AppDelegate : NSObject
18 |
19 | @property (nonatomic, strong) NSString *encoder;
20 |
21 | @end
22 |
23 |
--------------------------------------------------------------------------------
/tool/vapxTool/VapxTool/AppDelegate.m:
--------------------------------------------------------------------------------
1 | // Tencent is pleased to support the open source community by making vap available.
2 | //
3 | // Copyright (C) 2020 THL A29 Limited, a Tencent company. All rights reserved.
4 | //
5 | // Licensed under the MIT License (the "License"); you may not use this file except in
6 | // compliance with the License. You may obtain a copy of the License at
7 | //
8 | // http://opensource.org/licenses/MIT
9 | //
10 | // Unless required by applicable law or agreed to in writing, software distributed under the License is
11 | // distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
12 | // either express or implied. See the License for the specific language governing permissions and
13 | // limitations under the License.
14 |
15 | #import "AppDelegate.h"
16 |
17 | @interface AppDelegate ()
18 |
19 | @end
20 |
21 | @implementation AppDelegate
22 | - (IBAction)encoderDidChoose:(NSMenuItem *)sender {
23 | NSLog(@"%@", sender.title);
24 | [sender.menu setTitle:sender.title];
25 | self.encoder = sender.title;
26 | }
27 |
28 | - (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
29 | // Insert code here to initialize your application
30 | }
31 |
32 |
33 | - (void)applicationWillTerminate:(NSNotification *)aNotification {
34 | // Insert code here to tear down your application
35 | }
36 |
37 |
38 | @end
39 |
--------------------------------------------------------------------------------
/tool/vapxTool/VapxTool/Assets.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "mac",
5 | "size" : "16x16",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "mac",
10 | "size" : "16x16",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "mac",
15 | "size" : "32x32",
16 | "scale" : "1x"
17 | },
18 | {
19 | "size" : "32x32",
20 | "idiom" : "mac",
21 | "filename" : "icons8-idea-64.png",
22 | "scale" : "2x"
23 | },
24 | {
25 | "idiom" : "mac",
26 | "size" : "128x128",
27 | "scale" : "1x"
28 | },
29 | {
30 | "idiom" : "mac",
31 | "size" : "128x128",
32 | "scale" : "2x"
33 | },
34 | {
35 | "idiom" : "mac",
36 | "size" : "256x256",
37 | "scale" : "1x"
38 | },
39 | {
40 | "idiom" : "mac",
41 | "size" : "256x256",
42 | "scale" : "2x"
43 | },
44 | {
45 | "idiom" : "mac",
46 | "size" : "512x512",
47 | "scale" : "1x"
48 | },
49 | {
50 | "idiom" : "mac",
51 | "size" : "512x512",
52 | "scale" : "2x"
53 | }
54 | ],
55 | "info" : {
56 | "version" : 1,
57 | "author" : "xcode"
58 | }
59 | }
--------------------------------------------------------------------------------
/tool/vapxTool/VapxTool/Assets.xcassets/AppIcon.appiconset/icons8-idea-64.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapxTool/VapxTool/Assets.xcassets/AppIcon.appiconset/icons8-idea-64.png
--------------------------------------------------------------------------------
/tool/vapxTool/VapxTool/Assets.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | }
6 | }
--------------------------------------------------------------------------------
/tool/vapxTool/VapxTool/Assets.xcassets/addMergeInfo.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "add.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "version" : 1,
19 | "author" : "xcode"
20 | }
21 | }
--------------------------------------------------------------------------------
/tool/vapxTool/VapxTool/Assets.xcassets/addMergeInfo.imageset/add.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapxTool/VapxTool/Assets.xcassets/addMergeInfo.imageset/add.png
--------------------------------------------------------------------------------
/tool/vapxTool/VapxTool/Assets.xcassets/close.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "close.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "version" : 1,
19 | "author" : "xcode"
20 | }
21 | }
--------------------------------------------------------------------------------
/tool/vapxTool/VapxTool/Assets.xcassets/close.imageset/close.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapxTool/VapxTool/Assets.xcassets/close.imageset/close.png
--------------------------------------------------------------------------------
/tool/vapxTool/VapxTool/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | $(DEVELOPMENT_LANGUAGE)
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIconFile
10 |
11 | CFBundleIdentifier
12 | $(PRODUCT_BUNDLE_IDENTIFIER)
13 | CFBundleInfoDictionaryVersion
14 | 6.0
15 | CFBundleName
16 | $(PRODUCT_NAME)
17 | CFBundlePackageType
18 | APPL
19 | CFBundleShortVersionString
20 | 1.0
21 | CFBundleVersion
22 | 1
23 | LSMinimumSystemVersion
24 | $(MACOSX_DEPLOYMENT_TARGET)
25 | NSHumanReadableCopyright
26 | Copyright © 2019 Chance Guo. All rights reserved.
27 | NSMainStoryboardFile
28 | Main
29 | NSPrincipalClass
30 | NSApplication
31 |
32 |
33 |
--------------------------------------------------------------------------------
/tool/vapxTool/VapxTool/Utils/NSArray+HWDUtil.h:
--------------------------------------------------------------------------------
1 | // Tencent is pleased to support the open source community by making vap available.
2 | //
3 | // Copyright (C) 2020 THL A29 Limited, a Tencent company. All rights reserved.
4 | //
5 | // Licensed under the MIT License (the "License"); you may not use this file except in
6 | // compliance with the License. You may obtain a copy of the License at
7 | //
8 | // http://opensource.org/licenses/MIT
9 | //
10 | // Unless required by applicable law or agreed to in writing, software distributed under the License is
11 | // distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
12 | // either express or implied. See the License for the specific language governing permissions and
13 | // limitations under the License.
14 |
15 | #import
16 |
17 | @interface NSArray (HWDUtil)
18 |
19 | - (CGRect)hwd_rectValue;
20 |
21 | @end
22 |
--------------------------------------------------------------------------------
/tool/vapxTool/VapxTool/Utils/NSArray+HWDUtil.m:
--------------------------------------------------------------------------------
1 | // Tencent is pleased to support the open source community by making vap available.
2 | //
3 | // Copyright (C) 2020 THL A29 Limited, a Tencent company. All rights reserved.
4 | //
5 | // Licensed under the MIT License (the "License"); you may not use this file except in
6 | // compliance with the License. You may obtain a copy of the License at
7 | //
8 | // http://opensource.org/licenses/MIT
9 | //
10 | // Unless required by applicable law or agreed to in writing, software distributed under the License is
11 | // distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
12 | // either express or implied. See the License for the specific language governing permissions and
13 | // limitations under the License.
14 |
15 | #import "NSArray+HWDUtil.h"
16 |
17 | @implementation NSArray (HWDUtil)
18 |
19 | - (CGRect)hwd_rectValue {
20 |
21 | if (self.count < 4) {
22 | return CGRectZero;
23 | }
24 | for (int i = 0; i < self.count; i++) {
25 | id value = self[i];
26 | if (i >= 4) {
27 | break ;
28 | }
29 | if (![value isKindOfClass:[NSString class]] && ![value isKindOfClass:[NSNumber class]]) {
30 | return CGRectZero;
31 | }
32 | }
33 | return CGRectMake([self[0] floatValue], [self[1] floatValue], [self[2] floatValue], [self[3] floatValue]);
34 | }
35 |
36 | @end
37 |
--------------------------------------------------------------------------------
/tool/vapxTool/VapxTool/Utils/NSDictionary+HWDUtil.h:
--------------------------------------------------------------------------------
1 | // Tencent is pleased to support the open source community by making vap available.
2 | //
3 | // Copyright (C) 2020 THL A29 Limited, a Tencent company. All rights reserved.
4 | //
5 | // Licensed under the MIT License (the "License"); you may not use this file except in
6 | // compliance with the License. You may obtain a copy of the License at
7 | //
8 | // http://opensource.org/licenses/MIT
9 | //
10 | // Unless required by applicable law or agreed to in writing, software distributed under the License is
11 | // distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
12 | // either express or implied. See the License for the specific language governing permissions and
13 | // limitations under the License.
14 |
15 | #import
16 |
17 |
18 | @interface NSDictionary (HWDUtil)
19 |
20 | - (CGFloat)hwd_floatValue:(NSString *)key;
21 | - (NSInteger)hwd_integerValue:(NSString *)key;
22 | - (NSString *)hwd_stringValue:(NSString *)key;
23 | - (NSDictionary *)hwd_dicValue:(NSString *)key;
24 | - (NSArray *)hwd_arrValue:(NSString *)key;
25 |
26 | @end
27 |
28 |
--------------------------------------------------------------------------------
/tool/vapxTool/VapxTool/VapxTool.entitlements:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | com.apple.security.app-sandbox
6 |
7 | com.apple.security.files.user-selected.read-write
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/tool/vapxTool/VapxTool/ViewController.h:
--------------------------------------------------------------------------------
1 | // Tencent is pleased to support the open source community by making vap available.
2 | //
3 | // Copyright (C) 2020 THL A29 Limited, a Tencent company. All rights reserved.
4 | //
5 | // Licensed under the MIT License (the "License"); you may not use this file except in
6 | // compliance with the License. You may obtain a copy of the License at
7 | //
8 | // http://opensource.org/licenses/MIT
9 | //
10 | // Unless required by applicable law or agreed to in writing, software distributed under the License is
11 | // distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
12 | // either express or implied. See the License for the specific language governing permissions and
13 | // limitations under the License.
14 |
15 | #import
16 |
17 | @interface ViewController : NSViewController
18 |
19 |
20 | @end
21 |
22 |
--------------------------------------------------------------------------------
/tool/vapxTool/VapxTool/controllers/VapxAlphaExtractor.h:
--------------------------------------------------------------------------------
1 | // Tencent is pleased to support the open source community by making vap available.
2 | //
3 | // Copyright (C) 2020 THL A29 Limited, a Tencent company. All rights reserved.
4 | //
5 | // Licensed under the MIT License (the "License"); you may not use this file except in
6 | // compliance with the License. You may obtain a copy of the License at
7 | //
8 | // http://opensource.org/licenses/MIT
9 | //
10 | // Unless required by applicable law or agreed to in writing, software distributed under the License is
11 | // distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
12 | // either express or implied. See the License for the specific language governing permissions and
13 | // limitations under the License.
14 |
15 | #import
16 | #import "QGVAPConfigModel.h"
17 |
18 | typedef void (^extractCompletionBlock)(NSInteger framesCount, NSArray* alphaFiles, NSArray* rgbFiles);
19 |
20 | @interface VapxAlphaExtractor : NSObject
21 |
22 | @property (nonatomic, strong) NSString * resourceDirectory;
23 |
24 | + (NSString *)extractWithDir:(NSString *)directory info:(QGVAPCommonInfo**)info completion:(extractCompletionBlock)onCompletion;
25 | - (NSString *)extract:(QGVAPCommonInfo**)info completion:(extractCompletionBlock)onCompletion;
26 |
27 | @end
28 |
--------------------------------------------------------------------------------
/tool/vapxTool/VapxTool/controllers/VapxMaskInfoGenerator.h:
--------------------------------------------------------------------------------
1 | // Tencent is pleased to support the open source community by making vap available.
2 | //
3 | // Copyright (C) 2020 THL A29 Limited, a Tencent company. All rights reserved.
4 | //
5 | // Licensed under the MIT License (the "License"); you may not use this file except in
6 | // compliance with the License. You may obtain a copy of the License at
7 | //
8 | // http://opensource.org/licenses/MIT
9 | //
10 | // Unless required by applicable law or agreed to in writing, software distributed under the License is
11 | // distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
12 | // either express or implied. See the License for the specific language governing permissions and
13 | // limitations under the License.
14 |
15 | #import
16 | #import "QGVAPConfigModel.h"
17 |
18 | NS_ASSUME_NONNULL_BEGIN
19 |
20 | @interface VapxMaskInfoGenerator : NSObject
21 |
22 | + (NSDictionary*> *)mergeInfoAt:(NSArray*)paths sources:(NSArray *)sources frames:(NSInteger)frameCount;
23 |
24 | @end
25 |
26 | NS_ASSUME_NONNULL_END
27 |
--------------------------------------------------------------------------------
/tool/vapxTool/VapxTool/controllers/VapxMp4Editor.h:
--------------------------------------------------------------------------------
1 | // Tencent is pleased to support the open source community by making vap available.
2 | //
3 | // Copyright (C) 2020 THL A29 Limited, a Tencent company. All rights reserved.
4 | //
5 | // Licensed under the MIT License (the "License"); you may not use this file except in
6 | // compliance with the License. You may obtain a copy of the License at
7 | //
8 | // http://opensource.org/licenses/MIT
9 | //
10 | // Unless required by applicable law or agreed to in writing, software distributed under the License is
11 | // distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
12 | // either express or implied. See the License for the specific language governing permissions and
13 | // limitations under the License.
14 |
15 | #import
16 |
17 | NS_ASSUME_NONNULL_BEGIN
18 |
19 | @interface VapxMp4Editor : NSObject
20 |
21 | @property (nonatomic, strong) NSString *inputPath;
22 | @property (nonatomic, strong) NSString *outputPath;
23 |
24 | - (NSString *)mp4ByInsertAtom:(NSString *)atomPath atIndex:(NSInteger)index;
25 |
26 | @end
27 |
28 | NS_ASSUME_NONNULL_END
29 |
--------------------------------------------------------------------------------
/tool/vapxTool/VapxTool/main.m:
--------------------------------------------------------------------------------
1 | // Tencent is pleased to support the open source community by making vap available.
2 | //
3 | // Copyright (C) 2020 THL A29 Limited, a Tencent company. All rights reserved.
4 | //
5 | // Licensed under the MIT License (the "License"); you may not use this file except in
6 | // compliance with the License. You may obtain a copy of the License at
7 | //
8 | // http://opensource.org/licenses/MIT
9 | //
10 | // Unless required by applicable law or agreed to in writing, software distributed under the License is
11 | // distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
12 | // either express or implied. See the License for the specific language governing permissions and
13 | // limitations under the License.
14 |
15 | #import
16 |
17 | int main(int argc, const char * argv[]) {
18 | return NSApplicationMain(argc, argv);
19 | }
20 |
--------------------------------------------------------------------------------
/tool/vapxTool/VapxTool/views/VapProgressHUD.h:
--------------------------------------------------------------------------------
1 | // Tencent is pleased to support the open source community by making vap available.
2 | //
3 | // Copyright (C) 2020 THL A29 Limited, a Tencent company. All rights reserved.
4 | //
5 | // Licensed under the MIT License (the "License"); you may not use this file except in
6 | // compliance with the License. You may obtain a copy of the License at
7 | //
8 | // http://opensource.org/licenses/MIT
9 | //
10 | // Unless required by applicable law or agreed to in writing, software distributed under the License is
11 | // distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
12 | // either express or implied. See the License for the specific language governing permissions and
13 | // limitations under the License.
14 |
15 | #import
16 |
17 | NS_ASSUME_NONNULL_BEGIN
18 |
19 | @interface VapProgressHUD : NSView
20 |
21 | @property (nonatomic, assign) CGFloat currentValue;
22 |
23 | - (void)show;
24 |
25 | - (void)hide;
26 |
27 | - (instancetype)initWithView:(NSView *)view;
28 |
29 | + (instancetype)showHUDToSuperView:(NSView *)superView;
30 |
31 | @end
32 |
33 | NS_ASSUME_NONNULL_END
34 |
--------------------------------------------------------------------------------
/tool/vapxTool/VapxToolTests/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | $(DEVELOPMENT_LANGUAGE)
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | BNDL
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleVersion
20 | 1
21 |
22 |
23 |
--------------------------------------------------------------------------------
/tool/vapxTool/VapxToolUITests/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | $(DEVELOPMENT_LANGUAGE)
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | BNDL
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleVersion
20 | 1
21 |
22 |
23 |
--------------------------------------------------------------------------------
/tool/vapxTool/frameworks/Bento4-SDK-1-5-1-628/bin/aac2mp4:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapxTool/frameworks/Bento4-SDK-1-5-1-628/bin/aac2mp4
--------------------------------------------------------------------------------
/tool/vapxTool/frameworks/Bento4-SDK-1-5-1-628/bin/libBento4C.dylib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapxTool/frameworks/Bento4-SDK-1-5-1-628/bin/libBento4C.dylib
--------------------------------------------------------------------------------
/tool/vapxTool/frameworks/Bento4-SDK-1-5-1-628/bin/mp42aac:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapxTool/frameworks/Bento4-SDK-1-5-1-628/bin/mp42aac
--------------------------------------------------------------------------------
/tool/vapxTool/frameworks/Bento4-SDK-1-5-1-628/bin/mp42avc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapxTool/frameworks/Bento4-SDK-1-5-1-628/bin/mp42avc
--------------------------------------------------------------------------------
/tool/vapxTool/frameworks/Bento4-SDK-1-5-1-628/bin/mp42hevc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapxTool/frameworks/Bento4-SDK-1-5-1-628/bin/mp42hevc
--------------------------------------------------------------------------------
/tool/vapxTool/frameworks/Bento4-SDK-1-5-1-628/bin/mp42hls:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapxTool/frameworks/Bento4-SDK-1-5-1-628/bin/mp42hls
--------------------------------------------------------------------------------
/tool/vapxTool/frameworks/Bento4-SDK-1-5-1-628/bin/mp42ts:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapxTool/frameworks/Bento4-SDK-1-5-1-628/bin/mp42ts
--------------------------------------------------------------------------------
/tool/vapxTool/frameworks/Bento4-SDK-1-5-1-628/bin/mp4compact:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapxTool/frameworks/Bento4-SDK-1-5-1-628/bin/mp4compact
--------------------------------------------------------------------------------
/tool/vapxTool/frameworks/Bento4-SDK-1-5-1-628/bin/mp4dash:
--------------------------------------------------------------------------------
1 | #! /bin/bash
2 | BASEDIR=$(dirname $0)
3 | exec python "$BASEDIR/../utils/mp4-dash.py" "$@"
4 |
--------------------------------------------------------------------------------
/tool/vapxTool/frameworks/Bento4-SDK-1-5-1-628/bin/mp4dashclone:
--------------------------------------------------------------------------------
1 | #! /bin/bash
2 | BASEDIR=$(dirname $0)
3 | exec python "$BASEDIR/../utils/mp4-dash-clone.py" "$@"
4 |
--------------------------------------------------------------------------------
/tool/vapxTool/frameworks/Bento4-SDK-1-5-1-628/bin/mp4dcfpackager:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapxTool/frameworks/Bento4-SDK-1-5-1-628/bin/mp4dcfpackager
--------------------------------------------------------------------------------
/tool/vapxTool/frameworks/Bento4-SDK-1-5-1-628/bin/mp4decrypt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapxTool/frameworks/Bento4-SDK-1-5-1-628/bin/mp4decrypt
--------------------------------------------------------------------------------
/tool/vapxTool/frameworks/Bento4-SDK-1-5-1-628/bin/mp4dump:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapxTool/frameworks/Bento4-SDK-1-5-1-628/bin/mp4dump
--------------------------------------------------------------------------------
/tool/vapxTool/frameworks/Bento4-SDK-1-5-1-628/bin/mp4edit:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapxTool/frameworks/Bento4-SDK-1-5-1-628/bin/mp4edit
--------------------------------------------------------------------------------
/tool/vapxTool/frameworks/Bento4-SDK-1-5-1-628/bin/mp4encrypt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapxTool/frameworks/Bento4-SDK-1-5-1-628/bin/mp4encrypt
--------------------------------------------------------------------------------
/tool/vapxTool/frameworks/Bento4-SDK-1-5-1-628/bin/mp4extract:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapxTool/frameworks/Bento4-SDK-1-5-1-628/bin/mp4extract
--------------------------------------------------------------------------------
/tool/vapxTool/frameworks/Bento4-SDK-1-5-1-628/bin/mp4fragment:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapxTool/frameworks/Bento4-SDK-1-5-1-628/bin/mp4fragment
--------------------------------------------------------------------------------
/tool/vapxTool/frameworks/Bento4-SDK-1-5-1-628/bin/mp4hls:
--------------------------------------------------------------------------------
1 | #! /bin/bash
2 | BASEDIR=$(dirname $0)
3 | exec python "$BASEDIR/../utils/mp4-hls.py" "$@"
4 |
--------------------------------------------------------------------------------
/tool/vapxTool/frameworks/Bento4-SDK-1-5-1-628/bin/mp4iframeindex:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapxTool/frameworks/Bento4-SDK-1-5-1-628/bin/mp4iframeindex
--------------------------------------------------------------------------------
/tool/vapxTool/frameworks/Bento4-SDK-1-5-1-628/bin/mp4info:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapxTool/frameworks/Bento4-SDK-1-5-1-628/bin/mp4info
--------------------------------------------------------------------------------
/tool/vapxTool/frameworks/Bento4-SDK-1-5-1-628/bin/mp4mux:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapxTool/frameworks/Bento4-SDK-1-5-1-628/bin/mp4mux
--------------------------------------------------------------------------------
/tool/vapxTool/frameworks/Bento4-SDK-1-5-1-628/bin/mp4rtphintinfo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapxTool/frameworks/Bento4-SDK-1-5-1-628/bin/mp4rtphintinfo
--------------------------------------------------------------------------------
/tool/vapxTool/frameworks/Bento4-SDK-1-5-1-628/bin/mp4split:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapxTool/frameworks/Bento4-SDK-1-5-1-628/bin/mp4split
--------------------------------------------------------------------------------
/tool/vapxTool/frameworks/Bento4-SDK-1-5-1-628/bin/mp4tag:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapxTool/frameworks/Bento4-SDK-1-5-1-628/bin/mp4tag
--------------------------------------------------------------------------------
/tool/vapxTool/frameworks/ffmpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapxTool/frameworks/ffmpeg
--------------------------------------------------------------------------------
/tool/vapx_demo/mask/name/000.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/mask/name/000.png
--------------------------------------------------------------------------------
/tool/vapx_demo/mask/name/001.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/mask/name/001.png
--------------------------------------------------------------------------------
/tool/vapx_demo/mask/name/002.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/mask/name/002.png
--------------------------------------------------------------------------------
/tool/vapx_demo/mask/name/003.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/mask/name/003.png
--------------------------------------------------------------------------------
/tool/vapx_demo/mask/name/004.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/mask/name/004.png
--------------------------------------------------------------------------------
/tool/vapx_demo/mask/name/005.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/mask/name/005.png
--------------------------------------------------------------------------------
/tool/vapx_demo/mask/name/006.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/mask/name/006.png
--------------------------------------------------------------------------------
/tool/vapx_demo/mask/name/007.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/mask/name/007.png
--------------------------------------------------------------------------------
/tool/vapx_demo/mask/name/008.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/mask/name/008.png
--------------------------------------------------------------------------------
/tool/vapx_demo/mask/name/009.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/mask/name/009.png
--------------------------------------------------------------------------------
/tool/vapx_demo/mask/name/010.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/mask/name/010.png
--------------------------------------------------------------------------------
/tool/vapx_demo/mask/name/011.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/mask/name/011.png
--------------------------------------------------------------------------------
/tool/vapx_demo/mask/name/012.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/mask/name/012.png
--------------------------------------------------------------------------------
/tool/vapx_demo/mask/name/013.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/mask/name/013.png
--------------------------------------------------------------------------------
/tool/vapx_demo/mask/name/014.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/mask/name/014.png
--------------------------------------------------------------------------------
/tool/vapx_demo/mask/name/015.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/mask/name/015.png
--------------------------------------------------------------------------------
/tool/vapx_demo/mask/name/016.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/mask/name/016.png
--------------------------------------------------------------------------------
/tool/vapx_demo/mask/name/017.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/mask/name/017.png
--------------------------------------------------------------------------------
/tool/vapx_demo/mask/name/018.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/mask/name/018.png
--------------------------------------------------------------------------------
/tool/vapx_demo/mask/name/019.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/mask/name/019.png
--------------------------------------------------------------------------------
/tool/vapx_demo/mask/name/020.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/mask/name/020.png
--------------------------------------------------------------------------------
/tool/vapx_demo/mask/name/021.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/mask/name/021.png
--------------------------------------------------------------------------------
/tool/vapx_demo/mask/name/022.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/mask/name/022.png
--------------------------------------------------------------------------------
/tool/vapx_demo/mask/name/023.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/mask/name/023.png
--------------------------------------------------------------------------------
/tool/vapx_demo/mask/name/024.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/mask/name/024.png
--------------------------------------------------------------------------------
/tool/vapx_demo/mask/name/025.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/mask/name/025.png
--------------------------------------------------------------------------------
/tool/vapx_demo/mask/name/026.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/mask/name/026.png
--------------------------------------------------------------------------------
/tool/vapx_demo/mask/name/027.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/mask/name/027.png
--------------------------------------------------------------------------------
/tool/vapx_demo/mask/name/028.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/mask/name/028.png
--------------------------------------------------------------------------------
/tool/vapx_demo/mask/name/029.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/mask/name/029.png
--------------------------------------------------------------------------------
/tool/vapx_demo/mask/name/030.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/mask/name/030.png
--------------------------------------------------------------------------------
/tool/vapx_demo/mask/name/031.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/mask/name/031.png
--------------------------------------------------------------------------------
/tool/vapx_demo/mask/name/032.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/mask/name/032.png
--------------------------------------------------------------------------------
/tool/vapx_demo/mask/name/033.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/mask/name/033.png
--------------------------------------------------------------------------------
/tool/vapx_demo/mask/name/034.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/mask/name/034.png
--------------------------------------------------------------------------------
/tool/vapx_demo/mask/name/035.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/mask/name/035.png
--------------------------------------------------------------------------------
/tool/vapx_demo/mask/name/036.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/mask/name/036.png
--------------------------------------------------------------------------------
/tool/vapx_demo/mask/name/037.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/mask/name/037.png
--------------------------------------------------------------------------------
/tool/vapx_demo/mask/name/038.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/mask/name/038.png
--------------------------------------------------------------------------------
/tool/vapx_demo/mask/name/039.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/mask/name/039.png
--------------------------------------------------------------------------------
/tool/vapx_demo/mask/name/040.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/mask/name/040.png
--------------------------------------------------------------------------------
/tool/vapx_demo/mask/name/041.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/mask/name/041.png
--------------------------------------------------------------------------------
/tool/vapx_demo/mask/name/042.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/mask/name/042.png
--------------------------------------------------------------------------------
/tool/vapx_demo/mask/name/043.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/mask/name/043.png
--------------------------------------------------------------------------------
/tool/vapx_demo/mask/name/044.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/mask/name/044.png
--------------------------------------------------------------------------------
/tool/vapx_demo/mask/name/045.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/mask/name/045.png
--------------------------------------------------------------------------------
/tool/vapx_demo/mask/name/046.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/mask/name/046.png
--------------------------------------------------------------------------------
/tool/vapx_demo/mask/name/047.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/mask/name/047.png
--------------------------------------------------------------------------------
/tool/vapx_demo/mask/name/048.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/mask/name/048.png
--------------------------------------------------------------------------------
/tool/vapx_demo/mask/name/049.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/mask/name/049.png
--------------------------------------------------------------------------------
/tool/vapx_demo/mask/name/050.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/mask/name/050.png
--------------------------------------------------------------------------------
/tool/vapx_demo/mask/name/051.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/mask/name/051.png
--------------------------------------------------------------------------------
/tool/vapx_demo/mask/name/052.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/mask/name/052.png
--------------------------------------------------------------------------------
/tool/vapx_demo/mask/name/053.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/mask/name/053.png
--------------------------------------------------------------------------------
/tool/vapx_demo/mask/name/054.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/mask/name/054.png
--------------------------------------------------------------------------------
/tool/vapx_demo/mask/name/055.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/mask/name/055.png
--------------------------------------------------------------------------------
/tool/vapx_demo/mask/name/056.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/mask/name/056.png
--------------------------------------------------------------------------------
/tool/vapx_demo/mask/name/057.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/mask/name/057.png
--------------------------------------------------------------------------------
/tool/vapx_demo/mask/name/058.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/mask/name/058.png
--------------------------------------------------------------------------------
/tool/vapx_demo/mask/name/059.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/mask/name/059.png
--------------------------------------------------------------------------------
/tool/vapx_demo/mask/name/060.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/mask/name/060.png
--------------------------------------------------------------------------------
/tool/vapx_demo/mask/name/061.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/mask/name/061.png
--------------------------------------------------------------------------------
/tool/vapx_demo/mask/name/062.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/mask/name/062.png
--------------------------------------------------------------------------------
/tool/vapx_demo/mask/name/063.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/mask/name/063.png
--------------------------------------------------------------------------------
/tool/vapx_demo/mask/name/064.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/mask/name/064.png
--------------------------------------------------------------------------------
/tool/vapx_demo/mask/name/065.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/mask/name/065.png
--------------------------------------------------------------------------------
/tool/vapx_demo/mask/name/066.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/mask/name/066.png
--------------------------------------------------------------------------------
/tool/vapx_demo/mask/name/067.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/mask/name/067.png
--------------------------------------------------------------------------------
/tool/vapx_demo/mask/name/068.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/mask/name/068.png
--------------------------------------------------------------------------------
/tool/vapx_demo/mask/name/069.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/mask/name/069.png
--------------------------------------------------------------------------------
/tool/vapx_demo/mask/name/070.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/mask/name/070.png
--------------------------------------------------------------------------------
/tool/vapx_demo/mask/name/071.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/mask/name/071.png
--------------------------------------------------------------------------------
/tool/vapx_demo/mask/name/072.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/mask/name/072.png
--------------------------------------------------------------------------------
/tool/vapx_demo/mask/name/073.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/mask/name/073.png
--------------------------------------------------------------------------------
/tool/vapx_demo/mask/name/074.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/mask/name/074.png
--------------------------------------------------------------------------------
/tool/vapx_demo/mask/name/075.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/mask/name/075.png
--------------------------------------------------------------------------------
/tool/vapx_demo/mask/name/076.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/mask/name/076.png
--------------------------------------------------------------------------------
/tool/vapx_demo/mask/name/077.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/mask/name/077.png
--------------------------------------------------------------------------------
/tool/vapx_demo/mask/name/078.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/mask/name/078.png
--------------------------------------------------------------------------------
/tool/vapx_demo/mask/name/079.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/mask/name/079.png
--------------------------------------------------------------------------------
/tool/vapx_demo/mask/name/080.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/mask/name/080.png
--------------------------------------------------------------------------------
/tool/vapx_demo/mask/name/081.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/mask/name/081.png
--------------------------------------------------------------------------------
/tool/vapx_demo/mask/name/082.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/mask/name/082.png
--------------------------------------------------------------------------------
/tool/vapx_demo/mask/name/083.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/mask/name/083.png
--------------------------------------------------------------------------------
/tool/vapx_demo/mask/name/084.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/mask/name/084.png
--------------------------------------------------------------------------------
/tool/vapx_demo/mask/name/085.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/mask/name/085.png
--------------------------------------------------------------------------------
/tool/vapx_demo/mask/name/086.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/mask/name/086.png
--------------------------------------------------------------------------------
/tool/vapx_demo/mask/name/087.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/mask/name/087.png
--------------------------------------------------------------------------------
/tool/vapx_demo/mask/name/088.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/mask/name/088.png
--------------------------------------------------------------------------------
/tool/vapx_demo/mask/name/089.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/mask/name/089.png
--------------------------------------------------------------------------------
/tool/vapx_demo/mask/name/090.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/mask/name/090.png
--------------------------------------------------------------------------------
/tool/vapx_demo/mask/name/091.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/mask/name/091.png
--------------------------------------------------------------------------------
/tool/vapx_demo/mask/name/092.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/mask/name/092.png
--------------------------------------------------------------------------------
/tool/vapx_demo/mask/name/093.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/mask/name/093.png
--------------------------------------------------------------------------------
/tool/vapx_demo/mask/name/094.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/mask/name/094.png
--------------------------------------------------------------------------------
/tool/vapx_demo/mask/name/095.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/mask/name/095.png
--------------------------------------------------------------------------------
/tool/vapx_demo/mask/name/096.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/mask/name/096.png
--------------------------------------------------------------------------------
/tool/vapx_demo/mask/name/097.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/mask/name/097.png
--------------------------------------------------------------------------------
/tool/vapx_demo/mask/name/098.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/mask/name/098.png
--------------------------------------------------------------------------------
/tool/vapx_demo/mask/name/099.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/mask/name/099.png
--------------------------------------------------------------------------------
/tool/vapx_demo/mask/name/100.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/mask/name/100.png
--------------------------------------------------------------------------------
/tool/vapx_demo/mask/name/101.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/mask/name/101.png
--------------------------------------------------------------------------------
/tool/vapx_demo/mask/name/102.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/mask/name/102.png
--------------------------------------------------------------------------------
/tool/vapx_demo/mask/name/103.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/mask/name/103.png
--------------------------------------------------------------------------------
/tool/vapx_demo/mask/name/104.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/mask/name/104.png
--------------------------------------------------------------------------------
/tool/vapx_demo/mask/name/105.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/mask/name/105.png
--------------------------------------------------------------------------------
/tool/vapx_demo/mask/name/106.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/mask/name/106.png
--------------------------------------------------------------------------------
/tool/vapx_demo/mask/name/107.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/mask/name/107.png
--------------------------------------------------------------------------------
/tool/vapx_demo/mask/name/108.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/mask/name/108.png
--------------------------------------------------------------------------------
/tool/vapx_demo/mask/name/109.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/mask/name/109.png
--------------------------------------------------------------------------------
/tool/vapx_demo/mask/name/110.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/mask/name/110.png
--------------------------------------------------------------------------------
/tool/vapx_demo/mask/name/111.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/mask/name/111.png
--------------------------------------------------------------------------------
/tool/vapx_demo/mask/name/112.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/mask/name/112.png
--------------------------------------------------------------------------------
/tool/vapx_demo/mask/name/113.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/mask/name/113.png
--------------------------------------------------------------------------------
/tool/vapx_demo/mask/name/114.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/mask/name/114.png
--------------------------------------------------------------------------------
/tool/vapx_demo/mask/name/115.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/mask/name/115.png
--------------------------------------------------------------------------------
/tool/vapx_demo/mask/name/116.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/mask/name/116.png
--------------------------------------------------------------------------------
/tool/vapx_demo/mask/name/117.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/mask/name/117.png
--------------------------------------------------------------------------------
/tool/vapx_demo/mask/name/118.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/mask/name/118.png
--------------------------------------------------------------------------------
/tool/vapx_demo/mask/name/119.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/mask/name/119.png
--------------------------------------------------------------------------------
/tool/vapx_demo/png/000.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/png/000.png
--------------------------------------------------------------------------------
/tool/vapx_demo/png/001.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/png/001.png
--------------------------------------------------------------------------------
/tool/vapx_demo/png/002.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/png/002.png
--------------------------------------------------------------------------------
/tool/vapx_demo/png/003.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/png/003.png
--------------------------------------------------------------------------------
/tool/vapx_demo/png/004.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/png/004.png
--------------------------------------------------------------------------------
/tool/vapx_demo/png/005.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/png/005.png
--------------------------------------------------------------------------------
/tool/vapx_demo/png/006.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/png/006.png
--------------------------------------------------------------------------------
/tool/vapx_demo/png/007.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/png/007.png
--------------------------------------------------------------------------------
/tool/vapx_demo/png/008.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/png/008.png
--------------------------------------------------------------------------------
/tool/vapx_demo/png/009.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/png/009.png
--------------------------------------------------------------------------------
/tool/vapx_demo/png/010.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/png/010.png
--------------------------------------------------------------------------------
/tool/vapx_demo/png/011.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/png/011.png
--------------------------------------------------------------------------------
/tool/vapx_demo/png/012.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/png/012.png
--------------------------------------------------------------------------------
/tool/vapx_demo/png/013.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/png/013.png
--------------------------------------------------------------------------------
/tool/vapx_demo/png/014.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/png/014.png
--------------------------------------------------------------------------------
/tool/vapx_demo/png/015.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/png/015.png
--------------------------------------------------------------------------------
/tool/vapx_demo/png/016.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/png/016.png
--------------------------------------------------------------------------------
/tool/vapx_demo/png/017.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/png/017.png
--------------------------------------------------------------------------------
/tool/vapx_demo/png/018.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/png/018.png
--------------------------------------------------------------------------------
/tool/vapx_demo/png/019.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/png/019.png
--------------------------------------------------------------------------------
/tool/vapx_demo/png/020.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/png/020.png
--------------------------------------------------------------------------------
/tool/vapx_demo/png/021.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/png/021.png
--------------------------------------------------------------------------------
/tool/vapx_demo/png/022.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/png/022.png
--------------------------------------------------------------------------------
/tool/vapx_demo/png/023.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/png/023.png
--------------------------------------------------------------------------------
/tool/vapx_demo/png/024.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/png/024.png
--------------------------------------------------------------------------------
/tool/vapx_demo/png/025.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/png/025.png
--------------------------------------------------------------------------------
/tool/vapx_demo/png/026.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/png/026.png
--------------------------------------------------------------------------------
/tool/vapx_demo/png/027.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/png/027.png
--------------------------------------------------------------------------------
/tool/vapx_demo/png/028.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/png/028.png
--------------------------------------------------------------------------------
/tool/vapx_demo/png/029.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/png/029.png
--------------------------------------------------------------------------------
/tool/vapx_demo/png/030.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/png/030.png
--------------------------------------------------------------------------------
/tool/vapx_demo/png/031.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/png/031.png
--------------------------------------------------------------------------------
/tool/vapx_demo/png/032.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/png/032.png
--------------------------------------------------------------------------------
/tool/vapx_demo/png/033.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/png/033.png
--------------------------------------------------------------------------------
/tool/vapx_demo/png/034.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/png/034.png
--------------------------------------------------------------------------------
/tool/vapx_demo/png/035.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/png/035.png
--------------------------------------------------------------------------------
/tool/vapx_demo/png/036.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/png/036.png
--------------------------------------------------------------------------------
/tool/vapx_demo/png/037.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/png/037.png
--------------------------------------------------------------------------------
/tool/vapx_demo/png/038.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/png/038.png
--------------------------------------------------------------------------------
/tool/vapx_demo/png/039.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/png/039.png
--------------------------------------------------------------------------------
/tool/vapx_demo/png/040.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/png/040.png
--------------------------------------------------------------------------------
/tool/vapx_demo/png/041.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/png/041.png
--------------------------------------------------------------------------------
/tool/vapx_demo/png/042.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/png/042.png
--------------------------------------------------------------------------------
/tool/vapx_demo/png/043.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/png/043.png
--------------------------------------------------------------------------------
/tool/vapx_demo/png/044.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/png/044.png
--------------------------------------------------------------------------------
/tool/vapx_demo/png/045.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/png/045.png
--------------------------------------------------------------------------------
/tool/vapx_demo/png/046.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/png/046.png
--------------------------------------------------------------------------------
/tool/vapx_demo/png/047.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/png/047.png
--------------------------------------------------------------------------------
/tool/vapx_demo/png/048.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/png/048.png
--------------------------------------------------------------------------------
/tool/vapx_demo/png/049.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/png/049.png
--------------------------------------------------------------------------------
/tool/vapx_demo/png/050.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/png/050.png
--------------------------------------------------------------------------------
/tool/vapx_demo/png/051.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/png/051.png
--------------------------------------------------------------------------------
/tool/vapx_demo/png/052.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/png/052.png
--------------------------------------------------------------------------------
/tool/vapx_demo/png/053.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/png/053.png
--------------------------------------------------------------------------------
/tool/vapx_demo/png/054.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/png/054.png
--------------------------------------------------------------------------------
/tool/vapx_demo/png/055.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/png/055.png
--------------------------------------------------------------------------------
/tool/vapx_demo/png/056.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/png/056.png
--------------------------------------------------------------------------------
/tool/vapx_demo/png/057.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/png/057.png
--------------------------------------------------------------------------------
/tool/vapx_demo/png/058.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/png/058.png
--------------------------------------------------------------------------------
/tool/vapx_demo/png/059.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/png/059.png
--------------------------------------------------------------------------------
/tool/vapx_demo/png/060.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/png/060.png
--------------------------------------------------------------------------------
/tool/vapx_demo/png/061.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/png/061.png
--------------------------------------------------------------------------------
/tool/vapx_demo/png/062.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/png/062.png
--------------------------------------------------------------------------------
/tool/vapx_demo/png/063.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/png/063.png
--------------------------------------------------------------------------------
/tool/vapx_demo/png/064.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/png/064.png
--------------------------------------------------------------------------------
/tool/vapx_demo/png/065.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/png/065.png
--------------------------------------------------------------------------------
/tool/vapx_demo/png/066.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/png/066.png
--------------------------------------------------------------------------------
/tool/vapx_demo/png/067.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/png/067.png
--------------------------------------------------------------------------------
/tool/vapx_demo/png/068.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/png/068.png
--------------------------------------------------------------------------------
/tool/vapx_demo/png/069.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/png/069.png
--------------------------------------------------------------------------------
/tool/vapx_demo/png/070.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/png/070.png
--------------------------------------------------------------------------------
/tool/vapx_demo/png/071.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/png/071.png
--------------------------------------------------------------------------------
/tool/vapx_demo/png/072.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/png/072.png
--------------------------------------------------------------------------------
/tool/vapx_demo/png/073.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/png/073.png
--------------------------------------------------------------------------------
/tool/vapx_demo/png/074.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/png/074.png
--------------------------------------------------------------------------------
/tool/vapx_demo/png/075.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/png/075.png
--------------------------------------------------------------------------------
/tool/vapx_demo/png/076.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/png/076.png
--------------------------------------------------------------------------------
/tool/vapx_demo/png/077.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/png/077.png
--------------------------------------------------------------------------------
/tool/vapx_demo/png/078.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/png/078.png
--------------------------------------------------------------------------------
/tool/vapx_demo/png/079.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/png/079.png
--------------------------------------------------------------------------------
/tool/vapx_demo/png/080.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/png/080.png
--------------------------------------------------------------------------------
/tool/vapx_demo/png/081.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/png/081.png
--------------------------------------------------------------------------------
/tool/vapx_demo/png/082.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/png/082.png
--------------------------------------------------------------------------------
/tool/vapx_demo/png/083.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/png/083.png
--------------------------------------------------------------------------------
/tool/vapx_demo/png/084.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/png/084.png
--------------------------------------------------------------------------------
/tool/vapx_demo/png/085.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/png/085.png
--------------------------------------------------------------------------------
/tool/vapx_demo/png/086.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/png/086.png
--------------------------------------------------------------------------------
/tool/vapx_demo/png/087.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/png/087.png
--------------------------------------------------------------------------------
/tool/vapx_demo/png/088.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/png/088.png
--------------------------------------------------------------------------------
/tool/vapx_demo/png/089.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/png/089.png
--------------------------------------------------------------------------------
/tool/vapx_demo/png/090.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/png/090.png
--------------------------------------------------------------------------------
/tool/vapx_demo/png/091.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/png/091.png
--------------------------------------------------------------------------------
/tool/vapx_demo/png/092.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/png/092.png
--------------------------------------------------------------------------------
/tool/vapx_demo/png/093.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/png/093.png
--------------------------------------------------------------------------------
/tool/vapx_demo/png/094.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/png/094.png
--------------------------------------------------------------------------------
/tool/vapx_demo/png/095.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/png/095.png
--------------------------------------------------------------------------------
/tool/vapx_demo/png/096.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/png/096.png
--------------------------------------------------------------------------------
/tool/vapx_demo/png/097.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/png/097.png
--------------------------------------------------------------------------------
/tool/vapx_demo/png/098.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/png/098.png
--------------------------------------------------------------------------------
/tool/vapx_demo/png/099.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/png/099.png
--------------------------------------------------------------------------------
/tool/vapx_demo/png/100.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/png/100.png
--------------------------------------------------------------------------------
/tool/vapx_demo/png/101.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/png/101.png
--------------------------------------------------------------------------------
/tool/vapx_demo/png/102.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/png/102.png
--------------------------------------------------------------------------------
/tool/vapx_demo/png/103.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/png/103.png
--------------------------------------------------------------------------------
/tool/vapx_demo/png/104.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/png/104.png
--------------------------------------------------------------------------------
/tool/vapx_demo/png/105.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/png/105.png
--------------------------------------------------------------------------------
/tool/vapx_demo/png/106.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/png/106.png
--------------------------------------------------------------------------------
/tool/vapx_demo/png/107.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/png/107.png
--------------------------------------------------------------------------------
/tool/vapx_demo/png/108.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/png/108.png
--------------------------------------------------------------------------------
/tool/vapx_demo/png/109.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/png/109.png
--------------------------------------------------------------------------------
/tool/vapx_demo/png/110.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/png/110.png
--------------------------------------------------------------------------------
/tool/vapx_demo/png/111.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/png/111.png
--------------------------------------------------------------------------------
/tool/vapx_demo/png/112.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/png/112.png
--------------------------------------------------------------------------------
/tool/vapx_demo/png/113.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/png/113.png
--------------------------------------------------------------------------------
/tool/vapx_demo/png/114.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/png/114.png
--------------------------------------------------------------------------------
/tool/vapx_demo/png/115.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/png/115.png
--------------------------------------------------------------------------------
/tool/vapx_demo/png/116.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/png/116.png
--------------------------------------------------------------------------------
/tool/vapx_demo/png/117.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/png/117.png
--------------------------------------------------------------------------------
/tool/vapx_demo/png/118.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/png/118.png
--------------------------------------------------------------------------------
/tool/vapx_demo/png/119.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/tool/vapx_demo/png/119.png
--------------------------------------------------------------------------------
/web/.babelrc:
--------------------------------------------------------------------------------
1 | {
2 | "presets": [
3 | "@babel/preset-env",
4 | "@babel/preset-typescript"
5 | ],
6 | "plugins": [
7 | "async-to-promises",
8 | ["@babel/plugin-transform-runtime"]
9 | ]
10 | }
--------------------------------------------------------------------------------
/web/.eslintignore:
--------------------------------------------------------------------------------
1 | # dependencies
2 | node_modules
3 | dist
4 | demo
--------------------------------------------------------------------------------
/web/.eslintrc.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | root: true,
3 | env: {
4 | browser: true,
5 | },
6 | parserOptions: {
7 | parser: '@typescript-eslint/parser',
8 | ecmaVersion: 'latest',
9 | sourceType: 'module',
10 | },
11 | extends: [
12 | 'eslint:recommended',
13 | 'plugin:@typescript-eslint/recommended',
14 | 'plugin:prettier/recommended', // @extends prettier
15 | ],
16 | plugins: ['@typescript-eslint', 'prettier'],
17 | };
18 |
--------------------------------------------------------------------------------
/web/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules
2 | .idea
--------------------------------------------------------------------------------
/web/.prettierignore:
--------------------------------------------------------------------------------
1 | node_modules/**
2 | dist/**
3 | demo/**
--------------------------------------------------------------------------------
/web/.prettierrc:
--------------------------------------------------------------------------------
1 | {
2 | "semi": true,
3 | "trailingComma": "es5",
4 | "arrowParens": "always",
5 | "singleQuote": true,
6 | "bracketSpacing": true,
7 | "useTabs": false,
8 | "tabWidth": 2,
9 | "printWidth": 120,
10 | "proseWrap": "preserve",
11 | "endOfLine": "lf",
12 | "eslintIntegration": true,
13 | "htmlWhitespaceSensitivity": "strict"
14 | }
15 |
--------------------------------------------------------------------------------
/web/demo/.babelrc:
--------------------------------------------------------------------------------
1 | {
2 | "presets": [
3 | ["env", {
4 | "modules": false,
5 | "targets": {
6 | "browsers": ["> 1%", "last 2 versions", "not ie <= 8"]
7 | }
8 | }],
9 | "stage-2"
10 | ],
11 | "plugins": ["transform-vue-jsx", "transform-runtime"]
12 | }
13 |
--------------------------------------------------------------------------------
/web/demo/.editorconfig:
--------------------------------------------------------------------------------
1 | root = true
2 |
3 | [*]
4 | charset = utf-8
5 | indent_style = space
6 | indent_size = 2
7 | end_of_line = lf
8 | insert_final_newline = true
9 | trim_trailing_whitespace = true
10 |
--------------------------------------------------------------------------------
/web/demo/.eslintignore:
--------------------------------------------------------------------------------
1 | /build/
2 | /config/
3 | /dist/
4 | /*.js
5 |
--------------------------------------------------------------------------------
/web/demo/.eslintrc.js:
--------------------------------------------------------------------------------
1 | // https://eslint.org/docs/user-guide/configuring
2 |
3 | module.exports = {
4 | root: true,
5 | parserOptions: {
6 | parser: 'babel-eslint'
7 | },
8 | env: {
9 | browser: true,
10 | },
11 | extends: [
12 | // https://github.com/vuejs/eslint-plugin-vue#priority-a-essential-error-prevention
13 | // consider switching to `plugin:vue/strongly-recommended` or `plugin:vue/recommended` for stricter rules.
14 | 'plugin:vue/essential',
15 | // https://github.com/standard/standard/blob/master/docs/RULES-en.md
16 | 'standard'
17 | ],
18 | // required to lint *.vue files
19 | plugins: [
20 | 'vue'
21 | ],
22 | // add your custom rules here
23 | rules: {
24 | // allow async-await
25 | 'generator-star-spacing': 'off',
26 | // allow debugger during development
27 | 'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off'
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/web/demo/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 | node_modules/
3 | /dist/
4 | npm-debug.log*
5 | yarn-debug.log*
6 | yarn-error.log*
7 |
8 | # Editor directories and files
9 | .idea
10 | .vscode
11 | *.suo
12 | *.ntvs*
13 | *.njsproj
14 | *.sln
15 |
--------------------------------------------------------------------------------
/web/demo/.postcssrc.js:
--------------------------------------------------------------------------------
1 | // https://github.com/michael-ciniawsky/postcss-load-config
2 |
3 | module.exports = {
4 | "plugins": {
5 | "postcss-import": {},
6 | "postcss-url": {},
7 | // to edit target browsers: use "browserslist" field in package.json
8 | "autoprefixer": {}
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/web/demo/README.md:
--------------------------------------------------------------------------------
1 | # vap-demo
2 |
3 | > A vap Demo
4 |
5 | ## Build Setup
6 |
7 | ``` bash
8 | # install dependencies
9 | npm install
10 |
11 | # serve with hot reload at localhost:8080
12 | npm run dev
13 |
14 | # build for production with minification
15 | npm run build
16 |
17 | # build for production and view the bundle analyzer report
18 | npm run build --report
19 | ```
20 |
--------------------------------------------------------------------------------
/web/demo/build/build.js:
--------------------------------------------------------------------------------
1 | 'use strict'
2 | require('./check-versions')()
3 |
4 | process.env.NODE_ENV = 'production'
5 |
6 | const ora = require('ora')
7 | const rm = require('rimraf')
8 | const path = require('path')
9 | const chalk = require('chalk')
10 | const webpack = require('webpack')
11 | const config = require('../config')
12 | const webpackConfig = require('./webpack.prod.conf')
13 |
14 | const spinner = ora('building for production...')
15 | spinner.start()
16 |
17 | rm(path.join(config.build.assetsRoot, config.build.assetsSubDirectory), err => {
18 | if (err) throw err
19 | webpack(webpackConfig, (err, stats) => {
20 | spinner.stop()
21 | if (err) throw err
22 | process.stdout.write(stats.toString({
23 | colors: true,
24 | modules: false,
25 | children: false, // If you are using ts-loader, setting this to true will make TypeScript errors show up during build.
26 | chunks: false,
27 | chunkModules: false
28 | }) + '\n\n')
29 |
30 | if (stats.hasErrors()) {
31 | console.log(chalk.red(' Build failed with errors.\n'))
32 | process.exit(1)
33 | }
34 |
35 | console.log(chalk.cyan(' Build complete.\n'))
36 | console.log(chalk.yellow(
37 | ' Tip: built files are meant to be served over an HTTP server.\n' +
38 | ' Opening index.html over file:// won\'t work.\n'
39 | ))
40 | })
41 | })
42 |
--------------------------------------------------------------------------------
/web/demo/build/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/web/demo/build/logo.png
--------------------------------------------------------------------------------
/web/demo/build/vue-loader.conf.js:
--------------------------------------------------------------------------------
1 | 'use strict'
2 | const utils = require('./utils')
3 | const config = require('../config')
4 | const isProduction = process.env.NODE_ENV === 'production'
5 | const sourceMapEnabled = isProduction
6 | ? config.build.productionSourceMap
7 | : config.dev.cssSourceMap
8 |
9 | module.exports = {
10 | loaders: utils.cssLoaders({
11 | sourceMap: sourceMapEnabled,
12 | extract: isProduction
13 | }),
14 | cssSourceMap: sourceMapEnabled,
15 | cacheBusting: config.dev.cacheBusting,
16 | transformToRequire: {
17 | video: ['src', 'poster'],
18 | source: 'src',
19 | img: 'src',
20 | image: 'xlink:href'
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/web/demo/config/dev.env.js:
--------------------------------------------------------------------------------
1 | 'use strict'
2 | const merge = require('webpack-merge')
3 | const prodEnv = require('./prod.env')
4 |
5 | module.exports = merge(prodEnv, {
6 | NODE_ENV: '"development"'
7 | })
8 |
--------------------------------------------------------------------------------
/web/demo/config/prod.env.js:
--------------------------------------------------------------------------------
1 | 'use strict'
2 | module.exports = {
3 | NODE_ENV: '"production"'
4 | }
5 |
--------------------------------------------------------------------------------
/web/demo/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | vap-demo
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/web/demo/src/App.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
12 |
13 |
23 |
--------------------------------------------------------------------------------
/web/demo/src/assets/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/web/demo/src/assets/logo.png
--------------------------------------------------------------------------------
/web/demo/src/components/demo.mp4:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/web/demo/src/components/demo.mp4
--------------------------------------------------------------------------------
/web/demo/src/main.js:
--------------------------------------------------------------------------------
1 | // The Vue build version to load with the `import` command
2 | // (runtime-only or standalone) has been set in webpack.base.conf with an alias.
3 | import Vue from 'vue'
4 | import App from './App'
5 | import router from './router'
6 |
7 | Vue.config.productionTip = false
8 |
9 | /* eslint-disable no-new */
10 | new Vue({
11 | el: '#app',
12 | router,
13 | components: { App },
14 | template: ''
15 | })
16 |
--------------------------------------------------------------------------------
/web/demo/src/router/index.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import Router from 'vue-router'
3 | import HelloWorld from '@/components/HelloWorld'
4 |
5 | Vue.use(Router)
6 |
7 | export default new Router({
8 | routes: [
9 | {
10 | path: '/',
11 | name: 'HelloWorld',
12 | component: HelloWorld
13 | }
14 | ]
15 | })
16 |
--------------------------------------------------------------------------------
/web/demo/static/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tencent/vap/58da07ec5a24ec8bdd6bd3a40b413970065607a5/web/demo/static/.gitkeep
--------------------------------------------------------------------------------
/web/dist/gl-util.d.ts:
--------------------------------------------------------------------------------
1 | export declare function createShader(gl: WebGLRenderingContext, type: number, source: string): WebGLShader;
2 | export declare function createProgram(gl: WebGLRenderingContext, vertexShader: WebGLShader, fragmentShader: WebGLShader): WebGLProgram;
3 | export declare function createTexture(gl: WebGLRenderingContext, index: number, imgData?: TexImageSource): WebGLTexture;
4 | export declare function cleanWebGL(gl: WebGLRenderingContext, { shaders, program, textures, buffers }: {
5 | shaders?: any[];
6 | program?: any;
7 | textures?: any[];
8 | buffers?: any[];
9 | }): void;
10 |
--------------------------------------------------------------------------------
/web/dist/index.d.ts:
--------------------------------------------------------------------------------
1 | import { VapConfig } from './type';
2 | import WebglRenderVap from './webgl-render-vap';
3 | /**
4 | * @param options
5 | * @constructor
6 | * @return {null}
7 | */
8 | export default function (options?: VapConfig): WebglRenderVap;
9 | export declare function canWebGL(): boolean;
10 |
--------------------------------------------------------------------------------
/web/dist/type.d.ts:
--------------------------------------------------------------------------------
1 | export interface VapConfig {
2 | container: HTMLElement;
3 | src: string;
4 | config: string | {
5 | [key: string]: any;
6 | };
7 | fps?: number;
8 | width?: number;
9 | height?: number;
10 | loop: boolean;
11 | mute?: boolean;
12 | precache?: boolean;
13 | accurate: boolean;
14 | onLoadError?: (e: ErrorEvent) => void;
15 | onDestory?: () => void;
16 | [key: string]: any;
17 | }
18 |
--------------------------------------------------------------------------------
/web/dist/vap-frame-parser.d.ts:
--------------------------------------------------------------------------------
1 | export default class FrameParser {
2 | constructor(source: any, headData: any);
3 | config: any;
4 | private headData;
5 | private frame;
6 | textureMap: any;
7 | private canvas;
8 | private ctx;
9 | srcData: any;
10 | init(): Promise;
11 | initCanvas(): void;
12 | loadImg(url: string): Promise;
13 | parseSrc(dataJson: any): Promise;
14 | /**
15 | * 下载json文件
16 | * @param jsonUrl json外链
17 | * @returns {Promise}
18 | */
19 | getConfigBySrc(jsonUrl: string): Promise;
20 | /**
21 | * 文字转换图片
22 | * @param item
23 | */
24 | makeTextImg(item: any): ImageData;
25 | getFrame(frame: any): any;
26 | }
27 |
--------------------------------------------------------------------------------
/web/dist/video.d.ts:
--------------------------------------------------------------------------------
1 | import { VapConfig } from './type';
2 | export default class VapVideo {
3 | options: VapConfig;
4 | requestAnim: (cb: any) => number;
5 | container: HTMLElement;
6 | video: HTMLVideoElement;
7 | protected events: {
8 | [key: string]: Array<(...info: any[]) => void>;
9 | };
10 | private _drawFrame;
11 | protected animId: number;
12 | protected useFrameCallback: boolean;
13 | private firstPlaying;
14 | private setBegin;
15 | private customEvent;
16 | setOptions(options: VapConfig): this;
17 | precacheSource(source: any): Promise;
18 | initVideo(): void;
19 | drawFrame(_: any, _info: any): void;
20 | play(): void;
21 | pause(): void;
22 | setTime(t: any): void;
23 | requestAnimFunc(): (cb: any) => number;
24 | cancelRequestAnimation(): void;
25 | clear(): void;
26 | destroy(): void;
27 | on(event: any, callback: any): this;
28 | once(event: any, callback: any): this;
29 | trigger(eventName: any, ...e: any[]): void;
30 | offAll(): this;
31 | onplaying(): void;
32 | oncanplay(): void;
33 | onerror(err: any): void;
34 | }
35 |
--------------------------------------------------------------------------------
/web/dist/webgl-render-vap.d.ts:
--------------------------------------------------------------------------------
1 | import { VapConfig } from './type';
2 | import VapVideo from './video';
3 | export default class WebglRenderVap extends VapVideo {
4 | private canvas;
5 | private gl;
6 | private vertexShader;
7 | private fragmentShader;
8 | private program;
9 | private textures;
10 | private videoTexture;
11 | private vertexBuffer;
12 | private vapFrameParser;
13 | private imagePosLoc;
14 | constructor(options?: VapConfig);
15 | play(options?: VapConfig): this;
16 | initWebGL(): WebGLRenderingContext;
17 | /**
18 | * 顶点着色器
19 | */
20 | initVertexShader(gl: WebGLRenderingContext): WebGLShader;
21 | /**
22 | * 片元着色器
23 | */
24 | initFragmentShader(gl: WebGLRenderingContext, textureSize: any): WebGLShader;
25 | initTexture(): void;
26 | initVideoTexture(): void;
27 | drawFrame(_: any, info: any): void;
28 | clear(): void;
29 | destroy(): void;
30 | }
31 |
--------------------------------------------------------------------------------
/web/rollup.config.dist.js:
--------------------------------------------------------------------------------
1 | import resolve from "rollup-plugin-node-resolve";
2 | import babel from "rollup-plugin-babel";
3 | import { uglify } from "rollup-plugin-uglify";
4 | import commonjs from 'rollup-plugin-commonjs';
5 | import typescript from "rollup-plugin-typescript2";
6 |
7 | const extensions = ['.js','.ts'];
8 |
9 | export default [
10 | {
11 | input: "src/index.ts",
12 | output: {
13 | name: "Vap",
14 | file: "dist/vap.min.js",
15 | format: "umd"
16 | },
17 | plugins: [
18 | typescript({
19 | tsconfig: "rollup.tsconfig.json"
20 | }),
21 | resolve(), // so Rollup can find `ms`
22 | commonjs({
23 | include:'node_modules/**'
24 | }),
25 | babel({
26 | exclude: "node_modules/**",
27 | extensions,
28 | runtimeHelpers: true
29 | }),
30 | uglify({
31 | compress: {
32 | drop_console: true,
33 | drop_debugger: true
34 | }
35 | })
36 | ]
37 | }
38 | ];
39 |
--------------------------------------------------------------------------------
/web/rollup.config.js:
--------------------------------------------------------------------------------
1 | import resolve from "rollup-plugin-node-resolve";
2 | import babel from "rollup-plugin-babel";
3 | import commonjs from 'rollup-plugin-commonjs';
4 | import typescript from "rollup-plugin-typescript2";
5 |
6 | const extensions = ['.js','.ts'];
7 |
8 | export default [
9 | {
10 | input: "src/index.ts",
11 | output: {
12 | name: "Vap",
13 | file: "dist/vap.js",
14 | format: "umd"
15 | },
16 | plugins: [
17 | typescript({
18 | tsconfig: "rollup.tsconfig.json"
19 | }),
20 | resolve(), // so Rollup can find `ms`
21 | commonjs({
22 | include:'node_modules/**'
23 | }),
24 | babel({
25 | exclude: "node_modules/**",
26 | extensions,
27 | runtimeHelpers: true
28 | }),
29 | ]
30 | }
31 | ];
32 |
--------------------------------------------------------------------------------
/web/rollup.tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "target": "es6",
4 | "module": "esnext",
5 | "allowSyntheticDefaultImports": true,
6 | "importHelpers": true,
7 | "typeRoots": ["./node_modules/@types"],
8 | "declaration": true,
9 | "noImplicitReturns": true,
10 | "noImplicitThis": true,
11 | "noImplicitUseStrict": false,
12 | "noImplicitAny": false
13 | },
14 | "exclude": ["node_modules"]
15 | }
--------------------------------------------------------------------------------
/web/src/type.ts:
--------------------------------------------------------------------------------
1 | export interface VapConfig {
2 | container: HTMLElement;
3 | src: string;
4 | config: string | { [key: string]: any };
5 | fps?: number;
6 | width?: number;
7 | height?: number;
8 | // 循环播放
9 | loop: boolean;
10 | mute?: boolean;
11 | precache?: boolean;
12 | // 使用requestVideoFrameCallback对齐帧数据
13 | accurate: boolean;
14 | onLoadError?: (e: ErrorEvent) => void;
15 | onDestroy?: () => void;
16 | [key: string]: any;
17 | }
18 |
--------------------------------------------------------------------------------
/web/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compileOnSave": false,
3 | "compilerOptions": {
4 | "target": "es6",
5 | "module": "esnext",
6 | "moduleResolution": "node",
7 | "lib": ["dom", "esnext"],
8 | "declaration": false,
9 | "allowSyntheticDefaultImports": true,
10 | "esModuleInterop": true,
11 | "forceConsistentCasingInFileNames": true,
12 | "importHelpers": true,
13 | "noEmitHelpers": true,
14 | "removeComments": false,
15 | "inlineSourceMap": false,
16 | "sourceMap": true,
17 | "noEmitOnError": false,
18 | "emitDecoratorMetadata": false,
19 | "experimentalDecorators": true,
20 | "noImplicitReturns": true,
21 | "noImplicitThis": true,
22 | "noImplicitUseStrict": false,
23 | "noImplicitAny": false,
24 | "strictNullChecks": false,
25 | "pretty": true,
26 | "strict": false,
27 | "skipLibCheck": true,
28 | "rootDir": "./src",
29 | "typeRoots": ["./node_modules/@types"]
30 | },
31 | "exclude": ["node_modules"]
32 | }
--------------------------------------------------------------------------------