├── .gitattributes ├── .gitignore ├── .gitmodules ├── CHANGELOG.md ├── LICENSE ├── README.md ├── android_example ├── .actionScriptProperties ├── .gitignore ├── .idea │ ├── .name │ ├── flexCompiler.xml │ ├── misc.xml │ └── modules.xml ├── .project ├── AVANE-androidExample.iml ├── fonts │ └── Roboto-Medium.ttf ├── sprite-sheet │ ├── atlas.png │ └── atlas.xml └── src │ ├── Assets.as │ ├── Main-app.xml │ ├── Main.as │ ├── StarlingRoot.as │ ├── libs │ ├── blooddy_crypto.swc │ └── starling.swc │ ├── utils │ ├── TextUtils.as │ └── TimeUtils.as │ └── views │ └── loader │ ├── CircularLoader.as │ ├── RadialImage.as │ └── RadialQuad.as ├── example ├── .actionScriptProperties ├── .gitignore ├── .idea │ ├── .name │ ├── codeStyleSettings.xml │ ├── flexCompiler.xml │ ├── libraries │ │ ├── AVANE.xml │ │ └── SaveAsANE.xml │ ├── misc.xml │ └── modules.xml ├── .project ├── AVANESample.iml ├── bin-debug │ ├── AVANESample-app.xml │ └── AVANESample.swf ├── fonts │ └── fira-sans-semi-bold-13.fnt ├── libs │ ├── FiraSansSemiBold.swc │ └── starling.swc ├── sprite-sheet │ ├── atlas.png │ └── atlas.xml └── src │ ├── AVANESample-app.xml │ ├── AVANESample.as │ ├── Assets.as │ ├── Fonts.as │ ├── StarlingRoot.as │ ├── com │ └── tuarua │ │ └── BuildMode.as │ ├── events │ ├── FormEvent.as │ └── InteractionEvent.as │ ├── utils │ ├── LangUtils.as │ ├── TextUtils.as │ └── TimeUtils.as │ └── views │ ├── BasicExample.as │ ├── DesktopCapture.as │ ├── ExampleSelector.as │ ├── LoadingIcon.as │ ├── MenuButton.as │ ├── SimpleButton.as │ ├── SrollableContent.as │ ├── UniversalPlayer.as │ ├── client │ ├── AdvancedClient.as │ ├── AudioPanel.as │ ├── EncodingScreen.as │ ├── FiltersPanel.as │ ├── InfoPanel.as │ ├── MenuItem.as │ ├── OverlayPanel.as │ ├── PicturePanel.as │ └── VideoPanel.as │ ├── forms │ ├── CheckBox.as │ ├── DropDown.as │ ├── FormGroup.as │ ├── Input.as │ ├── NativeTextInput.as │ ├── RadioOption.as │ ├── Slider.as │ └── Stepper.as │ ├── loader │ ├── CircularLoader.as │ ├── RadialImage.as │ └── RadialQuad.as │ └── video │ ├── LoadingIcon.as │ └── controls │ └── ControlsContainer.as ├── images ├── bg_hr.png ├── blacktocat.png ├── icon_download.png └── sprite_download.png ├── index.html ├── ios_example ├── .actionScriptProperties ├── .gitignore ├── .idea │ ├── .name │ ├── flexCompiler.xml │ ├── libraries │ │ └── starling.xml │ ├── misc.xml │ ├── modules.xml │ └── workspace.xml ├── .project ├── AVANE-iosExample.iml ├── fonts │ └── Roboto-Medium.ttf ├── sprite-sheet │ ├── atlas.png │ └── atlas.xml └── src │ ├── Assets.as │ ├── Main-app.xml │ ├── Main.as │ ├── StarlingRoot.as │ ├── libs │ └── starling.swc │ ├── utils │ ├── TextUtils.as │ └── TimeUtils.as │ └── views │ └── loader │ ├── CircularLoader.as │ ├── RadialImage.as │ └── RadialQuad.as ├── javascripts └── main.js ├── licenses ├── bzip2.txt ├── ffmpeg.txt ├── fontconfig.txt ├── freetype2.txt ├── fribidi.txt ├── gmp.txt ├── gnutls.txt ├── harfbuzz.txt ├── iconv.txt ├── libaacs.txt ├── libass.txt ├── libbdplus.txt ├── libbluray.txt ├── libcdio-paranoia.txt ├── libcdio.txt ├── libgcrypt.txt ├── libgme.txt ├── libgpg-error.txt ├── libilbc.txt ├── liblzma.txt ├── libmfx.txt ├── libmodplug.txt ├── libsdl.txt ├── libssh.txt ├── libvpx.txt ├── libxml2.txt ├── mp3lame.txt ├── nettle.txt ├── ogg.txt ├── openssl.txt ├── opus.txt ├── soxr.txt ├── speex.txt ├── theora.txt ├── vorbis.txt ├── x264.txt ├── x265.txt ├── xvid.txt └── zlib.txt ├── native_extension ├── .actionScriptProperties ├── .flexLibProperties ├── .gitignore ├── .idea │ ├── .name │ ├── flexCompiler.xml │ ├── misc.xml │ └── modules.xml ├── .project ├── AVANE.iml ├── ane │ ├── .gitignore │ ├── build_android_release.bat │ ├── build_android_release.sh │ ├── build_ios.sh │ ├── extension_android.xml │ ├── extension_ios.xml │ └── platforms │ │ ├── android │ │ ├── .gitignore │ │ ├── platform.xml │ │ └── res │ │ │ └── values │ │ │ └── strings.xml │ │ └── ios │ │ └── platform.xml ├── bin │ └── AVANE.swc ├── docs │ └── asdocs │ │ ├── AC_OETags.js │ │ ├── all-classes.html │ │ ├── all-index-A.html │ │ ├── all-index-B.html │ │ ├── all-index-C.html │ │ ├── all-index-D.html │ │ ├── all-index-E.html │ │ ├── all-index-F.html │ │ ├── all-index-G.html │ │ ├── all-index-H.html │ │ ├── all-index-I.html │ │ ├── all-index-J.html │ │ ├── all-index-K.html │ │ ├── all-index-L.html │ │ ├── all-index-M.html │ │ ├── all-index-N.html │ │ ├── all-index-O.html │ │ ├── all-index-P.html │ │ ├── all-index-Q.html │ │ ├── all-index-R.html │ │ ├── all-index-S.html │ │ ├── all-index-T.html │ │ ├── all-index-U.html │ │ ├── all-index-V.html │ │ ├── all-index-W.html │ │ ├── all-index-X.html │ │ ├── all-index-Y.html │ │ ├── all-index-Z.html │ │ ├── asdoc.js │ │ ├── class-summary.html │ │ ├── com │ │ └── tuarua │ │ │ ├── AVANE.html │ │ │ ├── class-list.html │ │ │ ├── ffmpeg │ │ │ ├── AVFoundationOptions.html │ │ │ ├── Attachment.html │ │ │ ├── BitStreamFilter.html │ │ │ ├── GlobalOptions.html │ │ │ ├── HLSOptions.html │ │ │ ├── InputOptions.html │ │ │ ├── InputStream.html │ │ │ ├── Logger.html │ │ │ ├── MetaData.html │ │ │ ├── OutputAudioStream.html │ │ │ ├── OutputOptions.html │ │ │ ├── OutputVideoStream.html │ │ │ ├── Overlay.html │ │ │ ├── Streamer.html │ │ │ ├── X264AdvancedOptions.html │ │ │ ├── X264Options.html │ │ │ ├── X265AdvancedOptions.html │ │ │ ├── X265Options.html │ │ │ ├── class-list.html │ │ │ ├── constants │ │ │ │ ├── LogLevel.html │ │ │ │ ├── MimeTypes.html │ │ │ │ ├── Nvenc264Preset.html │ │ │ │ ├── Nvenc264Profile.html │ │ │ │ ├── Nvenc265Preset.html │ │ │ │ ├── Nvenc265Profile.html │ │ │ │ ├── Qsv264Preset.html │ │ │ │ ├── Qsv264Profile.html │ │ │ │ ├── Qsv265Preset.html │ │ │ │ ├── X264Advanced.html │ │ │ │ ├── X264Preset.html │ │ │ │ ├── X264Profile.html │ │ │ │ ├── X264Tune.html │ │ │ │ ├── X265Preset.html │ │ │ │ ├── X265Profile.html │ │ │ │ ├── X265Tune.html │ │ │ │ ├── class-list.html │ │ │ │ └── package-detail.html │ │ │ ├── events │ │ │ │ ├── FFmpegEvent.html │ │ │ │ ├── StreamProviderEvent.html │ │ │ │ ├── class-list.html │ │ │ │ └── package-detail.html │ │ │ ├── filters │ │ │ │ └── video │ │ │ │ │ ├── class-list.html │ │ │ │ │ ├── package-detail.html │ │ │ │ │ └── package.html │ │ │ ├── gets │ │ │ │ ├── AvailableFormat.html │ │ │ │ ├── BitStreamFilter.html │ │ │ │ ├── CaptureDevice.html │ │ │ │ ├── CaptureDeviceCapabilities.html │ │ │ │ ├── Codec.html │ │ │ │ ├── Color.html │ │ │ │ ├── Decoder.html │ │ │ │ ├── Device.html │ │ │ │ ├── Encoder.html │ │ │ │ ├── Filter.html │ │ │ │ ├── HardwareAcceleration.html │ │ │ │ ├── Layout.html │ │ │ │ ├── Layouts.html │ │ │ │ ├── PixelFormat.html │ │ │ │ ├── Protocol.html │ │ │ │ ├── Protocols.html │ │ │ │ ├── SampleFormat.html │ │ │ │ ├── class-list.html │ │ │ │ └── package-detail.html │ │ │ └── package-detail.html │ │ │ ├── ffprobe │ │ │ ├── AudioStream.html │ │ │ ├── Format.html │ │ │ ├── Probe.html │ │ │ ├── Stream.html │ │ │ ├── SubtitleStream.html │ │ │ ├── VideoStream.html │ │ │ ├── class-list.html │ │ │ ├── events │ │ │ │ ├── ProbeEvent.html │ │ │ │ ├── class-list.html │ │ │ │ └── package-detail.html │ │ │ └── package-detail.html │ │ │ └── package-detail.html │ │ ├── cookies.js │ │ ├── help.js │ │ ├── images │ │ ├── AirIcon12x12.gif │ │ ├── P_AlternativeMetadataIndicator_30x28_N.png │ │ ├── collapsed.gif │ │ ├── detailHeaderRule.jpg │ │ ├── detailSectionHeader.jpg │ │ ├── expanded.gif │ │ ├── inherit-arrow.gif │ │ ├── inheritedSummary.gif │ │ ├── logo.jpg │ │ ├── titleTableBottom.jpg │ │ ├── titleTableMiddle.jpg │ │ └── titleTableTop.jpg │ │ ├── index-list.html │ │ ├── index.html │ │ ├── override.css │ │ ├── package-frame.html │ │ ├── package-list.html │ │ ├── package-summary.html │ │ ├── print.css │ │ ├── style.css │ │ └── title-bar.html └── src │ └── com │ └── tuarua │ ├── AVANE.as │ ├── ffmpeg │ ├── AVFoundationOptions.as │ ├── Attachment.as │ ├── BitStreamFilter.as │ ├── GlobalOptions.as │ ├── HLSOptions.as │ ├── InputOptions.as │ ├── InputStream.as │ ├── Logger.as │ ├── MetaData.as │ ├── OutputAudioStream.as │ ├── OutputOptions.as │ ├── OutputVideoStream.as │ ├── Overlay.as │ ├── Streamer.as │ ├── X264AdvancedOptions.as │ ├── X264Options.as │ ├── X265AdvancedOptions.as │ ├── X265Options.as │ ├── constants │ │ ├── LogLevel.as │ │ ├── MimeTypes.as │ │ ├── Nvenc264Preset.as │ │ ├── Nvenc264Profile.as │ │ ├── Nvenc265Preset.as │ │ ├── Nvenc265Profile.as │ │ ├── Qsv264Preset.as │ │ ├── Qsv264Profile.as │ │ ├── Qsv265Preset.as │ │ ├── X264Advanced.as │ │ ├── X264Preset.as │ │ ├── X264Profile.as │ │ ├── X264Tune.as │ │ ├── X265Preset.as │ │ ├── X265Profile.as │ │ └── X265Tune.as │ ├── events │ │ ├── FFmpegEvent.as │ │ └── StreamProviderEvent.as │ ├── filters │ │ └── video │ │ │ ├── boxBlur.as │ │ │ ├── crop.as │ │ │ ├── cropdetect.as │ │ │ ├── deinterlace.as │ │ │ ├── denoise.as │ │ │ ├── pad.as │ │ │ ├── scaleTo.as │ │ │ ├── sharpen.as │ │ │ ├── smartBlur.as │ │ │ └── to16x9.as │ └── gets │ │ ├── AvailableFormat.as │ │ ├── BitStreamFilter.as │ │ ├── CaptureDevice.as │ │ ├── CaptureDeviceCapabilities.as │ │ ├── Codec.as │ │ ├── Color.as │ │ ├── Decoder.as │ │ ├── Device.as │ │ ├── Encoder.as │ │ ├── Filter.as │ │ ├── HardwareAcceleration.as │ │ ├── Layout.as │ │ ├── Layouts.as │ │ ├── PixelFormat.as │ │ ├── Protocol.as │ │ ├── Protocols.as │ │ └── SampleFormat.as │ └── ffprobe │ ├── AudioStream.as │ ├── Format.as │ ├── Probe.as │ ├── Stream.as │ ├── SubtitleStream.as │ ├── VideoStream.as │ └── events │ └── ProbeEvent.as ├── native_library ├── .gitignore ├── android │ └── AVANE │ │ ├── .gitignore │ │ ├── .idea │ │ ├── compiler.xml │ │ ├── copyright │ │ │ └── profiles_settings.xml │ │ ├── encodings.xml │ │ ├── gradle.xml │ │ ├── misc.xml │ │ ├── modules.xml │ │ ├── runConfigurations.xml │ │ └── vcs.xml │ │ ├── app │ │ ├── .gitignore │ │ ├── build.gradle │ │ ├── libs │ │ │ └── FlashRuntimeExtensions.jar │ │ ├── proguard-rules.pro │ │ └── src │ │ │ └── main │ │ │ ├── AndroidManifest.xml │ │ │ ├── java │ │ │ └── com │ │ │ │ └── tuarua │ │ │ │ ├── AVANE.java │ │ │ │ ├── AVANEContext.java │ │ │ │ └── utils │ │ │ │ └── ANEhelper.java │ │ │ └── res │ │ │ ├── mipmap-hdpi │ │ │ └── ic_launcher.png │ │ │ ├── mipmap-mdpi │ │ │ └── ic_launcher.png │ │ │ ├── mipmap-xhdpi │ │ │ └── ic_launcher.png │ │ │ ├── mipmap-xxhdpi │ │ │ └── ic_launcher.png │ │ │ ├── mipmap-xxxhdpi │ │ │ └── ic_launcher.png │ │ │ └── values │ │ │ ├── colors.xml │ │ │ ├── strings.xml │ │ │ └── styles.xml │ │ ├── build.gradle │ │ ├── gradle.properties │ │ ├── gradle │ │ └── wrapper │ │ │ ├── gradle-wrapper.jar │ │ │ └── gradle-wrapper.properties │ │ ├── gradlew │ │ ├── gradlew.bat │ │ └── settings.gradle ├── include │ ├── .gitignore │ ├── ANEhelper.h │ ├── AVANE.h │ ├── Constants.hpp │ ├── ObjCInterface.h │ ├── Utils.h │ ├── ios │ │ └── ffmpeg │ │ │ ├── arm │ │ │ └── config.h │ │ │ ├── compat │ │ │ └── va_copy.h │ │ │ ├── libavcodec │ │ │ ├── arm │ │ │ │ └── mathops.h │ │ │ ├── avcodec.h │ │ │ ├── avdct.h │ │ │ ├── avfft.h │ │ │ ├── d3d11va.h │ │ │ ├── dirac.h │ │ │ ├── dv_profile.h │ │ │ ├── dxva2.h │ │ │ ├── jni.h │ │ │ ├── mathops.h │ │ │ ├── mediacodec.h │ │ │ ├── qsv.h │ │ │ ├── vaapi.h │ │ │ ├── vda.h │ │ │ ├── vdpau.h │ │ │ ├── version.h │ │ │ ├── videotoolbox.h │ │ │ ├── vorbis_parser.h │ │ │ ├── x86 │ │ │ │ └── mathops.h │ │ │ └── xvmc.h │ │ │ ├── libavdevice │ │ │ ├── avdevice.h │ │ │ └── version.h │ │ │ ├── libavfilter │ │ │ ├── avfilter.h │ │ │ ├── avfiltergraph.h │ │ │ ├── buffersink.h │ │ │ ├── buffersrc.h │ │ │ └── version.h │ │ │ ├── libavformat │ │ │ ├── avformat.h │ │ │ ├── avio.h │ │ │ ├── network.h │ │ │ ├── os_support.h │ │ │ ├── url.h │ │ │ └── version.h │ │ │ ├── libavresample │ │ │ ├── avresample.h │ │ │ └── version.h │ │ │ ├── libavutil │ │ │ ├── aarch64 │ │ │ │ └── timer.h │ │ │ ├── adler32.h │ │ │ ├── aes.h │ │ │ ├── aes_ctr.h │ │ │ ├── arm │ │ │ │ └── timer.h │ │ │ ├── attributes.h │ │ │ ├── audio_fifo.h │ │ │ ├── avassert.h │ │ │ ├── avconfig.h │ │ │ ├── avstring.h │ │ │ ├── avutil.h │ │ │ ├── base64.h │ │ │ ├── blowfish.h │ │ │ ├── bprint.h │ │ │ ├── bswap.h │ │ │ ├── buffer.h │ │ │ ├── camellia.h │ │ │ ├── cast5.h │ │ │ ├── channel_layout.h │ │ │ ├── common.h │ │ │ ├── cpu.h │ │ │ ├── crc.h │ │ │ ├── des.h │ │ │ ├── dict.h │ │ │ ├── display.h │ │ │ ├── downmix_info.h │ │ │ ├── error.h │ │ │ ├── eval.h │ │ │ ├── ffversion.h │ │ │ ├── fifo.h │ │ │ ├── file.h │ │ │ ├── frame.h │ │ │ ├── hash.h │ │ │ ├── hmac.h │ │ │ ├── hwcontext.h │ │ │ ├── hwcontext_cuda.h │ │ │ ├── hwcontext_dxva2.h │ │ │ ├── hwcontext_qsv.h │ │ │ ├── hwcontext_vaapi.h │ │ │ ├── hwcontext_vdpau.h │ │ │ ├── imgutils.h │ │ │ ├── internal.h │ │ │ ├── intfloat.h │ │ │ ├── intreadwrite.h │ │ │ ├── lfg.h │ │ │ ├── libm.h │ │ │ ├── log.h │ │ │ ├── lzo.h │ │ │ ├── macros.h │ │ │ ├── mastering_display_metadata.h │ │ │ ├── mathematics.h │ │ │ ├── md5.h │ │ │ ├── mem.h │ │ │ ├── motion_vector.h │ │ │ ├── murmur3.h │ │ │ ├── opt.h │ │ │ ├── parseutils.h │ │ │ ├── pixdesc.h │ │ │ ├── pixelutils.h │ │ │ ├── pixfmt.h │ │ │ ├── random_seed.h │ │ │ ├── rational.h │ │ │ ├── rc4.h │ │ │ ├── replaygain.h │ │ │ ├── ripemd.h │ │ │ ├── samplefmt.h │ │ │ ├── sha.h │ │ │ ├── sha512.h │ │ │ ├── spherical.h │ │ │ ├── stereo3d.h │ │ │ ├── tea.h │ │ │ ├── threadmessage.h │ │ │ ├── time.h │ │ │ ├── timecode.h │ │ │ ├── timer.h │ │ │ ├── timestamp.h │ │ │ ├── tree.h │ │ │ ├── twofish.h │ │ │ ├── version.h │ │ │ ├── x86 │ │ │ │ ├── asm.h │ │ │ │ ├── emms.h │ │ │ │ └── timer.h │ │ │ └── xtea.h │ │ │ ├── libpostproc │ │ │ ├── postprocess.h │ │ │ └── version.h │ │ │ ├── libswresample │ │ │ ├── swresample.h │ │ │ └── version.h │ │ │ ├── libswscale │ │ │ ├── swscale.h │ │ │ └── version.h │ │ │ └── x86 │ │ │ └── config.h │ └── json.hpp ├── ios │ └── AVANE │ │ ├── .gitignore │ │ ├── .idea │ │ ├── AVANE.iml │ │ ├── modules.xml │ │ ├── workspace.xml │ │ └── xcode.xml │ │ ├── AVANE.xcodeproj │ │ ├── project.pbxproj │ │ └── project.xcworkspace │ │ │ └── contents.xcworkspacedata │ │ ├── AVANE │ │ ├── AVANE_ios.h │ │ ├── AVANE_ios.m │ │ └── FlashRuntimeExtensions.h │ │ └── dependancies │ │ └── RUNME.sh └── source │ ├── ANEhelper.cpp │ ├── AVANE.cpp │ ├── ObjCInterface.mm │ ├── Utils.cpp │ └── ffmpeg │ ├── cmdutils.c │ ├── cmdutils.h │ ├── cmdutils_common_opts.h │ ├── ffmpeg.c │ ├── ffmpeg.h │ ├── ffmpeg_filter.c │ ├── ffmpeg_opt.c │ └── ffmpeg_videotoolbox.c ├── params.json ├── screenshots ├── screen-shot-1.png ├── screen-shot-2.png └── screen-shot-3.png └── stylesheets ├── github-light.css └── stylesheet.css /.gitignore: -------------------------------------------------------------------------------- 1 | # Created by https://www.gitignore.io/api/xcode 2 | 3 | ### Xcode ### 4 | # Xcode 5 | # 6 | # gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore 7 | 8 | ## Build generated 9 | build/ 10 | DerivedData/ 11 | 12 | ## Various settings 13 | *.pbxuser 14 | !default.pbxuser 15 | *.mode1v3 16 | !default.mode1v3 17 | *.mode2v3 18 | !default.mode2v3 19 | *.perspectivev3 20 | !default.perspectivev3 21 | xcuserdata/ 22 | 23 | ## Other 24 | *.moved-aside 25 | *.xccheckout 26 | *.xcscmblueprint 27 | *.tps 28 | *.DS_Store 29 | issue9/ 30 | /release/ 31 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "native_library/android/AVANE/LibAVANE-Android"] 2 | path = native_library/android/AVANE/LibAVANE-Android 3 | url = https://github.com/tuarua/LibAVANE-Android 4 | branch = master 5 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | ### 0.0.11 2 | - OSX: Modified FFmpeg 3.3 to replace _clock_gettime calls Issue #17 3 | 4 | ### 0.0.10 5 | - OSX: Updated to FFmpeg 3.3 6 | - OSX: Updated to Boost 1.64 Issue #17 7 | 8 | ### 0.0.9 9 | - WIN/OSX/iOS: Updated to FFmpeg 3.2.2 10 | - iOS: Added ARM. Deploying to devices now supported 11 | - iOS: Improved example using AVFoundation HW encoding and camera capture 12 | - iOS: added getCaptureDevices() method. Returns AVFoundation capture device list 13 | 14 | ### 0.0.8 15 | - OSX: added getCaptureDevices() method. Returns AVFoundation capture device list 16 | - OSX: added Desktop Capture example 17 | - WIN/OSX/Android: Improved error messaging 18 | - WIN/OSX/Android: Intelli J project files 19 | - Added https://tuarua.github.io/AVANE/ website 20 | 21 | ### 0.0.7 22 | - WIN/OSX: [BUG] InputOptions and OutputOptions addExtra params method breaking swc 23 | - WIN: added getCaptureDevices() method. Returns DirectShow capture device list 24 | 25 | ### 0.0.6 26 | - WIN/OSX/Android: Base ASdocs added. 27 | - WIN/OSX: Universal Player updated with controls to showcase play/pause/seek. 28 | - WIN/OSX: [BUG] framerate should be Number not int 29 | - WIN/OSX: Added ability to add extra options to both input and output 30 | - WIN/OSX: Added class for AVFoundationOptions 31 | - OSX: Trimmed duplicate binaries from OSX ANE 32 | 33 | ### 0.0.5 34 | - WIN/OSX: fix ON_ENCODE_START event not firing 35 | 36 | ### 0.0.4 37 | - WIN/OSX: updated to FFmpeg 3.1.5 38 | 39 | ### 0.0.3 40 | - WIN/OSX: updated to FFmpeg 3.1.4 41 | - WIN/OSX: cleaned up example, removed Twitch stream 42 | - Android: native extension added 43 | 44 | ### 0.0.2 45 | - OSX 64 compatable 46 | - Added nvenc codec 47 | - Added hardware acceleration options 48 | 49 | ### 0.0.1 50 | - Win 32 51 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # AVANE 2 | 3 | [](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=D9VQZQPGPLFKW) 4 | 5 | Adobe Air Native Extension for OSX / WIN written in ActionScript 3 and C/C++ for encoding + decoding video and audio based on FFMpeg libraries. Samples included. 6 | 7 | #### iOS and Android versions are provided as experimental only. I won't support them. 8 | 9 | Universal player - demo showing flash playing mp4, mkv, webm encoded in h264, hevc and vp9. Also showcases live HLS streams from NASA. 10 | N.B. Depending on your computer setup HEVC decoding may be very slow. So a 6 year old mac mini is not going to cut it :) 11 | 12 | Advanced client - demo similar to Handbrake 13 | 14 | Desktop capture - demo using screen-capture-recorder to capture desktop (Windows only) 15 | 16 | Camera recording - demo using camera to record video (iOS only) 17 | 18 | 19 |  20 | 21 | ### The ANE 22 | 23 | Download the latest from the [Releases](https://github.com/tuarua/AVANE/releases) page. 24 | 25 | ### AS Docs 26 | [https://tuarua.github.io/AVANE/native_extension/docs/asdocs/] 27 | 28 | 29 | ### Features 30 | - Harness the power of FFmpeg with this unoffical ANE version. 31 | 32 | ### Tech 33 | 34 | AVANE uses the following libraries: 35 | 36 | * [https://github.com/ShiftMediaProject/FFmpeg] - ShiftMediaProject FFmpeg 37 | * [http://www.boost.org] - C++ portable libraries 38 | * [http://www.frogtoss.com/labs] - Native File Dialog 39 | * [https://nlohmann.github.io/json] - JSON for Modern C++ 40 | * [http://jsoncpp.sourceforge.net/] - Json-cpp 41 | * [https://github.com/rdp/screen-capture-recorder-to-video-windows-free] - required for desktop capture example 42 | 43 | 44 | ### Prerequisites 45 | 46 | You will need 47 | 48 | - Flash Builder 4.7 / IntelliJ 49 | - AIR 24 SDK 50 | 51 | -------------------------------------------------------------------------------- /android_example/.gitignore: -------------------------------------------------------------------------------- 1 | # Created by https://www.gitignore.io/api/flashbuilder 2 | 3 | ### FlashBuilder ### 4 | # Build and Release Folders 5 | bin/ 6 | bin-release/ 7 | bin-release-temp/ 8 | bin-debug/ 9 | 10 | # Other files and folders 11 | .settings/ 12 | 13 | # textures 14 | .tps 15 | 16 | 17 | 18 | 19 | # Created by https://www.gitignore.io/api/intellij 20 | 21 | ### Intellij ### 22 | # Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and Webstorm 23 | # Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 24 | 25 | # User-specific stuff: 26 | .idea/workspace.xml 27 | .idea/tasks.xml 28 | 29 | # Sensitive or high-churn files: 30 | .idea/dataSources/ 31 | .idea/dataSources.ids 32 | .idea/dataSources.xml 33 | .idea/dataSources.local.xml 34 | .idea/sqlDataSources.xml 35 | .idea/dynamic.xml 36 | .idea/uiDesigner.xml 37 | 38 | # Gradle: 39 | .idea/gradle.xml 40 | .idea/libraries 41 | 42 | # Mongo Explorer plugin: 43 | .idea/mongoSettings.xml 44 | 45 | ## File-based project format: 46 | *.iws 47 | 48 | ## Plugin-specific files: 49 | 50 | # IntelliJ 51 | /out/ 52 | 53 | # mpeltonen/sbt-idea plugin 54 | .idea_modules/ 55 | 56 | # JIRA plugin 57 | atlassian-ide-plugin.xml 58 | 59 | # Crashlytics plugin (for Android Studio and IntelliJ) 60 | com_crashlytics_export_strings.xml 61 | crashlytics.properties 62 | crashlytics-build.properties 63 | fabric.properties 64 | 65 | ### Intellij Patch ### 66 | # Comment Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-215987721 67 | 68 | # *.iml 69 | # modules.xml 70 | # .idea/misc.xml 71 | # *.ipr -------------------------------------------------------------------------------- /android_example/.idea/.name: -------------------------------------------------------------------------------- 1 | AVANE-androidExample -------------------------------------------------------------------------------- /android_example/.idea/flexCompiler.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /android_example/.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /android_example/.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /android_example/.project: -------------------------------------------------------------------------------- 1 | 2 | 3 | AVANE-androidExample 4 | 5 | 6 | AVANE 7 | 8 | 9 | 10 | com.adobe.flexbuilder.project.flexbuilder 11 | 12 | 13 | 14 | 15 | com.adobe.flexbuilder.project.apollobuilder 16 | 17 | 18 | 19 | 20 | 21 | com.adobe.flexide.project.multiplatform.multiplatformasnature 22 | com.adobe.flexide.project.multiplatform.multiplatformnature 23 | com.adobe.flexbuilder.project.apollonature 24 | com.adobe.flexbuilder.project.actionscriptnature 25 | 26 | 27 | -------------------------------------------------------------------------------- /android_example/fonts/Roboto-Medium.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tuarua/AVANE/2091da204ddaac4a5d2060262102dee48bd2cdd9/android_example/fonts/Roboto-Medium.ttf -------------------------------------------------------------------------------- /android_example/sprite-sheet/atlas.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tuarua/AVANE/2091da204ddaac4a5d2060262102dee48bd2cdd9/android_example/sprite-sheet/atlas.png -------------------------------------------------------------------------------- /android_example/sprite-sheet/atlas.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /android_example/src/Assets.as: -------------------------------------------------------------------------------- 1 | package { 2 | import flash.display.Bitmap; 3 | import flash.utils.Dictionary; 4 | 5 | import starling.textures.Texture; 6 | import starling.textures.TextureAtlas; 7 | 8 | public class Assets { 9 | 10 | private static var textures:Dictionary = new Dictionary(); 11 | private static var textureAtlas:TextureAtlas; 12 | 13 | [Embed(source="../sprite-sheet/atlas.png")] 14 | public static const AtlasTexture:Class; 15 | 16 | [Embed(source="../sprite-sheet/atlas.xml", mimeType="application/octet-stream")] 17 | public static const AtlasXml:Class; 18 | 19 | public static function getAtlas():TextureAtlas { 20 | if (textureAtlas == null) { 21 | var texture:Texture = getTexture("AtlasTexture"); 22 | var xml:XML = XML(new AtlasXml()); 23 | textureAtlas = new TextureAtlas(texture, xml); 24 | } 25 | return textureAtlas; 26 | } 27 | 28 | public static function getTexture(name:String,mm:Boolean=false):Texture { 29 | if (textures[name] == undefined) { 30 | var bitmap:Bitmap = new Assets[name](); //don't understand this 31 | textures[name] = Texture.fromBitmap(bitmap,mm); 32 | } 33 | return textures[name]; 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /android_example/src/Main.as: -------------------------------------------------------------------------------- 1 | package { 2 | 3 | import flash.display.Sprite; 4 | import flash.display.StageAlign; 5 | import flash.display.StageScaleMode; 6 | import flash.events.Event; 7 | import flash.geom.Rectangle; 8 | 9 | import starling.core.Starling; 10 | import starling.events.Event; 11 | import starling.events.ResizeEvent; 12 | 13 | [SWF(width = "1280", height = "720", frameRate = "60", backgroundColor = "#121314")] 14 | public class Main extends Sprite { 15 | // Don't skip the "embedAsCFF"-part! 16 | [Embed(source="../fonts/Roboto-Medium.ttf", embedAsCFF="false", fontFamily="Roboto-Medium")] 17 | private static const Roboto:Class; 18 | 19 | public var mStarling:Starling; 20 | 21 | public function Main() { 22 | super(); 23 | stage.align = StageAlign.TOP_LEFT; 24 | stage.scaleMode = StageScaleMode.NO_SCALE; 25 | Starling.multitouchEnabled = true; // useful on mobile devices 26 | 27 | var viewPort:Rectangle = new Rectangle(0,0,stage.fullScreenWidth,stage.fullScreenHeight); 28 | 29 | mStarling = new Starling(StarlingRoot, stage, viewPort,null,"auto","auto"); 30 | mStarling.stage.stageWidth = stage.fullScreenWidth; 31 | mStarling.stage.stageHeight = stage.fullScreenHeight; 32 | mStarling.simulateMultitouch = false; 33 | mStarling.showStatsAt("right","bottom"); 34 | mStarling.enableErrorChecking = false; 35 | mStarling.antiAliasing = 16; 36 | mStarling.skipUnchangedFrames = false; 37 | 38 | mStarling.addEventListener(starling.events.Event.ROOT_CREATED, 39 | function onRootCreated(event:Object, app:StarlingRoot):void { 40 | mStarling.removeEventListener(starling.events.Event.ROOT_CREATED, onRootCreated); 41 | app.start(); 42 | mStarling.start(); 43 | stage.addEventListener(ResizeEvent.RESIZE, onResize); 44 | }); 45 | } 46 | private function onResize(event:flash.events.Event):void { 47 | trace(event); 48 | } 49 | 50 | } 51 | } -------------------------------------------------------------------------------- /android_example/src/libs/blooddy_crypto.swc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tuarua/AVANE/2091da204ddaac4a5d2060262102dee48bd2cdd9/android_example/src/libs/blooddy_crypto.swc -------------------------------------------------------------------------------- /android_example/src/libs/starling.swc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tuarua/AVANE/2091da204ddaac4a5d2060262102dee48bd2cdd9/android_example/src/libs/starling.swc -------------------------------------------------------------------------------- /android_example/src/utils/TextUtils.as: -------------------------------------------------------------------------------- 1 | package utils { 2 | public class TextUtils { 3 | public static function cleanChars(_s:String):String{ 4 | var pattern1:RegExp = new RegExp(String.fromCharCode(956), "g"); 5 | var ret:String = _s; 6 | if(ret){ 7 | } 8 | return ret; 9 | } 10 | public static function trim(s:String):String { 11 | return s ? s.replace(/^\s+|\s+$/gs, '') : ""; 12 | } 13 | private static const byteSizes:Array = ["B", "KB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB"]; 14 | public static function bytesToString(bytes:Number):String { 15 | var index:uint = Math.floor(Math.log(bytes)/Math.log(1024)); 16 | return (bytes/Math.pow(1024, index)).toFixed(2) + " " +byteSizes[index]; 17 | } 18 | } 19 | } -------------------------------------------------------------------------------- /android_example/src/utils/TimeUtils.as: -------------------------------------------------------------------------------- 1 | package utils { 2 | import flash.globalization.DateTimeFormatter; 3 | 4 | public class TimeUtils { 5 | public static function secsToTimeCode(n:Number):String { 6 | var finStr:String = ""; 7 | var h:int = Math.floor((n/3600)); 8 | var m:int = Math.floor((n-(h*3600))/60); 9 | var s:int = Math.floor(n-((h*3600)+(m*60))); 10 | var hStr:String = h.toString(); 11 | var mStr:String = m.toString(); 12 | var sStr:String = s.toString(); 13 | if(h < 10) hStr = hStr; 14 | if(m < 10) mStr = "0"+mStr; 15 | if(s < 10) sStr = "0"+sStr; 16 | if(h > 0) finStr = finStr+hStr+":"; 17 | finStr = finStr+mStr+":"+sStr; 18 | return finStr; 19 | } 20 | public static function secsToFriendly(n:int):String { 21 | var d:int = Math.floor((n/3600)/24); 22 | var h:int = Math.floor((n/3600)); 23 | var m:int = Math.floor((n-(h*3600))/60); 24 | var ret:String; 25 | if(d > 0) 26 | ret = d+"d "+h+"h "; 27 | else if(h > 0) 28 | ret = h+"h "+m+"m "; 29 | else if(m > 0) 30 | ret = m+"m"; 31 | else 32 | ret = "< 1m"; 33 | return ret; 34 | } 35 | public static function timeCodeToSecs(s:String):Number{//00:00:05.53 36 | var arr:Array = s.split(":"); 37 | var ret:Number = 0; 38 | if(arr.length == 1){ 39 | ret = parseFloat(arr[0]); 40 | }else if(arr.length == 2){ 41 | ret = (parseInt(arr[0])*60)+parseFloat(arr[1]); 42 | }else if(arr.length == 3){ 43 | ret = (parseInt(arr[0])*60*60)+(parseInt(arr[1])*60)+parseFloat(arr[2]); 44 | } 45 | return ret; 46 | } 47 | public static function unixToDate(_val:uint):String { 48 | var d:Date = new Date(_val*1000); 49 | var dtf:DateTimeFormatter = new DateTimeFormatter("en-UK"); 50 | dtf.setDateTimePattern("E d MMM y, HH:mm"); 51 | return dtf.format(d) 52 | } 53 | } 54 | } -------------------------------------------------------------------------------- /android_example/src/views/loader/CircularLoader.as: -------------------------------------------------------------------------------- 1 | package views.loader { 2 | import starling.display.Image; 3 | import starling.display.Sprite; 4 | import starling.text.TextField; 5 | import starling.utils.Align; 6 | import starling.utils.deg2rad; 7 | 8 | public class CircularLoader extends Sprite { 9 | private var lbl:TextField; 10 | private var imgBG:Image; 11 | private var imgFill:RadialImage; 12 | public function CircularLoader() { 13 | super(); 14 | imgBG = new Image(Assets.getAtlas().getTexture("semi-circle-bg2")); 15 | imgFill = new RadialImage(Assets.getAtlas().getTexture("semi-circle-full")); 16 | 17 | lbl = new TextField(320,80,""); 18 | lbl.format.setTo("Roboto-Medium",48); 19 | lbl.format.horizontalAlign = Align.CENTER; 20 | lbl.format.color = 0xFFFFFF; 21 | 22 | lbl.batchable = false; 23 | lbl.touchable = false; 24 | lbl.y = 120; 25 | imgBG.touchable = false; 26 | imgBG.y = 0; 27 | imgBG.touchable = imgFill.touchable = false; 28 | addChild(imgBG); 29 | imgFill.scaleX = imgFill.scaleY = -1; 30 | imgFill.x = 320; 31 | imgFill.y = 320; 32 | addChild(imgFill); 33 | 34 | 35 | addChild(lbl); 36 | } 37 | public function reset():void { 38 | imgBG.visible = true; 39 | imgFill.angle = 0; 40 | lbl.text = "0%"; 41 | } 42 | 43 | public function update(value:Number):void {//percent eg 0.01 44 | lbl.text = (value == 0.0 ) ? "0%" : (value*100).toPrecision(3)+"%"; 45 | imgFill.angle = deg2rad(360*value); 46 | } 47 | 48 | } 49 | } -------------------------------------------------------------------------------- /android_example/src/views/loader/RadialImage.as: -------------------------------------------------------------------------------- 1 | package views.loader { 2 | import starling.textures.Texture; 3 | /** 4 | * Картинка с радиальным заполнением 5 | * @author rzer 6 | */ 7 | public class RadialImage extends RadialQuad { 8 | public function RadialImage(texture:Texture) { 9 | super(texture.width, texture.height); 10 | this.texture = texture; 11 | } 12 | } 13 | 14 | } 15 | -------------------------------------------------------------------------------- /example/.gitignore: -------------------------------------------------------------------------------- 1 | # Created by https://www.gitignore.io/api/flashbuilder 2 | 3 | ### FlashBuilder ### 4 | # Build and Release Folders 5 | bin/ 6 | #bin-debug/ 7 | bin-release/ 8 | bin-release-temp/ 9 | 10 | # Other files and folders 11 | .settings/ 12 | 13 | .FlexUnitSettings 14 | .externalToolBuilders 15 | .model 16 | 17 | # textures 18 | .tps 19 | 20 | # build files 21 | *.sh 22 | 23 | 24 | # Created by https://www.gitignore.io/api/intellij 25 | 26 | ### Intellij ### 27 | # Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and Webstorm 28 | # Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 29 | 30 | # User-specific stuff: 31 | .idea/workspace.xml 32 | .idea/tasks.xml 33 | 34 | # Sensitive or high-churn files: 35 | .idea/dataSources/ 36 | .idea/dataSources.ids 37 | .idea/dataSources.xml 38 | .idea/dataSources.local.xml 39 | .idea/sqlDataSources.xml 40 | .idea/dynamic.xml 41 | .idea/uiDesigner.xml 42 | 43 | # Gradle: 44 | .idea/gradle.xml 45 | 46 | # Mongo Explorer plugin: 47 | .idea/mongoSettings.xml 48 | 49 | ## File-based project format: 50 | *.iws 51 | 52 | ## Plugin-specific files: 53 | 54 | # IntelliJ 55 | /out/ 56 | 57 | # mpeltonen/sbt-idea plugin 58 | .idea_modules/ 59 | 60 | # JIRA plugin 61 | atlassian-ide-plugin.xml 62 | 63 | # Crashlytics plugin (for Android Studio and IntelliJ) 64 | com_crashlytics_export_strings.xml 65 | crashlytics.properties 66 | crashlytics-build.properties 67 | fabric.properties 68 | 69 | ### Intellij Patch ### 70 | # Comment Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-215987721 71 | 72 | # *.iml 73 | # modules.xml 74 | # .idea/misc.xml 75 | # *.ipr -------------------------------------------------------------------------------- /example/.idea/.name: -------------------------------------------------------------------------------- 1 | AVANESample -------------------------------------------------------------------------------- /example/.idea/codeStyleSettings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /example/.idea/flexCompiler.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /example/.idea/libraries/AVANE.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /example/.idea/libraries/SaveAsANE.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /example/.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /example/.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /example/.project: -------------------------------------------------------------------------------- 1 | 2 | 3 | AVANESample 4 | 5 | 6 | AVANE 7 | 8 | 9 | 10 | com.adobe.flexbuilder.project.flexbuilder 11 | 12 | 13 | 14 | 15 | com.adobe.flexbuilder.project.apollobuilder 16 | 17 | 18 | 19 | 20 | 21 | com.adobe.flexbuilder.project.apollonature 22 | com.adobe.flexbuilder.project.actionscriptnature 23 | 24 | 25 | -------------------------------------------------------------------------------- /example/bin-debug/AVANESample.swf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tuarua/AVANE/2091da204ddaac4a5d2060262102dee48bd2cdd9/example/bin-debug/AVANESample.swf -------------------------------------------------------------------------------- /example/libs/FiraSansSemiBold.swc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tuarua/AVANE/2091da204ddaac4a5d2060262102dee48bd2cdd9/example/libs/FiraSansSemiBold.swc -------------------------------------------------------------------------------- /example/libs/starling.swc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tuarua/AVANE/2091da204ddaac4a5d2060262102dee48bd2cdd9/example/libs/starling.swc -------------------------------------------------------------------------------- /example/sprite-sheet/atlas.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tuarua/AVANE/2091da204ddaac4a5d2060262102dee48bd2cdd9/example/sprite-sheet/atlas.png -------------------------------------------------------------------------------- /example/src/AVANESample.as: -------------------------------------------------------------------------------- 1 | package { 2 | import flash.display.Sprite; 3 | import flash.display.StageAlign; 4 | import flash.display.StageScaleMode; 5 | import flash.geom.Rectangle; 6 | 7 | import starling.core.Starling; 8 | import starling.events.Event; 9 | 10 | 11 | [SWF(width = "1280", height = "800", frameRate = "60", backgroundColor = "#121314")] 12 | public class AVANESample extends Sprite { 13 | public var mStarling:Starling; 14 | public function AVANESample(){ 15 | 16 | super(); 17 | 18 | stage.align = StageAlign.TOP_LEFT; 19 | stage.scaleMode = StageScaleMode.NO_SCALE; 20 | Starling.multitouchEnabled = false; 21 | var viewPort:Rectangle = new Rectangle(0,0,stage.stageWidth,stage.stageHeight); 22 | mStarling = new Starling(StarlingRoot, stage, viewPort,null,"auto","auto"); 23 | mStarling.stage.stageWidth = stage.stageWidth; // <- same size on all devices! 24 | mStarling.stage.stageHeight = stage.stageHeight; 25 | mStarling.simulateMultitouch = false; 26 | mStarling.showStatsAt("right","bottom"); 27 | mStarling.enableErrorChecking = false; 28 | mStarling.antiAliasing = 16; 29 | mStarling.skipUnchangedFrames = false; 30 | 31 | mStarling.addEventListener(starling.events.Event.ROOT_CREATED, 32 | function onRootCreated(event:Object, app:StarlingRoot):void { 33 | mStarling.removeEventListener(starling.events.Event.ROOT_CREATED, onRootCreated); 34 | app.start(); 35 | mStarling.start(); 36 | }); 37 | } 38 | 39 | } 40 | } -------------------------------------------------------------------------------- /example/src/Assets.as: -------------------------------------------------------------------------------- 1 | package { 2 | import flash.display.Bitmap; 3 | import flash.utils.Dictionary; 4 | 5 | import starling.textures.Texture; 6 | import starling.textures.TextureAtlas; 7 | 8 | public class Assets { 9 | 10 | private static var textures:Dictionary = new Dictionary(); 11 | private static var textureAtlas:TextureAtlas; 12 | 13 | [Embed(source="../sprite-sheet/atlas.png")] 14 | public static const AtlasTexture:Class; 15 | 16 | [Embed(source="../sprite-sheet/atlas.xml", mimeType="application/octet-stream")] 17 | public static const AtlasXml:Class; 18 | 19 | public static function getAtlas():TextureAtlas { 20 | if (textureAtlas == null) { 21 | var texture:Texture = getTexture("AtlasTexture"); 22 | var xml:XML = XML(new AtlasXml()); 23 | textureAtlas = new TextureAtlas(texture, xml); 24 | } 25 | return textureAtlas; 26 | } 27 | 28 | public static function getTexture(name:String,mm:Boolean=false):Texture { 29 | if (textures[name] == undefined) { 30 | var bitmap:Bitmap = new Assets[name](); //don't understand this 31 | textures[name] = Texture.fromBitmap(bitmap,mm); 32 | } 33 | return textures[name]; 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /example/src/Fonts.as: -------------------------------------------------------------------------------- 1 | package { 2 | import flash.utils.Dictionary; 3 | 4 | import starling.text.BitmapFont; 5 | import starling.textures.Texture; 6 | 7 | public class Fonts { 8 | [Embed(source="../fonts/fira-sans-semi-bold-13.fnt", mimeType="application/octet-stream")] 9 | private static const FiraRegular13XML:Class; 10 | private static var fonts:Dictionary = new Dictionary(); 11 | public static function getFont(_name:String):BitmapFont { 12 | if(fonts["fira-sans-semi-bold-13"] == undefined) 13 | fonts["fira-sans-semi-bold-13"] = XML(new FiraRegular13XML()); 14 | var fntTexture:Texture = Assets.getAtlas().getTexture(_name); 15 | return new BitmapFont(fntTexture, fonts[_name] ); 16 | } 17 | 18 | } 19 | } -------------------------------------------------------------------------------- /example/src/com/tuarua/BuildMode.as: -------------------------------------------------------------------------------- 1 | package com.tuarua { 2 | import flash.system.Capabilities; 3 | public class BuildMode { 4 | /** 5 | * Returns true if the user is running the app on a Debug Flash Player. 6 | * Uses the Capabilities class 7 | **/ 8 | public static function isDebugPlayer():Boolean { 9 | return Capabilities.isDebugger; 10 | } 11 | 12 | /** 13 | * Returns true if the swf is built in debug mode 14 | **/ 15 | public static function isDebugBuild():Boolean { 16 | var stackTrace:String = new Error().getStackTrace(); 17 | return (stackTrace && stackTrace.search(/:[0-9]+]$/m) > -1); 18 | } 19 | 20 | /** 21 | * Returns true if the swf is built in release mode 22 | **/ 23 | public static function isReleaseBuild():Boolean { 24 | return !isDebugBuild(); 25 | } 26 | } 27 | 28 | } -------------------------------------------------------------------------------- /example/src/events/FormEvent.as: -------------------------------------------------------------------------------- 1 | package events { 2 | import starling.events.Event; 3 | 4 | public class FormEvent extends Event { 5 | public static const ON_DROPDOWN:String = "onDropDown"; 6 | public static const FOCUS_OUT:String = "onFocusOut"; 7 | public static const FOCUS_IN:String = "onFocusIn"; 8 | public static const CHANGE:String = "onChange"; 9 | public var params:Object; 10 | public function FormEvent(type:String, _params:Object=null, bubbles:Boolean=false, cancelable:Boolean=false) { 11 | super(type, bubbles, cancelable); 12 | this.params = _params; 13 | } 14 | } 15 | } -------------------------------------------------------------------------------- /example/src/events/InteractionEvent.as: -------------------------------------------------------------------------------- 1 | package events { 2 | import starling.events.Event; 3 | public class InteractionEvent extends Event { 4 | public static const ON_MENU_ITEM_MENU:String = "onMenuItemMenu"; 5 | public static const ON_MENU_ITEM_RIGHT:String = "onMenuItemRight"; 6 | public static const ON_CLOSE:String = "onClose"; 7 | public static const ON_ENCODE:String = "onEncode"; 8 | 9 | public static const ON_CONTROLS_PLAY:String = "onControlsPlay"; 10 | public static const ON_CONTROLS_PAUSE:String = "onControlsPause"; 11 | public static const ON_CONTROLS_STATS:String = "onControlsStats"; 12 | public static const ON_CONTROLS_FFWD:String = "onControlsFfwd"; 13 | public static const ON_CONTROLS_REWIND:String = "onControlsRewind"; 14 | public static const ON_CONTROLS_SEEK:String = "onControlsSeek"; 15 | public static const ON_CONTROLS_MUTE:String = "onControlsMute"; 16 | public static const ON_CONTROLS_SETVOLUME:String = "onControlsSetVolume"; 17 | 18 | public static const ON_PLAYER_SHOW_CONTROLS:String = "onPlayerShowControls"; 19 | public static const ON_PLAYER_HIDE_CONTROLS:String = "onPlayerHideControls"; 20 | 21 | public var params:Object; 22 | 23 | public function InteractionEvent(type:String, _params:Object=null, bubbles:Boolean=false, cancelable:Boolean=false) { 24 | super(type, bubbles, cancelable); 25 | this.params = _params; 26 | } 27 | } 28 | } -------------------------------------------------------------------------------- /example/src/utils/TextUtils.as: -------------------------------------------------------------------------------- 1 | package utils { 2 | public class TextUtils { 3 | public static function cleanChars(_s:String):String{ 4 | var pattern1:RegExp = new RegExp(String.fromCharCode(956), "g"); 5 | var ret:String = _s; 6 | if(ret){ 7 | } 8 | return ret; 9 | } 10 | public static function trim(s:String):String { 11 | return s ? s.replace(/^\s+|\s+$/gs, '') : ""; 12 | } 13 | private static const byteSizes:Array = ["B", "KB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB"]; 14 | public static function bytesToString(bytes:Number):String { 15 | var index:uint = Math.floor(Math.log(bytes)/Math.log(1024)); 16 | return (bytes/Math.pow(1024, index)).toFixed(2) + " " +byteSizes[index]; 17 | } 18 | } 19 | } -------------------------------------------------------------------------------- /example/src/utils/TimeUtils.as: -------------------------------------------------------------------------------- 1 | package utils { 2 | import flash.globalization.DateTimeFormatter; 3 | 4 | public class TimeUtils { 5 | public static function secsToTimeCode(n:Number):String { 6 | var finStr:String = ""; 7 | var h:int = Math.floor((n/3600)); 8 | var m:int = Math.floor((n-(h*3600))/60); 9 | var s:int = Math.floor(n-((h*3600)+(m*60))); 10 | var hStr:String = h.toString(); 11 | var mStr:String = m.toString(); 12 | var sStr:String = s.toString(); 13 | if(h < 10) hStr = hStr; 14 | if(m < 10) mStr = "0"+mStr; 15 | if(s < 10) sStr = "0"+sStr; 16 | if(h > 0) finStr = finStr+hStr+":"; 17 | finStr = finStr+mStr+":"+sStr; 18 | return finStr; 19 | } 20 | public static function secsToFriendly(n:int):String { 21 | var d:int = Math.floor((n/3600)/24); 22 | var h:int = Math.floor((n/3600)); 23 | var m:int = Math.floor((n-(h*3600))/60); 24 | var ret:String; 25 | if(d > 0) 26 | ret = d+"d "+h+"h "; 27 | else if(h > 0) 28 | ret = h+"h "+m+"m "; 29 | else if(m > 0) 30 | ret = m+"m"; 31 | else 32 | ret = "< 1m"; 33 | return ret; 34 | } 35 | public static function timeCodeToSecs(s:String):Number{//00:00:05.53 36 | var arr:Array = s.split(":"); 37 | var ret:Number = 0; 38 | if(arr.length == 1){ 39 | ret = parseFloat(arr[0]); 40 | }else if(arr.length == 2){ 41 | ret = (parseInt(arr[0])*60)+parseFloat(arr[1]); 42 | }else if(arr.length == 3){ 43 | ret = (parseInt(arr[0])*60*60)+(parseInt(arr[1])*60)+parseFloat(arr[2]); 44 | } 45 | return ret; 46 | } 47 | public static function unixToDate(_val:uint):String { 48 | var d:Date = new Date(_val*1000); 49 | var dtf:DateTimeFormatter = new DateTimeFormatter("en-UK"); 50 | dtf.setDateTimePattern("E d MMM y, HH:mm"); 51 | return dtf.format(d) 52 | } 53 | } 54 | } -------------------------------------------------------------------------------- /example/src/views/ExampleSelector.as: -------------------------------------------------------------------------------- 1 | package views { 2 | import flash.system.Capabilities; 3 | 4 | import starling.display.Sprite; 5 | 6 | public class ExampleSelector extends Sprite { 7 | public var universalButton:SimpleButton = new SimpleButton("Universal Player",160); 8 | public var basicButton:SimpleButton = new SimpleButton("Basic",160); 9 | public var advancedButton:SimpleButton = new SimpleButton("Advanced",160); 10 | public var captureButton:SimpleButton = new SimpleButton("Capture Desktop",160); 11 | public function ExampleSelector() { 12 | super(); 13 | 14 | universalButton.y = 0; 15 | basicButton.y = 50; 16 | advancedButton.y = 100; 17 | captureButton.y = 150; 18 | 19 | addChild(universalButton); 20 | addChild(basicButton); 21 | addChild(advancedButton); 22 | //if(Capabilities.os.toLowerCase().lastIndexOf("windows") > -1) 23 | addChild(captureButton); 24 | 25 | } 26 | } 27 | } -------------------------------------------------------------------------------- /example/src/views/MenuButton.as: -------------------------------------------------------------------------------- 1 | package views { 2 | import starling.display.MeshBatch; 3 | import starling.display.Quad; 4 | import starling.display.Sprite; 5 | 6 | public class MenuButton extends Sprite { 7 | public function MenuButton() { 8 | super(); 9 | var qb:MeshBatch = new MeshBatch(); 10 | var bg:Quad = new Quad(30,25,0x121314); 11 | var one:Quad = new Quad(30,5,0xD8D8D8); 12 | var two:Quad = new Quad(30,5,0xD8D8D8); 13 | var three:Quad = new Quad(30,5,0xD8D8D8); 14 | 15 | two.y = 10; 16 | three.y = 20; 17 | 18 | qb.addMesh(bg); 19 | qb.addMesh(one); 20 | qb.addMesh(two); 21 | qb.addMesh(three); 22 | this.addChild(qb); 23 | } 24 | } 25 | } -------------------------------------------------------------------------------- /example/src/views/SimpleButton.as: -------------------------------------------------------------------------------- 1 | package views { 2 | import starling.display.Quad; 3 | import starling.display.Sprite; 4 | import starling.text.TextField; 5 | import starling.utils.Align; 6 | 7 | public class SimpleButton extends Sprite { 8 | private var bg:Quad; 9 | private var lbl:TextField; 10 | public function SimpleButton(text:String,w:int=80) { 11 | super(); 12 | bg = new Quad(w,38,0x101010); 13 | 14 | lbl = new TextField(w,32,text); 15 | lbl.format.setTo("Fira Sans Semi-Bold 13", 13, 0xD8D8D8,Align.CENTER); 16 | lbl.x = 0; 17 | lbl.y = 4; 18 | lbl.batchable = true; 19 | lbl.touchable = false; 20 | 21 | this.addChild(bg); 22 | this.addChild(lbl); 23 | } 24 | } 25 | } -------------------------------------------------------------------------------- /example/src/views/client/FiltersPanel.as: -------------------------------------------------------------------------------- 1 | package views.client { 2 | import com.tuarua.ffmpeg.constants.X264Preset; 3 | 4 | import events.FormEvent; 5 | 6 | import starling.display.Sprite; 7 | import starling.text.TextField; 8 | import starling.utils.Align; 9 | 10 | import views.forms.DropDown; 11 | 12 | public class FiltersPanel extends Sprite { 13 | private var denoiseDrop:DropDown; 14 | private var selectedDenoise:Array; 15 | private var _denoiseDataList:Vector. = new Vector.; 16 | private var denoiseLbl:TextField = new TextField(120,32,"Denoise:"); 17 | public function FiltersPanel() { 18 | super(); 19 | 20 | denoiseLbl.format.setTo("Fira Sans Semi-Bold 13", 13, 0xD8D8D8,Align.LEFT,Align.TOP); 21 | denoiseLbl.touchable = false; 22 | denoiseLbl.batchable = true; 23 | 24 | denoiseLbl.x = 42; 25 | denoiseLbl.y = 40; 26 | 27 | _denoiseDataList.push({value:new Array(),label:"None"}); 28 | _denoiseDataList.push({value:new Array(2,1,2,3),label:"Weak"}); 29 | _denoiseDataList.push({value:new Array(3,2,2,3),label:"Medium"}); 30 | _denoiseDataList.push({value:new Array(7,7,5,5),label:"Strong"}); 31 | 32 | denoiseDrop = new DropDown(120,_denoiseDataList); 33 | denoiseDrop.addEventListener(FormEvent.CHANGE,onFormChange); 34 | denoiseDrop.x = 120; 35 | denoiseDrop.y = 37; 36 | 37 | addChild(denoiseDrop); 38 | addChild(denoiseLbl); 39 | } 40 | private function onFormChange(event:FormEvent):void { 41 | var test:int; 42 | switch(event.currentTarget){ 43 | case denoiseDrop: 44 | selectedDenoise = event.params.value; 45 | break; 46 | } 47 | } 48 | public function getDenoise():Array { 49 | return selectedDenoise; 50 | } 51 | 52 | public function freeze(value:Boolean=true):void { 53 | } 54 | 55 | } 56 | } -------------------------------------------------------------------------------- /example/src/views/client/MenuItem.as: -------------------------------------------------------------------------------- 1 | package views.client { 2 | import events.InteractionEvent; 3 | 4 | import starling.display.Quad; 5 | import starling.display.Sprite; 6 | import starling.events.Touch; 7 | import starling.events.TouchEvent; 8 | import starling.events.TouchPhase; 9 | import starling.text.TextField; 10 | 11 | public class MenuItem extends Sprite { 12 | private var bg:Quad; 13 | private var bgOff:Quad; 14 | private var w:int = 120; 15 | private var isSelected:Boolean; 16 | 17 | private var lbl:TextField; 18 | private var type:int; 19 | public function MenuItem(_lbl:String,_type:int,_isSelected:Boolean=false) { 20 | super(); 21 | type = _type; 22 | isSelected = _isSelected; 23 | bg = new Quad(w,27,0x0D1012); 24 | bgOff = new Quad(w,28,0x666666); 25 | bg.alpha = 0.92; 26 | bgOff.alpha = 0.25; 27 | bgOff.visible = !isSelected; 28 | 29 | lbl = new TextField(w,32,_lbl); 30 | lbl.format.setTo("Fira Sans Semi-Bold 13", 13, 0xD8D8D8); 31 | lbl.x = 0; 32 | lbl.batchable = true; 33 | lbl.touchable = false; 34 | bgOff.useHandCursor = false; 35 | bgOff.addEventListener(TouchEvent.TOUCH,onClick); 36 | addChild(bg); 37 | addChild(bgOff); 38 | addChild(lbl); 39 | } 40 | 41 | protected function onClick(event:TouchEvent):void { 42 | var touch:Touch = event.getTouch(bgOff); 43 | if(touch && touch.phase == TouchPhase.ENDED) 44 | this.dispatchEvent(new InteractionEvent(InteractionEvent.ON_MENU_ITEM_MENU,{type:type})); 45 | } 46 | public function setSelected(_b:Boolean):void { 47 | isSelected = _b; 48 | bgOff.visible = !isSelected; 49 | } 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /example/src/views/forms/CheckBox.as: -------------------------------------------------------------------------------- 1 | package views.forms { 2 | import events.FormEvent; 3 | 4 | import starling.display.BlendMode; 5 | import starling.display.Image; 6 | import starling.display.Sprite; 7 | import starling.events.Touch; 8 | import starling.events.TouchEvent; 9 | import starling.events.TouchPhase; 10 | import starling.textures.Texture; 11 | 12 | public class CheckBox extends Sprite { 13 | private var _selected:Boolean = false; 14 | private var txtreOn:Texture = Assets.getAtlas().getTexture("checkbox-on"); 15 | private var txtreOff:Texture = Assets.getAtlas().getTexture("checkbox-off"); 16 | private var img:Image = new Image(txtreOff); 17 | private var isEnabled:Boolean = true; 18 | private var _id:String; 19 | public function CheckBox(_selected:Boolean=false) { 20 | super(); 21 | selected = _selected; 22 | img.x = 13; 23 | img.y = 13; 24 | img.addEventListener(TouchEvent.TOUCH,onClick); 25 | img.blendMode = BlendMode.NONE; 26 | render(); 27 | addChild(img); 28 | } 29 | 30 | private function onClick(event:TouchEvent):void { 31 | var touch:Touch = event.getTouch(img); 32 | if(touch && touch.phase == TouchPhase.ENDED && isEnabled){ 33 | _selected = !_selected ; 34 | render(); 35 | this.dispatchEvent(new FormEvent(FormEvent.CHANGE,{value:_selected})); 36 | } 37 | } 38 | private function render():void { 39 | if(selected) 40 | img.texture = txtreOn; 41 | else 42 | img.texture = txtreOff; 43 | } 44 | 45 | public function enable(_b:Boolean):void { 46 | isEnabled = _b; 47 | img.alpha = (_b) ? 1 : 0.25; 48 | } 49 | 50 | public function get selected():Boolean { 51 | return _selected; 52 | } 53 | 54 | public function set selected(value:Boolean):void { 55 | _selected = value; 56 | } 57 | 58 | public function get id():String { 59 | return _id; 60 | } 61 | 62 | public function set id(value:String):void { 63 | _id = value; 64 | } 65 | 66 | 67 | } 68 | } -------------------------------------------------------------------------------- /example/src/views/forms/FormGroup.as: -------------------------------------------------------------------------------- 1 | package views.forms { 2 | import starling.display.Quad; 3 | import starling.display.Sprite; 4 | import starling.display.MeshBatch; 5 | 6 | public class FormGroup extends Sprite { 7 | private var w:int; 8 | private var labelW:int; 9 | private var h:int; 10 | private var bg:MeshBatch = new MeshBatch(); 11 | public function FormGroup(_w:int,_labelW:int,_h:int) { 12 | super(); 13 | w = _w; 14 | labelW = _labelW; 15 | h = _h; 16 | bg.touchable = false; 17 | bg.addMesh(new Quad(10,1,0x3C3C3C)); 18 | var lineLeft:Quad = new Quad(1,h-1,0x3C3C3C); 19 | var lineRight:Quad = new Quad(1,h-1,0x3C3C3C); 20 | var lineBot:Quad = new Quad(w,1,0x3C3C3C); 21 | var lineTop:Quad = new Quad(w-10-labelW,1,0x3C3C3C); 22 | lineTop.x = 10+labelW; 23 | lineRight.x = w-1; 24 | lineBot.y = h- 1; 25 | bg.addMesh(lineTop); 26 | bg.addMesh(lineRight); 27 | bg.addMesh(lineBot); 28 | bg.addMesh(lineLeft); 29 | addChild(bg); 30 | 31 | } 32 | } 33 | } -------------------------------------------------------------------------------- /example/src/views/forms/RadioOption.as: -------------------------------------------------------------------------------- 1 | package views.forms { 2 | import events.FormEvent; 3 | 4 | import starling.display.Image; 5 | import starling.display.Sprite; 6 | import starling.events.Touch; 7 | import starling.events.TouchEvent; 8 | import starling.events.TouchPhase; 9 | import starling.textures.Texture; 10 | 11 | public class RadioOption extends Sprite { 12 | private var onTxture:Texture = Assets.getAtlas().getTexture("radio-selected"); 13 | private var offTxture:Texture = Assets.getAtlas().getTexture("radio"); 14 | private var img:Image = new Image(offTxture); 15 | private var _id:int; 16 | private var isEnabled:Boolean; 17 | public function RadioOption(id:int) { 18 | super(); 19 | _id = id; 20 | img.addEventListener(TouchEvent.TOUCH,onTouch); 21 | addChild(img); 22 | } 23 | protected function onTouch(event:TouchEvent):void { 24 | var touch:Touch = event.getTouch(img, TouchPhase.ENDED); 25 | if(touch && touch.phase == TouchPhase.ENDED && isEnabled){ 26 | img.texture = onTxture; 27 | this.dispatchEvent(new FormEvent(FormEvent.CHANGE,{value:_id})); 28 | } 29 | } 30 | public function toggle(value:Boolean):void { 31 | img.texture = value ? onTxture : offTxture; 32 | } 33 | public function enable(value:Boolean):void { 34 | isEnabled = value; 35 | this.alpha = value ? 1.0 : 0.25; 36 | } 37 | } 38 | } -------------------------------------------------------------------------------- /example/src/views/loader/CircularLoader.as: -------------------------------------------------------------------------------- 1 | package views.loader { 2 | import starling.display.Image; 3 | import starling.display.Sprite; 4 | import starling.text.TextField; 5 | import starling.utils.Align; 6 | import starling.utils.deg2rad; 7 | 8 | public class CircularLoader extends Sprite { 9 | private var lbl:TextField; 10 | private var imgBG:Image; 11 | private var imgFill:RadialImage; 12 | public function CircularLoader() { 13 | super(); 14 | imgBG = new Image(Assets.getAtlas().getTexture("semi-circle-bg2")); 15 | imgFill = new RadialImage(Assets.getAtlas().getTexture("semi-circle-full")); 16 | 17 | lbl = new TextField(90,32,""); 18 | lbl.format.setTo("Fira Sans Semi-Bold 13",13); 19 | lbl.format.horizontalAlign = Align.CENTER; 20 | lbl.format.color = 0xD8D8D8; 21 | 22 | lbl.batchable = false; 23 | lbl.touchable = false; 24 | lbl.y = 28; 25 | imgBG.touchable = false; 26 | imgBG.y = 0; 27 | imgBG.touchable = imgFill.touchable = false; 28 | addChild(imgBG); 29 | imgFill.scaleX = imgFill.scaleY = -1; 30 | imgFill.x = 90; 31 | imgFill.y = 90; 32 | addChild(imgFill); 33 | 34 | 35 | addChild(lbl); 36 | } 37 | public function reset():void { 38 | imgBG.visible = true; 39 | imgFill.angle = 0; 40 | lbl.text = "0%"; 41 | } 42 | 43 | public function update(value:Number):void {//percent eg 0.01 44 | lbl.text = (value == 0.0 ) ? "0%" : (value*100).toPrecision(3)+"%"; 45 | imgFill.angle = deg2rad(360*value); 46 | } 47 | 48 | } 49 | } -------------------------------------------------------------------------------- /example/src/views/loader/RadialImage.as: -------------------------------------------------------------------------------- 1 | package views.loader { 2 | import starling.textures.Texture; 3 | /** 4 | * Картинка с радиальным заполнением 5 | * @author rzer 6 | */ 7 | public class RadialImage extends RadialQuad { 8 | public function RadialImage(texture:Texture) { 9 | super(texture.width, texture.height); 10 | this.texture = texture; 11 | } 12 | } 13 | 14 | } 15 | -------------------------------------------------------------------------------- /images/bg_hr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tuarua/AVANE/2091da204ddaac4a5d2060262102dee48bd2cdd9/images/bg_hr.png -------------------------------------------------------------------------------- /images/blacktocat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tuarua/AVANE/2091da204ddaac4a5d2060262102dee48bd2cdd9/images/blacktocat.png -------------------------------------------------------------------------------- /images/icon_download.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tuarua/AVANE/2091da204ddaac4a5d2060262102dee48bd2cdd9/images/icon_download.png -------------------------------------------------------------------------------- /images/sprite_download.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tuarua/AVANE/2091da204ddaac4a5d2060262102dee48bd2cdd9/images/sprite_download.png -------------------------------------------------------------------------------- /ios_example/.gitignore: -------------------------------------------------------------------------------- 1 | # Created by https://www.gitignore.io/api/flashbuilder 2 | 3 | ### FlashBuilder ### 4 | # Build and Release Folders 5 | bin/ 6 | bin-release/ 7 | bin-release-temp/ 8 | bin-debug/ 9 | 10 | # Other files and folders 11 | .settings/ 12 | 13 | # textures 14 | .tps 15 | -------------------------------------------------------------------------------- /ios_example/.idea/.name: -------------------------------------------------------------------------------- 1 | AVANE-iosExample -------------------------------------------------------------------------------- /ios_example/.idea/flexCompiler.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /ios_example/.idea/libraries/starling.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /ios_example/.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /ios_example/.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /ios_example/.project: -------------------------------------------------------------------------------- 1 | 2 | 3 | AVANE-iosExample 4 | 5 | 6 | 7 | 8 | 9 | com.adobe.flexbuilder.project.flexbuilder 10 | 11 | 12 | 13 | 14 | com.adobe.flexbuilder.project.apollobuilder 15 | 16 | 17 | 18 | 19 | 20 | com.adobe.flexide.project.multiplatform.multiplatformasnature 21 | com.adobe.flexide.project.multiplatform.multiplatformnature 22 | com.adobe.flexbuilder.project.apollonature 23 | com.adobe.flexbuilder.project.actionscriptnature 24 | 25 | 26 | -------------------------------------------------------------------------------- /ios_example/fonts/Roboto-Medium.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tuarua/AVANE/2091da204ddaac4a5d2060262102dee48bd2cdd9/ios_example/fonts/Roboto-Medium.ttf -------------------------------------------------------------------------------- /ios_example/sprite-sheet/atlas.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tuarua/AVANE/2091da204ddaac4a5d2060262102dee48bd2cdd9/ios_example/sprite-sheet/atlas.png -------------------------------------------------------------------------------- /ios_example/sprite-sheet/atlas.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /ios_example/src/Assets.as: -------------------------------------------------------------------------------- 1 | package { 2 | import flash.display.Bitmap; 3 | import flash.utils.Dictionary; 4 | 5 | import starling.textures.Texture; 6 | import starling.textures.TextureAtlas; 7 | 8 | public class Assets { 9 | 10 | private static var textures:Dictionary = new Dictionary(); 11 | private static var textureAtlas:TextureAtlas; 12 | 13 | [Embed(source="../sprite-sheet/atlas.png")] 14 | public static const AtlasTexture:Class; 15 | 16 | [Embed(source="../sprite-sheet/atlas.xml", mimeType="application/octet-stream")] 17 | public static const AtlasXml:Class; 18 | 19 | public static function getAtlas():TextureAtlas { 20 | if (textureAtlas == null) { 21 | var texture:Texture = getTexture("AtlasTexture"); 22 | var xml:XML = XML(new AtlasXml()); 23 | textureAtlas = new TextureAtlas(texture, xml); 24 | } 25 | return textureAtlas; 26 | } 27 | 28 | public static function getTexture(name:String,mm:Boolean=false):Texture { 29 | if (textures[name] == undefined) { 30 | var bitmap:Bitmap = new Assets[name](); //don't understand this 31 | textures[name] = Texture.fromBitmap(bitmap,mm); 32 | } 33 | return textures[name]; 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /ios_example/src/Main.as: -------------------------------------------------------------------------------- 1 | package { 2 | 3 | import flash.display.Sprite; 4 | import flash.display.StageAlign; 5 | import flash.display.StageScaleMode; 6 | import flash.events.Event; 7 | import flash.geom.Rectangle; 8 | 9 | import starling.core.Starling; 10 | import starling.events.Event; 11 | import starling.events.ResizeEvent; 12 | 13 | [SWF(width = "960", height = "640", frameRate = "60", backgroundColor = "#121314")] 14 | public class Main extends Sprite { 15 | // Don't skip the "embedAsCFF"-part! 16 | [Embed(source="../fonts/Roboto-Medium.ttf", embedAsCFF="false", fontFamily="Roboto-Medium")] 17 | private static const Roboto:Class; 18 | 19 | public var mStarling:Starling; 20 | 21 | public function Main() { 22 | super(); 23 | stage.align = StageAlign.TOP_LEFT; 24 | stage.scaleMode = StageScaleMode.NO_SCALE; 25 | Starling.multitouchEnabled = true; // useful on mobile devices 26 | 27 | 28 | trace(stage.fullScreenWidth); 29 | trace(stage.fullScreenHeight); 30 | 31 | var viewPort:Rectangle = new Rectangle(0,0,stage.fullScreenWidth,stage.fullScreenHeight); 32 | 33 | mStarling = new Starling(StarlingRoot, stage, viewPort,null,"auto","auto"); 34 | mStarling.stage.stageWidth = stage.fullScreenWidth; 35 | mStarling.stage.stageHeight = stage.fullScreenHeight; 36 | mStarling.simulateMultitouch = false; 37 | mStarling.showStatsAt("right","bottom"); 38 | mStarling.enableErrorChecking = false; 39 | mStarling.antiAliasing = 16; 40 | mStarling.skipUnchangedFrames = true; 41 | 42 | mStarling.addEventListener(starling.events.Event.ROOT_CREATED, 43 | function onRootCreated(event:Object, app:StarlingRoot):void { 44 | mStarling.removeEventListener(starling.events.Event.ROOT_CREATED, onRootCreated); 45 | app.start(); 46 | mStarling.start(); 47 | stage.addEventListener(ResizeEvent.RESIZE, onResize); 48 | }); 49 | } 50 | private function onResize(event:flash.events.Event):void { 51 | trace(event); 52 | } 53 | 54 | } 55 | } -------------------------------------------------------------------------------- /ios_example/src/libs/starling.swc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tuarua/AVANE/2091da204ddaac4a5d2060262102dee48bd2cdd9/ios_example/src/libs/starling.swc -------------------------------------------------------------------------------- /ios_example/src/utils/TextUtils.as: -------------------------------------------------------------------------------- 1 | package utils { 2 | public class TextUtils { 3 | public static function cleanChars(_s:String):String{ 4 | var pattern1:RegExp = new RegExp(String.fromCharCode(956), "g"); 5 | var ret:String = _s; 6 | if(ret){ 7 | } 8 | return ret; 9 | } 10 | public static function trim(s:String):String { 11 | return s ? s.replace(/^\s+|\s+$/gs, '') : ""; 12 | } 13 | private static const byteSizes:Array = ["B", "KB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB"]; 14 | public static function bytesToString(bytes:Number):String { 15 | var index:uint = Math.floor(Math.log(bytes)/Math.log(1024)); 16 | return (bytes/Math.pow(1024, index)).toFixed(2) + " " +byteSizes[index]; 17 | } 18 | } 19 | } -------------------------------------------------------------------------------- /ios_example/src/utils/TimeUtils.as: -------------------------------------------------------------------------------- 1 | package utils { 2 | import flash.globalization.DateTimeFormatter; 3 | 4 | public class TimeUtils { 5 | public static function secsToTimeCode(n:Number):String { 6 | var finStr:String = ""; 7 | var h:int = Math.floor((n/3600)); 8 | var m:int = Math.floor((n-(h*3600))/60); 9 | var s:int = Math.floor(n-((h*3600)+(m*60))); 10 | var hStr:String = h.toString(); 11 | var mStr:String = m.toString(); 12 | var sStr:String = s.toString(); 13 | if(h < 10) hStr = hStr; 14 | if(m < 10) mStr = "0"+mStr; 15 | if(s < 10) sStr = "0"+sStr; 16 | if(h > 0) finStr = finStr+hStr+":"; 17 | finStr = finStr+mStr+":"+sStr; 18 | return finStr; 19 | } 20 | public static function secsToFriendly(n:int):String { 21 | var d:int = Math.floor((n/3600)/24); 22 | var h:int = Math.floor((n/3600)); 23 | var m:int = Math.floor((n-(h*3600))/60); 24 | var ret:String; 25 | if(d > 0) 26 | ret = d+"d "+h+"h "; 27 | else if(h > 0) 28 | ret = h+"h "+m+"m "; 29 | else if(m > 0) 30 | ret = m+"m"; 31 | else 32 | ret = "< 1m"; 33 | return ret; 34 | } 35 | public static function timeCodeToSecs(s:String):Number{//00:00:05.53 36 | var arr:Array = s.split(":"); 37 | var ret:Number = 0; 38 | if(arr.length == 1){ 39 | ret = parseFloat(arr[0]); 40 | }else if(arr.length == 2){ 41 | ret = (parseInt(arr[0])*60)+parseFloat(arr[1]); 42 | }else if(arr.length == 3){ 43 | ret = (parseInt(arr[0])*60*60)+(parseInt(arr[1])*60)+parseFloat(arr[2]); 44 | } 45 | return ret; 46 | } 47 | public static function unixToDate(_val:uint):String { 48 | var d:Date = new Date(_val*1000); 49 | var dtf:DateTimeFormatter = new DateTimeFormatter("en-UK"); 50 | dtf.setDateTimePattern("E d MMM y, HH:mm"); 51 | return dtf.format(d) 52 | } 53 | } 54 | } -------------------------------------------------------------------------------- /ios_example/src/views/loader/CircularLoader.as: -------------------------------------------------------------------------------- 1 | package views.loader { 2 | import starling.display.Image; 3 | import starling.display.Sprite; 4 | import starling.text.TextField; 5 | import starling.utils.Align; 6 | import starling.utils.deg2rad; 7 | 8 | public class CircularLoader extends Sprite { 9 | private var lbl:TextField; 10 | private var imgBG:Image; 11 | private var imgFill:RadialImage; 12 | public function CircularLoader() { 13 | super(); 14 | imgBG = new Image(Assets.getAtlas().getTexture("semi-circle-bg2")); 15 | imgFill = new RadialImage(Assets.getAtlas().getTexture("semi-circle-full")); 16 | 17 | lbl = new TextField(320,80,""); 18 | lbl.format.setTo("Roboto-Medium",48); 19 | lbl.format.horizontalAlign = Align.CENTER; 20 | lbl.format.color = 0xFFFFFF; 21 | 22 | lbl.batchable = false; 23 | lbl.touchable = false; 24 | lbl.y = 120; 25 | imgBG.touchable = false; 26 | imgBG.y = 0; 27 | imgBG.touchable = imgFill.touchable = false; 28 | addChild(imgBG); 29 | imgFill.scaleX = imgFill.scaleY = -1; 30 | imgFill.x = 320; 31 | imgFill.y = 320; 32 | addChild(imgFill); 33 | 34 | 35 | addChild(lbl); 36 | } 37 | public function reset():void { 38 | imgBG.visible = true; 39 | imgFill.angle = 0; 40 | lbl.text = "0%"; 41 | } 42 | 43 | public function update(value:Number):void {//percent eg 0.01 44 | lbl.text = (value == 0.0 ) ? "0%" : (value*100).toPrecision(3)+"%"; 45 | imgFill.angle = deg2rad(360*value); 46 | } 47 | 48 | } 49 | } -------------------------------------------------------------------------------- /ios_example/src/views/loader/RadialImage.as: -------------------------------------------------------------------------------- 1 | package views.loader { 2 | import starling.textures.Texture; 3 | /** 4 | * Картинка с радиальным заполнением 5 | * @author rzer 6 | */ 7 | public class RadialImage extends RadialQuad { 8 | public function RadialImage(texture:Texture) { 9 | super(texture.width, texture.height); 10 | this.texture = texture; 11 | } 12 | } 13 | 14 | } 15 | -------------------------------------------------------------------------------- /javascripts/main.js: -------------------------------------------------------------------------------- 1 | console.log('This would be the main JS file.'); 2 | -------------------------------------------------------------------------------- /licenses/bzip2.txt: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------- 3 | 4 | This program, "bzip2", the associated library "libbzip2", and all 5 | documentation, are copyright (C) 1996-2010 Julian R Seward. All 6 | rights reserved. 7 | 8 | Redistribution and use in source and binary forms, with or without 9 | modification, are permitted provided that the following conditions 10 | are met: 11 | 12 | 1. Redistributions of source code must retain the above copyright 13 | notice, this list of conditions and the following disclaimer. 14 | 15 | 2. The origin of this software must not be misrepresented; you must 16 | not claim that you wrote the original software. If you use this 17 | software in a product, an acknowledgment in the product 18 | documentation would be appreciated but is not required. 19 | 20 | 3. Altered source versions must be plainly marked as such, and must 21 | not be misrepresented as being the original software. 22 | 23 | 4. The name of the author may not be used to endorse or promote 24 | products derived from this software without specific prior written 25 | permission. 26 | 27 | THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS 28 | OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 29 | WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 30 | ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY 31 | DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 32 | DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE 33 | GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 34 | INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 35 | WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 36 | NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 37 | SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 38 | 39 | Julian Seward, jseward@bzip.org 40 | bzip2/libbzip2 version 1.0.6 of 6 September 2010 41 | 42 | -------------------------------------------------------------------------- 43 | -------------------------------------------------------------------------------- /licenses/fontconfig.txt: -------------------------------------------------------------------------------- 1 | fontconfig/COPYING 2 | 3 | Copyright © 2000,2001,2002,2003,2004,2006,2007 Keith Packard 4 | Copyright © 2005 Patrick Lam 5 | Copyright © 2009 Roozbeh Pournader 6 | Copyright © 2008,2009 Red Hat, Inc. 7 | Copyright © 2008 Danilo Šegan 8 | Copyright © 2012 Google, Inc. 9 | 10 | 11 | Permission to use, copy, modify, distribute, and sell this software and its 12 | documentation for any purpose is hereby granted without fee, provided that 13 | the above copyright notice appear in all copies and that both that 14 | copyright notice and this permission notice appear in supporting 15 | documentation, and that the name of the author(s) not be used in 16 | advertising or publicity pertaining to distribution of the software without 17 | specific, written prior permission. The authors make no 18 | representations about the suitability of this software for any purpose. It 19 | is provided "as is" without express or implied warranty. 20 | 21 | THE AUTHOR(S) DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, 22 | INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO 23 | EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY SPECIAL, INDIRECT OR 24 | CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, 25 | DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER 26 | TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR 27 | PERFORMANCE OF THIS SOFTWARE. 28 | 29 | -------------------------------------------------------------------------------- /licenses/freetype2.txt: -------------------------------------------------------------------------------- 1 | 2 | The FreeType 2 font engine is copyrighted work and cannot be used 3 | legally without a software license. In order to make this project 4 | usable to a vast majority of developers, we distribute it under two 5 | mutually exclusive open-source licenses. 6 | 7 | This means that *you* must choose *one* of the two licenses described 8 | below, then obey all its terms and conditions when using FreeType 2 in 9 | any of your projects or products. 10 | 11 | - The FreeType License, found in the file `FTL.TXT', which is similar 12 | to the original BSD license *with* an advertising clause that forces 13 | you to explicitly cite the FreeType project in your product's 14 | documentation. All details are in the license file. This license 15 | is suited to products which don't use the GNU General Public 16 | License. 17 | 18 | Note that this license is compatible to the GNU General Public 19 | License version 3, but not version 2. 20 | 21 | - The GNU General Public License version 2, found in `GPLv2.TXT' (any 22 | later version can be used also), for programs which already use the 23 | GPL. Note that the FTL is incompatible with GPLv2 due to its 24 | advertisement clause. 25 | 26 | The contributed BDF and PCF drivers come with a license similar to that 27 | of the X Window System. It is compatible to the above two licenses (see 28 | file src/bdf/README and src/pcf/README). The same holds for the files 29 | `fthash.c' and `fthash.h'; their code was part of the BDF driver in 30 | earlier FreeType versions. 31 | 32 | The gzip module uses the zlib license (see src/gzip/zlib.h) which too is 33 | compatible to the above two licenses. 34 | 35 | The MD5 checksum support (only used for debugging in development builds) 36 | is in the public domain. 37 | 38 | 39 | --- end of LICENSE.TXT --- 40 | -------------------------------------------------------------------------------- /licenses/harfbuzz.txt: -------------------------------------------------------------------------------- 1 | HarfBuzz is licensed under the so-called "Old MIT" license. Details follow. 2 | For parts of HarfBuzz that are licensed under different licenses see individual 3 | files names COPYING in subdirectories where applicable. 4 | 5 | Copyright © 2010,2011,2012 Google, Inc. 6 | Copyright © 2012 Mozilla Foundation 7 | Copyright © 2011 Codethink Limited 8 | Copyright © 2008,2010 Nokia Corporation and/or its subsidiary(-ies) 9 | Copyright © 2009 Keith Stribley 10 | Copyright © 2009 Martin Hosken and SIL International 11 | Copyright © 2007 Chris Wilson 12 | Copyright © 2006 Behdad Esfahbod 13 | Copyright © 2005 David Turner 14 | Copyright © 2004,2007,2008,2009,2010 Red Hat, Inc. 15 | Copyright © 1998-2004 David Turner and Werner Lemberg 16 | 17 | For full copyright notices consult the individual files in the package. 18 | 19 | 20 | Permission is hereby granted, without written agreement and without 21 | license or royalty fees, to use, copy, modify, and distribute this 22 | software and its documentation for any purpose, provided that the 23 | above copyright notice and the following two paragraphs appear in 24 | all copies of this software. 25 | 26 | IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR 27 | DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES 28 | ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN 29 | IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH 30 | DAMAGE. 31 | 32 | THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, 33 | BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND 34 | FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS 35 | ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO 36 | PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. 37 | -------------------------------------------------------------------------------- /licenses/libass.txt: -------------------------------------------------------------------------------- 1 | Permission to use, copy, modify, and/or distribute this software for any 2 | purpose with or without fee is hereby granted, provided that the above 3 | copyright notice and this permission notice appear in all copies. 4 | 5 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 6 | WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 7 | MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 8 | ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 9 | WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 10 | ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 11 | OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 12 | -------------------------------------------------------------------------------- /licenses/libilbc.txt: -------------------------------------------------------------------------------- 1 | Copyright (c) 2011, The WebRTC project authors. All rights reserved. 2 | 3 | Redistribution and use in source and binary forms, with or without 4 | modification, are permitted provided that the following conditions are 5 | met: 6 | 7 | * Redistributions of source code must retain the above copyright 8 | notice, this list of conditions and the following disclaimer. 9 | 10 | * Redistributions in binary form must reproduce the above copyright 11 | notice, this list of conditions and the following disclaimer in 12 | the documentation and/or other materials provided with the 13 | distribution. 14 | 15 | * Neither the name of Google nor the names of its contributors may 16 | be used to endorse or promote products derived from this software 17 | without specific prior written permission. 18 | 19 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 20 | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 21 | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 22 | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 23 | HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 24 | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 25 | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 26 | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 27 | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 28 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 29 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30 | -------------------------------------------------------------------------------- /licenses/libmfx.txt: -------------------------------------------------------------------------------- 1 | Copyright (C) 2012 Intel Corporation. All rights reserved. 2 | 3 | Redistribution and use in source and binary forms, with or without 4 | modification, are permitted provided that the following conditions are met: 5 | - Redistributions of source code must retain the above copyright notice, 6 | this list of conditions and the following disclaimer. 7 | - Redistributions in binary form must reproduce the above copyright notice, 8 | this list of conditions and the following disclaimer in the documentation 9 | and/or other materials provided with the distribution. 10 | - Neither the name of Intel Corporation nor the names of its contributors 11 | may be used to endorse or promote products derived from this software 12 | without specific prior written permission. 13 | 14 | THIS SOFTWARE IS PROVIDED BY INTEL CORPORATION "AS IS" AND ANY EXPRESS OR 15 | IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 16 | OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 17 | IN NO EVENT SHALL INTEL CORPORATION BE LIABLE FOR ANY DIRECT, INDIRECT, 18 | INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 19 | NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 20 | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 21 | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 22 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 23 | THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 24 | 25 | -------------------------------------------------------------------------------- /licenses/libmodplug.txt: -------------------------------------------------------------------------------- 1 | ModPlug-XMMS and libmodplug are now in the public domain. -------------------------------------------------------------------------------- /licenses/libsdl.txt: -------------------------------------------------------------------------------- 1 | 2 | Simple DirectMedia Layer 3 | Copyright (C) 1997-2016 Sam Lantinga 4 | 5 | This software is provided 'as-is', without any express or implied 6 | warranty. In no event will the authors be held liable for any damages 7 | arising from the use of this software. 8 | 9 | Permission is granted to anyone to use this software for any purpose, 10 | including commercial applications, and to alter it and redistribute it 11 | freely, subject to the following restrictions: 12 | 13 | 1. The origin of this software must not be misrepresented; you must not 14 | claim that you wrote the original software. If you use this software 15 | in a product, an acknowledgment in the product documentation would be 16 | appreciated but is not required. 17 | 2. Altered source versions must be plainly marked as such, and must not be 18 | misrepresented as being the original software. 19 | 3. This notice may not be removed or altered from any source distribution. 20 | 21 | -------------------------------------------------------------------------------- /licenses/libvpx.txt: -------------------------------------------------------------------------------- 1 | Copyright (c) 2010, The WebM Project authors. All rights reserved. 2 | 3 | Redistribution and use in source and binary forms, with or without 4 | modification, are permitted provided that the following conditions are 5 | met: 6 | 7 | * Redistributions of source code must retain the above copyright 8 | notice, this list of conditions and the following disclaimer. 9 | 10 | * Redistributions in binary form must reproduce the above copyright 11 | notice, this list of conditions and the following disclaimer in 12 | the documentation and/or other materials provided with the 13 | distribution. 14 | 15 | * Neither the name of Google, nor the WebM Project, nor the names 16 | of its contributors may be used to endorse or promote products 17 | derived from this software without specific prior written 18 | permission. 19 | 20 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 21 | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 22 | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 23 | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 24 | HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 25 | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 26 | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 27 | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 28 | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 29 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 30 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 31 | 32 | -------------------------------------------------------------------------------- /licenses/libxml2.txt: -------------------------------------------------------------------------------- 1 | Except where otherwise noted in the source code (e.g. the files hash.c, 2 | list.c and the trio files, which are covered by a similar licence but 3 | with different Copyright notices) all the files are: 4 | 5 | Copyright (C) 1998-2012 Daniel Veillard. All Rights Reserved. 6 | 7 | Permission is hereby granted, free of charge, to any person obtaining a copy 8 | of this software and associated documentation files (the "Software"), to deal 9 | in the Software without restriction, including without limitation the rights 10 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 11 | copies of the Software, and to permit persons to whom the Software is fur- 12 | nished to do so, subject to the following conditions: 13 | 14 | The above copyright notice and this permission notice shall be included in 15 | all copies or substantial portions of the Software. 16 | 17 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 18 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FIT- 19 | NESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 20 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 21 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 22 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 23 | THE SOFTWARE. 24 | -------------------------------------------------------------------------------- /licenses/mp3lame.txt: -------------------------------------------------------------------------------- 1 | Can I use LAME in my commercial program? 2 | 3 | Yes, you can, under the restrictions of the LGPL. The easiest 4 | way to do this is to: 5 | 6 | 1. Link to LAME as separate library (libmp3lame.a on unix or 7 | lame_enc.dll or libmp3lame.dll on windows) 8 | 9 | 2. Fully acknowledge that you are using LAME, and give a link 10 | to our web site, www.mp3dev.org 11 | 12 | 3. If you make modifications to LAME, you *must* release these 13 | modifications back to the LAME project, under the LGPL. 14 | -------------------------------------------------------------------------------- /licenses/ogg.txt: -------------------------------------------------------------------------------- 1 | Copyright (c) 2002, Xiph.org Foundation 2 | 3 | Redistribution and use in source and binary forms, with or without 4 | modification, are permitted provided that the following conditions 5 | are met: 6 | 7 | - Redistributions of source code must retain the above copyright 8 | notice, this list of conditions and the following disclaimer. 9 | 10 | - Redistributions in binary form must reproduce the above copyright 11 | notice, this list of conditions and the following disclaimer in the 12 | documentation and/or other materials provided with the distribution. 13 | 14 | - Neither the name of the Xiph.org Foundation nor the names of its 15 | contributors may be used to endorse or promote products derived from 16 | this software without specific prior written permission. 17 | 18 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 19 | ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 20 | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 21 | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION 22 | OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 23 | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 24 | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 25 | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 26 | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 27 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 28 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 29 | -------------------------------------------------------------------------------- /licenses/opus.txt: -------------------------------------------------------------------------------- 1 | Copyright 2001-2011 Xiph.Org, Skype Limited, Octasic, 2 | Jean-Marc Valin, Timothy B. Terriberry, 3 | CSIRO, Gregory Maxwell, Mark Borgerding, 4 | Erik de Castro Lopo 5 | 6 | Redistribution and use in source and binary forms, with or without 7 | modification, are permitted provided that the following conditions 8 | are met: 9 | 10 | - Redistributions of source code must retain the above copyright 11 | notice, this list of conditions and the following disclaimer. 12 | 13 | - Redistributions in binary form must reproduce the above copyright 14 | notice, this list of conditions and the following disclaimer in the 15 | documentation and/or other materials provided with the distribution. 16 | 17 | - Neither the name of Internet Society, IETF or IETF Trust, nor the 18 | names of specific contributors, may be used to endorse or promote 19 | products derived from this software without specific prior written 20 | permission. 21 | 22 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 23 | ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 24 | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 25 | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER 26 | OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 27 | EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 28 | PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 29 | PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 30 | LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 31 | NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 32 | SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 33 | 34 | Opus is subject to the royalty-free patent licenses which are 35 | specified at: 36 | 37 | Xiph.Org Foundation: 38 | https://datatracker.ietf.org/ipr/1524/ 39 | 40 | Microsoft Corporation: 41 | https://datatracker.ietf.org/ipr/1914/ 42 | 43 | Broadcom Corporation: 44 | https://datatracker.ietf.org/ipr/1526/ 45 | -------------------------------------------------------------------------------- /licenses/speex.txt: -------------------------------------------------------------------------------- 1 | Copyright 2002-2008 Xiph.org Foundation 2 | Copyright 2002-2008 Jean-Marc Valin 3 | Copyright 2005-2007 Analog Devices Inc. 4 | Copyright 2005-2008 Commonwealth Scientific and Industrial Research 5 | Organisation (CSIRO) 6 | Copyright 1993, 2002, 2006 David Rowe 7 | Copyright 2003 EpicGames 8 | Copyright 1992-1994 Jutta Degener, Carsten Bormann 9 | 10 | Redistribution and use in source and binary forms, with or without 11 | modification, are permitted provided that the following conditions 12 | are met: 13 | 14 | - Redistributions of source code must retain the above copyright 15 | notice, this list of conditions and the following disclaimer. 16 | 17 | - Redistributions in binary form must reproduce the above copyright 18 | notice, this list of conditions and the following disclaimer in the 19 | documentation and/or other materials provided with the distribution. 20 | 21 | - Neither the name of the Xiph.org Foundation nor the names of its 22 | contributors may be used to endorse or promote products derived from 23 | this software without specific prior written permission. 24 | 25 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 26 | ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 27 | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 28 | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR 29 | CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 30 | EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 31 | PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 32 | PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 33 | LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 34 | NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 35 | SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 36 | -------------------------------------------------------------------------------- /licenses/theora.txt: -------------------------------------------------------------------------------- 1 | Copyright (C) 2002-2009 Xiph.org Foundation 2 | 3 | Redistribution and use in source and binary forms, with or without 4 | modification, are permitted provided that the following conditions 5 | are met: 6 | 7 | - Redistributions of source code must retain the above copyright 8 | notice, this list of conditions and the following disclaimer. 9 | 10 | - Redistributions in binary form must reproduce the above copyright 11 | notice, this list of conditions and the following disclaimer in the 12 | documentation and/or other materials provided with the distribution. 13 | 14 | - Neither the name of the Xiph.org Foundation nor the names of its 15 | contributors may be used to endorse or promote products derived from 16 | this software without specific prior written permission. 17 | 18 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 19 | ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 20 | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 21 | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION 22 | OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 23 | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 24 | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 25 | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 26 | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 27 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 28 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 29 | -------------------------------------------------------------------------------- /licenses/vorbis.txt: -------------------------------------------------------------------------------- 1 | Copyright (c) 2002-2015 Xiph.org Foundation 2 | 3 | Redistribution and use in source and binary forms, with or without 4 | modification, are permitted provided that the following conditions 5 | are met: 6 | 7 | - Redistributions of source code must retain the above copyright 8 | notice, this list of conditions and the following disclaimer. 9 | 10 | - Redistributions in binary form must reproduce the above copyright 11 | notice, this list of conditions and the following disclaimer in the 12 | documentation and/or other materials provided with the distribution. 13 | 14 | - Neither the name of the Xiph.org Foundation nor the names of its 15 | contributors may be used to endorse or promote products derived from 16 | this software without specific prior written permission. 17 | 18 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 19 | ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 20 | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 21 | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION 22 | OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 23 | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 24 | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 25 | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 26 | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 27 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 28 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 29 | -------------------------------------------------------------------------------- /native_extension/.gitignore: -------------------------------------------------------------------------------- 1 | # Created by https://www.gitignore.io/api/flashbuilder 2 | 3 | ### FlashBuilder ### 4 | # Build and Release Folders 5 | bin-debug/ 6 | bin-release/ 7 | 8 | # Other files and folders 9 | .settings/ 10 | 11 | .FlexUnitSettings 12 | .externalToolBuilders 13 | .model 14 | 15 | 16 | 17 | # Created by https://www.gitignore.io/api/intellij 18 | 19 | ### Intellij ### 20 | # Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and Webstorm 21 | # Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 22 | 23 | # User-specific stuff: 24 | .idea/workspace.xml 25 | .idea/tasks.xml 26 | 27 | # Sensitive or high-churn files: 28 | .idea/dataSources/ 29 | .idea/dataSources.ids 30 | .idea/dataSources.xml 31 | .idea/dataSources.local.xml 32 | .idea/sqlDataSources.xml 33 | .idea/dynamic.xml 34 | .idea/uiDesigner.xml 35 | 36 | # Gradle: 37 | .idea/gradle.xml 38 | .idea/libraries 39 | 40 | # Mongo Explorer plugin: 41 | .idea/mongoSettings.xml 42 | 43 | ## File-based project format: 44 | *.iws 45 | 46 | ## Plugin-specific files: 47 | 48 | # IntelliJ 49 | /out/ 50 | 51 | # mpeltonen/sbt-idea plugin 52 | .idea_modules/ 53 | 54 | # JIRA plugin 55 | atlassian-ide-plugin.xml 56 | 57 | # Crashlytics plugin (for Android Studio and IntelliJ) 58 | com_crashlytics_export_strings.xml 59 | crashlytics.properties 60 | crashlytics-build.properties 61 | fabric.properties 62 | 63 | ### Intellij Patch ### 64 | # Comment Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-215987721 65 | 66 | # *.iml 67 | # modules.xml 68 | # .idea/misc.xml 69 | # *.ipr -------------------------------------------------------------------------------- /native_extension/.idea/.name: -------------------------------------------------------------------------------- 1 | AVANE -------------------------------------------------------------------------------- /native_extension/.idea/flexCompiler.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /native_extension/.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /native_extension/.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /native_extension/.project: -------------------------------------------------------------------------------- 1 | 2 | 3 | AVANE 4 | 5 | 6 | 7 | 8 | 9 | com.adobe.flexbuilder.project.flexbuilder 10 | 11 | 12 | 13 | 14 | 15 | com.adobe.flexbuilder.project.aslibnature 16 | com.adobe.flexbuilder.project.actionscriptnature 17 | 18 | 19 | -------------------------------------------------------------------------------- /native_extension/AVANE.iml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /native_extension/ane/.gitignore: -------------------------------------------------------------------------------- 1 | debug/ 2 | docs/ 3 | build_osx.sh 4 | build_osx_debug.sh 5 | build_multi.sh 6 | build-release.bat 7 | build_asdocs.bat 8 | build_asdocs.sh 9 | clean.bat 10 | extension_osx.xml 11 | extension_win.xml 12 | extension_multi.xml 13 | AVANE.dll 14 | *.ane 15 | *.framework 16 | *.dll -------------------------------------------------------------------------------- /native_extension/ane/extension_android.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | com.tuarua.AVANE 4 | AVANE Android 5 | 0.0.10 6 | 7 | 8 | 9 | classes.jar 10 | com.tuarua.AVANE 11 | com.tuarua.AVANE 12 | 13 | 14 | 15 | 16 | classes.jar 17 | com.tuarua.AVANE 18 | com.tuarua.AVANE 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /native_extension/ane/extension_ios.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | com.tuarua.AVANE 4 | AV ANE 5 | This work is licensed under Mozilla Public License Version 1.1, Copyright 2015 6 | 0.0.9 7 | 8 | 9 | 10 | libAVANE.a 11 | TRAVAExtInizer 12 | TRAVAExtFinizer 13 | 14 | 15 | 16 | 17 | libAVANE.a 18 | TRAVAExtInizer 19 | TRAVAExtFinizer 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /native_extension/ane/platforms/android/.gitignore: -------------------------------------------------------------------------------- 1 | libs/ -------------------------------------------------------------------------------- /native_extension/ane/platforms/android/platform.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | LibAVANE.jar 5 | 6 | 7 | 8 | com.tuarua.AVANE 9 | res 10 | 11 | 12 | -------------------------------------------------------------------------------- /native_extension/ane/platforms/android/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | AVANE 3 | 4 | -------------------------------------------------------------------------------- /native_extension/ane/platforms/ios/platform.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 8.3 4 | 5 | -ios_version_min 8.3 6 | -lstdc++ 7 | -lc++ 8 | -liconv 9 | -lbz2 10 | -lz 11 | -w 12 | -framework VideoToolbox 13 | 14 | 15 | -------------------------------------------------------------------------------- /native_extension/bin/AVANE.swc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tuarua/AVANE/2091da204ddaac4a5d2060262102dee48bd2cdd9/native_extension/bin/AVANE.swc -------------------------------------------------------------------------------- /native_extension/docs/asdocs/com/tuarua/class-list.html: -------------------------------------------------------------------------------- 1 | com.tuarua - Tua Rua AVANEPackage com.tuaruaClassesAVANE -------------------------------------------------------------------------------- /native_extension/docs/asdocs/com/tuarua/ffmpeg/class-list.html: -------------------------------------------------------------------------------- 1 | com.tuarua.ffmpeg - Tua Rua AVANEPackage com.tuarua.ffmpegClassesAttachmentAVFoundationOptionsBitStreamFilterGlobalOptionsHLSOptionsInputOptionsInputStreamLoggerMetaDataOutputAudioStreamOutputOptionsOutputVideoStreamOverlayStreamerX264AdvancedOptionsX264OptionsX265AdvancedOptionsX265Options -------------------------------------------------------------------------------- /native_extension/docs/asdocs/com/tuarua/ffmpeg/constants/class-list.html: -------------------------------------------------------------------------------- 1 | com.tuarua.ffmpeg.constants - Tua Rua AVANEPackage com.tuarua.ffmpeg.constantsClassesLogLevelMimeTypesNvenc264PresetNvenc264ProfileNvenc265PresetNvenc265ProfileQsv264PresetQsv264ProfileQsv265PresetX264AdvancedX264PresetX264ProfileX264TuneX265PresetX265ProfileX265Tune -------------------------------------------------------------------------------- /native_extension/docs/asdocs/com/tuarua/ffmpeg/events/class-list.html: -------------------------------------------------------------------------------- 1 | com.tuarua.ffmpeg.events - Tua Rua AVANEPackage com.tuarua.ffmpeg.eventsClassesFFmpegEventStreamProviderEvent -------------------------------------------------------------------------------- /native_extension/docs/asdocs/com/tuarua/ffmpeg/filters/video/class-list.html: -------------------------------------------------------------------------------- 1 | com.tuarua.ffmpeg.filters.video - Tua Rua AVANEPackage com.tuarua.ffmpeg.filters.videoFunctionsboxBlur()crop()cropdetect()deinterlace()denoise()pad()scaleTo()sharpen()smartBlur()to16x9() -------------------------------------------------------------------------------- /native_extension/docs/asdocs/com/tuarua/ffmpeg/gets/class-list.html: -------------------------------------------------------------------------------- 1 | com.tuarua.ffmpeg.gets - Tua Rua AVANEPackage com.tuarua.ffmpeg.getsClassesAvailableFormatBitStreamFilterCaptureDeviceCaptureDeviceCapabilitiesCodecColorDecoderDeviceEncoderFilterHardwareAccelerationLayoutLayoutsPixelFormatProtocolProtocolsSampleFormat -------------------------------------------------------------------------------- /native_extension/docs/asdocs/com/tuarua/ffprobe/class-list.html: -------------------------------------------------------------------------------- 1 | com.tuarua.ffprobe - Tua Rua AVANEPackage com.tuarua.ffprobeClassesAudioStreamFormatProbeStreamSubtitleStreamVideoStream -------------------------------------------------------------------------------- /native_extension/docs/asdocs/com/tuarua/ffprobe/events/class-list.html: -------------------------------------------------------------------------------- 1 | com.tuarua.ffprobe.events - Tua Rua AVANEPackage com.tuarua.ffprobe.eventsClassesProbeEvent -------------------------------------------------------------------------------- /native_extension/docs/asdocs/images/AirIcon12x12.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tuarua/AVANE/2091da204ddaac4a5d2060262102dee48bd2cdd9/native_extension/docs/asdocs/images/AirIcon12x12.gif -------------------------------------------------------------------------------- /native_extension/docs/asdocs/images/P_AlternativeMetadataIndicator_30x28_N.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tuarua/AVANE/2091da204ddaac4a5d2060262102dee48bd2cdd9/native_extension/docs/asdocs/images/P_AlternativeMetadataIndicator_30x28_N.png -------------------------------------------------------------------------------- /native_extension/docs/asdocs/images/collapsed.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tuarua/AVANE/2091da204ddaac4a5d2060262102dee48bd2cdd9/native_extension/docs/asdocs/images/collapsed.gif -------------------------------------------------------------------------------- /native_extension/docs/asdocs/images/detailHeaderRule.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tuarua/AVANE/2091da204ddaac4a5d2060262102dee48bd2cdd9/native_extension/docs/asdocs/images/detailHeaderRule.jpg -------------------------------------------------------------------------------- /native_extension/docs/asdocs/images/detailSectionHeader.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tuarua/AVANE/2091da204ddaac4a5d2060262102dee48bd2cdd9/native_extension/docs/asdocs/images/detailSectionHeader.jpg -------------------------------------------------------------------------------- /native_extension/docs/asdocs/images/expanded.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tuarua/AVANE/2091da204ddaac4a5d2060262102dee48bd2cdd9/native_extension/docs/asdocs/images/expanded.gif -------------------------------------------------------------------------------- /native_extension/docs/asdocs/images/inherit-arrow.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tuarua/AVANE/2091da204ddaac4a5d2060262102dee48bd2cdd9/native_extension/docs/asdocs/images/inherit-arrow.gif -------------------------------------------------------------------------------- /native_extension/docs/asdocs/images/inheritedSummary.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tuarua/AVANE/2091da204ddaac4a5d2060262102dee48bd2cdd9/native_extension/docs/asdocs/images/inheritedSummary.gif -------------------------------------------------------------------------------- /native_extension/docs/asdocs/images/logo.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tuarua/AVANE/2091da204ddaac4a5d2060262102dee48bd2cdd9/native_extension/docs/asdocs/images/logo.jpg -------------------------------------------------------------------------------- /native_extension/docs/asdocs/images/titleTableBottom.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tuarua/AVANE/2091da204ddaac4a5d2060262102dee48bd2cdd9/native_extension/docs/asdocs/images/titleTableBottom.jpg -------------------------------------------------------------------------------- /native_extension/docs/asdocs/images/titleTableMiddle.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tuarua/AVANE/2091da204ddaac4a5d2060262102dee48bd2cdd9/native_extension/docs/asdocs/images/titleTableMiddle.jpg -------------------------------------------------------------------------------- /native_extension/docs/asdocs/images/titleTableTop.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tuarua/AVANE/2091da204ddaac4a5d2060262102dee48bd2cdd9/native_extension/docs/asdocs/images/titleTableTop.jpg -------------------------------------------------------------------------------- /native_extension/docs/asdocs/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | Tua Rua AVANE 4 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | Frame Alert 32 | 33 | This document is designed to be viewed using the frames feature. If you see this message, you are using a non-frame-capable web client. 34 | 35 | Link to Non-frame version. 36 | 37 | 38 | 39 | 40 | -------------------------------------------------------------------------------- /native_extension/docs/asdocs/override.css: -------------------------------------------------------------------------------- 1 | /* 2 | //////////////////////////////////////////////////////////////////////////////// 3 | // 4 | // ADOBE SYSTEMS INCORPORATED 5 | // Copyright 2008 Adobe Systems Incorporated 6 | // All Rights Reserved. 7 | // 8 | // NOTICE: Adobe permits you to use, modify, and distribute this file 9 | // in accordance with the terms of the license agreement accompanying it. 10 | // 11 | //////////////////////////////////////////////////////////////////////////////// 12 | */ -------------------------------------------------------------------------------- /native_extension/docs/asdocs/package-frame.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | Tua Rua AVANE Documentation 4 | 5 | 6 | 7 | 8 | 9 | 10 | Frame Alert 11 | This document is designed to be viewed using the frames feature. If you see this message, you are using a non-frame-capable web client. 12 | 13 | Link toNon-frame version. 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /native_extension/src/com/tuarua/ffmpeg/Attachment.as: -------------------------------------------------------------------------------- 1 | package com.tuarua.ffmpeg { 2 | import com.tuarua.ffmpeg.constants.MimeTypes; 3 | public class Attachment extends Object { 4 | public var fileName:String; 5 | public function Attachment(){} 6 | //public var mimeType:String = "auto"; 7 | //-attach DejaVuSans.ttf -metadata:s:2 mimetype=application/x-truetype-font 8 | public function getMimeType():String { 9 | return MimeTypes.getValue(fileName.substring(fileName.lastIndexOf(".")+1, fileName.length)) 10 | } 11 | } 12 | } -------------------------------------------------------------------------------- /native_extension/src/com/tuarua/ffmpeg/BitStreamFilter.as: -------------------------------------------------------------------------------- 1 | package com.tuarua.ffmpeg { 2 | public class BitStreamFilter extends Object { 3 | /** 4 | * Type of bsf, v or a 5 | */ 6 | public var type:String; 7 | /** 8 | * eg aac_adtstoasc 9 | */ 10 | public var value:String; 11 | /** 12 | * 13 | * @param _type "v" or "a" 14 | * @param _value eg aac_adtstoasc 15 | * 16 | */ 17 | public function BitStreamFilter(_type:String=null,_value:String=null) { 18 | super(); 19 | type = _type; 20 | value = _value; 21 | } 22 | } 23 | } -------------------------------------------------------------------------------- /native_extension/src/com/tuarua/ffmpeg/InputStream.as: -------------------------------------------------------------------------------- 1 | package com.tuarua.ffmpeg { 2 | [RemoteClass(alias="com.tuarua.ffmpeg.InputStream")] 3 | public class InputStream extends Object{ 4 | public static var options:Vector. = new Vector.; 5 | public static function clear():void { 6 | if(options) 7 | options.splice(0, options.length); //this is how to clear a vector 8 | } 9 | public static function addInput(inputOptions:InputOptions):void { 10 | if(options == null) 11 | options = new Vector. 12 | options.push(inputOptions); 13 | } 14 | public static function getOptions():Vector.{ 15 | return options; 16 | } 17 | } 18 | } -------------------------------------------------------------------------------- /native_extension/src/com/tuarua/ffmpeg/OutputAudioStream.as: -------------------------------------------------------------------------------- 1 | package com.tuarua.ffmpeg { 2 | public class OutputAudioStream extends Object { 3 | public var codec:String; 4 | public var samplerate:int = -1; 5 | public var bitrate:int = -1; 6 | public var sourceIndex:int = 0; 7 | public var channels:int = 2; 8 | public var frames:int = -1; 9 | public function OutputAudioStream() { 10 | } 11 | } 12 | } -------------------------------------------------------------------------------- /native_extension/src/com/tuarua/ffmpeg/OutputVideoStream.as: -------------------------------------------------------------------------------- 1 | package com.tuarua.ffmpeg { 2 | public class OutputVideoStream extends Object{ 3 | public var codec:String; 4 | public var inputIndex:int = 0; 5 | public var sourceIndex:int = 0; 6 | public var bitrate:int = -1; 7 | public var crf:int = -1; //0-51 8 | public var qp:int = -1; //0-69 9 | public var quality:int = -1; 10 | public var frames:int = -1; 11 | public var pixelFormat:String; 12 | public var encoderOptions:* = null; 13 | public var advancedEncOpts:* = null; 14 | public function OutputVideoStream(){} 15 | } 16 | } -------------------------------------------------------------------------------- /native_extension/src/com/tuarua/ffmpeg/Overlay.as: -------------------------------------------------------------------------------- 1 | package com.tuarua.ffmpeg { 2 | public class Overlay { 3 | private var _fileName:String; 4 | private var _x:int = 0; 5 | private var _y:int = 0; 6 | private var _inTime:Number = -1; 7 | private var _outTime:Number = -1; 8 | public function Overlay(fileName:String = null,x:int=0,y:int=0,inTime:int=-1,outTime:int=-1) { 9 | _fileName = fileName; 10 | _x = x; 11 | _y = y; 12 | _inTime = inTime; 13 | _outTime = outTime; 14 | } 15 | public function set fileName(value:String):void { 16 | _fileName = value; 17 | } 18 | public function get fileName():String { 19 | return _fileName; 20 | } 21 | 22 | public function get x():int { 23 | return _x; 24 | } 25 | 26 | public function set x(value:int):void { 27 | _x = value; 28 | } 29 | 30 | public function get y():int { 31 | return _y; 32 | } 33 | 34 | public function set y(value:int):void { 35 | _y = value; 36 | } 37 | 38 | public function get inTime():Number { 39 | return _inTime; 40 | } 41 | 42 | public function set inTime(value:Number):void { 43 | _inTime = value; 44 | } 45 | 46 | public function get outTime():Number { 47 | return _outTime; 48 | } 49 | 50 | public function set outTime(value:Number):void { 51 | _outTime = value; 52 | } 53 | 54 | 55 | } 56 | } -------------------------------------------------------------------------------- /native_extension/src/com/tuarua/ffmpeg/X264Options.as: -------------------------------------------------------------------------------- 1 | package com.tuarua.ffmpeg { 2 | [RemoteClass(alias="com.tuarua.ffmpeg.X264Options")] 3 | public class X264Options extends Object { 4 | public var preset:String; 5 | public var profile:String; 6 | public var level:String; 7 | public var tune:String; 8 | public function X264Options(){} 9 | /** 10 | * This method is omitted from the output. * * @private 11 | */ 12 | public function getAsVector():Vector. { 13 | var ret:Vector. = new Vector.; 14 | if(preset && preset.length > 0) 15 | ret.push({"key":"preset","value":preset}); 16 | if(profile && profile.length > 0) 17 | ret.push({"key":"profile","value":profile}); 18 | if(level && level.length > 0) 19 | ret.push({"key":"level","value":level}); 20 | if(tune && tune.length > 0) 21 | ret.push({"key":"tune","value":tune}); 22 | return ret; 23 | } 24 | } 25 | } -------------------------------------------------------------------------------- /native_extension/src/com/tuarua/ffmpeg/X265AdvancedOptions.as: -------------------------------------------------------------------------------- 1 | package com.tuarua.ffmpeg { 2 | [RemoteClass(alias="com.tuarua.ffmpeg.X265AdvancedOptions")] 3 | public class X265AdvancedOptions extends Object { 4 | public var type:String = "x265-params"; 5 | public var profile:String; 6 | public var tune:String; 7 | public function X265AdvancedOptions(){} 8 | /** 9 | * This method is omitted from the output. * * @private 10 | */ 11 | public function getAsString():String { 12 | var arr:Array = new Array(); 13 | if(profile) 14 | arr.push("profile="+profile); 15 | if(tune) 16 | arr.push("tune="+tune); 17 | return arr.join(":"); 18 | } 19 | } 20 | 21 | } 22 | //ffmpeg -i "" -an -c:v libx265 -x265-params 'aq-mode=0:invalidkey=:keyint=4:min-keyint=30:anotherinvalidkey=value:rd=5' test.mkv 23 | //-x265-params crf=26:psy-rd=1 -------------------------------------------------------------------------------- /native_extension/src/com/tuarua/ffmpeg/X265Options.as: -------------------------------------------------------------------------------- 1 | package com.tuarua.ffmpeg { 2 | [RemoteClass(alias="com.tuarua.ffmpeg.X265Options")] 3 | public class X265Options extends Object{ 4 | public var preset:String; 5 | //public var profile:String;//these go into Advanced 6 | //public var tune:String;//these go into Advanced 7 | public function X265Options(){} 8 | /** 9 | * This method is omitted from the output. * * @private 10 | */ 11 | public function getAsVector():Vector. { 12 | var ret:Vector. = new Vector.; 13 | if(preset && preset.length > 0) 14 | ret.push({"key":"preset","value":preset}); 15 | return ret; 16 | } 17 | 18 | } 19 | 20 | } -------------------------------------------------------------------------------- /native_extension/src/com/tuarua/ffmpeg/constants/LogLevel.as: -------------------------------------------------------------------------------- 1 | package com.tuarua.ffmpeg.constants { 2 | public class LogLevel { 3 | public static const QUIET:int = -8; 4 | public static const PANIC:int = 0; 5 | public static const FATAL:int = 8; 6 | public static const ERROR:int = 16; 7 | public static const WARNING:int = 24; 8 | public static const INFO:int = 32; 9 | public static const VERBOSE:int = 40; 10 | public static const DEBUG:int = 48; 11 | public static const TRACE:int = 56; 12 | } 13 | } -------------------------------------------------------------------------------- /native_extension/src/com/tuarua/ffmpeg/constants/Nvenc264Preset.as: -------------------------------------------------------------------------------- 1 | package com.tuarua.ffmpeg.constants { 2 | public class Nvenc264Preset { 3 | public static const SLOW:String = "slow"; 4 | public static const MEDIUM:String = "medium"; 5 | public static const FAST:String = "fast"; 6 | public static const HIGH_QUALITY:String = "hq"; 7 | public static const HIGH_PERFORMANCE:String = "hp"; 8 | public static const BLURAY:String = "bd"; 9 | public static const LOW_LATENCY:String = "ll"; 10 | public static const LOW_LATENCY_HIGH_QUALITY:String = "llhq"; 11 | public static const LOW_LATENCY_HIGH_PERFORMANCE:String = "llhp"; 12 | public static const LOSSLESS:String = "lossless"; 13 | public static const LOSSLESS_HIGH_PERFORMANCE:String = "losslesshp"; 14 | } 15 | } -------------------------------------------------------------------------------- /native_extension/src/com/tuarua/ffmpeg/constants/Nvenc264Profile.as: -------------------------------------------------------------------------------- 1 | package com.tuarua.ffmpeg.constants { 2 | public class Nvenc264Profile extends Object { 3 | public static const AUTO:String = ""; 4 | public static const BASELINE:String = "baseline"; 5 | public static const MAIN:String = "main"; 6 | public static const HIGH:String = "high"; 7 | public static const HIGH_444P:String = "high444p"; 8 | } 9 | } -------------------------------------------------------------------------------- /native_extension/src/com/tuarua/ffmpeg/constants/Nvenc265Preset.as: -------------------------------------------------------------------------------- 1 | package com.tuarua.ffmpeg.constants { 2 | public class Nvenc265Preset extends Object { 3 | public static const SLOW:String = "slow"; 4 | public static const MEDIUM:String = "medium"; 5 | public static const FAST:String = "fast"; 6 | public static const HIGH_QUALITY:String = "hq"; 7 | public static const HIGH_PERFORMANCE:String = "hp"; 8 | public static const BLURAY:String = "bd"; 9 | public static const LOW_LATENCY:String = "ll"; 10 | public static const LOW_LATENCY_HIGH_QUALITY:String = "llhq"; 11 | public static const LOW_LATENCY_HIGH_PERFORMANCE:String = "llhp"; 12 | public static const LOSSLESS:String = "lossless"; 13 | public static const LOSSLESS_HIGH_PERFORMANCE:String = "losslesshp"; 14 | } 15 | } -------------------------------------------------------------------------------- /native_extension/src/com/tuarua/ffmpeg/constants/Nvenc265Profile.as: -------------------------------------------------------------------------------- 1 | package com.tuarua.ffmpeg.constants { 2 | public class Nvenc265Profile extends Object { 3 | public static const MAIN:String = "main"; 4 | } 5 | } -------------------------------------------------------------------------------- /native_extension/src/com/tuarua/ffmpeg/constants/Qsv264Preset.as: -------------------------------------------------------------------------------- 1 | package com.tuarua.ffmpeg.constants { 2 | public class Qsv264Preset { 3 | public static const VERY_SLOW:String = "veryslow"; 4 | public static const SLOWER:String = "slower"; 5 | public static const SLOW:String = "slow"; 6 | public static const MEDIUM:String = "medium"; 7 | public static const FAST:String = "fast"; 8 | public static const FASTER:String = "faster"; 9 | public static const VERY_FAST:String = "veryfast"; 10 | } 11 | } -------------------------------------------------------------------------------- /native_extension/src/com/tuarua/ffmpeg/constants/Qsv264Profile.as: -------------------------------------------------------------------------------- 1 | package com.tuarua.ffmpeg.constants { 2 | public class Qsv264Profile { 3 | public static const UNKNOWN:String = "unknown"; 4 | public static const BASELINE:String = "baseline"; 5 | public static const MAIN:String = "main"; 6 | public static const HIGH:String = "high"; 7 | } 8 | } -------------------------------------------------------------------------------- /native_extension/src/com/tuarua/ffmpeg/constants/Qsv265Preset.as: -------------------------------------------------------------------------------- 1 | package com.tuarua.ffmpeg.constants { 2 | public class Qsv265Preset { 3 | public static const VERY_SLOW:String = "veryslow"; 4 | public static const SLOWER:String = "slower"; 5 | public static const SLOW:String = "slow"; 6 | public static const MEDIUM:String = "medium"; 7 | public static const FAST:String = "fast"; 8 | public static const FASTER:String = "faster"; 9 | public static const VERY_FAST:String = "veryfast"; 10 | } 11 | } -------------------------------------------------------------------------------- /native_extension/src/com/tuarua/ffmpeg/constants/X264Advanced.as: -------------------------------------------------------------------------------- 1 | package com.tuarua.ffmpeg.constants { 2 | public class X264Advanced { 3 | public static const TRELLIS_OFF:int = 0; 4 | public static const TRELLIS_ENCODE:int = 1; 5 | public static const TRELLIS_ALWAYS:int = 2; 6 | 7 | public static const BADAPT_DISABLED:int = 0; 8 | public static const BADAPT_FAST:int = 1; 9 | public static const BADAPT_OPTIMAL:int = 2; 10 | 11 | public static const BPYRAMID_DISABLED:String = "none"; 12 | public static const BPYRAMID_STRICT:String = "strict"; 13 | public static const BPYRAMID_NORMAL:String = "normal"; 14 | 15 | public static const DIRECT_NONE:String = "none"; 16 | public static const DIRECT_SPATIAL:String = "spatial"; 17 | public static const DIRECT_TEMPORAL:String = "temporal"; 18 | public static const DIRECT_AUTO:String = "auto"; 19 | 20 | public static const PARTITIONS_NONE:String = "none"; 21 | public static const PARTITIONS_ALL:String = "all"; 22 | public static const PARTITIONS_SOME:String = "i4x4,i8x8"; 23 | public static const PARTITIONS_MOST:String = null; 24 | 25 | public static const ME_DIAMOND:String = "dia"; 26 | public static const ME_HEX:String = "hex"; 27 | public static const ME_UNEVEN_MULTIHEX:String = "umh"; 28 | public static const ME_EXHAUSTIVE:String = "esa"; 29 | public static const ME_HADAMARD:String = "tesa"; 30 | 31 | public static const WEIGHTP_DISABLED:int = 0; 32 | public static const WEIGHTP_REFS:int = 1; 33 | public static const WEIGHTP_DUPLICATES:int = 2; 34 | } 35 | } -------------------------------------------------------------------------------- /native_extension/src/com/tuarua/ffmpeg/constants/X264Preset.as: -------------------------------------------------------------------------------- 1 | package com.tuarua.ffmpeg.constants { 2 | public class X264Preset { 3 | public static const PLACEBO:String = "placebo"; 4 | public static const VERY_SLOW:String = "veryslow"; 5 | public static const SLOWER:String = "slower"; 6 | public static const SLOW:String = "slow"; 7 | public static const MEDIUM:String = "medium"; 8 | public static const FAST:String = "fast"; 9 | public static const FASTER:String = "faster"; 10 | public static const VERY_FAST:String = "veryfast"; 11 | public static const SUPER_FAST:String = "superfast"; 12 | public static const ULTRA_FAST:String = "ultrafast"; 13 | } 14 | } -------------------------------------------------------------------------------- /native_extension/src/com/tuarua/ffmpeg/constants/X264Profile.as: -------------------------------------------------------------------------------- 1 | package com.tuarua.ffmpeg.constants { 2 | public class X264Profile { 3 | public static const AUTO:String = ""; 4 | public static const BASELINE:String = "baseline"; 5 | public static const MAIN:String = "main"; 6 | public static const HIGH:String = "high"; 7 | } 8 | } -------------------------------------------------------------------------------- /native_extension/src/com/tuarua/ffmpeg/constants/X264Tune.as: -------------------------------------------------------------------------------- 1 | package com.tuarua.ffmpeg.constants { 2 | public class X264Tune { 3 | public static const FILM:String = "film"; 4 | public static const ANIMATION:String = "animation"; 5 | public static const GRAIN:String = "grain"; 6 | public static const STILL_IMAGE:String = "stillimage"; 7 | public static const PSNR:String = "psnr"; 8 | public static const SSIM:String = "ssim"; 9 | public static const FAST_DECODE:String = "fastdecode"; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /native_extension/src/com/tuarua/ffmpeg/constants/X265Preset.as: -------------------------------------------------------------------------------- 1 | package com.tuarua.ffmpeg.constants { 2 | public class X265Preset { 3 | public static const PLACEBO:String = "placebo"; 4 | public static const VERY_SLOW:String = "veryslow"; 5 | public static const SLOWER:String = "slower"; 6 | public static const SLOW:String = "slow"; 7 | public static const MEDIUM:String = "medium"; 8 | public static const FAST:String = "fast"; 9 | public static const FASTER:String = "faster"; 10 | public static const VERY_FAST:String = "veryfast"; 11 | public static const SUPER_FAST:String = "superfast"; 12 | public static const ULTRA_FAST:String = "ultrafast"; 13 | } 14 | } -------------------------------------------------------------------------------- /native_extension/src/com/tuarua/ffmpeg/constants/X265Profile.as: -------------------------------------------------------------------------------- 1 | package com.tuarua.ffmpeg.constants { 2 | public class X265Profile { 3 | public static const NONE:String = ""; 4 | public static const MAIN:String = "main"; 5 | public static const MAIN_10:String = "main10"; 6 | public static const MAIN_STILL_PICTURE:String = "mainstillpicture"; 7 | } 8 | } -------------------------------------------------------------------------------- /native_extension/src/com/tuarua/ffmpeg/constants/X265Tune.as: -------------------------------------------------------------------------------- 1 | package com.tuarua.ffmpeg.constants { 2 | public class X265Tune { 3 | public static const PSNR:String = "psnr"; 4 | public static const SSIM:String = "ssim"; 5 | public static const GRAIN:String = "grain"; 6 | public static const FAST_DECODE:String = "fastdecode"; 7 | public static const ZERO_LATENCY:String = "zerolatency"; 8 | } 9 | } -------------------------------------------------------------------------------- /native_extension/src/com/tuarua/ffmpeg/events/FFmpegEvent.as: -------------------------------------------------------------------------------- 1 | package com.tuarua.ffmpeg.events { 2 | import flash.events.Event; 3 | 4 | public class FFmpegEvent extends Event { 5 | public static const ON_ENCODE_START:String = "onEncodeStart"; 6 | public static const ON_ENCODE_ERROR:String = "onEncodeError"; 7 | public static const ON_ENCODE_FATAL:String = "onEncodeFatal"; 8 | public static const ON_ENCODE_FINISH:String = "onEncodeFinish"; 9 | public static const ON_ENCODE_PROGRESS:String = "onEncodeProgress"; 10 | public var params:Object; 11 | public function FFmpegEvent(type:String, _params:Object=null, bubbles:Boolean=false, cancelable:Boolean=false) { 12 | super(type, bubbles, cancelable); 13 | this.params = _params; 14 | } 15 | public override function clone():Event { 16 | return new FFmpegEvent(type, this.params, bubbles, cancelable); 17 | } 18 | public override function toString():String { 19 | return formatToString("FFmpegEvent", "params", "type", "bubbles", "cancelable"); 20 | } 21 | 22 | } 23 | } -------------------------------------------------------------------------------- /native_extension/src/com/tuarua/ffmpeg/events/StreamProviderEvent.as: -------------------------------------------------------------------------------- 1 | package com.tuarua.ffmpeg.events { 2 | import flash.events.Event; 3 | import flash.utils.ByteArray; 4 | 5 | public class StreamProviderEvent extends Event { 6 | public static const ON_STREAM_DATA:String = "onStreamData"; 7 | public static const ON_STREAM_CLOSE:String = "onStreamClose"; 8 | public var data:ByteArray; 9 | public function StreamProviderEvent(type:String, _ba:ByteArray=null, bubbles:Boolean=false, cancelable:Boolean=false) { 10 | super(type, bubbles, cancelable); 11 | this.data = _ba; 12 | } 13 | } 14 | } -------------------------------------------------------------------------------- /native_extension/src/com/tuarua/ffmpeg/filters/video/boxBlur.as: -------------------------------------------------------------------------------- 1 | package com.tuarua.ffmpeg.filters.video { 2 | public function boxBlur(lumaRadius:String,lumaPower:String,chromaRadius:String=null,chromaPower:String=null,alphaRadius:String=null,alphaPower:String=null):String { 3 | var arr:Array = new Array(); 4 | arr.push(lumaRadius); 5 | arr.push(lumaPower); 6 | if(chromaRadius) 7 | arr.push(chromaRadius); 8 | if(chromaPower) 9 | arr.push(chromaPower); 10 | if(alphaRadius) 11 | arr.push(alphaRadius); 12 | if(alphaPower) 13 | arr.push(alphaPower); 14 | return "boxblur="+arr.join(":"); 15 | } 16 | } -------------------------------------------------------------------------------- /native_extension/src/com/tuarua/ffmpeg/filters/video/crop.as: -------------------------------------------------------------------------------- 1 | package com.tuarua.ffmpeg.filters.video { 2 | public function crop(outWidth:int,outHeight:int=-1,x:int=-1,y:int=-1,keepAspect:Boolean=false):String {//convert to strings to allow expressions 3 | var arr:Array = new Array(); 4 | arr.push(outWidth); 5 | if(outHeight > -1) 6 | arr.push(outHeight); 7 | if(x > -1) 8 | arr.push(x); 9 | if(y > -1) 10 | arr.push(y); 11 | if(keepAspect) 12 | arr.push(1); 13 | return "crop="+arr.join(":"); 14 | } 15 | } -------------------------------------------------------------------------------- /native_extension/src/com/tuarua/ffmpeg/filters/video/cropdetect.as: -------------------------------------------------------------------------------- 1 | package com.tuarua.ffmpeg.filters.video { 2 | public function cropdetect(limit:int=24,round:int=16,reset:int=0):String { 3 | return "cropdetect="+limit.toString()+":"+round.toString()+":"+reset.toString(); 4 | } 5 | } -------------------------------------------------------------------------------- /native_extension/src/com/tuarua/ffmpeg/filters/video/deinterlace.as: -------------------------------------------------------------------------------- 1 | package com.tuarua.ffmpeg.filters.video { 2 | public function deinterlace(mode:int=0,parity:int=-1,auto:int=0):String { 3 | return "yadif="+mode.toString()+":"+parity.toString()+":"+auto.toString()+""; 4 | } 5 | } -------------------------------------------------------------------------------- /native_extension/src/com/tuarua/ffmpeg/filters/video/denoise.as: -------------------------------------------------------------------------------- 1 | package com.tuarua.ffmpeg.filters.video { 2 | public function denoise(lumaSpatial:Number=4.0,chromaSpatial:Number=-1,lumaTemporal:Number=-1,chromaTemporal:Number=-1):String { 3 | var _chromaSpatial:Number; 4 | var _lumaTemporal:Number; 5 | var _chromaTemporal:Number; 6 | _chromaSpatial = (chromaSpatial > -1) ? chromaSpatial : (3.0*lumaSpatial)/4.0; 7 | _lumaTemporal = (lumaTemporal > -1) ? lumaTemporal : (6.0*lumaSpatial)/4.0; 8 | _chromaTemporal = (chromaTemporal > -1) ? chromaTemporal : _lumaTemporal*_chromaSpatial/lumaSpatial; 9 | return "hqdn3d="+lumaSpatial.toString()+":"+_chromaSpatial.toString()+":"+_lumaTemporal.toString()+":"+_chromaTemporal.toString(); 10 | } 11 | } -------------------------------------------------------------------------------- /native_extension/src/com/tuarua/ffmpeg/filters/video/pad.as: -------------------------------------------------------------------------------- 1 | package com.tuarua.ffmpeg.filters.video { 2 | public function pad(w:int,h:int,x:int,y:int,color:String="black"):String { 3 | return "pad=width="+w+":height="+h+":x="+x+":y="+y+":color="+color; 4 | } 5 | } -------------------------------------------------------------------------------- /native_extension/src/com/tuarua/ffmpeg/filters/video/scaleTo.as: -------------------------------------------------------------------------------- 1 | package com.tuarua.ffmpeg.filters.video { 2 | 3 | public function scaleTo(w:int,h:int=-1):String { 4 | var ret:String; 5 | ret = (h > -1) ? "scale="+w+":"+h : "scale="+w+":-1"; 6 | return ret; 7 | } 8 | } -------------------------------------------------------------------------------- /native_extension/src/com/tuarua/ffmpeg/filters/video/sharpen.as: -------------------------------------------------------------------------------- 1 | package com.tuarua.ffmpeg.filters.video { 2 | public function sharpen(lumaMatrixX:int=5,lumaMatrixY:int=5,lumaAmount:Number=1.0,chromaMatrixX:int=5,chromaMatrixY:int=5,chromaAmount:Number=0.0):String { 3 | return "unsharp="+lumaMatrixX.toString()+":"+lumaMatrixY.toString()+":"+lumaAmount.toString()+":"+chromaMatrixX.toString()+":"+chromaMatrixY.toString()+":"+chromaAmount.toString(); 4 | } 5 | } -------------------------------------------------------------------------------- /native_extension/src/com/tuarua/ffmpeg/filters/video/smartBlur.as: -------------------------------------------------------------------------------- 1 | package com.tuarua.ffmpeg.filters.video { 2 | public function smartBlur(lumaRadius:Number,lumaStrength:Number,lumaThreashold:int,chromaRadius:Number=-1,chromaStrength:Number=-1,chromaThreashold:int=-1):String { 3 | var arr:Array = new Array(); 4 | arr.push(lumaRadius); 5 | arr.push(lumaStrength); 6 | arr.push(lumaThreashold); 7 | if(chromaRadius > -1) 8 | arr.push(chromaRadius); 9 | if(chromaStrength > -1) 10 | arr.push(chromaStrength); 11 | if(chromaThreashold > -1) 12 | arr.push(chromaThreashold); 13 | return "smartblur="+arr.join(":"); 14 | } 15 | } -------------------------------------------------------------------------------- /native_extension/src/com/tuarua/ffmpeg/filters/video/to16x9.as: -------------------------------------------------------------------------------- 1 | package com.tuarua.ffmpeg.filters.video { 2 | public function to16x9():String { 3 | return "pad=ih*16/9:ih:(ow-iw)/2:(oh-ih)/2"; 4 | } 5 | } -------------------------------------------------------------------------------- /native_extension/src/com/tuarua/ffmpeg/gets/AvailableFormat.as: -------------------------------------------------------------------------------- 1 | package com.tuarua.ffmpeg.gets { 2 | [RemoteClass(alias="com.tuarua.ffmpeg.gets.AvailableFormat")] 3 | public class AvailableFormat { 4 | public var name:String; 5 | public var nameLong:String; 6 | public var muxing:Boolean; 7 | public var demuxing:Boolean; 8 | /** 9 | * This method is omitted from the output. * * @private 10 | */ 11 | public function AvailableFormat(){} 12 | } 13 | } -------------------------------------------------------------------------------- /native_extension/src/com/tuarua/ffmpeg/gets/BitStreamFilter.as: -------------------------------------------------------------------------------- 1 | package com.tuarua.ffmpeg.gets { 2 | [RemoteClass(alias="com.tuarua.ffmpeg.gets.BitStreamFilter")] 3 | public class BitStreamFilter { 4 | public var name:String; 5 | /** 6 | * This method is omitted from the output. * * @private 7 | */ 8 | public function BitStreamFilter(){} 9 | } 10 | } -------------------------------------------------------------------------------- /native_extension/src/com/tuarua/ffmpeg/gets/CaptureDevice.as: -------------------------------------------------------------------------------- 1 | package com.tuarua.ffmpeg.gets { 2 | [RemoteClass(alias="com.tuarua.ffmpeg.gets.CaptureDevice")] 3 | public class CaptureDevice { 4 | /** 5 | * Friendly name 6 | */ 7 | public var name:String; 8 | /** 9 | * Descriptio 10 | */ 11 | public var description:String; 12 | /** 13 | * "dshow" or "avfoundation" 14 | */ 15 | public var format:String; 16 | /** 17 | * The device path (if determined) is not intended for display. 18 | */ 19 | public var path:String; 20 | /** 21 | * Is Audio capture device. A device can be both audio AND video so can appear twice in the list 22 | */ 23 | public var isAudio:Boolean = false; 24 | /** 25 | * Is Audio video device. A device can be both audio AND video so can appear twice in the list 26 | */ 27 | public var isVideo:Boolean = false; 28 | /** 29 | * The index of the device 30 | */ 31 | public var index:int = 0; 32 | /** 33 | * Returns the capabilities of the capture device if available 34 | */ 35 | public var capabilities:Vector.; 36 | /** 37 | * This method is omitted from the output. * * @private 38 | */ 39 | public function CaptureDevice() {} 40 | } 41 | } -------------------------------------------------------------------------------- /native_extension/src/com/tuarua/ffmpeg/gets/CaptureDeviceCapabilities.as: -------------------------------------------------------------------------------- 1 | package com.tuarua.ffmpeg.gets { 2 | [RemoteClass(alias="com.tuarua.ffmpeg.gets.CaptureDeviceCapabilities")] 3 | public class CaptureDeviceCapabilities { 4 | /** 5 | * Width 6 | */ 7 | public var width:uint; 8 | /** 9 | * Height 10 | */ 11 | public var height:uint; 12 | /** 13 | * Maximum frame rate 14 | */ 15 | public var maxFrameRate:Number; 16 | /** 17 | * Minimum frame rate 18 | */ 19 | public var minFrameRate:Number; 20 | /** 21 | * This method is omitted from the output. * * @private 22 | */ 23 | public function CaptureDeviceCapabilities() {} 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /native_extension/src/com/tuarua/ffmpeg/gets/Codec.as: -------------------------------------------------------------------------------- 1 | package com.tuarua.ffmpeg.gets { 2 | [RemoteClass(alias="com.tuarua.ffmpeg.gets.Codec")] 3 | public class Codec { 4 | public var name:String; 5 | public var nameLong:String; 6 | public var hasDecoder:Boolean; 7 | public var hasEncoder:Boolean; 8 | public var isVideo:Boolean; 9 | public var isAudio:Boolean; 10 | public var isSubtitles:Boolean; 11 | public var isLossy:Boolean; 12 | public var isLossless:Boolean; 13 | public var isIntraFrameOnly:Boolean; 14 | /** 15 | * This method is omitted from the output. * * @private 16 | */ 17 | public function Codec(){} 18 | } 19 | } -------------------------------------------------------------------------------- /native_extension/src/com/tuarua/ffmpeg/gets/Color.as: -------------------------------------------------------------------------------- 1 | package com.tuarua.ffmpeg.gets { 2 | [RemoteClass(alias="com.tuarua.ffmpeg.gets.Color")] 3 | public class Color { 4 | public var name:String; 5 | public var value:String; 6 | /** 7 | * This method is omitted from the output. * * @private 8 | */ 9 | public function Color(){} 10 | } 11 | } -------------------------------------------------------------------------------- /native_extension/src/com/tuarua/ffmpeg/gets/Decoder.as: -------------------------------------------------------------------------------- 1 | package com.tuarua.ffmpeg.gets { 2 | [RemoteClass(alias="com.tuarua.ffmpeg.gets.Decoder")] 3 | public class Decoder extends Encoder { 4 | /** 5 | * This method is omitted from the output. * * @private 6 | */ 7 | public function Decoder(){} 8 | } 9 | } -------------------------------------------------------------------------------- /native_extension/src/com/tuarua/ffmpeg/gets/Device.as: -------------------------------------------------------------------------------- 1 | package com.tuarua.ffmpeg.gets { 2 | 3 | [RemoteClass(alias="com.tuarua.ffmpeg.gets.Device")] 4 | public class Device extends AvailableFormat { 5 | /** 6 | * This method is omitted from the output. * * @private 7 | */ 8 | public function Device(){} 9 | } 10 | } -------------------------------------------------------------------------------- /native_extension/src/com/tuarua/ffmpeg/gets/Encoder.as: -------------------------------------------------------------------------------- 1 | package com.tuarua.ffmpeg.gets { 2 | [RemoteClass(alias="com.tuarua.ffmpeg.gets.Encoder")] 3 | public class Encoder { 4 | public var name:String; 5 | public var nameLong:String; 6 | public var isVideo:Boolean; 7 | public var isAudio:Boolean; 8 | public var isSubtitles:Boolean; 9 | public var hasFrameLevelMultiThreading:Boolean; 10 | public var hasSliceLevelMultiThreading:Boolean; 11 | public var isExperimental:Boolean; 12 | public var supportsDrawHorizBand:Boolean; 13 | public var supportsDirectRendering:Boolean; 14 | /** 15 | * This method is omitted from the output. * * @private 16 | */ 17 | public function Encoder(){} 18 | } 19 | } -------------------------------------------------------------------------------- /native_extension/src/com/tuarua/ffmpeg/gets/Filter.as: -------------------------------------------------------------------------------- 1 | package com.tuarua.ffmpeg.gets { 2 | [RemoteClass(alias="com.tuarua.ffmpeg.gets.Filter")] 3 | public class Filter { 4 | public var hasTimelineSupport:Boolean; 5 | public var hasSliceThreading:Boolean; 6 | public var hasCommandSupport:Boolean; 7 | public var type:String; 8 | public var name:String; 9 | public var description:String; 10 | /** 11 | * This method is omitted from the output. * * @private 12 | */ 13 | public function Filter(){} 14 | } 15 | } -------------------------------------------------------------------------------- /native_extension/src/com/tuarua/ffmpeg/gets/HardwareAcceleration.as: -------------------------------------------------------------------------------- 1 | package com.tuarua.ffmpeg.gets { 2 | [RemoteClass(alias="com.tuarua.ffmpeg.gets.HardwareAcceleration")] 3 | public class HardwareAcceleration { 4 | public var name:String; 5 | /** 6 | * This method is omitted from the output. * * @private 7 | */ 8 | public function HardwareAcceleration(){} 9 | } 10 | } -------------------------------------------------------------------------------- /native_extension/src/com/tuarua/ffmpeg/gets/Layout.as: -------------------------------------------------------------------------------- 1 | package com.tuarua.ffmpeg.gets { 2 | [RemoteClass(alias="com.tuarua.ffmpeg.gets.Layout")] 3 | public class Layout { 4 | public var name:String; 5 | public var description:String; 6 | /** 7 | * This method is omitted from the output. * * @private 8 | */ 9 | public function Layout(){} 10 | } 11 | } -------------------------------------------------------------------------------- /native_extension/src/com/tuarua/ffmpeg/gets/Layouts.as: -------------------------------------------------------------------------------- 1 | package com.tuarua.ffmpeg.gets { 2 | [RemoteClass(alias="com.tuarua.ffmpeg.gets.Layouts")] 3 | public class Layouts { 4 | public var individual:Vector.; 5 | public var standard:Vector.; 6 | /** 7 | * This method is omitted from the output. * * @private 8 | */ 9 | public function Layouts(){} 10 | } 11 | } -------------------------------------------------------------------------------- /native_extension/src/com/tuarua/ffmpeg/gets/PixelFormat.as: -------------------------------------------------------------------------------- 1 | package com.tuarua.ffmpeg.gets { 2 | [RemoteClass(alias="com.tuarua.ffmpeg.gets.PixelFormat")] 3 | public class PixelFormat { 4 | public var name:String; 5 | public var isInput:Boolean; 6 | public var isOutput:Boolean; 7 | public var isHardwareAccelerated:Boolean; 8 | public var isPalleted:Boolean; 9 | public var isBitStream:Boolean; 10 | public var numComponents:int; 11 | public var bitsPerPixel:int; 12 | /** 13 | * This method is omitted from the output. * * @private 14 | */ 15 | public function PixelFormat(){} 16 | } 17 | } -------------------------------------------------------------------------------- /native_extension/src/com/tuarua/ffmpeg/gets/Protocol.as: -------------------------------------------------------------------------------- 1 | package com.tuarua.ffmpeg.gets { 2 | [RemoteClass(alias="com.tuarua.ffmpeg.gets.Protocol")] 3 | public class Protocol { 4 | public var name:String; 5 | /** 6 | * This method is omitted from the output. * * @private 7 | */ 8 | public function Protocol(){} 9 | } 10 | } -------------------------------------------------------------------------------- /native_extension/src/com/tuarua/ffmpeg/gets/Protocols.as: -------------------------------------------------------------------------------- 1 | package com.tuarua.ffmpeg.gets { 2 | [RemoteClass(alias="com.tuarua.ffmpeg.gets.Protocols")] 3 | public class Protocols { 4 | public var inputs:Vector.; 5 | public var outputs:Vector.; 6 | /** 7 | * This method is omitted from the output. * * @private 8 | */ 9 | public function Protocols(){} 10 | } 11 | } -------------------------------------------------------------------------------- /native_extension/src/com/tuarua/ffmpeg/gets/SampleFormat.as: -------------------------------------------------------------------------------- 1 | package com.tuarua.ffmpeg.gets { 2 | [RemoteClass(alias="com.tuarua.ffmpeg.gets.SampleFormat")] 3 | public class SampleFormat { 4 | public var name:String; 5 | public var depth:String; 6 | /** 7 | * This method is omitted from the output. * * @private 8 | */ 9 | public function SampleFormat(){} 10 | } 11 | } -------------------------------------------------------------------------------- /native_extension/src/com/tuarua/ffprobe/AudioStream.as: -------------------------------------------------------------------------------- 1 | package com.tuarua.ffprobe { 2 | [RemoteClass(alias="com.tuarua.ffprobe.AudioStream")] 3 | public class AudioStream extends Stream { 4 | public var sampleFormat:String; 5 | public var sampleRate:int; 6 | public var channels:int; 7 | public var channelLayout:String; 8 | public var bitsPerSample:int; 9 | public function AudioStream(){ 10 | 11 | } 12 | } 13 | } -------------------------------------------------------------------------------- /native_extension/src/com/tuarua/ffprobe/Format.as: -------------------------------------------------------------------------------- 1 | package com.tuarua.ffprobe { 2 | [RemoteClass(alias="com.tuarua.ffprobe.Format")]//rename to FormatContext 3 | public class Format extends Object { 4 | public var filename:String; 5 | public var numStreams:int; 6 | public var numPrograms:int; 7 | public var formatName:String; 8 | public var formatLongName:String; 9 | public var startTime:Number; 10 | public var duration:Number; 11 | public var size:int; //bytes 12 | public var bitRate:int; 13 | public var probeScore:int; 14 | public var tags:Object; 15 | public function Format(){ 16 | 17 | } 18 | } 19 | } -------------------------------------------------------------------------------- /native_extension/src/com/tuarua/ffprobe/Probe.as: -------------------------------------------------------------------------------- 1 | package com.tuarua.ffprobe { 2 | [RemoteClass(alias="com.tuarua.ffprobe.Probe")] 3 | public class Probe extends Object { 4 | public var format:Format; 5 | public var videoStreams:Vector.; 6 | public var audioStreams:Vector.; 7 | public var subtitleStreams:Vector.; 8 | public function Probe(){ 9 | 10 | } 11 | } 12 | } -------------------------------------------------------------------------------- /native_extension/src/com/tuarua/ffprobe/Stream.as: -------------------------------------------------------------------------------- 1 | package com.tuarua.ffprobe { 2 | [RemoteClass(alias="com.tuarua.ffprobe.Stream")] 3 | public class Stream extends Object { 4 | //Common 5 | public var index:int; 6 | public var id:String; 7 | public var codecName:String; 8 | public var codecLongName:String; 9 | public var profile:String; 10 | public var codecType:String; 11 | public var codecTimeBase:String; 12 | public var codecTagString:String; 13 | public var codecTag:int; 14 | 15 | public var duration:Number; 16 | public var durationTimestamp:Number; 17 | 18 | public var realFrameRate:Number; 19 | public var averageFrameRate:Number; 20 | public var timeBase:String; 21 | 22 | public var startPTS:Number; 23 | public var startTime:Number; 24 | 25 | public var bitRate:Number; 26 | public var maxBitRate:Number; 27 | public var bitsPerRawSample:Number; 28 | public var numFrames:Number; 29 | public var tags:Object; 30 | public var disposition:Vector.; //TODO create Disposition Object 31 | public function Stream(){ 32 | 33 | } 34 | } 35 | } -------------------------------------------------------------------------------- /native_extension/src/com/tuarua/ffprobe/SubtitleStream.as: -------------------------------------------------------------------------------- 1 | package com.tuarua.ffprobe { 2 | [RemoteClass(alias="com.tuarua.ffprobe.SubtitleStream")] 3 | public class SubtitleStream extends Stream { 4 | public var width:int; 5 | public var height:int; 6 | public function SubtitleStream(){} 7 | } 8 | } -------------------------------------------------------------------------------- /native_extension/src/com/tuarua/ffprobe/VideoStream.as: -------------------------------------------------------------------------------- 1 | package com.tuarua.ffprobe { 2 | [RemoteClass(alias="com.tuarua.ffprobe.VideoStream")] 3 | public class VideoStream extends Stream { 4 | public var width:int; 5 | public var height:int; 6 | public var codedWidth:int; 7 | public var codedHeight:int; 8 | public var hasBframes:int; 9 | public var sampleAspectRatio:String; 10 | public var displayAspectRatio:String; 11 | public var pixelFormat:String; 12 | public var level:int; 13 | public var colorRange:String; 14 | public var colorSpace:String; 15 | public var colorTransfer:String; 16 | public var colorPrimaries:String; 17 | public var chromaLocation:String; 18 | public var timecode:String; 19 | public var refs:int; 20 | public function VideoStream(){} 21 | } 22 | } -------------------------------------------------------------------------------- /native_extension/src/com/tuarua/ffprobe/events/ProbeEvent.as: -------------------------------------------------------------------------------- 1 | package com.tuarua.ffprobe.events { 2 | import flash.events.Event; 3 | public class ProbeEvent extends Event { 4 | public static const ON_PROBE_INFO:String = "onProbeInfo"; 5 | public static const NO_PROBE_INFO:String = "noProbeInfo"; 6 | public var params:Object; 7 | public function ProbeEvent(type:String, _params:Object=null, bubbles:Boolean=false, cancelable:Boolean=false) { 8 | super(type, bubbles, cancelable); 9 | this.params = _params; 10 | } 11 | public override function clone():Event { 12 | return new ProbeEvent(type, this.params, bubbles, cancelable); 13 | } 14 | public override function toString():String { 15 | return formatToString("ProbeEvent", "params", "type", "bubbles", "cancelable"); 16 | } 17 | } 18 | } -------------------------------------------------------------------------------- /native_library/.gitignore: -------------------------------------------------------------------------------- 1 | mac/ 2 | win/ 3 | source/ffmpeg/ffmpeg_dxva2.c 4 | source/ffmpeg/ffmpeg_qsv.c 5 | android/source-build 6 | 7 | 8 | -------------------------------------------------------------------------------- /native_library/android/AVANE/.gitignore: -------------------------------------------------------------------------------- 1 | *.iml 2 | .gradle 3 | /local.properties 4 | /.idea/workspace.xml 5 | /.idea/libraries 6 | .DS_Store 7 | /build 8 | /captures 9 | -------------------------------------------------------------------------------- /native_library/android/AVANE/.idea/compiler.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /native_library/android/AVANE/.idea/copyright/profiles_settings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /native_library/android/AVANE/.idea/encodings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /native_library/android/AVANE/.idea/gradle.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /native_library/android/AVANE/.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /native_library/android/AVANE/.idea/runConfigurations.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /native_library/android/AVANE/.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /native_library/android/AVANE/app/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /native_library/android/AVANE/app/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'com.android.library' 2 | 3 | android { 4 | compileSdkVersion 23 5 | buildToolsVersion "23.0.3" 6 | defaultConfig { 7 | minSdkVersion 19 8 | targetSdkVersion 23 9 | versionCode 1 10 | versionName "1.0" 11 | } 12 | buildTypes { 13 | release { 14 | minifyEnabled false 15 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 16 | } 17 | } 18 | } 19 | 20 | dependencies { 21 | compile fileTree(include: ['*.jar'], dir: 'libs') 22 | compile 'com.android.support:appcompat-v7:23.1.1' 23 | compile files('libs/FlashRuntimeExtensions.jar') 24 | compile project(':LibAVANE-Android') 25 | } 26 | -------------------------------------------------------------------------------- /native_library/android/AVANE/app/libs/FlashRuntimeExtensions.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tuarua/AVANE/2091da204ddaac4a5d2060262102dee48bd2cdd9/native_library/android/AVANE/app/libs/FlashRuntimeExtensions.jar -------------------------------------------------------------------------------- /native_library/android/AVANE/app/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # By default, the flags in this file are appended to flags specified 3 | # in D:\Android\sdk/tools/proguard/proguard-android.txt 4 | # You can edit the include path and order by changing the proguardFiles 5 | # directive in build.gradle. 6 | # 7 | # For more details, see 8 | # http://developer.android.com/guide/developing/tools/proguard.html 9 | 10 | # Add any project specific keep options here: 11 | 12 | # If your project uses WebView with JS, uncomment the following 13 | # and specify the fully qualified class name to the JavaScript interface 14 | # class: 15 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 16 | # public *; 17 | #} 18 | -------------------------------------------------------------------------------- /native_library/android/AVANE/app/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /native_library/android/AVANE/app/src/main/java/com/tuarua/AVANE.java: -------------------------------------------------------------------------------- 1 | package com.tuarua; 2 | 3 | import com.adobe.fre.FREContext; 4 | import com.adobe.fre.FREExtension; 5 | 6 | /** 7 | * Created by Eoin Landy on 09/10/2016. 8 | */ 9 | 10 | public class AVANE implements FREExtension { 11 | @Override 12 | public void initialize() { 13 | 14 | } 15 | 16 | @Override 17 | public FREContext createContext(String s) { 18 | AVANEContext context = new AVANEContext(); 19 | return context; 20 | } 21 | 22 | @Override 23 | public void dispose() { 24 | 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /native_library/android/AVANE/app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tuarua/AVANE/2091da204ddaac4a5d2060262102dee48bd2cdd9/native_library/android/AVANE/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /native_library/android/AVANE/app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tuarua/AVANE/2091da204ddaac4a5d2060262102dee48bd2cdd9/native_library/android/AVANE/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /native_library/android/AVANE/app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tuarua/AVANE/2091da204ddaac4a5d2060262102dee48bd2cdd9/native_library/android/AVANE/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /native_library/android/AVANE/app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tuarua/AVANE/2091da204ddaac4a5d2060262102dee48bd2cdd9/native_library/android/AVANE/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /native_library/android/AVANE/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tuarua/AVANE/2091da204ddaac4a5d2060262102dee48bd2cdd9/native_library/android/AVANE/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /native_library/android/AVANE/app/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #3F51B5 4 | #303F9F 5 | #FF4081 6 | 7 | -------------------------------------------------------------------------------- /native_library/android/AVANE/app/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | AVANE 3 | 4 | -------------------------------------------------------------------------------- /native_library/android/AVANE/app/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /native_library/android/AVANE/build.gradle: -------------------------------------------------------------------------------- 1 | // Top-level build file where you can add configuration options common to all sub-projects/modules. 2 | 3 | buildscript { 4 | repositories { 5 | jcenter() 6 | } 7 | dependencies { 8 | classpath 'com.android.tools.build:gradle:2.2.0' 9 | 10 | // NOTE: Do not place your application dependencies here; they belong 11 | // in the individual module build.gradle files 12 | } 13 | } 14 | 15 | allprojects { 16 | repositories { 17 | jcenter() 18 | } 19 | } 20 | 21 | task clean(type: Delete) { 22 | delete rootProject.buildDir 23 | } 24 | -------------------------------------------------------------------------------- /native_library/android/AVANE/gradle.properties: -------------------------------------------------------------------------------- 1 | # Project-wide Gradle settings. 2 | 3 | # IDE (e.g. Android Studio) users: 4 | # Gradle settings configured through the IDE *will override* 5 | # any settings specified in this file. 6 | 7 | # For more details on how to configure your build environment visit 8 | # http://www.gradle.org/docs/current/userguide/build_environment.html 9 | 10 | # Specifies the JVM arguments used for the daemon process. 11 | # The setting is particularly useful for tweaking memory settings. 12 | org.gradle.jvmargs=-Xmx1536m 13 | 14 | # When configured, Gradle will run in incubating parallel mode. 15 | # This option should only be used with decoupled projects. More details, visit 16 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects 17 | # org.gradle.parallel=true 18 | -------------------------------------------------------------------------------- /native_library/android/AVANE/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tuarua/AVANE/2091da204ddaac4a5d2060262102dee48bd2cdd9/native_library/android/AVANE/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /native_library/android/AVANE/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Mon Dec 28 10:00:20 PST 2015 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | distributionUrl=https\://services.gradle.org/distributions/gradle-2.14.1-all.zip 7 | -------------------------------------------------------------------------------- /native_library/android/AVANE/settings.gradle: -------------------------------------------------------------------------------- 1 | include ':app', ':LibAVANE-Android' 2 | project(':LibAVANE-Android').projectDir = new File('LibAVANE-Android') -------------------------------------------------------------------------------- /native_library/include/.gitignore: -------------------------------------------------------------------------------- 1 | mac/ 2 | ios/boost/ 3 | 4 | 5 | -------------------------------------------------------------------------------- /native_library/include/AVANE.h: -------------------------------------------------------------------------------- 1 | #ifdef _WIN32 2 | #include "FlashRuntimeExtensions.h" 3 | extern "C" { 4 | __declspec(dllexport) void TRAVAExtInizer(void** extData, FREContextInitializer* ctxInitializer, FREContextFinalizer* ctxFinalizer); 5 | __declspec(dllexport) void TRAVAExtFinizer(void* extData); 6 | } 7 | #elif __APPLE__ 8 | #include "TargetConditionals.h" 9 | #if (TARGET_IPHONE_SIMULATOR) || (TARGET_OS_IPHONE) 10 | #include "FlashRuntimeExtensions.h" 11 | #elif TARGET_OS_MAC 12 | #include 13 | 14 | #define EXPORT __attribute__((visibility("default"))) 15 | extern "C" { 16 | EXPORT 17 | void TRAVAExtInizer(void** extData, FREContextInitializer* ctxInitializer, FREContextFinalizer* ctxFinalizer); 18 | 19 | EXPORT 20 | void TRAVAExtFinizer(void* extData); 21 | } 22 | #else 23 | # error "Unknown Apple platform" 24 | #endif 25 | 26 | #include 27 | #include 28 | 29 | #endif 30 | -------------------------------------------------------------------------------- /native_library/include/Constants.hpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include 3 | #include 4 | class LogLevelConstants { 5 | public: 6 | enum Constants { 7 | QUIET = 0, 8 | INFO = 1, 9 | DBG = 2 10 | }; 11 | }; -------------------------------------------------------------------------------- /native_library/include/ObjCInterface.h: -------------------------------------------------------------------------------- 1 | #include 2 | #ifdef _WIN32 3 | #elif __APPLE__ 4 | #include "TargetConditionals.h" 5 | #if (TARGET_IPHONE_SIMULATOR) || (TARGET_OS_IPHONE) 6 | #include "FlashRuntimeExtensions.h" 7 | #elif TARGET_OS_MAC 8 | #include 9 | 10 | #else 11 | # error "Unknown Apple platform" 12 | #endif 13 | 14 | #endif 15 | class ObjCInterface 16 | { 17 | public: 18 | FREObject getCaptureDevices(); 19 | }; 20 | -------------------------------------------------------------------------------- /native_library/include/Utils.h: -------------------------------------------------------------------------------- 1 | // 2 | // Utils.hpp 3 | // AVANE 4 | // 5 | // Created by User on 25/04/2016. 6 | // Copyright © 2016 Tua Rua Ltd. All rights reserved. 7 | // 8 | 9 | #ifndef Utils_hpp 10 | #define Utils_hpp 11 | 12 | #ifdef _WIN32 13 | #include "FlashRuntimeExtensions.h" 14 | #include 15 | #include 16 | 17 | #elif __APPLE__ 18 | 19 | #include "TargetConditionals.h" 20 | #if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE 21 | // iOS Simulator 22 | #include "FlashRuntimeExtensions.h" 23 | 24 | #elif TARGET_OS_MAC 25 | // Other kinds of Mac OS 26 | #include 27 | 28 | #else 29 | # error "Unknown Apple platform" 30 | #endif 31 | 32 | #endif 33 | 34 | extern "C" { 35 | #define FRE_FUNCTION(fn) FREObject (fn)(FREContext context, void* functionData, uint32_t argc, FREObject argv[]) 36 | FRE_FUNCTION(getColors); 37 | FRE_FUNCTION(getLayouts); 38 | FRE_FUNCTION(getProtocols); 39 | FRE_FUNCTION(getFilters); 40 | FRE_FUNCTION(getPixelFormats); 41 | FRE_FUNCTION(getBitStreamFilters); 42 | FRE_FUNCTION(getDecoders); 43 | FRE_FUNCTION(getEncoders); 44 | FRE_FUNCTION(getCodecs); 45 | FRE_FUNCTION(getHardwareAccelerations); 46 | FRE_FUNCTION(getDevices); 47 | FRE_FUNCTION(getAvailableFormats); 48 | FRE_FUNCTION(getBuildConfiguration); 49 | FRE_FUNCTION(getLicense); 50 | FRE_FUNCTION(getVersion); 51 | FRE_FUNCTION(getSampleFormats); 52 | } 53 | #endif /* Utils_hpp */ 54 | -------------------------------------------------------------------------------- /native_library/include/ios/ffmpeg/compat/va_copy.h: -------------------------------------------------------------------------------- 1 | /* 2 | * MSVC Compatible va_copy macro 3 | * Copyright (c) 2012 Derek Buitenhuis 4 | * 5 | * This file is part of FFmpeg. 6 | * 7 | * FFmpeg is free software; you can redistribute it and/or 8 | * modify it under the terms of the GNU Lesser General Public 9 | * License as published by the Free Software Foundation; either 10 | * version 2.1 of the License, or (at your option) any later version. 11 | * 12 | * FFmpeg is distributed in the hope that it will be useful, 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 15 | * Lesser General Public License for more details. 16 | * 17 | * You should have received a copy of the GNU Lesser General Public 18 | * License along with FFmpeg; if not, write to the Free Software 19 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 20 | */ 21 | 22 | #ifndef COMPAT_VA_COPY_H 23 | #define COMPAT_VA_COPY_H 24 | 25 | #include 26 | 27 | #if !defined(va_copy) && defined(_MSC_VER) 28 | #define va_copy(dst, src) ((dst) = (src)) 29 | #endif 30 | #if !defined(va_copy) && defined(__GNUC__) && __GNUC__ < 3 31 | #define va_copy(dst, src) __va_copy(dst, src) 32 | #endif 33 | 34 | #endif /* COMPAT_VA_COPY_H */ 35 | -------------------------------------------------------------------------------- /native_library/include/ios/ffmpeg/libavcodec/jni.h: -------------------------------------------------------------------------------- 1 | /* 2 | * JNI public API functions 3 | * 4 | * Copyright (c) 2015-2016 Matthieu Bouron 5 | * 6 | * This file is part of FFmpeg. 7 | * 8 | * FFmpeg is free software; you can redistribute it and/or 9 | * modify it under the terms of the GNU Lesser General Public 10 | * License as published by the Free Software Foundation; either 11 | * version 2.1 of the License, or (at your option) any later version. 12 | * 13 | * FFmpeg is distributed in the hope that it will be useful, 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 16 | * Lesser General Public License for more details. 17 | * 18 | * You should have received a copy of the GNU Lesser General Public 19 | * License along with FFmpeg; if not, write to the Free Software 20 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 21 | */ 22 | 23 | #ifndef AVCODEC_JNI_H 24 | #define AVCODEC_JNI_H 25 | 26 | /* 27 | * Manually set a Java virtual machine which will be used to retrieve the JNI 28 | * environment. Once a Java VM is set it cannot be changed afterwards, meaning 29 | * you can call multiple times av_jni_set_java_vm with the same Java VM pointer 30 | * however it will error out if you try to set a different Java VM. 31 | * 32 | * @param vm Java virtual machine 33 | * @param log_ctx context used for logging, can be NULL 34 | * @return 0 on success, < 0 otherwise 35 | */ 36 | int av_jni_set_java_vm(void *vm, void *log_ctx); 37 | 38 | /* 39 | * Get the Java virtual machine which has been set with av_jni_set_java_vm. 40 | * 41 | * @param vm Java virtual machine 42 | * @return a pointer to the Java virtual machine 43 | */ 44 | void *av_jni_get_java_vm(void *log_ctx); 45 | 46 | #endif /* AVCODEC_JNI_H */ 47 | -------------------------------------------------------------------------------- /native_library/include/ios/ffmpeg/libavdevice/version.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of FFmpeg. 3 | * 4 | * FFmpeg is free software; you can redistribute it and/or 5 | * modify it under the terms of the GNU Lesser General Public 6 | * License as published by the Free Software Foundation; either 7 | * version 2.1 of the License, or (at your option) any later version. 8 | * 9 | * FFmpeg is distributed in the hope that it will be useful, 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 | * Lesser General Public License for more details. 13 | * 14 | * You should have received a copy of the GNU Lesser General Public 15 | * License along with FFmpeg; if not, write to the Free Software 16 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 17 | */ 18 | 19 | #ifndef AVDEVICE_VERSION_H 20 | #define AVDEVICE_VERSION_H 21 | 22 | /** 23 | * @file 24 | * @ingroup lavd 25 | * Libavdevice version macros 26 | */ 27 | 28 | #include "libavutil/version.h" 29 | 30 | #define LIBAVDEVICE_VERSION_MAJOR 57 31 | #define LIBAVDEVICE_VERSION_MINOR 2 32 | #define LIBAVDEVICE_VERSION_MICRO 100 33 | 34 | #define LIBAVDEVICE_VERSION_INT AV_VERSION_INT(LIBAVDEVICE_VERSION_MAJOR, \ 35 | LIBAVDEVICE_VERSION_MINOR, \ 36 | LIBAVDEVICE_VERSION_MICRO) 37 | #define LIBAVDEVICE_VERSION AV_VERSION(LIBAVDEVICE_VERSION_MAJOR, \ 38 | LIBAVDEVICE_VERSION_MINOR, \ 39 | LIBAVDEVICE_VERSION_MICRO) 40 | #define LIBAVDEVICE_BUILD LIBAVDEVICE_VERSION_INT 41 | 42 | #define LIBAVDEVICE_IDENT "Lavd" AV_STRINGIFY(LIBAVDEVICE_VERSION) 43 | 44 | /** 45 | * FF_API_* defines may be placed below to indicate public API that will be 46 | * dropped at a future version bump. The defines themselves are not part of 47 | * the public API and may change, break or disappear at any time. 48 | */ 49 | 50 | #endif /* AVDEVICE_VERSION_H */ 51 | -------------------------------------------------------------------------------- /native_library/include/ios/ffmpeg/libavfilter/avfiltergraph.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Filter graphs 3 | * copyright (c) 2007 Bobby Bingham 4 | * 5 | * This file is part of FFmpeg. 6 | * 7 | * FFmpeg is free software; you can redistribute it and/or 8 | * modify it under the terms of the GNU Lesser General Public 9 | * License as published by the Free Software Foundation; either 10 | * version 2.1 of the License, or (at your option) any later version. 11 | * 12 | * FFmpeg is distributed in the hope that it will be useful, 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 15 | * Lesser General Public License for more details. 16 | * 17 | * You should have received a copy of the GNU Lesser General Public 18 | * License along with FFmpeg; if not, write to the Free Software 19 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 20 | */ 21 | 22 | #ifndef AVFILTER_AVFILTERGRAPH_H 23 | #define AVFILTER_AVFILTERGRAPH_H 24 | 25 | #include "avfilter.h" 26 | #include "libavutil/log.h" 27 | 28 | #endif /* AVFILTER_AVFILTERGRAPH_H */ 29 | -------------------------------------------------------------------------------- /native_library/include/ios/ffmpeg/libavresample/version.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of FFmpeg. 3 | * 4 | * FFmpeg is free software; you can redistribute it and/or 5 | * modify it under the terms of the GNU Lesser General Public 6 | * License as published by the Free Software Foundation; either 7 | * version 2.1 of the License, or (at your option) any later version. 8 | * 9 | * FFmpeg is distributed in the hope that it will be useful, 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 | * Lesser General Public License for more details. 13 | * 14 | * You should have received a copy of the GNU Lesser General Public 15 | * License along with FFmpeg; if not, write to the Free Software 16 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 17 | */ 18 | 19 | #ifndef AVRESAMPLE_VERSION_H 20 | #define AVRESAMPLE_VERSION_H 21 | 22 | /** 23 | * @file 24 | * @ingroup lavr 25 | * Libavresample version macros. 26 | */ 27 | 28 | #include "libavutil/version.h" 29 | 30 | #define LIBAVRESAMPLE_VERSION_MAJOR 3 31 | #define LIBAVRESAMPLE_VERSION_MINOR 0 32 | #define LIBAVRESAMPLE_VERSION_MICRO 0 33 | 34 | #define LIBAVRESAMPLE_VERSION_INT AV_VERSION_INT(LIBAVRESAMPLE_VERSION_MAJOR, \ 35 | LIBAVRESAMPLE_VERSION_MINOR, \ 36 | LIBAVRESAMPLE_VERSION_MICRO) 37 | #define LIBAVRESAMPLE_VERSION AV_VERSION(LIBAVRESAMPLE_VERSION_MAJOR, \ 38 | LIBAVRESAMPLE_VERSION_MINOR, \ 39 | LIBAVRESAMPLE_VERSION_MICRO) 40 | #define LIBAVRESAMPLE_BUILD LIBAVRESAMPLE_VERSION_INT 41 | 42 | #define LIBAVRESAMPLE_IDENT "Lavr" AV_STRINGIFY(LIBAVRESAMPLE_VERSION) 43 | 44 | /** 45 | * FF_API_* defines may be placed below to indicate public API that will be 46 | * dropped at a future version bump. The defines themselves are not part of 47 | * the public API and may change, break or disappear at any time. 48 | */ 49 | 50 | #endif /* AVRESAMPLE_VERSION_H */ 51 | -------------------------------------------------------------------------------- /native_library/include/ios/ffmpeg/libavutil/aarch64/timer.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2015 Janne Grunau 3 | * 4 | * This file is part of FFmpeg. 5 | * 6 | * FFmpeg is free software; you can redistribute it and/or 7 | * modify it under the terms of the GNU Lesser General Public 8 | * License as published by the Free Software Foundation; either 9 | * version 2.1 of the License, or (at your option) any later version. 10 | * 11 | * FFmpeg is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 | * Lesser General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU Lesser General Public 17 | * License along with FFmpeg; if not, write to the Free Software 18 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 19 | */ 20 | 21 | #ifndef AVUTIL_AARCH64_TIMER_H 22 | #define AVUTIL_AARCH64_TIMER_H 23 | 24 | #include 25 | #include "config.h" 26 | 27 | #if HAVE_INLINE_ASM 28 | 29 | #define AV_READ_TIME read_time 30 | 31 | static inline uint64_t read_time(void) 32 | { 33 | uint64_t cycle_counter; 34 | __asm__ volatile( 35 | "isb \t\n" 36 | "mrs %0, pmccntr_el0 " 37 | : "=r"(cycle_counter) :: "memory" ); 38 | 39 | return cycle_counter; 40 | } 41 | 42 | #endif /* HAVE_INLINE_ASM */ 43 | 44 | #endif /* AVUTIL_AARCH64_TIMER_H */ 45 | -------------------------------------------------------------------------------- /native_library/include/ios/ffmpeg/libavutil/adler32.h: -------------------------------------------------------------------------------- 1 | /* 2 | * copyright (c) 2006 Mans Rullgard 3 | * 4 | * This file is part of FFmpeg. 5 | * 6 | * FFmpeg is free software; you can redistribute it and/or 7 | * modify it under the terms of the GNU Lesser General Public 8 | * License as published by the Free Software Foundation; either 9 | * version 2.1 of the License, or (at your option) any later version. 10 | * 11 | * FFmpeg is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 | * Lesser General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU Lesser General Public 17 | * License along with FFmpeg; if not, write to the Free Software 18 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 19 | */ 20 | 21 | /** 22 | * @file 23 | * @ingroup lavu_adler32 24 | * Public header for Adler-32 hash function implementation. 25 | */ 26 | 27 | #ifndef AVUTIL_ADLER32_H 28 | #define AVUTIL_ADLER32_H 29 | 30 | #include 31 | #include "attributes.h" 32 | 33 | /** 34 | * @defgroup lavu_adler32 Adler-32 35 | * @ingroup lavu_hash 36 | * Adler-32 hash function implementation. 37 | * 38 | * @{ 39 | */ 40 | 41 | /** 42 | * Calculate the Adler32 checksum of a buffer. 43 | * 44 | * Passing the return value to a subsequent av_adler32_update() call 45 | * allows the checksum of multiple buffers to be calculated as though 46 | * they were concatenated. 47 | * 48 | * @param adler initial checksum value 49 | * @param buf pointer to input buffer 50 | * @param len size of input buffer 51 | * @return updated checksum 52 | */ 53 | unsigned long av_adler32_update(unsigned long adler, const uint8_t *buf, 54 | unsigned int len) av_pure; 55 | 56 | /** 57 | * @} 58 | */ 59 | 60 | #endif /* AVUTIL_ADLER32_H */ 61 | -------------------------------------------------------------------------------- /native_library/include/ios/ffmpeg/libavutil/aes.h: -------------------------------------------------------------------------------- 1 | /* 2 | * copyright (c) 2007 Michael Niedermayer 3 | * 4 | * This file is part of FFmpeg. 5 | * 6 | * FFmpeg is free software; you can redistribute it and/or 7 | * modify it under the terms of the GNU Lesser General Public 8 | * License as published by the Free Software Foundation; either 9 | * version 2.1 of the License, or (at your option) any later version. 10 | * 11 | * FFmpeg is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 | * Lesser General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU Lesser General Public 17 | * License along with FFmpeg; if not, write to the Free Software 18 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 19 | */ 20 | 21 | #ifndef AVUTIL_AES_H 22 | #define AVUTIL_AES_H 23 | 24 | #include 25 | 26 | #include "attributes.h" 27 | #include "version.h" 28 | 29 | /** 30 | * @defgroup lavu_aes AES 31 | * @ingroup lavu_crypto 32 | * @{ 33 | */ 34 | 35 | extern const int av_aes_size; 36 | 37 | struct AVAES; 38 | 39 | /** 40 | * Allocate an AVAES context. 41 | */ 42 | struct AVAES *av_aes_alloc(void); 43 | 44 | /** 45 | * Initialize an AVAES context. 46 | * @param key_bits 128, 192 or 256 47 | * @param decrypt 0 for encryption, 1 for decryption 48 | */ 49 | int av_aes_init(struct AVAES *a, const uint8_t *key, int key_bits, int decrypt); 50 | 51 | /** 52 | * Encrypt or decrypt a buffer using a previously initialized context. 53 | * @param count number of 16 byte blocks 54 | * @param dst destination array, can be equal to src 55 | * @param src source array, can be equal to dst 56 | * @param iv initialization vector for CBC mode, if NULL then ECB will be used 57 | * @param decrypt 0 for encryption, 1 for decryption 58 | */ 59 | void av_aes_crypt(struct AVAES *a, uint8_t *dst, const uint8_t *src, int count, uint8_t *iv, int decrypt); 60 | 61 | /** 62 | * @} 63 | */ 64 | 65 | #endif /* AVUTIL_AES_H */ 66 | -------------------------------------------------------------------------------- /native_library/include/ios/ffmpeg/libavutil/arm/timer.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2009 Mans Rullgard 3 | * 4 | * This file is part of FFmpeg. 5 | * 6 | * FFmpeg is free software; you can redistribute it and/or 7 | * modify it under the terms of the GNU Lesser General Public 8 | * License as published by the Free Software Foundation; either 9 | * version 2.1 of the License, or (at your option) any later version. 10 | * 11 | * FFmpeg is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 | * Lesser General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU Lesser General Public 17 | * License along with FFmpeg; if not, write to the Free Software 18 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 19 | */ 20 | 21 | #ifndef AVUTIL_ARM_TIMER_H 22 | #define AVUTIL_ARM_TIMER_H 23 | 24 | #include 25 | #include "config.h" 26 | 27 | #if HAVE_INLINE_ASM && defined(__ARM_ARCH_7A__) 28 | 29 | #define AV_READ_TIME read_time 30 | 31 | static inline uint64_t read_time(void) 32 | { 33 | unsigned cc; 34 | __asm__ volatile ("mrc p15, 0, %0, c9, c13, 0" : "=r"(cc)); 35 | return cc; 36 | } 37 | 38 | #endif /* HAVE_INLINE_ASM && __ARM_ARCH_7A__ */ 39 | 40 | #endif /* AVUTIL_ARM_TIMER_H */ 41 | -------------------------------------------------------------------------------- /native_library/include/ios/ffmpeg/libavutil/avconfig.h: -------------------------------------------------------------------------------- 1 | /* Generated by ffconf */ 2 | #ifndef AVUTIL_AVCONFIG_H 3 | #define AVUTIL_AVCONFIG_H 4 | #define AV_HAVE_BIGENDIAN 0 5 | #define AV_HAVE_FAST_UNALIGNED 1 6 | #endif /* AVUTIL_AVCONFIG_H */ 7 | -------------------------------------------------------------------------------- /native_library/include/ios/ffmpeg/libavutil/ffversion.h: -------------------------------------------------------------------------------- 1 | /* Automatically generated by version.sh, do not manually edit! */ 2 | #ifndef AVUTIL_FFVERSION_H 3 | #define AVUTIL_FFVERSION_H 4 | #define FFMPEG_VERSION "3.2.2" 5 | #endif /* AVUTIL_FFVERSION_H */ 6 | -------------------------------------------------------------------------------- /native_library/include/ios/ffmpeg/libavutil/hwcontext_cuda.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of FFmpeg. 3 | * 4 | * FFmpeg is free software; you can redistribute it and/or 5 | * modify it under the terms of the GNU Lesser General Public 6 | * License as published by the Free Software Foundation; either 7 | * version 2.1 of the License, or (at your option) any later version. 8 | * 9 | * FFmpeg is distributed in the hope that it will be useful, 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 | * Lesser General Public License for more details. 13 | * 14 | * You should have received a copy of the GNU Lesser General Public 15 | * License along with FFmpeg; if not, write to the Free Software 16 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 17 | */ 18 | 19 | 20 | #ifndef AVUTIL_HWCONTEXT_CUDA_H 21 | #define AVUTIL_HWCONTEXT_CUDA_H 22 | 23 | #ifndef CUDA_VERSION 24 | #include 25 | #endif 26 | 27 | #include "pixfmt.h" 28 | 29 | /** 30 | * @file 31 | * An API-specific header for AV_HWDEVICE_TYPE_CUDA. 32 | * 33 | * This API supports dynamic frame pools. AVHWFramesContext.pool must return 34 | * AVBufferRefs whose data pointer is a CUdeviceptr. 35 | */ 36 | 37 | typedef struct AVCUDADeviceContextInternal AVCUDADeviceContextInternal; 38 | 39 | /** 40 | * This struct is allocated as AVHWDeviceContext.hwctx 41 | */ 42 | typedef struct AVCUDADeviceContext { 43 | CUcontext cuda_ctx; 44 | AVCUDADeviceContextInternal *internal; 45 | } AVCUDADeviceContext; 46 | 47 | /** 48 | * AVHWFramesContext.hwctx is currently not used 49 | */ 50 | 51 | #endif /* AVUTIL_HWCONTEXT_CUDA_H */ 52 | -------------------------------------------------------------------------------- /native_library/include/ios/ffmpeg/libavutil/hwcontext_qsv.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of FFmpeg. 3 | * 4 | * FFmpeg is free software; you can redistribute it and/or 5 | * modify it under the terms of the GNU Lesser General Public 6 | * License as published by the Free Software Foundation; either 7 | * version 2.1 of the License, or (at your option) any later version. 8 | * 9 | * FFmpeg is distributed in the hope that it will be useful, 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 | * Lesser General Public License for more details. 13 | * 14 | * You should have received a copy of the GNU Lesser General Public 15 | * License along with FFmpeg; if not, write to the Free Software 16 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 17 | */ 18 | 19 | #ifndef AVUTIL_HWCONTEXT_QSV_H 20 | #define AVUTIL_HWCONTEXT_QSV_H 21 | 22 | #include 23 | 24 | /** 25 | * @file 26 | * An API-specific header for AV_HWDEVICE_TYPE_QSV. 27 | * 28 | * This API does not support dynamic frame pools. AVHWFramesContext.pool must 29 | * contain AVBufferRefs whose data pointer points to an mfxFrameSurface1 struct. 30 | */ 31 | 32 | /** 33 | * This struct is allocated as AVHWDeviceContext.hwctx 34 | */ 35 | typedef struct AVQSVDeviceContext { 36 | mfxSession session; 37 | } AVQSVDeviceContext; 38 | 39 | /** 40 | * This struct is allocated as AVHWFramesContext.hwctx 41 | */ 42 | typedef struct AVQSVFramesContext { 43 | mfxFrameSurface1 *surfaces; 44 | int nb_surfaces; 45 | 46 | /** 47 | * A combination of MFX_MEMTYPE_* describing the frame pool. 48 | */ 49 | int frame_type; 50 | } AVQSVFramesContext; 51 | 52 | #endif /* AVUTIL_HWCONTEXT_QSV_H */ 53 | 54 | -------------------------------------------------------------------------------- /native_library/include/ios/ffmpeg/libavutil/hwcontext_vdpau.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of FFmpeg. 3 | * 4 | * FFmpeg is free software; you can redistribute it and/or 5 | * modify it under the terms of the GNU Lesser General Public 6 | * License as published by the Free Software Foundation; either 7 | * version 2.1 of the License, or (at your option) any later version. 8 | * 9 | * FFmpeg is distributed in the hope that it will be useful, 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 | * Lesser General Public License for more details. 13 | * 14 | * You should have received a copy of the GNU Lesser General Public 15 | * License along with FFmpeg; if not, write to the Free Software 16 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 17 | */ 18 | 19 | #ifndef AVUTIL_HWCONTEXT_VDPAU_H 20 | #define AVUTIL_HWCONTEXT_VDPAU_H 21 | 22 | #include 23 | 24 | /** 25 | * @file 26 | * An API-specific header for AV_HWDEVICE_TYPE_VDPAU. 27 | * 28 | * This API supports dynamic frame pools. AVHWFramesContext.pool must return 29 | * AVBufferRefs whose data pointer is a VdpVideoSurface. 30 | */ 31 | 32 | /** 33 | * This struct is allocated as AVHWDeviceContext.hwctx 34 | */ 35 | typedef struct AVVDPAUDeviceContext { 36 | VdpDevice device; 37 | VdpGetProcAddress *get_proc_address; 38 | } AVVDPAUDeviceContext; 39 | 40 | /** 41 | * AVHWFramesContext.hwctx is currently not used 42 | */ 43 | 44 | #endif /* AVUTIL_HWCONTEXT_VDPAU_H */ 45 | -------------------------------------------------------------------------------- /native_library/include/ios/ffmpeg/libavutil/intfloat.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2011 Mans Rullgard 3 | * 4 | * This file is part of FFmpeg. 5 | * 6 | * FFmpeg is free software; you can redistribute it and/or 7 | * modify it under the terms of the GNU Lesser General Public 8 | * License as published by the Free Software Foundation; either 9 | * version 2.1 of the License, or (at your option) any later version. 10 | * 11 | * FFmpeg is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 | * Lesser General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU Lesser General Public 17 | * License along with FFmpeg; if not, write to the Free Software 18 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 19 | */ 20 | 21 | #ifndef AVUTIL_INTFLOAT_H 22 | #define AVUTIL_INTFLOAT_H 23 | 24 | #include 25 | #include "attributes.h" 26 | 27 | union av_intfloat32 { 28 | uint32_t i; 29 | float f; 30 | }; 31 | 32 | union av_intfloat64 { 33 | uint64_t i; 34 | double f; 35 | }; 36 | 37 | /** 38 | * Reinterpret a 32-bit integer as a float. 39 | */ 40 | static av_always_inline float av_int2float(uint32_t i) 41 | { 42 | union av_intfloat32 v; 43 | v.i = i; 44 | return v.f; 45 | } 46 | 47 | /** 48 | * Reinterpret a float as a 32-bit integer. 49 | */ 50 | static av_always_inline uint32_t av_float2int(float f) 51 | { 52 | union av_intfloat32 v; 53 | v.f = f; 54 | return v.i; 55 | } 56 | 57 | /** 58 | * Reinterpret a 64-bit integer as a double. 59 | */ 60 | static av_always_inline double av_int2double(uint64_t i) 61 | { 62 | union av_intfloat64 v; 63 | v.i = i; 64 | return v.f; 65 | } 66 | 67 | /** 68 | * Reinterpret a double as a 64-bit integer. 69 | */ 70 | static av_always_inline uint64_t av_double2int(double f) 71 | { 72 | union av_intfloat64 v; 73 | v.f = f; 74 | return v.i; 75 | } 76 | 77 | #endif /* AVUTIL_INTFLOAT_H */ 78 | -------------------------------------------------------------------------------- /native_library/include/ios/ffmpeg/libavutil/macros.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of FFmpeg. 3 | * 4 | * FFmpeg is free software; you can redistribute it and/or 5 | * modify it under the terms of the GNU Lesser General Public 6 | * License as published by the Free Software Foundation; either 7 | * version 2.1 of the License, or (at your option) any later version. 8 | * 9 | * FFmpeg is distributed in the hope that it will be useful, 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 | * Lesser General Public License for more details. 13 | * 14 | * You should have received a copy of the GNU Lesser General Public 15 | * License along with FFmpeg; if not, write to the Free Software 16 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 17 | */ 18 | 19 | /** 20 | * @file 21 | * @ingroup lavu 22 | * Utility Preprocessor macros 23 | */ 24 | 25 | #ifndef AVUTIL_MACROS_H 26 | #define AVUTIL_MACROS_H 27 | 28 | /** 29 | * @addtogroup preproc_misc Preprocessor String Macros 30 | * 31 | * String manipulation macros 32 | * 33 | * @{ 34 | */ 35 | 36 | #define AV_STRINGIFY(s) AV_TOSTRING(s) 37 | #define AV_TOSTRING(s) #s 38 | 39 | #define AV_GLUE(a, b) a ## b 40 | #define AV_JOIN(a, b) AV_GLUE(a, b) 41 | 42 | /** 43 | * @} 44 | */ 45 | 46 | #define AV_PRAGMA(s) _Pragma(#s) 47 | 48 | #define FFALIGN(x, a) (((x)+(a)-1)&~((a)-1)) 49 | 50 | #endif /* AVUTIL_MACROS_H */ 51 | -------------------------------------------------------------------------------- /native_library/include/ios/ffmpeg/libavutil/motion_vector.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of FFmpeg. 3 | * 4 | * FFmpeg is free software; you can redistribute it and/or 5 | * modify it under the terms of the GNU Lesser General Public 6 | * License as published by the Free Software Foundation; either 7 | * version 2.1 of the License, or (at your option) any later version. 8 | * 9 | * FFmpeg is distributed in the hope that it will be useful, 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 | * Lesser General Public License for more details. 13 | * 14 | * You should have received a copy of the GNU Lesser General Public 15 | * License along with FFmpeg; if not, write to the Free Software 16 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 17 | */ 18 | 19 | #ifndef AVUTIL_MOTION_VECTOR_H 20 | #define AVUTIL_MOTION_VECTOR_H 21 | 22 | #include 23 | 24 | typedef struct AVMotionVector { 25 | /** 26 | * Where the current macroblock comes from; negative value when it comes 27 | * from the past, positive value when it comes from the future. 28 | * XXX: set exact relative ref frame reference instead of a +/- 1 "direction". 29 | */ 30 | int32_t source; 31 | /** 32 | * Width and height of the block. 33 | */ 34 | uint8_t w, h; 35 | /** 36 | * Absolute source position. Can be outside the frame area. 37 | */ 38 | int16_t src_x, src_y; 39 | /** 40 | * Absolute destination position. Can be outside the frame area. 41 | */ 42 | int16_t dst_x, dst_y; 43 | /** 44 | * Extra flag information. 45 | * Currently unused. 46 | */ 47 | uint64_t flags; 48 | /** 49 | * Motion vector 50 | * src_x = dst_x + motion_x / motion_scale 51 | * src_y = dst_y + motion_y / motion_scale 52 | */ 53 | int32_t motion_x, motion_y; 54 | uint16_t motion_scale; 55 | } AVMotionVector; 56 | 57 | #endif /* AVUTIL_MOTION_VECTOR_H */ 58 | -------------------------------------------------------------------------------- /native_library/include/ios/ffmpeg/libavutil/random_seed.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2009 Baptiste Coudurier 3 | * 4 | * This file is part of FFmpeg. 5 | * 6 | * FFmpeg is free software; you can redistribute it and/or 7 | * modify it under the terms of the GNU Lesser General Public 8 | * License as published by the Free Software Foundation; either 9 | * version 2.1 of the License, or (at your option) any later version. 10 | * 11 | * FFmpeg is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 | * Lesser General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU Lesser General Public 17 | * License along with FFmpeg; if not, write to the Free Software 18 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 19 | */ 20 | 21 | #ifndef AVUTIL_RANDOM_SEED_H 22 | #define AVUTIL_RANDOM_SEED_H 23 | 24 | #include 25 | /** 26 | * @addtogroup lavu_crypto 27 | * @{ 28 | */ 29 | 30 | /** 31 | * Get a seed to use in conjunction with random functions. 32 | * This function tries to provide a good seed at a best effort bases. 33 | * Its possible to call this function multiple times if more bits are needed. 34 | * It can be quite slow, which is why it should only be used as seed for a faster 35 | * PRNG. The quality of the seed depends on the platform. 36 | */ 37 | uint32_t av_get_random_seed(void); 38 | 39 | /** 40 | * @} 41 | */ 42 | 43 | #endif /* AVUTIL_RANDOM_SEED_H */ 44 | -------------------------------------------------------------------------------- /native_library/include/ios/ffmpeg/libavutil/replaygain.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of FFmpeg. 3 | * 4 | * FFmpeg is free software; you can redistribute it and/or 5 | * modify it under the terms of the GNU Lesser General Public 6 | * License as published by the Free Software Foundation; either 7 | * version 2.1 of the License, or (at your option) any later version. 8 | * 9 | * FFmpeg is distributed in the hope that it will be useful, 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 | * Lesser General Public License for more details. 13 | * 14 | * You should have received a copy of the GNU Lesser General Public 15 | * License along with FFmpeg; if not, write to the Free Software 16 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 17 | */ 18 | 19 | #ifndef AVUTIL_REPLAYGAIN_H 20 | #define AVUTIL_REPLAYGAIN_H 21 | 22 | #include 23 | 24 | /** 25 | * ReplayGain information (see 26 | * http://wiki.hydrogenaudio.org/index.php?title=ReplayGain_1.0_specification). 27 | * The size of this struct is a part of the public ABI. 28 | */ 29 | typedef struct AVReplayGain { 30 | /** 31 | * Track replay gain in microbels (divide by 100000 to get the value in dB). 32 | * Should be set to INT32_MIN when unknown. 33 | */ 34 | int32_t track_gain; 35 | /** 36 | * Peak track amplitude, with 100000 representing full scale (but values 37 | * may overflow). 0 when unknown. 38 | */ 39 | uint32_t track_peak; 40 | /** 41 | * Same as track_gain, but for the whole album. 42 | */ 43 | int32_t album_gain; 44 | /** 45 | * Same as track_peak, but for the whole album, 46 | */ 47 | uint32_t album_peak; 48 | } AVReplayGain; 49 | 50 | #endif /* AVUTIL_REPLAYGAIN_H */ 51 | -------------------------------------------------------------------------------- /native_library/include/ios/ffmpeg/libavutil/time.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2000-2003 Fabrice Bellard 3 | * 4 | * This file is part of FFmpeg. 5 | * 6 | * FFmpeg is free software; you can redistribute it and/or 7 | * modify it under the terms of the GNU Lesser General Public 8 | * License as published by the Free Software Foundation; either 9 | * version 2.1 of the License, or (at your option) any later version. 10 | * 11 | * FFmpeg is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 | * Lesser General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU Lesser General Public 17 | * License along with FFmpeg; if not, write to the Free Software 18 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 19 | */ 20 | 21 | #ifndef AVUTIL_TIME_H 22 | #define AVUTIL_TIME_H 23 | 24 | #include 25 | 26 | /** 27 | * Get the current time in microseconds. 28 | */ 29 | int64_t av_gettime(void); 30 | 31 | /** 32 | * Get the current time in microseconds since some unspecified starting point. 33 | * On platforms that support it, the time comes from a monotonic clock 34 | * This property makes this time source ideal for measuring relative time. 35 | * The returned values may not be monotonic on platforms where a monotonic 36 | * clock is not available. 37 | */ 38 | int64_t av_gettime_relative(void); 39 | 40 | /** 41 | * Indicates with a boolean result if the av_gettime_relative() time source 42 | * is monotonic. 43 | */ 44 | int av_gettime_relative_is_monotonic(void); 45 | 46 | /** 47 | * Sleep for a period of time. Although the duration is expressed in 48 | * microseconds, the actual delay may be rounded to the precision of the 49 | * system timer. 50 | * 51 | * @param usec Number of microseconds to sleep. 52 | * @return zero on success or (negative) error code. 53 | */ 54 | int av_usleep(unsigned usec); 55 | 56 | #endif /* AVUTIL_TIME_H */ 57 | -------------------------------------------------------------------------------- /native_library/include/ios/ffmpeg/libavutil/x86/emms.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of FFmpeg. 3 | * 4 | * FFmpeg is free software; you can redistribute it and/or 5 | * modify it under the terms of the GNU Lesser General Public 6 | * License as published by the Free Software Foundation; either 7 | * version 2.1 of the License, or (at your option) any later version. 8 | * 9 | * FFmpeg is distributed in the hope that it will be useful, 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 | * Lesser General Public License for more details. 13 | * 14 | * You should have received a copy of the GNU Lesser General Public 15 | * License along with FFmpeg; if not, write to the Free Software 16 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 17 | */ 18 | 19 | #ifndef AVUTIL_X86_EMMS_H 20 | #define AVUTIL_X86_EMMS_H 21 | 22 | #include "config.h" 23 | #include "libavutil/attributes.h" 24 | #include "libavutil/cpu.h" 25 | 26 | void avpriv_emms_yasm(void); 27 | 28 | #if HAVE_MMX_INLINE 29 | # define emms_c emms_c 30 | /** 31 | * Empty mmx state. 32 | * this must be called between any dsp function and float/double code. 33 | * for example sin(); dsp->idct_put(); emms_c(); cos() 34 | * Note, *alloc() and *free() also use float code in some libc implementations 35 | * thus this also applies to them or any function using them. 36 | */ 37 | static av_always_inline void emms_c(void) 38 | { 39 | /* Some inlined functions may also use mmx instructions regardless of 40 | * runtime cpuflags. With that in mind, we unconditionally empty the 41 | * mmx state if the target cpu chosen at configure time supports it. 42 | */ 43 | #if !defined(__MMX__) 44 | if(av_get_cpu_flags() & AV_CPU_FLAG_MMX) 45 | #endif 46 | __asm__ volatile ("emms" ::: "memory"); 47 | } 48 | #elif HAVE_MMX && HAVE_MM_EMPTY 49 | # include 50 | # define emms_c _mm_empty 51 | #elif HAVE_MMX_EXTERNAL 52 | # define emms_c avpriv_emms_yasm 53 | #endif /* HAVE_MMX_INLINE */ 54 | 55 | #endif /* AVUTIL_X86_EMMS_H */ 56 | -------------------------------------------------------------------------------- /native_library/include/ios/ffmpeg/libavutil/x86/timer.h: -------------------------------------------------------------------------------- 1 | /* 2 | * copyright (c) 2006 Michael Niedermayer 3 | * 4 | * This file is part of FFmpeg. 5 | * 6 | * FFmpeg is free software; you can redistribute it and/or 7 | * modify it under the terms of the GNU Lesser General Public 8 | * License as published by the Free Software Foundation; either 9 | * version 2.1 of the License, or (at your option) any later version. 10 | * 11 | * FFmpeg is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 | * Lesser General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU Lesser General Public 17 | * License along with FFmpeg; if not, write to the Free Software 18 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 19 | */ 20 | 21 | #ifndef AVUTIL_X86_TIMER_H 22 | #define AVUTIL_X86_TIMER_H 23 | 24 | #include 25 | 26 | #if HAVE_INLINE_ASM 27 | 28 | #define FF_TIMER_UNITS "decicycles" 29 | #define AV_READ_TIME read_time 30 | 31 | static inline uint64_t read_time(void) 32 | { 33 | uint32_t a, d; 34 | __asm__ volatile( 35 | #if ARCH_X86_64 || defined(__SSE2__) 36 | "lfence \n\t" 37 | #endif 38 | "rdtsc \n\t" 39 | : "=a" (a), "=d" (d)); 40 | return ((uint64_t)d << 32) + a; 41 | } 42 | 43 | #elif HAVE_RDTSC 44 | 45 | #include 46 | #define AV_READ_TIME __rdtsc 47 | 48 | #endif /* HAVE_INLINE_ASM */ 49 | 50 | #endif /* AVUTIL_X86_TIMER_H */ 51 | -------------------------------------------------------------------------------- /native_library/include/ios/ffmpeg/libpostproc/version.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Version macros. 3 | * 4 | * This file is part of FFmpeg. 5 | * 6 | * FFmpeg is free software; you can redistribute it and/or 7 | * modify it under the terms of the GNU Lesser General Public 8 | * License as published by the Free Software Foundation; either 9 | * version 2.1 of the License, or (at your option) any later version. 10 | * 11 | * FFmpeg is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 | * Lesser General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU Lesser General Public 17 | * License along with FFmpeg; if not, write to the Free Software 18 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 19 | */ 20 | 21 | #ifndef POSTPROC_VERSION_H 22 | #define POSTPROC_VERSION_H 23 | 24 | /** 25 | * @file 26 | * Libpostproc version macros 27 | */ 28 | 29 | #include "libavutil/avutil.h" 30 | 31 | #define LIBPOSTPROC_VERSION_MAJOR 54 32 | #define LIBPOSTPROC_VERSION_MINOR 2 33 | #define LIBPOSTPROC_VERSION_MICRO 100 34 | 35 | #define LIBPOSTPROC_VERSION_INT AV_VERSION_INT(LIBPOSTPROC_VERSION_MAJOR, \ 36 | LIBPOSTPROC_VERSION_MINOR, \ 37 | LIBPOSTPROC_VERSION_MICRO) 38 | #define LIBPOSTPROC_VERSION AV_VERSION(LIBPOSTPROC_VERSION_MAJOR, \ 39 | LIBPOSTPROC_VERSION_MINOR, \ 40 | LIBPOSTPROC_VERSION_MICRO) 41 | #define LIBPOSTPROC_BUILD LIBPOSTPROC_VERSION_INT 42 | 43 | #define LIBPOSTPROC_IDENT "postproc" AV_STRINGIFY(LIBPOSTPROC_VERSION) 44 | 45 | #ifndef FF_API_QP_TYPE 46 | #define FF_API_QP_TYPE (LIBPOSTPROC_VERSION_MAJOR < 55) 47 | #endif 48 | 49 | #endif /* POSTPROC_VERSION_H */ 50 | -------------------------------------------------------------------------------- /native_library/include/ios/ffmpeg/libswresample/version.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Version macros. 3 | * 4 | * This file is part of libswresample 5 | * 6 | * libswresample is free software; you can redistribute it and/or 7 | * modify it under the terms of the GNU Lesser General Public 8 | * License as published by the Free Software Foundation; either 9 | * version 2.1 of the License, or (at your option) any later version. 10 | * 11 | * libswresample is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 | * Lesser General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU Lesser General Public 17 | * License along with libswresample; if not, write to the Free Software 18 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 19 | */ 20 | 21 | #ifndef SWRESAMPLE_VERSION_H 22 | #define SWRESAMPLE_VERSION_H 23 | 24 | /** 25 | * @file 26 | * Libswresample version macros 27 | */ 28 | 29 | #include "libavutil/avutil.h" 30 | 31 | #define LIBSWRESAMPLE_VERSION_MAJOR 2 32 | #define LIBSWRESAMPLE_VERSION_MINOR 4 33 | #define LIBSWRESAMPLE_VERSION_MICRO 100 34 | 35 | #define LIBSWRESAMPLE_VERSION_INT AV_VERSION_INT(LIBSWRESAMPLE_VERSION_MAJOR, \ 36 | LIBSWRESAMPLE_VERSION_MINOR, \ 37 | LIBSWRESAMPLE_VERSION_MICRO) 38 | #define LIBSWRESAMPLE_VERSION AV_VERSION(LIBSWRESAMPLE_VERSION_MAJOR, \ 39 | LIBSWRESAMPLE_VERSION_MINOR, \ 40 | LIBSWRESAMPLE_VERSION_MICRO) 41 | #define LIBSWRESAMPLE_BUILD LIBSWRESAMPLE_VERSION_INT 42 | 43 | #define LIBSWRESAMPLE_IDENT "SwR" AV_STRINGIFY(LIBSWRESAMPLE_VERSION) 44 | 45 | #endif /* SWRESAMPLE_VERSION_H */ 46 | -------------------------------------------------------------------------------- /native_library/ios/AVANE/.gitignore: -------------------------------------------------------------------------------- 1 | # Created by https://www.gitignore.io/api/xcode 2 | 3 | ### Xcode ### 4 | # Xcode 5 | # 6 | # gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore 7 | 8 | ## Build generated 9 | build/ 10 | DerivedData/ 11 | 12 | ## Various settings 13 | *.pbxuser 14 | !default.pbxuser 15 | *.mode1v3 16 | !default.mode1v3 17 | *.mode2v3 18 | !default.mode2v3 19 | *.perspectivev3 20 | !default.perspectivev3 21 | xcuserdata/ 22 | 23 | ## Other 24 | *.moved-aside 25 | *.xccheckout 26 | *.xcscmblueprint 27 | 28 | dependancies/*.a -------------------------------------------------------------------------------- /native_library/ios/AVANE/.idea/AVANE.iml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /native_library/ios/AVANE/.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /native_library/ios/AVANE/.idea/xcode.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /native_library/ios/AVANE/AVANE.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 7 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /native_library/ios/AVANE/AVANE/AVANE_ios.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | @interface AVANE : NSObject 4 | 5 | @end -------------------------------------------------------------------------------- /native_library/ios/AVANE/AVANE/AVANE_ios.m: -------------------------------------------------------------------------------- 1 | #import "AVANE_ios.h" -------------------------------------------------------------------------------- /native_library/ios/AVANE/dependancies/RUNME.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # RUNME.sh 4 | # AVANE 5 | # 6 | # Created by User on 31/10/2016. 7 | # Copyright © 2016 Tua Rua Ltd. All rights reserved. 8 | 9 | CURR_DIR=`pwd` 10 | INCLUDE_DIR=$CURR_DIR/../../../include/ios 11 | 12 | git clone https://github.com/danoli3/ofxiOSBoost.git 13 | mkdir "$INCLUDE_DIR/boost" 14 | mkdir "$INCLUDE_DIR/boost/include" 15 | mv "ofxiOSBoost/libs/boost/include/boost" "$INCLUDE_DIR/boost/include/boost" 16 | mv "ofxiOSBoost/libs/boost/ios/libboost.a" "$CURR_DIR" 17 | 18 | rm -rf ofxiOSBoost 19 | 20 | wget https://github.com/tuarua/FFmpeg-for-iOS-Prebuilt/releases/download/3.2.2/ffmpeg-x264-ios-fat.zip 21 | unzip ffmpeg-x264-ios-fat.zip 22 | rm ffmpeg-x264-ios-fat.zip 23 | 24 | mv ffmpeg-x264-ios-fat/libavcodec.a libavcodec.a 25 | mv ffmpeg-x264-ios-fat/libavdevice.a libavdevice.a 26 | mv ffmpeg-x264-ios-fat/libavfilter.a libavfilter.a 27 | mv ffmpeg-x264-ios-fat/libavformat.a libavformat.a 28 | mv ffmpeg-x264-ios-fat/libavutil.a libavutil.a 29 | mv ffmpeg-x264-ios-fat/libpostproc.a libpostproc.a 30 | mv ffmpeg-x264-ios-fat/libswresample.a libswresample.a 31 | mv ffmpeg-x264-ios-fat/libswscale.a libswscale.a 32 | mv ffmpeg-x264-ios-fat/libx264.a libx264.a 33 | 34 | rm -r ffmpeg-x264-ios-fat 35 | -------------------------------------------------------------------------------- /params.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Avane", 3 | "tagline": "Adobe Air Native Extension for building video encoding applications", 4 | "body": "# AVANE\r\n\r\n[](https://flattr.com/submit/auto?user_id=tuarua&url=https%3A%2F%2Fgithub.com%2Ftuarua%2FAVANE&title=AVANE&language=en_GB&tags=github&category=software)\r\n\r\nAdobe Air Native Extension for OSX / WIN / Android / iOS (in beta) written in ActionScript 3 and C/C++ for encoding + decoding video and audio based on FFMpeg libraries.\r\nSamples included.\r\n\r\nUniversal player - demo showing flash playing mp4, mkv, webm encoded in h264, hevc and vp9. Also showcases live HLS streams from NASA. \r\nN.B. Depending on your computer setup HEVC decoding may be very slow. So a 6 year old mac mini is not going to cut it :)\r\n\r\nAdvanced client - demo similar to Handbrake \r\n\r\nDesktop capture - demo using screen-capture-recorder to capture desktop (Windows only)\r\n\r\n\r\n\r\n\r\n### AS Docs \r\nhttps://tuarua.github.io/AVANE/native_extension/docs/asdocs/\r\n\r\n\r\n\r\n### Features\r\n - Harness the power of FFmpeg with this unoffical ANE version.\r\n\r\n### Tech\r\n\r\nAVANE uses the following libraries:\r\n\r\n* [https://github.com/ShiftMediaProject/FFmpeg] - ShiftMediaProject FFmpeg\r\n* [http://www.boost.org] - C++ portable libraries\r\n* [http://www.frogtoss.com/labs] - Native File Dialog\r\n* [https://nlohmann.github.io/json] - JSON for Modern C++\r\n* [http://jsoncpp.sourceforge.net/] - Json-cpp\r\n* [https://github.com/rdp/screen-capture-recorder-to-video-windows-free] - required for desktop capture example\r\n\r\n\r\n### Prerequisites\r\n\r\nYou will need\r\n \r\n - Flash Builder 4.7\r\n - AIR 22 SDK\r\n\r\n### Todos\r\n - Full source code of ANE\r\n", 5 | "note": "Don't delete this file! It's used internally to help with page regeneration." 6 | } -------------------------------------------------------------------------------- /screenshots/screen-shot-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tuarua/AVANE/2091da204ddaac4a5d2060262102dee48bd2cdd9/screenshots/screen-shot-1.png -------------------------------------------------------------------------------- /screenshots/screen-shot-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tuarua/AVANE/2091da204ddaac4a5d2060262102dee48bd2cdd9/screenshots/screen-shot-2.png -------------------------------------------------------------------------------- /screenshots/screen-shot-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tuarua/AVANE/2091da204ddaac4a5d2060262102dee48bd2cdd9/screenshots/screen-shot-3.png --------------------------------------------------------------------------------
33 | This document is designed to be viewed using the frames feature. If you see this message, you are using a non-frame-capable web client. 34 | 35 | Link to Non-frame version. 36 |
This document is designed to be viewed using the frames feature. If you see this message, you are using a non-frame-capable web client. 12 | 13 | Link toNon-frame version. 14 |
Type of bsf, v or a
eg aac_adtstoasc
Friendly name
Descriptio
"dshow" or "avfoundation"
The device path (if determined) is not intended for display.
Is Audio capture device. A device can be both audio AND video so can appear twice in the list
Is Audio video device. A device can be both audio AND video so can appear twice in the list
The index of the device
Returns the capabilities of the capture device if available
Width
Height
Maximum frame rate
Minimum frame rate