├── README.md
├── adjust.png
├── android
├── FilterEngineDemo
│ ├── .gitignore
│ ├── .idea
│ │ ├── caches
│ │ │ └── build_file_checksums.ser
│ │ ├── codeStyles
│ │ │ └── Project.xml
│ │ ├── dictionaries
│ │ │ └── zhouhaibo.xml
│ │ ├── gradle.xml
│ │ ├── misc.xml
│ │ └── runConfigurations.xml
│ ├── app
│ │ ├── .gitignore
│ │ ├── build.gradle
│ │ ├── proguard-rules.pro
│ │ └── src
│ │ │ ├── androidTest
│ │ │ └── java
│ │ │ │ └── com
│ │ │ │ └── me
│ │ │ │ └── filterenginedemo
│ │ │ │ └── ExampleInstrumentedTest.java
│ │ │ ├── main
│ │ │ ├── AndroidManifest.xml
│ │ │ ├── java
│ │ │ │ └── com
│ │ │ │ │ └── me
│ │ │ │ │ └── filterenginedemo
│ │ │ │ │ ├── CameraFilterActivity.java
│ │ │ │ │ ├── ImageFilterActivity.java
│ │ │ │ │ ├── MainActivity.java
│ │ │ │ │ ├── MeApplication.java
│ │ │ │ │ ├── VideoFilterActivity.java
│ │ │ │ │ ├── fragment
│ │ │ │ │ ├── ConstantFilters.java
│ │ │ │ │ ├── Filter.java
│ │ │ │ │ ├── FilterFragment.java
│ │ │ │ │ └── NumberSeekBar.java
│ │ │ │ │ └── view
│ │ │ │ │ └── ImageFilterView.java
│ │ │ └── res
│ │ │ │ ├── anim
│ │ │ │ ├── translate_dialog_in.xml
│ │ │ │ └── translate_dialog_out.xml
│ │ │ │ ├── drawable-nodpi
│ │ │ │ ├── amaro.jpg
│ │ │ │ ├── amatorka.jpg
│ │ │ │ ├── antique.jpg
│ │ │ │ ├── blackcat.jpg
│ │ │ │ ├── brannan.jpg
│ │ │ │ ├── calm.jpg
│ │ │ │ ├── cool.jpg
│ │ │ │ ├── crayon.jpg
│ │ │ │ ├── earlybird.jpg
│ │ │ │ ├── emerald.jpg
│ │ │ │ ├── evergreen.jpg
│ │ │ │ ├── fairytale.jpg
│ │ │ │ ├── healthy.jpg
│ │ │ │ ├── hefe.jpg
│ │ │ │ ├── highkey.jpg
│ │ │ │ ├── hudson.jpg
│ │ │ │ ├── i1977.jpg
│ │ │ │ ├── inkwell.jpg
│ │ │ │ ├── kelvin.jpg
│ │ │ │ ├── latte.jpg
│ │ │ │ ├── lomo.jpg
│ │ │ │ ├── nashville.jpg
│ │ │ │ ├── nostalgia.jpg
│ │ │ │ ├── origin.jpg
│ │ │ │ ├── rise.jpg
│ │ │ │ ├── romance.jpg
│ │ │ │ ├── sakura.jpg
│ │ │ │ ├── sierra.jpg
│ │ │ │ ├── sketch.jpg
│ │ │ │ ├── sunrise.jpg
│ │ │ │ ├── sunset.jpg
│ │ │ │ ├── sutro.jpg
│ │ │ │ ├── sweets.jpg
│ │ │ │ ├── tender.jpg
│ │ │ │ ├── toaster.jpg
│ │ │ │ ├── valencia.jpg
│ │ │ │ ├── walden.jpg
│ │ │ │ ├── warm.jpg
│ │ │ │ ├── whitecat.jpg
│ │ │ │ └── xproll.jpg
│ │ │ │ ├── drawable-v24
│ │ │ │ └── ic_launcher_foreground.xml
│ │ │ │ ├── drawable
│ │ │ │ ├── bg_publish_seekbar.xml
│ │ │ │ ├── bgview.jpg
│ │ │ │ ├── ic_launcher_background.xml
│ │ │ │ ├── icon_adjust_brightness.png
│ │ │ │ ├── icon_adjust_contrast.png
│ │ │ │ ├── icon_adjust_exposure.png
│ │ │ │ ├── icon_adjust_hue.png
│ │ │ │ ├── icon_adjust_off.png
│ │ │ │ ├── icon_adjust_on.png
│ │ │ │ ├── icon_adjust_saturation.png
│ │ │ │ ├── icon_adjust_sharpen.png
│ │ │ │ ├── icon_beautify_off.png
│ │ │ │ ├── icon_beautify_on.png
│ │ │ │ ├── icon_bigeye.png
│ │ │ │ ├── icon_blur.png
│ │ │ │ ├── icon_filter_off.png
│ │ │ │ ├── icon_filter_on.png
│ │ │ │ ├── icon_redden.png
│ │ │ │ ├── icon_whitening.png
│ │ │ │ ├── play_seek_bar.xml
│ │ │ │ └── thumb_seek_normal.xml
│ │ │ │ ├── layout
│ │ │ │ ├── activity_image_filter.xml
│ │ │ │ ├── activity_main.xml
│ │ │ │ ├── activity_video_filter.xml
│ │ │ │ ├── filter_item.xml
│ │ │ │ ├── filter_list_item.xml
│ │ │ │ └── fragment_filter.xml
│ │ │ │ ├── mipmap-anydpi-v26
│ │ │ │ ├── ic_launcher.xml
│ │ │ │ └── ic_launcher_round.xml
│ │ │ │ ├── mipmap-hdpi
│ │ │ │ ├── ic_launcher.png
│ │ │ │ └── ic_launcher_round.png
│ │ │ │ ├── mipmap-mdpi
│ │ │ │ ├── ic_launcher.png
│ │ │ │ └── ic_launcher_round.png
│ │ │ │ ├── mipmap-xhdpi
│ │ │ │ ├── ic_launcher.png
│ │ │ │ └── ic_launcher_round.png
│ │ │ │ ├── mipmap-xxhdpi
│ │ │ │ ├── ic_launcher.png
│ │ │ │ └── ic_launcher_round.png
│ │ │ │ ├── mipmap-xxxhdpi
│ │ │ │ ├── ic_launcher.png
│ │ │ │ └── ic_launcher_round.png
│ │ │ │ └── values
│ │ │ │ ├── attr.xml
│ │ │ │ ├── colors.xml
│ │ │ │ ├── dimens.xml
│ │ │ │ ├── strings.xml
│ │ │ │ └── styles.xml
│ │ │ └── test
│ │ │ └── java
│ │ │ └── com
│ │ │ └── me
│ │ │ └── filterenginedemo
│ │ │ └── ExampleUnitTest.java
│ ├── build.gradle
│ ├── filterengine
│ │ ├── .gitignore
│ │ ├── CMakeLists.txt
│ │ ├── build.gradle
│ │ ├── proguard-rules.pro
│ │ └── src
│ │ │ ├── androidTest
│ │ │ └── java
│ │ │ │ └── com
│ │ │ │ └── me
│ │ │ │ └── filterengine
│ │ │ │ └── ExampleInstrumentedTest.java
│ │ │ ├── main
│ │ │ ├── AndroidManifest.xml
│ │ │ ├── assets
│ │ │ │ └── filters
│ │ │ │ │ ├── I1977
│ │ │ │ │ ├── config
│ │ │ │ │ └── nmap.png
│ │ │ │ │ ├── amaro
│ │ │ │ │ ├── amaro_map.png
│ │ │ │ │ ├── blackboard.png
│ │ │ │ │ ├── config
│ │ │ │ │ └── overlay_map.png
│ │ │ │ │ ├── amatorka
│ │ │ │ │ ├── amatorka.png
│ │ │ │ │ └── config
│ │ │ │ │ ├── antique
│ │ │ │ │ ├── config
│ │ │ │ │ └── curve.bin
│ │ │ │ │ ├── blackcat
│ │ │ │ │ ├── config
│ │ │ │ │ └── curve.bin
│ │ │ │ │ ├── brannan
│ │ │ │ │ ├── brannan_blowout.png
│ │ │ │ │ ├── brannan_contrast.png
│ │ │ │ │ ├── brannan_luma.png
│ │ │ │ │ ├── brannan_process.png
│ │ │ │ │ ├── brannan_screen.png
│ │ │ │ │ └── config
│ │ │ │ │ ├── calm
│ │ │ │ │ ├── config
│ │ │ │ │ ├── curve.bin
│ │ │ │ │ ├── mask.jpg
│ │ │ │ │ └── mask1.jpg
│ │ │ │ │ ├── cool
│ │ │ │ │ ├── config
│ │ │ │ │ └── curve.bin
│ │ │ │ │ ├── crayon
│ │ │ │ │ └── config
│ │ │ │ │ ├── earlybird
│ │ │ │ │ ├── config
│ │ │ │ │ ├── earlybird_blowout.png
│ │ │ │ │ ├── earlybird_curves.png
│ │ │ │ │ ├── earlybird_map.png
│ │ │ │ │ ├── earlybird_overlay_map.png
│ │ │ │ │ └── vignette_map.png
│ │ │ │ │ ├── emerald
│ │ │ │ │ ├── config
│ │ │ │ │ └── curve.bin
│ │ │ │ │ ├── evergreen
│ │ │ │ │ ├── config
│ │ │ │ │ └── curve.bin
│ │ │ │ │ ├── fairytale
│ │ │ │ │ ├── config
│ │ │ │ │ └── fairy_tale.png
│ │ │ │ │ ├── filter.jpg
│ │ │ │ │ ├── healthy
│ │ │ │ │ ├── config
│ │ │ │ │ ├── curve.bin
│ │ │ │ │ └── mask.jpg
│ │ │ │ │ ├── hefe
│ │ │ │ │ ├── config
│ │ │ │ │ ├── edge_burn.png
│ │ │ │ │ ├── hefe_gradient_map.png
│ │ │ │ │ ├── hefe_map.png
│ │ │ │ │ ├── hefe_metal.png
│ │ │ │ │ └── hefe_soft_light.png
│ │ │ │ │ ├── highkey
│ │ │ │ │ ├── config
│ │ │ │ │ └── lookup_highkey.png
│ │ │ │ │ ├── hudson
│ │ │ │ │ ├── config
│ │ │ │ │ ├── hudson_background.png
│ │ │ │ │ ├── hudson_map.png
│ │ │ │ │ └── overlay_map.png
│ │ │ │ │ ├── icon
│ │ │ │ │ └── origin.jpg
│ │ │ │ │ ├── inkwell
│ │ │ │ │ ├── config
│ │ │ │ │ └── inkwell.png
│ │ │ │ │ ├── kelvin
│ │ │ │ │ ├── config
│ │ │ │ │ └── kelvin_map.png
│ │ │ │ │ ├── latte
│ │ │ │ │ ├── config
│ │ │ │ │ └── curve.bin
│ │ │ │ │ ├── lomo
│ │ │ │ │ ├── config
│ │ │ │ │ ├── lomo_map.png
│ │ │ │ │ └── vignette_map.png
│ │ │ │ │ ├── nashville
│ │ │ │ │ ├── config
│ │ │ │ │ └── nashville_map.png
│ │ │ │ │ ├── nostalgia
│ │ │ │ │ ├── config
│ │ │ │ │ ├── curve.bin
│ │ │ │ │ └── curve1.bin
│ │ │ │ │ ├── rise
│ │ │ │ │ ├── blackboard.png
│ │ │ │ │ ├── config
│ │ │ │ │ ├── overlay_map.png
│ │ │ │ │ └── rise_map.png
│ │ │ │ │ ├── romance
│ │ │ │ │ ├── config
│ │ │ │ │ └── curve.bin
│ │ │ │ │ ├── sakura
│ │ │ │ │ ├── config
│ │ │ │ │ └── curve.bin
│ │ │ │ │ ├── sierra
│ │ │ │ │ ├── config
│ │ │ │ │ ├── overlay_map.png
│ │ │ │ │ ├── sierra_map.png
│ │ │ │ │ └── sierra_vignette.png
│ │ │ │ │ ├── sketch
│ │ │ │ │ └── config
│ │ │ │ │ ├── sunrise
│ │ │ │ │ ├── config
│ │ │ │ │ ├── curve.bin
│ │ │ │ │ ├── mask.jpg
│ │ │ │ │ ├── mask1.jpg
│ │ │ │ │ └── mask2.jpg
│ │ │ │ │ ├── sunset
│ │ │ │ │ ├── config
│ │ │ │ │ ├── curve.bin
│ │ │ │ │ ├── mask.jpg
│ │ │ │ │ └── mask1.jpg
│ │ │ │ │ ├── sutro
│ │ │ │ │ ├── config
│ │ │ │ │ ├── soft_light.png
│ │ │ │ │ ├── sutro_curves.png
│ │ │ │ │ ├── sutro_edge_burn.png
│ │ │ │ │ ├── sutro_metal.png
│ │ │ │ │ └── vignette_map.png
│ │ │ │ │ ├── sweets
│ │ │ │ │ ├── config
│ │ │ │ │ ├── curve.bin
│ │ │ │ │ └── mask.jpg
│ │ │ │ │ ├── tender
│ │ │ │ │ ├── config
│ │ │ │ │ ├── curve.bin
│ │ │ │ │ └── mask.jpg
│ │ │ │ │ ├── toaster
│ │ │ │ │ ├── config
│ │ │ │ │ ├── toaster_color_shift.png
│ │ │ │ │ ├── toaster_curves.png
│ │ │ │ │ ├── toaster_metal.png
│ │ │ │ │ ├── toaster_overlay_map_warm.png
│ │ │ │ │ └── toaster_soft_light.png
│ │ │ │ │ ├── valencia
│ │ │ │ │ ├── config
│ │ │ │ │ ├── valencia_gradient_map.png
│ │ │ │ │ └── valencia_map.png
│ │ │ │ │ ├── walden
│ │ │ │ │ ├── config
│ │ │ │ │ ├── vignette_map.png
│ │ │ │ │ └── walden_map.png
│ │ │ │ │ ├── warm
│ │ │ │ │ ├── config
│ │ │ │ │ ├── curve.bin
│ │ │ │ │ ├── mask.jpg
│ │ │ │ │ └── mask1.jpg
│ │ │ │ │ ├── whitecat
│ │ │ │ │ ├── config
│ │ │ │ │ └── curve.bin
│ │ │ │ │ └── xproll
│ │ │ │ │ ├── config
│ │ │ │ │ ├── vignette_map.png
│ │ │ │ │ └── xpro_map.png
│ │ │ ├── cpp
│ │ │ │ ├── filter_handler_jni.cpp
│ │ │ │ └── filter_handler_jni.h
│ │ │ ├── java
│ │ │ │ └── com
│ │ │ │ │ └── me
│ │ │ │ │ └── filterengine
│ │ │ │ │ ├── FileUtils.java
│ │ │ │ │ └── FilterHandler.java
│ │ │ ├── jniLibs
│ │ │ │ └── armeabi-v7a
│ │ │ │ │ ├── include
│ │ │ │ │ ├── libavcodec
│ │ │ │ │ │ ├── avcodec.h
│ │ │ │ │ │ ├── avdct.h
│ │ │ │ │ │ ├── avfft.h
│ │ │ │ │ │ ├── d3d11va.h
│ │ │ │ │ │ ├── dirac.h
│ │ │ │ │ │ ├── dv_profile.h
│ │ │ │ │ │ ├── dxva2.h
│ │ │ │ │ │ ├── jni.h
│ │ │ │ │ │ ├── mediacodec.h
│ │ │ │ │ │ ├── qsv.h
│ │ │ │ │ │ ├── vaapi.h
│ │ │ │ │ │ ├── vda.h
│ │ │ │ │ │ ├── vdpau.h
│ │ │ │ │ │ ├── version.h
│ │ │ │ │ │ ├── videotoolbox.h
│ │ │ │ │ │ ├── vorbis_parser.h
│ │ │ │ │ │ └── xvmc.h
│ │ │ │ │ ├── libavdevice
│ │ │ │ │ │ ├── avdevice.h
│ │ │ │ │ │ └── version.h
│ │ │ │ │ ├── libavfilter
│ │ │ │ │ │ ├── avfilter.h
│ │ │ │ │ │ ├── avfiltergraph.h
│ │ │ │ │ │ ├── buffersink.h
│ │ │ │ │ │ ├── buffersrc.h
│ │ │ │ │ │ └── version.h
│ │ │ │ │ ├── libavformat
│ │ │ │ │ │ ├── avc.h
│ │ │ │ │ │ ├── avformat.h
│ │ │ │ │ │ ├── avio.h
│ │ │ │ │ │ ├── internal.h
│ │ │ │ │ │ ├── url.h
│ │ │ │ │ │ └── version.h
│ │ │ │ │ ├── libavresample
│ │ │ │ │ │ ├── avresample.h
│ │ │ │ │ │ └── version.h
│ │ │ │ │ ├── libavutil
│ │ │ │ │ │ ├── adler32.h
│ │ │ │ │ │ ├── aes.h
│ │ │ │ │ │ ├── aes_ctr.h
│ │ │ │ │ │ ├── application.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
│ │ │ │ │ │ ├── dns_cache.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_d3d11va.h
│ │ │ │ │ │ ├── hwcontext_drm.h
│ │ │ │ │ │ ├── hwcontext_dxva2.h
│ │ │ │ │ │ ├── hwcontext_qsv.h
│ │ │ │ │ │ ├── hwcontext_vaapi.h
│ │ │ │ │ │ ├── hwcontext_vdpau.h
│ │ │ │ │ │ ├── hwcontext_videotoolbox.h
│ │ │ │ │ │ ├── imgutils.h
│ │ │ │ │ │ ├── intfloat.h
│ │ │ │ │ │ ├── intreadwrite.h
│ │ │ │ │ │ ├── lfg.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
│ │ │ │ │ │ ├── thread.h
│ │ │ │ │ │ ├── threadmessage.h
│ │ │ │ │ │ ├── time.h
│ │ │ │ │ │ ├── timecode.h
│ │ │ │ │ │ ├── timestamp.h
│ │ │ │ │ │ ├── tree.h
│ │ │ │ │ │ ├── twofish.h
│ │ │ │ │ │ ├── version.h
│ │ │ │ │ │ └── xtea.h
│ │ │ │ │ ├── libffmpeg
│ │ │ │ │ │ └── config.h
│ │ │ │ │ ├── libpostproc
│ │ │ │ │ │ ├── postprocess.h
│ │ │ │ │ │ └── version.h
│ │ │ │ │ ├── libswresample
│ │ │ │ │ │ ├── swresample.h
│ │ │ │ │ │ └── version.h
│ │ │ │ │ └── libswscale
│ │ │ │ │ │ ├── swscale.h
│ │ │ │ │ │ └── version.h
│ │ │ │ │ └── libijkffmpeg.so
│ │ │ └── res
│ │ │ │ └── values
│ │ │ │ └── strings.xml
│ │ │ └── test
│ │ │ └── java
│ │ │ └── com
│ │ │ └── me
│ │ │ └── filterengine
│ │ │ └── ExampleUnitTest.java
│ ├── gradle.properties
│ ├── gradle
│ │ └── wrapper
│ │ │ ├── gradle-wrapper.jar
│ │ │ └── gradle-wrapper.properties
│ ├── gradlew
│ ├── gradlew.bat
│ └── settings.gradle
└── Readme.md
├── beautify.png
├── filter.gif
└── src
├── beautify
├── beautify_filter.cpp
├── beautify_filter.h
├── beautify_manager.cpp
└── beautify_manager.h
├── common
├── common.h
├── filter_interface.cpp
├── filter_interface.h
└── platform.h
├── decoder
├── picture_decoder.cpp
└── picture_decoder.h
├── effect
├── effect_interface.cpp
└── effect_interface.h
├── filter
├── adjust
│ ├── adjust_filter.cpp
│ ├── adjust_filter.h
│ ├── adjust_filter_manager.cpp
│ └── adjust_filter_manager.h
├── advanced
│ ├── I1977_filter.cpp
│ ├── I1977_filter.h
│ ├── amaro_filter.cpp
│ ├── amaro_filter.h
│ ├── brannan_filter.cpp
│ ├── brannan_filter.h
│ ├── earlybird_filter.cpp
│ ├── earlybird_filter.h
│ ├── hefe_filter.cpp
│ ├── hefe_filter.h
│ ├── hudson_filter.cpp
│ ├── hudson_filter.h
│ ├── inkwell_filter.cpp
│ ├── inkwell_filter.h
│ ├── lomo_filter.cpp
│ ├── lomo_filter.h
│ ├── lordkelvin_filter.cpp
│ ├── lordkelvin_filter.h
│ ├── nashville_filter.cpp
│ ├── nashville_filter.h
│ ├── rise_filter.cpp
│ ├── rise_filter.h
│ ├── sierra_filter.cpp
│ ├── sierra_filter.h
│ ├── sutro_filter.cpp
│ ├── sutro_filter.h
│ ├── toaster_filter.cpp
│ ├── toaster_filter.h
│ ├── valencia_filter.cpp
│ ├── valencia_filter.h
│ ├── walden_filter.cpp
│ ├── walden_filter.h
│ ├── xproll_filter.cpp
│ └── xproll_filter.h
├── base
│ ├── multi_input_filter.cpp
│ └── multi_input_filter.h
├── filter_factory.cpp
├── filter_factory.h
├── filter_manager.cpp
├── filter_manager.h
└── normal
│ ├── antique_filter.cpp
│ ├── antique_filter.h
│ ├── blackcat_filter.cpp
│ ├── blackcat_filter.h
│ ├── calm_filter.cpp
│ ├── calm_filter.h
│ ├── cool_filter.cpp
│ ├── cool_filter.h
│ ├── crayon_filter.cpp
│ ├── crayon_filter.h
│ ├── emerald_filter.cpp
│ ├── emerald_filter.h
│ ├── evergreen_filter.cpp
│ ├── evergreen_filter.h
│ ├── healthy_filter.cpp
│ ├── healthy_filter.h
│ ├── latte_filter.cpp
│ ├── latte_filter.h
│ ├── lookup_filter.cpp
│ ├── lookup_filter.h
│ ├── nostalgia_filter.cpp
│ ├── nostalgia_filter.h
│ ├── romance_filter.cpp
│ ├── romance_filter.h
│ ├── sakura_filter.cpp
│ ├── sakura_filter.h
│ ├── sketch_filter.cpp
│ ├── sketch_filter.h
│ ├── sunrise_filter.cpp
│ ├── sunrise_filter.h
│ ├── sunset_filter.cpp
│ ├── sunset_filter.h
│ ├── sweets_filter.cpp
│ ├── sweets_filter.h
│ ├── tender_filter.cpp
│ ├── tender_filter.h
│ ├── warm_filter.cpp
│ ├── warm_filter.h
│ ├── whitecat_filter.cpp
│ └── whitecat_filter.h
├── filter_handler.cpp
├── filter_handler.h
└── utils
├── common_utils.cpp
├── common_utils.h
├── default_drawer.cpp
├── default_drawer.h
├── gl_utils.cpp
├── gl_utils.h
├── parse_config.cpp
└── parse_config.h
/README.md:
--------------------------------------------------------------------------------
1 | # filter-effect-engine
2 | Real-Time Image & Camera Filters Based on OpenGLES(移动端Android/IOS实时的图片/相机美颜、特效、滤镜项目)
3 |
4 | ## 简介
5 | * 包含美颜(美白、磨皮、红润)、自定义色彩调节(亮度、对比度、曝光、色调、锐化、饱和度)、以及几十款高级实时滤镜,其中每一款高级实时滤镜做成了zip包的形式方便使用。
6 | * 滤镜核心功能由C++代码实现,可以实现Android/IOS跨平台使用
7 | * 目前Demo较为简单,只提供了Android端Demo,后续有时间再整理
8 |
9 | ### 效果截图
10 | * 美颜
11 |
12 | 
13 |
14 | * 自定义色彩调节
15 |
16 | 
17 |
18 | * 滤镜
19 |
20 | 
21 |
22 |
23 |
--------------------------------------------------------------------------------
/adjust.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/adjust.png
--------------------------------------------------------------------------------
/android/FilterEngineDemo/.gitignore:
--------------------------------------------------------------------------------
1 | *.iml
2 | .gradle
3 | /local.properties
4 | /.idea/libraries
5 | /.idea/modules.xml
6 | /.idea/workspace.xml
7 | .DS_Store
8 | /build
9 | /captures
10 | .externalNativeBuild
11 |
--------------------------------------------------------------------------------
/android/FilterEngineDemo/.idea/caches/build_file_checksums.ser:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/.idea/caches/build_file_checksums.ser
--------------------------------------------------------------------------------
/android/FilterEngineDemo/.idea/codeStyles/Project.xml:
--------------------------------------------------------------------------------
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 |
--------------------------------------------------------------------------------
/android/FilterEngineDemo/.idea/dictionaries/zhouhaibo.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/android/FilterEngineDemo/.idea/gradle.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
18 |
19 |
--------------------------------------------------------------------------------
/android/FilterEngineDemo/.idea/misc.xml:
--------------------------------------------------------------------------------
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 |
31 |
32 |
33 |
34 |
--------------------------------------------------------------------------------
/android/FilterEngineDemo/.idea/runConfigurations.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/android/FilterEngineDemo/app/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 |
--------------------------------------------------------------------------------
/android/FilterEngineDemo/app/build.gradle:
--------------------------------------------------------------------------------
1 | apply plugin: 'com.android.application'
2 |
3 | android {
4 | compileSdkVersion 27
5 | defaultConfig {
6 | applicationId "com.me.filterenginedemo"
7 | minSdkVersion 21
8 | targetSdkVersion 27
9 | versionCode 1
10 | versionName "1.0"
11 | testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
12 | }
13 | buildTypes {
14 | release {
15 | minifyEnabled false
16 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
17 | }
18 | }
19 | }
20 |
21 | dependencies {
22 | implementation project(':filterengine')
23 | implementation fileTree(dir: 'libs', include: ['*.jar'])
24 | implementation 'com.android.support:appcompat-v7:27.1.1'
25 | implementation 'com.android.support:recyclerview-v7:26.1.0'
26 | implementation 'de.hdodenhof:circleimageview:2.0.0'
27 | implementation 'com.android.support.constraint:constraint-layout:1.1.3'
28 | testImplementation 'junit:junit:4.12'
29 | androidTestImplementation 'com.android.support.test:runner:1.0.2'
30 | androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
31 | }
32 |
--------------------------------------------------------------------------------
/android/FilterEngineDemo/app/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | # Add project specific ProGuard rules here.
2 | # You can control the set of applied configuration files using the
3 | # proguardFiles setting in build.gradle.
4 | #
5 | # For more details, see
6 | # http://developer.android.com/guide/developing/tools/proguard.html
7 |
8 | # If your project uses WebView with JS, uncomment the following
9 | # and specify the fully qualified class name to the JavaScript interface
10 | # class:
11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
12 | # public *;
13 | #}
14 |
15 | # Uncomment this to preserve the line number information for
16 | # debugging stack traces.
17 | #-keepattributes SourceFile,LineNumberTable
18 |
19 | # If you keep the line number information, uncomment this to
20 | # hide the original source file name.
21 | #-renamesourcefileattribute SourceFile
22 |
--------------------------------------------------------------------------------
/android/FilterEngineDemo/app/src/androidTest/java/com/me/filterenginedemo/ExampleInstrumentedTest.java:
--------------------------------------------------------------------------------
1 | package com.me.filterenginedemo;
2 |
3 | import android.content.Context;
4 | import android.support.test.InstrumentationRegistry;
5 | import android.support.test.runner.AndroidJUnit4;
6 |
7 | import org.junit.Test;
8 | import org.junit.runner.RunWith;
9 |
10 | import static org.junit.Assert.*;
11 |
12 | /**
13 | * Instrumented test, which will execute on an Android device.
14 | *
15 | * @see Testing documentation
16 | */
17 | @RunWith(AndroidJUnit4.class)
18 | public class ExampleInstrumentedTest {
19 | @Test
20 | public void useAppContext() {
21 | // Context of the app under test.
22 | Context appContext = InstrumentationRegistry.getTargetContext();
23 |
24 | assertEquals("com.me.filterenginedemo", appContext.getPackageName());
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/android/FilterEngineDemo/app/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
18 |
19 |
27 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
39 |
40 |
41 |
42 |
43 |
46 |
47 |
48 |
49 |
--------------------------------------------------------------------------------
/android/FilterEngineDemo/app/src/main/java/com/me/filterenginedemo/CameraFilterActivity.java:
--------------------------------------------------------------------------------
1 | package com.me.filterenginedemo;
2 |
3 | public class CameraFilterActivity {
4 | }
5 |
--------------------------------------------------------------------------------
/android/FilterEngineDemo/app/src/main/java/com/me/filterenginedemo/MainActivity.java:
--------------------------------------------------------------------------------
1 | package com.me.filterenginedemo;
2 |
3 | import android.Manifest;
4 | import android.content.Intent;
5 | import android.content.pm.PackageManager;
6 | import android.support.v4.app.ActivityCompat;
7 | import android.support.v4.content.ContextCompat;
8 | import android.support.v7.app.AppCompatActivity;
9 | import android.os.Bundle;
10 | import android.view.View;
11 |
12 | public class MainActivity extends AppCompatActivity {
13 |
14 | private static final int REQUEST_PERMISSION = 100;
15 |
16 | private void checkPermissions() {
17 | if (ContextCompat.checkSelfPermission(this, android.Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED
18 | || ContextCompat.checkSelfPermission(this, android.Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED){
19 | ActivityCompat.requestPermissions(this, new String[]{
20 | android.Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE
21 | }, REQUEST_PERMISSION);
22 | }
23 | }
24 |
25 | @Override
26 | protected void onCreate(Bundle savedInstanceState) {
27 | super.onCreate(savedInstanceState);
28 | setContentView(R.layout.activity_main);
29 |
30 | checkPermissions();
31 | }
32 |
33 | public void ImageFilterDemo(View view){
34 | startActivity(new Intent(MainActivity.this, ImageFilterActivity.class));
35 | }
36 |
37 | public void CameraFilterDemo(View view){
38 | startActivity(new Intent(MainActivity.this, CameraFilterActivity.class));
39 | }
40 |
41 | public void VideoFilterDemo(View view){
42 | startActivity(new Intent(MainActivity.this, VideoFilterActivity.class));
43 | }
44 | }
45 |
--------------------------------------------------------------------------------
/android/FilterEngineDemo/app/src/main/java/com/me/filterenginedemo/MeApplication.java:
--------------------------------------------------------------------------------
1 | package com.me.filterenginedemo;
2 |
3 | import android.app.Application;
4 | import android.content.Context;
5 | import android.os.StrictMode;
6 |
7 | public class MeApplication extends Application {
8 | private static Context context;
9 |
10 | @Override
11 | public void onCreate() {
12 | super.onCreate();
13 | context = getApplicationContext();
14 |
15 | if (BuildConfig.DEBUG) {
16 | StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()
17 | .detectAll()
18 | .penaltyLog()
19 | .build());
20 | StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()
21 | .detectAll()
22 | .penaltyLog()
23 | .build());
24 | }
25 | }
26 |
27 | public static Context getContext() {
28 | return context;
29 | }
30 | }
--------------------------------------------------------------------------------
/android/FilterEngineDemo/app/src/main/java/com/me/filterenginedemo/fragment/Filter.java:
--------------------------------------------------------------------------------
1 | package com.me.filterenginedemo.fragment;
2 |
3 | public class Filter {
4 |
5 | private String name;
6 | private int imageId;
7 |
8 | public Filter(String name, int imageId) {
9 | this.name = name;
10 | this.imageId = imageId;
11 | }
12 | public String getName() {
13 | return name;
14 | }
15 |
16 | public int getImageId() {
17 | return imageId;
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/android/FilterEngineDemo/app/src/main/res/anim/translate_dialog_in.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
--------------------------------------------------------------------------------
/android/FilterEngineDemo/app/src/main/res/anim/translate_dialog_out.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
--------------------------------------------------------------------------------
/android/FilterEngineDemo/app/src/main/res/drawable-nodpi/amaro.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/app/src/main/res/drawable-nodpi/amaro.jpg
--------------------------------------------------------------------------------
/android/FilterEngineDemo/app/src/main/res/drawable-nodpi/amatorka.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/app/src/main/res/drawable-nodpi/amatorka.jpg
--------------------------------------------------------------------------------
/android/FilterEngineDemo/app/src/main/res/drawable-nodpi/antique.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/app/src/main/res/drawable-nodpi/antique.jpg
--------------------------------------------------------------------------------
/android/FilterEngineDemo/app/src/main/res/drawable-nodpi/blackcat.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/app/src/main/res/drawable-nodpi/blackcat.jpg
--------------------------------------------------------------------------------
/android/FilterEngineDemo/app/src/main/res/drawable-nodpi/brannan.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/app/src/main/res/drawable-nodpi/brannan.jpg
--------------------------------------------------------------------------------
/android/FilterEngineDemo/app/src/main/res/drawable-nodpi/calm.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/app/src/main/res/drawable-nodpi/calm.jpg
--------------------------------------------------------------------------------
/android/FilterEngineDemo/app/src/main/res/drawable-nodpi/cool.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/app/src/main/res/drawable-nodpi/cool.jpg
--------------------------------------------------------------------------------
/android/FilterEngineDemo/app/src/main/res/drawable-nodpi/crayon.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/app/src/main/res/drawable-nodpi/crayon.jpg
--------------------------------------------------------------------------------
/android/FilterEngineDemo/app/src/main/res/drawable-nodpi/earlybird.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/app/src/main/res/drawable-nodpi/earlybird.jpg
--------------------------------------------------------------------------------
/android/FilterEngineDemo/app/src/main/res/drawable-nodpi/emerald.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/app/src/main/res/drawable-nodpi/emerald.jpg
--------------------------------------------------------------------------------
/android/FilterEngineDemo/app/src/main/res/drawable-nodpi/evergreen.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/app/src/main/res/drawable-nodpi/evergreen.jpg
--------------------------------------------------------------------------------
/android/FilterEngineDemo/app/src/main/res/drawable-nodpi/fairytale.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/app/src/main/res/drawable-nodpi/fairytale.jpg
--------------------------------------------------------------------------------
/android/FilterEngineDemo/app/src/main/res/drawable-nodpi/healthy.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/app/src/main/res/drawable-nodpi/healthy.jpg
--------------------------------------------------------------------------------
/android/FilterEngineDemo/app/src/main/res/drawable-nodpi/hefe.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/app/src/main/res/drawable-nodpi/hefe.jpg
--------------------------------------------------------------------------------
/android/FilterEngineDemo/app/src/main/res/drawable-nodpi/highkey.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/app/src/main/res/drawable-nodpi/highkey.jpg
--------------------------------------------------------------------------------
/android/FilterEngineDemo/app/src/main/res/drawable-nodpi/hudson.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/app/src/main/res/drawable-nodpi/hudson.jpg
--------------------------------------------------------------------------------
/android/FilterEngineDemo/app/src/main/res/drawable-nodpi/i1977.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/app/src/main/res/drawable-nodpi/i1977.jpg
--------------------------------------------------------------------------------
/android/FilterEngineDemo/app/src/main/res/drawable-nodpi/inkwell.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/app/src/main/res/drawable-nodpi/inkwell.jpg
--------------------------------------------------------------------------------
/android/FilterEngineDemo/app/src/main/res/drawable-nodpi/kelvin.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/app/src/main/res/drawable-nodpi/kelvin.jpg
--------------------------------------------------------------------------------
/android/FilterEngineDemo/app/src/main/res/drawable-nodpi/latte.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/app/src/main/res/drawable-nodpi/latte.jpg
--------------------------------------------------------------------------------
/android/FilterEngineDemo/app/src/main/res/drawable-nodpi/lomo.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/app/src/main/res/drawable-nodpi/lomo.jpg
--------------------------------------------------------------------------------
/android/FilterEngineDemo/app/src/main/res/drawable-nodpi/nashville.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/app/src/main/res/drawable-nodpi/nashville.jpg
--------------------------------------------------------------------------------
/android/FilterEngineDemo/app/src/main/res/drawable-nodpi/nostalgia.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/app/src/main/res/drawable-nodpi/nostalgia.jpg
--------------------------------------------------------------------------------
/android/FilterEngineDemo/app/src/main/res/drawable-nodpi/origin.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/app/src/main/res/drawable-nodpi/origin.jpg
--------------------------------------------------------------------------------
/android/FilterEngineDemo/app/src/main/res/drawable-nodpi/rise.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/app/src/main/res/drawable-nodpi/rise.jpg
--------------------------------------------------------------------------------
/android/FilterEngineDemo/app/src/main/res/drawable-nodpi/romance.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/app/src/main/res/drawable-nodpi/romance.jpg
--------------------------------------------------------------------------------
/android/FilterEngineDemo/app/src/main/res/drawable-nodpi/sakura.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/app/src/main/res/drawable-nodpi/sakura.jpg
--------------------------------------------------------------------------------
/android/FilterEngineDemo/app/src/main/res/drawable-nodpi/sierra.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/app/src/main/res/drawable-nodpi/sierra.jpg
--------------------------------------------------------------------------------
/android/FilterEngineDemo/app/src/main/res/drawable-nodpi/sketch.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/app/src/main/res/drawable-nodpi/sketch.jpg
--------------------------------------------------------------------------------
/android/FilterEngineDemo/app/src/main/res/drawable-nodpi/sunrise.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/app/src/main/res/drawable-nodpi/sunrise.jpg
--------------------------------------------------------------------------------
/android/FilterEngineDemo/app/src/main/res/drawable-nodpi/sunset.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/app/src/main/res/drawable-nodpi/sunset.jpg
--------------------------------------------------------------------------------
/android/FilterEngineDemo/app/src/main/res/drawable-nodpi/sutro.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/app/src/main/res/drawable-nodpi/sutro.jpg
--------------------------------------------------------------------------------
/android/FilterEngineDemo/app/src/main/res/drawable-nodpi/sweets.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/app/src/main/res/drawable-nodpi/sweets.jpg
--------------------------------------------------------------------------------
/android/FilterEngineDemo/app/src/main/res/drawable-nodpi/tender.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/app/src/main/res/drawable-nodpi/tender.jpg
--------------------------------------------------------------------------------
/android/FilterEngineDemo/app/src/main/res/drawable-nodpi/toaster.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/app/src/main/res/drawable-nodpi/toaster.jpg
--------------------------------------------------------------------------------
/android/FilterEngineDemo/app/src/main/res/drawable-nodpi/valencia.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/app/src/main/res/drawable-nodpi/valencia.jpg
--------------------------------------------------------------------------------
/android/FilterEngineDemo/app/src/main/res/drawable-nodpi/walden.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/app/src/main/res/drawable-nodpi/walden.jpg
--------------------------------------------------------------------------------
/android/FilterEngineDemo/app/src/main/res/drawable-nodpi/warm.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/app/src/main/res/drawable-nodpi/warm.jpg
--------------------------------------------------------------------------------
/android/FilterEngineDemo/app/src/main/res/drawable-nodpi/whitecat.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/app/src/main/res/drawable-nodpi/whitecat.jpg
--------------------------------------------------------------------------------
/android/FilterEngineDemo/app/src/main/res/drawable-nodpi/xproll.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/app/src/main/res/drawable-nodpi/xproll.jpg
--------------------------------------------------------------------------------
/android/FilterEngineDemo/app/src/main/res/drawable-v24/ic_launcher_foreground.xml:
--------------------------------------------------------------------------------
1 |
7 |
12 |
13 |
19 |
22 |
25 |
26 |
27 |
28 |
34 |
35 |
--------------------------------------------------------------------------------
/android/FilterEngineDemo/app/src/main/res/drawable/bg_publish_seekbar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | -
4 |
5 |
6 |
7 |
8 | -
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/android/FilterEngineDemo/app/src/main/res/drawable/bgview.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/app/src/main/res/drawable/bgview.jpg
--------------------------------------------------------------------------------
/android/FilterEngineDemo/app/src/main/res/drawable/icon_adjust_brightness.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/app/src/main/res/drawable/icon_adjust_brightness.png
--------------------------------------------------------------------------------
/android/FilterEngineDemo/app/src/main/res/drawable/icon_adjust_contrast.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/app/src/main/res/drawable/icon_adjust_contrast.png
--------------------------------------------------------------------------------
/android/FilterEngineDemo/app/src/main/res/drawable/icon_adjust_exposure.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/app/src/main/res/drawable/icon_adjust_exposure.png
--------------------------------------------------------------------------------
/android/FilterEngineDemo/app/src/main/res/drawable/icon_adjust_hue.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/app/src/main/res/drawable/icon_adjust_hue.png
--------------------------------------------------------------------------------
/android/FilterEngineDemo/app/src/main/res/drawable/icon_adjust_off.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/app/src/main/res/drawable/icon_adjust_off.png
--------------------------------------------------------------------------------
/android/FilterEngineDemo/app/src/main/res/drawable/icon_adjust_on.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/app/src/main/res/drawable/icon_adjust_on.png
--------------------------------------------------------------------------------
/android/FilterEngineDemo/app/src/main/res/drawable/icon_adjust_saturation.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/app/src/main/res/drawable/icon_adjust_saturation.png
--------------------------------------------------------------------------------
/android/FilterEngineDemo/app/src/main/res/drawable/icon_adjust_sharpen.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/app/src/main/res/drawable/icon_adjust_sharpen.png
--------------------------------------------------------------------------------
/android/FilterEngineDemo/app/src/main/res/drawable/icon_beautify_off.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/app/src/main/res/drawable/icon_beautify_off.png
--------------------------------------------------------------------------------
/android/FilterEngineDemo/app/src/main/res/drawable/icon_beautify_on.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/app/src/main/res/drawable/icon_beautify_on.png
--------------------------------------------------------------------------------
/android/FilterEngineDemo/app/src/main/res/drawable/icon_bigeye.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/app/src/main/res/drawable/icon_bigeye.png
--------------------------------------------------------------------------------
/android/FilterEngineDemo/app/src/main/res/drawable/icon_blur.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/app/src/main/res/drawable/icon_blur.png
--------------------------------------------------------------------------------
/android/FilterEngineDemo/app/src/main/res/drawable/icon_filter_off.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/app/src/main/res/drawable/icon_filter_off.png
--------------------------------------------------------------------------------
/android/FilterEngineDemo/app/src/main/res/drawable/icon_filter_on.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/app/src/main/res/drawable/icon_filter_on.png
--------------------------------------------------------------------------------
/android/FilterEngineDemo/app/src/main/res/drawable/icon_redden.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/app/src/main/res/drawable/icon_redden.png
--------------------------------------------------------------------------------
/android/FilterEngineDemo/app/src/main/res/drawable/icon_whitening.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/app/src/main/res/drawable/icon_whitening.png
--------------------------------------------------------------------------------
/android/FilterEngineDemo/app/src/main/res/drawable/play_seek_bar.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 | -
5 |
6 |
7 |
8 |
9 | -
10 |
11 |
12 |
13 |
14 |
15 |
16 | -
17 |
18 |
19 |
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/android/FilterEngineDemo/app/src/main/res/drawable/thumb_seek_normal.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
7 |
8 |
--------------------------------------------------------------------------------
/android/FilterEngineDemo/app/src/main/res/layout/activity_main.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
15 |
16 |
24 |
25 |
33 |
34 |
41 |
42 |
43 |
--------------------------------------------------------------------------------
/android/FilterEngineDemo/app/src/main/res/layout/filter_item.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
12 |
13 |
20 |
21 |
--------------------------------------------------------------------------------
/android/FilterEngineDemo/app/src/main/res/layout/filter_list_item.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
12 |
13 |
21 |
22 |
--------------------------------------------------------------------------------
/android/FilterEngineDemo/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/android/FilterEngineDemo/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/android/FilterEngineDemo/app/src/main/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/app/src/main/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/FilterEngineDemo/app/src/main/res/mipmap-hdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/app/src/main/res/mipmap-hdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/android/FilterEngineDemo/app/src/main/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/app/src/main/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/FilterEngineDemo/app/src/main/res/mipmap-mdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/app/src/main/res/mipmap-mdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/android/FilterEngineDemo/app/src/main/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/app/src/main/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/FilterEngineDemo/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/android/FilterEngineDemo/app/src/main/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/FilterEngineDemo/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/android/FilterEngineDemo/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/FilterEngineDemo/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/android/FilterEngineDemo/app/src/main/res/values/attr.xml:
--------------------------------------------------------------------------------
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 |
--------------------------------------------------------------------------------
/android/FilterEngineDemo/app/src/main/res/values/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 | 3.0dip
3 | 6.0dip
4 | 60.0dip
5 | 12.0px
6 | 220.0dip
7 | 2.0px
8 | 34.0dip
9 | 34.0dip
10 | 8.0px
11 | 2.0px
12 | 24.0px
13 |
14 |
--------------------------------------------------------------------------------
/android/FilterEngineDemo/app/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | FilterEngineDemo
3 |
4 |
5 |
--------------------------------------------------------------------------------
/android/FilterEngineDemo/app/src/main/res/values/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
10 |
11 |
12 |
16 |
17 |
21 |
25 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/android/FilterEngineDemo/app/src/test/java/com/me/filterenginedemo/ExampleUnitTest.java:
--------------------------------------------------------------------------------
1 | package com.me.filterenginedemo;
2 |
3 | import org.junit.Test;
4 |
5 | import static org.junit.Assert.*;
6 |
7 | /**
8 | * Example local unit test, which will execute on the development machine (host).
9 | *
10 | * @see Testing documentation
11 | */
12 | public class ExampleUnitTest {
13 | @Test
14 | public void addition_isCorrect() {
15 | assertEquals(4, 2 + 2);
16 | }
17 | }
--------------------------------------------------------------------------------
/android/FilterEngineDemo/build.gradle:
--------------------------------------------------------------------------------
1 | // Top-level build file where you can add configuration options common to all sub-projects/modules.
2 |
3 | buildscript {
4 |
5 | repositories {
6 | google()
7 | jcenter()
8 | }
9 | dependencies {
10 | classpath 'com.android.tools.build:gradle:3.1.2'
11 |
12 |
13 | // NOTE: Do not place your application dependencies here; they belong
14 | // in the individual module build.gradle files
15 | }
16 | }
17 |
18 | allprojects {
19 | repositories {
20 | google()
21 | jcenter()
22 | }
23 | }
24 |
25 | task clean(type: Delete) {
26 | delete rootProject.buildDir
27 | }
28 |
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 |
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/build.gradle:
--------------------------------------------------------------------------------
1 | apply plugin: 'com.android.library'
2 |
3 | android {
4 | compileSdkVersion 27
5 |
6 |
7 |
8 | defaultConfig {
9 | minSdkVersion 21
10 | targetSdkVersion 27
11 | versionCode 1
12 | versionName "1.0"
13 |
14 | testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
15 |
16 | ndk {
17 | abiFilters "armeabi-v7a"
18 | }
19 |
20 | externalNativeBuild {
21 | cmake {
22 | cppFlags ""
23 | }
24 | }
25 |
26 | }
27 |
28 | buildTypes {
29 | release {
30 | minifyEnabled false
31 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
32 | }
33 | }
34 |
35 | externalNativeBuild {
36 | cmake {
37 | path "CMakeLists.txt"
38 | }
39 | }
40 |
41 | }
42 |
43 | dependencies {
44 | implementation fileTree(dir: 'libs', include: ['*.jar'])
45 |
46 | implementation 'com.android.support:appcompat-v7:27.1.1'
47 | testImplementation 'junit:junit:4.12'
48 | androidTestImplementation 'com.android.support.test:runner:1.0.2'
49 | androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
50 | }
51 |
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | # Add project specific ProGuard rules here.
2 | # You can control the set of applied configuration files using the
3 | # proguardFiles setting in build.gradle.
4 | #
5 | # For more details, see
6 | # http://developer.android.com/guide/developing/tools/proguard.html
7 |
8 | # If your project uses WebView with JS, uncomment the following
9 | # and specify the fully qualified class name to the JavaScript interface
10 | # class:
11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
12 | # public *;
13 | #}
14 |
15 | # Uncomment this to preserve the line number information for
16 | # debugging stack traces.
17 | #-keepattributes SourceFile,LineNumberTable
18 |
19 | # If you keep the line number information, uncomment this to
20 | # hide the original source file name.
21 | #-renamesourcefileattribute SourceFile
22 |
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/androidTest/java/com/me/filterengine/ExampleInstrumentedTest.java:
--------------------------------------------------------------------------------
1 | package com.me.filterengine;
2 |
3 | import android.content.Context;
4 | import android.support.test.InstrumentationRegistry;
5 | import android.support.test.runner.AndroidJUnit4;
6 |
7 | import org.junit.Test;
8 | import org.junit.runner.RunWith;
9 |
10 | import static org.junit.Assert.*;
11 |
12 | /**
13 | * Instrumented test, which will execute on an Android device.
14 | *
15 | * @see Testing documentation
16 | */
17 | @RunWith(AndroidJUnit4.class)
18 | public class ExampleInstrumentedTest {
19 | @Test
20 | public void useAppContext() {
21 | // Context of the app under test.
22 | Context appContext = InstrumentationRegistry.getTargetContext();
23 |
24 | assertEquals("com.me.filterengine.test", appContext.getPackageName());
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
3 |
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/assets/filters/I1977/config:
--------------------------------------------------------------------------------
1 | !nmap.png
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/assets/filters/I1977/nmap.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/filterengine/src/main/assets/filters/I1977/nmap.png
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/assets/filters/amaro/amaro_map.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/filterengine/src/main/assets/filters/amaro/amaro_map.png
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/assets/filters/amaro/blackboard.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/filterengine/src/main/assets/filters/amaro/blackboard.png
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/assets/filters/amaro/config:
--------------------------------------------------------------------------------
1 | )blackboard.png overlay_map.png amaro_map.png
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/assets/filters/amaro/overlay_map.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/filterengine/src/main/assets/filters/amaro/overlay_map.png
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/assets/filters/amatorka/amatorka.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/filterengine/src/main/assets/filters/amatorka/amatorka.png
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/assets/filters/amatorka/config:
--------------------------------------------------------------------------------
1 | Bamatorka.png
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/assets/filters/antique/config:
--------------------------------------------------------------------------------
1 | curve.bin
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/assets/filters/antique/curve.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/filterengine/src/main/assets/filters/antique/curve.bin
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/assets/filters/blackcat/config:
--------------------------------------------------------------------------------
1 | curve.bin
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/assets/filters/blackcat/curve.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/filterengine/src/main/assets/filters/blackcat/curve.bin
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/assets/filters/brannan/brannan_blowout.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/filterengine/src/main/assets/filters/brannan/brannan_blowout.png
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/assets/filters/brannan/brannan_contrast.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/filterengine/src/main/assets/filters/brannan/brannan_contrast.png
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/assets/filters/brannan/brannan_luma.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/filterengine/src/main/assets/filters/brannan/brannan_luma.png
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/assets/filters/brannan/brannan_process.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/filterengine/src/main/assets/filters/brannan/brannan_process.png
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/assets/filters/brannan/brannan_screen.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/filterengine/src/main/assets/filters/brannan/brannan_screen.png
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/assets/filters/brannan/config:
--------------------------------------------------------------------------------
1 | -brannan_process.png brannan_blowout.png brannan_contrast.png brannan_luma.png brannan_screen.png
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/assets/filters/calm/config:
--------------------------------------------------------------------------------
1 | curve.bin mask.jpg mask1.jpg
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/assets/filters/calm/curve.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/filterengine/src/main/assets/filters/calm/curve.bin
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/assets/filters/calm/mask.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/filterengine/src/main/assets/filters/calm/mask.jpg
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/assets/filters/calm/mask1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/filterengine/src/main/assets/filters/calm/mask1.jpg
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/assets/filters/cool/config:
--------------------------------------------------------------------------------
1 | curve.bin
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/assets/filters/cool/curve.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/filterengine/src/main/assets/filters/cool/curve.bin
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/assets/filters/crayon/config:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/assets/filters/earlybird/config:
--------------------------------------------------------------------------------
1 | .earlybird_curves.png earlybird_overlay_map.png vignette_map.png earlybird_blowout.png earlybird_map.png
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/assets/filters/earlybird/earlybird_blowout.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/filterengine/src/main/assets/filters/earlybird/earlybird_blowout.png
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/assets/filters/earlybird/earlybird_curves.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/filterengine/src/main/assets/filters/earlybird/earlybird_curves.png
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/assets/filters/earlybird/earlybird_map.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/filterengine/src/main/assets/filters/earlybird/earlybird_map.png
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/assets/filters/earlybird/earlybird_overlay_map.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/filterengine/src/main/assets/filters/earlybird/earlybird_overlay_map.png
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/assets/filters/earlybird/vignette_map.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/filterengine/src/main/assets/filters/earlybird/vignette_map.png
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/assets/filters/emerald/config:
--------------------------------------------------------------------------------
1 | curve.bin
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/assets/filters/emerald/curve.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/filterengine/src/main/assets/filters/emerald/curve.bin
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/assets/filters/evergreen/config:
--------------------------------------------------------------------------------
1 | curve.bin
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/assets/filters/evergreen/curve.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/filterengine/src/main/assets/filters/evergreen/curve.bin
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/assets/filters/fairytale/config:
--------------------------------------------------------------------------------
1 | Afairy_tale.png
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/assets/filters/fairytale/fairy_tale.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/filterengine/src/main/assets/filters/fairytale/fairy_tale.png
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/assets/filters/filter.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/filterengine/src/main/assets/filters/filter.jpg
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/assets/filters/healthy/config:
--------------------------------------------------------------------------------
1 |
curve.bin mask.jpg
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/assets/filters/healthy/curve.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/filterengine/src/main/assets/filters/healthy/curve.bin
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/assets/filters/healthy/mask.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/filterengine/src/main/assets/filters/healthy/mask.jpg
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/assets/filters/hefe/config:
--------------------------------------------------------------------------------
1 | /edge_burn.png hefe_map.png hefe_gradient_map.png hefe_soft_light.png hefe_metal.png
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/assets/filters/hefe/edge_burn.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/filterengine/src/main/assets/filters/hefe/edge_burn.png
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/assets/filters/hefe/hefe_gradient_map.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/filterengine/src/main/assets/filters/hefe/hefe_gradient_map.png
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/assets/filters/hefe/hefe_map.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/filterengine/src/main/assets/filters/hefe/hefe_map.png
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/assets/filters/hefe/hefe_metal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/filterengine/src/main/assets/filters/hefe/hefe_metal.png
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/assets/filters/hefe/hefe_soft_light.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/filterengine/src/main/assets/filters/hefe/hefe_soft_light.png
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/assets/filters/highkey/config:
--------------------------------------------------------------------------------
1 | Clookup_highkey.png
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/assets/filters/highkey/lookup_highkey.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/filterengine/src/main/assets/filters/highkey/lookup_highkey.png
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/assets/filters/hudson/config:
--------------------------------------------------------------------------------
1 | *hudson_background.png overlay_map.png hudson_map.png
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/assets/filters/hudson/hudson_background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/filterengine/src/main/assets/filters/hudson/hudson_background.png
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/assets/filters/hudson/hudson_map.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/filterengine/src/main/assets/filters/hudson/hudson_map.png
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/assets/filters/hudson/overlay_map.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/filterengine/src/main/assets/filters/hudson/overlay_map.png
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/assets/filters/icon/origin.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/filterengine/src/main/assets/filters/icon/origin.jpg
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/assets/filters/inkwell/config:
--------------------------------------------------------------------------------
1 | "inkwell.png
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/assets/filters/inkwell/inkwell.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/filterengine/src/main/assets/filters/inkwell/inkwell.png
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/assets/filters/kelvin/config:
--------------------------------------------------------------------------------
1 | #kelvin_map.png
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/assets/filters/kelvin/kelvin_map.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/filterengine/src/main/assets/filters/kelvin/kelvin_map.png
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/assets/filters/latte/config:
--------------------------------------------------------------------------------
1 | curve.bin
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/assets/filters/latte/curve.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/filterengine/src/main/assets/filters/latte/curve.bin
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/assets/filters/lomo/config:
--------------------------------------------------------------------------------
1 | %lomo_map.png vignette_map.png
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/assets/filters/lomo/lomo_map.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/filterengine/src/main/assets/filters/lomo/lomo_map.png
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/assets/filters/lomo/vignette_map.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/filterengine/src/main/assets/filters/lomo/vignette_map.png
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/assets/filters/nashville/config:
--------------------------------------------------------------------------------
1 | $nashville_map.png
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/assets/filters/nashville/nashville_map.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/filterengine/src/main/assets/filters/nashville/nashville_map.png
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/assets/filters/nostalgia/config:
--------------------------------------------------------------------------------
1 | curve.bin curve1.bin
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/assets/filters/nostalgia/curve.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/filterengine/src/main/assets/filters/nostalgia/curve.bin
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/assets/filters/nostalgia/curve1.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/filterengine/src/main/assets/filters/nostalgia/curve1.bin
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/assets/filters/rise/blackboard.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/filterengine/src/main/assets/filters/rise/blackboard.png
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/assets/filters/rise/config:
--------------------------------------------------------------------------------
1 | +blackboard.png overlay_map.png rise_map.png
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/assets/filters/rise/overlay_map.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/filterengine/src/main/assets/filters/rise/overlay_map.png
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/assets/filters/rise/rise_map.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/filterengine/src/main/assets/filters/rise/rise_map.png
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/assets/filters/romance/config:
--------------------------------------------------------------------------------
1 | curve.bin
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/assets/filters/romance/curve.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/filterengine/src/main/assets/filters/romance/curve.bin
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/assets/filters/sakura/config:
--------------------------------------------------------------------------------
1 | curve.bin
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/assets/filters/sakura/curve.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/filterengine/src/main/assets/filters/sakura/curve.bin
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/assets/filters/sierra/config:
--------------------------------------------------------------------------------
1 | ,sierra_vignette.png overlay_map.png sierra_map.png
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/assets/filters/sierra/overlay_map.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/filterengine/src/main/assets/filters/sierra/overlay_map.png
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/assets/filters/sierra/sierra_map.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/filterengine/src/main/assets/filters/sierra/sierra_map.png
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/assets/filters/sierra/sierra_vignette.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/filterengine/src/main/assets/filters/sierra/sierra_vignette.png
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/assets/filters/sketch/config:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/assets/filters/sunrise/config:
--------------------------------------------------------------------------------
1 | curve.bin mask.jpg mask1.jpg mask2.jpg
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/assets/filters/sunrise/curve.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/filterengine/src/main/assets/filters/sunrise/curve.bin
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/assets/filters/sunrise/mask.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/filterengine/src/main/assets/filters/sunrise/mask.jpg
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/assets/filters/sunrise/mask1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/filterengine/src/main/assets/filters/sunrise/mask1.jpg
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/assets/filters/sunrise/mask2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/filterengine/src/main/assets/filters/sunrise/mask2.jpg
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/assets/filters/sunset/config:
--------------------------------------------------------------------------------
1 | curve.bin mask.jpg mask1.jpg
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/assets/filters/sunset/curve.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/filterengine/src/main/assets/filters/sunset/curve.bin
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/assets/filters/sunset/mask.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/filterengine/src/main/assets/filters/sunset/mask.jpg
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/assets/filters/sunset/mask1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/filterengine/src/main/assets/filters/sunset/mask1.jpg
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/assets/filters/sutro/config:
--------------------------------------------------------------------------------
1 | 0vignette_map.png sutro_metal.png soft_light.png sutro_edge_burn.png sutro_curves.png
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/assets/filters/sutro/soft_light.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/filterengine/src/main/assets/filters/sutro/soft_light.png
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/assets/filters/sutro/sutro_curves.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/filterengine/src/main/assets/filters/sutro/sutro_curves.png
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/assets/filters/sutro/sutro_edge_burn.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/filterengine/src/main/assets/filters/sutro/sutro_edge_burn.png
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/assets/filters/sutro/sutro_metal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/filterengine/src/main/assets/filters/sutro/sutro_metal.png
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/assets/filters/sutro/vignette_map.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/filterengine/src/main/assets/filters/sutro/vignette_map.png
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/assets/filters/sweets/config:
--------------------------------------------------------------------------------
1 | curve.bin mask.jpg
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/assets/filters/sweets/curve.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/filterengine/src/main/assets/filters/sweets/curve.bin
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/assets/filters/sweets/mask.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/filterengine/src/main/assets/filters/sweets/mask.jpg
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/assets/filters/tender/config:
--------------------------------------------------------------------------------
1 | curve.bin mask.jpg
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/assets/filters/tender/curve.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/filterengine/src/main/assets/filters/tender/curve.bin
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/assets/filters/tender/mask.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/filterengine/src/main/assets/filters/tender/mask.jpg
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/assets/filters/toaster/config:
--------------------------------------------------------------------------------
1 | 1toaster_metal.png toaster_soft_light.png toaster_curves.png toaster_overlay_map_warm.png toaster_color_shift.png
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/assets/filters/toaster/toaster_color_shift.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/filterengine/src/main/assets/filters/toaster/toaster_color_shift.png
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/assets/filters/toaster/toaster_curves.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/filterengine/src/main/assets/filters/toaster/toaster_curves.png
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/assets/filters/toaster/toaster_metal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/filterengine/src/main/assets/filters/toaster/toaster_metal.png
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/assets/filters/toaster/toaster_overlay_map_warm.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/filterengine/src/main/assets/filters/toaster/toaster_overlay_map_warm.png
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/assets/filters/toaster/toaster_soft_light.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/filterengine/src/main/assets/filters/toaster/toaster_soft_light.png
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/assets/filters/valencia/config:
--------------------------------------------------------------------------------
1 | &valencia_map.png valencia_gradient_map.png
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/assets/filters/valencia/valencia_gradient_map.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/filterengine/src/main/assets/filters/valencia/valencia_gradient_map.png
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/assets/filters/valencia/valencia_map.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/filterengine/src/main/assets/filters/valencia/valencia_map.png
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/assets/filters/walden/config:
--------------------------------------------------------------------------------
1 | 'walden_map.png vignette_map.png
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/assets/filters/walden/vignette_map.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/filterengine/src/main/assets/filters/walden/vignette_map.png
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/assets/filters/walden/walden_map.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/filterengine/src/main/assets/filters/walden/walden_map.png
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/assets/filters/warm/config:
--------------------------------------------------------------------------------
1 | curve.bin mask.jpg mask1.jpg
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/assets/filters/warm/curve.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/filterengine/src/main/assets/filters/warm/curve.bin
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/assets/filters/warm/mask.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/filterengine/src/main/assets/filters/warm/mask.jpg
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/assets/filters/warm/mask1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/filterengine/src/main/assets/filters/warm/mask1.jpg
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/assets/filters/whitecat/config:
--------------------------------------------------------------------------------
1 | curve.bin
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/assets/filters/whitecat/curve.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/filterengine/src/main/assets/filters/whitecat/curve.bin
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/assets/filters/xproll/config:
--------------------------------------------------------------------------------
1 | (xpro_map.png vignette_map.png
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/assets/filters/xproll/vignette_map.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/filterengine/src/main/assets/filters/xproll/vignette_map.png
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/assets/filters/xproll/xpro_map.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/filterengine/src/main/assets/filters/xproll/xpro_map.png
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/cpp/filter_handler_jni.h:
--------------------------------------------------------------------------------
1 | //
2 | // Created by zhouhaibo on 2017/9/18.
3 | //
4 |
5 | #ifndef FILTERENGINE_FILTER_HANDLER_JNI_H
6 | #define FILTERENGINE_FILTER_HANDLER_JNI_H
7 |
8 | #include
9 |
10 | #ifdef __cplusplus
11 | extern "C" {
12 | #endif
13 |
14 | JNIEXPORT jlong JNICALL Java_com_me_filterengine_FilterHandler_nativeCreateInstance(JNIEnv * env, jobject obj);
15 |
16 | JNIEXPORT void JNICALL Java_com_me_filterengine_FilterHandler_nativeInit(JNIEnv * env, jobject obj, jlong instance, jstring fileName);
17 |
18 | JNIEXPORT void JNICALL Java_com_me_filterengine_FilterHandler_nativeSetSize(JNIEnv * env, jobject obj, jlong instance, jint width, jint height);
19 |
20 | JNIEXPORT void JNICALL Java_com_me_filterengine_FilterHandler_nativeSetBeautyParams(JNIEnv * env, jobject obj, jlong instance, jint type, jfloat intensity);
21 |
22 | JNIEXPORT void JNICALL Java_com_me_filterengine_FilterHandler_nativeSetAdjustParams(JNIEnv * env, jobject obj, jlong instance, jint type, jfloat intensity);
23 |
24 | JNIEXPORT void JNICALL Java_com_me_filterengine_FilterHandler_nativeSetFilter(JNIEnv * env, jobject obj, jlong instance, jstring filterZip);
25 |
26 | JNIEXPORT jint JNICALL Java_com_me_filterengine_FilterHandler_nativeProcess(JNIEnv * env, jobject obj, jlong instance, jint textureId);
27 |
28 | JNIEXPORT void JNICALL Java_com_me_filterengine_FilterHandler_nativeDestory(JNIEnv * env, jobject obj, jlong instance);
29 |
30 |
31 | JNIEXPORT jobject JNICALL Java_com_me_filterengine_FilterHandler_nativeGetResult(JNIEnv * env, jobject obj, jlong instance);
32 |
33 | #ifdef __cplusplus
34 | }
35 | #endif
36 |
37 |
38 | #endif //FILTERENGINE_FILTER_HANDLER_JNI_H
39 |
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/jniLibs/armeabi-v7a/include/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 |
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/jniLibs/armeabi-v7a/include/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 10
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 |
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/jniLibs/armeabi-v7a/include/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 |
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/jniLibs/armeabi-v7a/include/libavformat/avc.h:
--------------------------------------------------------------------------------
1 | /*
2 | * AVC helper functions for muxers
3 | * Copyright (c) 2008 Aurelien Jacobs
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 AVFORMAT_AVC_H
23 | #define AVFORMAT_AVC_H
24 |
25 | #include
26 | #include "avio.h"
27 |
28 | int ff_avc_parse_nal_units(AVIOContext *s, const uint8_t *buf, int size);
29 | int ff_avc_parse_nal_units_buf(const uint8_t *buf_in, uint8_t **buf, int *size);
30 | int ff_isom_write_avcc(AVIOContext *pb, const uint8_t *data, int len);
31 | const uint8_t *ff_avc_find_startcode(const uint8_t *p, const uint8_t *end);
32 | int ff_avc_write_annexb_extradata(const uint8_t *in, uint8_t **buf, int *size);
33 | const uint8_t *ff_avc_mp4_find_startcode(const uint8_t *start,
34 | const uint8_t *end,
35 | int nal_length_size);
36 |
37 | #endif /* AVFORMAT_AVC_H */
38 |
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/jniLibs/armeabi-v7a/include/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 7
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 |
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/jniLibs/armeabi-v7a/include/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 |
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/jniLibs/armeabi-v7a/include/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 |
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/jniLibs/armeabi-v7a/include/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 |
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/jniLibs/armeabi-v7a/include/libavutil/dns_cache.h:
--------------------------------------------------------------------------------
1 | /*
2 | * copyright (c) 2017 Raymond Zheng
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_DNS_CACHE_H
22 | #define AVUTIL_DNS_CACHE_H
23 |
24 | #include "libavutil/log.h"
25 |
26 | typedef struct DnsCacheEntry {
27 | volatile int ref_count;
28 | volatile int delete_flag;
29 | int64_t expired_time;
30 | struct addrinfo *res; // construct by private function, not support ai_next and ai_canonname, can only be released using free_private_addrinfo
31 | } DnsCacheEntry;
32 |
33 | DnsCacheEntry *get_dns_cache_reference(char *hostname);
34 | int release_dns_cache_reference(char *hostname, DnsCacheEntry **p_entry);
35 | int remove_dns_cache_entry(char *hostname);
36 | int add_dns_cache_entry(char *hostname, struct addrinfo *cur_ai, int64_t timeout);
37 |
38 | #endif /* AVUTIL_DNS_CACHE_H */
39 |
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/jniLibs/armeabi-v7a/include/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 "ff3.4--ijk0.8.7--20180103--001-17-g35b9e7d"
5 | #endif /* AVUTIL_FFVERSION_H */
6 |
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/jniLibs/armeabi-v7a/include/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 |
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/jniLibs/armeabi-v7a/include/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 |
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/jniLibs/armeabi-v7a/include/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 |
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/jniLibs/armeabi-v7a/include/libavutil/hwcontext_videotoolbox.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_VIDEOTOOLBOX_H
20 | #define AVUTIL_HWCONTEXT_VIDEOTOOLBOX_H
21 |
22 | #include
23 |
24 | #include
25 |
26 | #include "pixfmt.h"
27 |
28 | /**
29 | * @file
30 | * An API-specific header for AV_HWDEVICE_TYPE_VIDEOTOOLBOX.
31 | *
32 | * This API currently does not support frame allocation, as the raw VideoToolbox
33 | * API does allocation, and FFmpeg itself never has the need to allocate frames.
34 | *
35 | * If the API user sets a custom pool, AVHWFramesContext.pool must return
36 | * AVBufferRefs whose data pointer is a CVImageBufferRef or CVPixelBufferRef.
37 | *
38 | * Currently AVHWDeviceContext.hwctx and AVHWFramesContext.hwctx are always
39 | * NULL.
40 | */
41 |
42 | /**
43 | * Convert a VideoToolbox (actually CoreVideo) format to AVPixelFormat.
44 | * Returns AV_PIX_FMT_NONE if no known equivalent was found.
45 | */
46 | enum AVPixelFormat av_map_videotoolbox_format_to_pixfmt(uint32_t cv_fmt);
47 |
48 | /**
49 | * Convert an AVPixelFormat to a VideoToolbox (actually CoreVideo) format.
50 | * Returns 0 if no known equivalent was found.
51 | */
52 | uint32_t av_map_videotoolbox_format_from_pixfmt(enum AVPixelFormat pix_fmt);
53 |
54 | #endif /* AVUTIL_HWCONTEXT_VIDEOTOOLBOX_H */
55 |
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/jniLibs/armeabi-v7a/include/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 |
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/jniLibs/armeabi-v7a/include/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 |
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/jniLibs/armeabi-v7a/include/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 |
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/jniLibs/armeabi-v7a/include/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 |
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/jniLibs/armeabi-v7a/include/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 |
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/jniLibs/armeabi-v7a/include/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 |
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/jniLibs/armeabi-v7a/include/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 7
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 |
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/jniLibs/armeabi-v7a/include/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 9
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 |
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/jniLibs/armeabi-v7a/include/libswscale/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 SWSCALE_VERSION_H
20 | #define SWSCALE_VERSION_H
21 |
22 | /**
23 | * @file
24 | * swscale version macros
25 | */
26 |
27 | #include "libavutil/version.h"
28 |
29 | #define LIBSWSCALE_VERSION_MAJOR 4
30 | #define LIBSWSCALE_VERSION_MINOR 8
31 | #define LIBSWSCALE_VERSION_MICRO 100
32 |
33 | #define LIBSWSCALE_VERSION_INT AV_VERSION_INT(LIBSWSCALE_VERSION_MAJOR, \
34 | LIBSWSCALE_VERSION_MINOR, \
35 | LIBSWSCALE_VERSION_MICRO)
36 | #define LIBSWSCALE_VERSION AV_VERSION(LIBSWSCALE_VERSION_MAJOR, \
37 | LIBSWSCALE_VERSION_MINOR, \
38 | LIBSWSCALE_VERSION_MICRO)
39 | #define LIBSWSCALE_BUILD LIBSWSCALE_VERSION_INT
40 |
41 | #define LIBSWSCALE_IDENT "SwS" AV_STRINGIFY(LIBSWSCALE_VERSION)
42 |
43 | /**
44 | * FF_API_* defines may be placed below to indicate public API that will be
45 | * dropped at a future version bump. The defines themselves are not part of
46 | * the public API and may change, break or disappear at any time.
47 | */
48 |
49 | #ifndef FF_API_SWS_VECTOR
50 | #define FF_API_SWS_VECTOR (LIBSWSCALE_VERSION_MAJOR < 6)
51 | #endif
52 |
53 | #endif /* SWSCALE_VERSION_H */
54 |
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/jniLibs/armeabi-v7a/libijkffmpeg.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/filterengine/src/main/jniLibs/armeabi-v7a/libijkffmpeg.so
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | FilterEngine
3 |
4 |
--------------------------------------------------------------------------------
/android/FilterEngineDemo/filterengine/src/test/java/com/me/filterengine/ExampleUnitTest.java:
--------------------------------------------------------------------------------
1 | package com.me.filterengine;
2 |
3 | import org.junit.Test;
4 |
5 | import static org.junit.Assert.*;
6 |
7 | /**
8 | * Example local unit test, which will execute on the development machine (host).
9 | *
10 | * @see Testing documentation
11 | */
12 | public class ExampleUnitTest {
13 | @Test
14 | public void addition_isCorrect() {
15 | assertEquals(4, 2 + 2);
16 | }
17 | }
--------------------------------------------------------------------------------
/android/FilterEngineDemo/gradle.properties:
--------------------------------------------------------------------------------
1 | # Project-wide Gradle settings.
2 | # IDE (e.g. Android Studio) users:
3 | # Gradle settings configured through the IDE *will override*
4 | # any settings specified in this file.
5 | # For more details on how to configure your build environment visit
6 | # http://www.gradle.org/docs/current/userguide/build_environment.html
7 | # Specifies the JVM arguments used for the daemon process.
8 | # The setting is particularly useful for tweaking memory settings.
9 | org.gradle.jvmargs=-Xmx1536m
10 | # When configured, Gradle will run in incubating parallel mode.
11 | # This option should only be used with decoupled projects. More details, visit
12 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
13 | # org.gradle.parallel=true
14 |
--------------------------------------------------------------------------------
/android/FilterEngineDemo/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/FilterEngineDemo/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/android/FilterEngineDemo/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | #Tue Sep 11 10:22:44 CST 2018
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-4.4-all.zip
7 |
--------------------------------------------------------------------------------
/android/FilterEngineDemo/settings.gradle:
--------------------------------------------------------------------------------
1 | include ':app', ':filterengine'
2 |
--------------------------------------------------------------------------------
/android/Readme.md:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/android/Readme.md
--------------------------------------------------------------------------------
/beautify.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/beautify.png
--------------------------------------------------------------------------------
/filter.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhouhaibocn/filter-effect-engine/5b230bff76a805d473b7dc1c252c795e16a2cf6f/filter.gif
--------------------------------------------------------------------------------
/src/beautify/beautify_filter.h:
--------------------------------------------------------------------------------
1 | //
2 | // Created by zhouhaibo on 2017/9/19.
3 | //
4 |
5 | #ifndef FILTERENGINE_BEAUTIFY_FILTER_H
6 | #define FILTERENGINE_BEAUTIFY_FILTER_H
7 |
8 | #include "common/filter_interface.h"
9 |
10 | /** 美颜参数类型 */
11 | enum BeautifyParamsType {
12 | BEAUTIFY_NONE,
13 | BEAUTIFY_WHITEN_INTENSITY,
14 | BEAUTIFY_SMOOTH_INTENSITY,
15 | BEAUTIFY_REDDEN_INTENSITY
16 | };
17 |
18 | class BeautifyFilter : public FilterInterface {
19 | private:
20 | float mWhitenIntensity;
21 | float mSmoothIntensity;
22 | float mReddenIntensity;
23 | ConstString mVertexShader;
24 | ConstString mFragmentShader;
25 | GLuint mProgramId;
26 | GLint mVertexCoords;;
27 | GLint mTextureCoords;
28 | GLint mTextureHandle;
29 | GLint mWhitenIntensityHandle;
30 | GLint mSmoothIntensityHandle;
31 | GLint mReddenIntensityHandle;
32 | GLint mWidthHandle;
33 | GLint mHeightHandle;
34 |
35 | public:
36 | BeautifyFilter();
37 |
38 | ~BeautifyFilter();
39 |
40 | void init();
41 |
42 | void setParam(int type, float intensity);
43 |
44 | void process(GLuint textureId, int width, int height);
45 |
46 | void destroy();
47 | };
48 |
49 |
50 | #endif //FILTERENGINE_BEAUTIFY_FILTER_H
51 |
--------------------------------------------------------------------------------
/src/beautify/beautify_manager.cpp:
--------------------------------------------------------------------------------
1 | //
2 | // Created by zhouhaibo on 2017/9/11.
3 | //
4 |
5 | #include "beautify_manager.h"
6 |
7 | #define LOG_TAG "BeautifyManager"
8 |
9 | BeautifyManager::BeautifyManager() {
10 | mIsInitialized = false;
11 | mFboTextureID = 0;
12 | mFboBufferID = 0;
13 | mBeautifyFilter = NULL;
14 | }
15 |
16 | BeautifyManager::~BeautifyManager() {
17 | if (mIsInitialized) {
18 | destroy();
19 | }
20 | }
21 |
22 | void BeautifyManager::init(int width, int height) {
23 | if (NULL == mBeautifyFilter) {
24 | mBeautifyFilter = new BeautifyFilter();
25 | mBeautifyFilter->init();
26 | }
27 |
28 | if (mFboTextureID == 0) {
29 | glGenTextures(1, &mFboTextureID);
30 | }
31 |
32 | if (mFboBufferID == 0) {
33 | glGenFramebuffers(1, &mFboBufferID);
34 | }
35 |
36 | bindFrameBuffer(mFboTextureID, mFboBufferID, width, height);
37 |
38 | mIsInitialized = true;
39 | }
40 |
41 | void BeautifyManager::setParams(int type, float intensity) {
42 | if (NULL != mBeautifyFilter) {
43 | mBeautifyFilter->setParam(type, intensity);
44 | }
45 | }
46 |
47 | GLuint BeautifyManager::process(GLuint textureId, int width, int height) {
48 | glViewport(0, 0, width, height);
49 | glBindFramebuffer(GL_FRAMEBUFFER, mFboBufferID);
50 | GLuint targetTexture = textureId;
51 |
52 | if (NULL != mBeautifyFilter) {
53 | mBeautifyFilter->process(targetTexture, width, height);
54 | targetTexture = mFboTextureID;
55 | }
56 |
57 | glBindFramebuffer(GL_FRAMEBUFFER, 0);
58 |
59 | return targetTexture;
60 | }
61 |
62 | void BeautifyManager::destroy() {
63 | if (!mIsInitialized) {
64 | LOGE(LOG_TAG, "BeautifyInterFace is not Initialized");
65 | return;
66 | }
67 |
68 | if (NULL != mBeautifyFilter) {
69 | mBeautifyFilter->destroy();
70 | delete mBeautifyFilter;
71 | }
72 |
73 | mIsInitialized = false;
74 | }
--------------------------------------------------------------------------------
/src/beautify/beautify_manager.h:
--------------------------------------------------------------------------------
1 | //
2 | // Created by zhouhaibo on 2017/9/11.
3 | //
4 |
5 | #ifndef FILTERENGINE_BEAUTIFY_MANAGER_H
6 | #define FILTERENGINE_BEAUTIFY_MANAGER_H
7 |
8 | #include "beautify_filter.h"
9 |
10 | class BeautifyManager {
11 | private:
12 | bool mIsInitialized;
13 | GLuint mFboBufferID;
14 | GLuint mFboTextureID;
15 |
16 | BeautifyFilter *mBeautifyFilter;
17 |
18 | public:
19 | BeautifyManager();
20 |
21 | ~BeautifyManager();
22 |
23 | void init(int width, int height);
24 |
25 | void setParams(int type, float intensity);
26 |
27 | GLuint process(GLuint textureId, int width, int height);
28 |
29 | void destroy();
30 | };
31 |
32 |
33 | #endif //FILTERENGINE_BEAUTIFY_MANAGER_H
34 |
--------------------------------------------------------------------------------
/src/common/common.h:
--------------------------------------------------------------------------------
1 | //
2 | // Created by zhouhaibo on 2017/7/23.
3 | //
4 |
5 | #ifndef FILTERENGINE_COMMON_H
6 | #define FILTERENGINE_COMMON_H
7 |
8 | #include
9 | #include
10 | #include
11 | #include
12 | #include
13 | #include
14 | #include
15 | #include
16 | #include
17 | #include
18 | #include
19 | #include
20 |
21 | #include "platform.h"
22 |
23 | #define GLES_ATTACH_STRING_L "#ifdef OPENGL_ES\nprecision lowp float;\n#endif\n"
24 | #define GLES_ATTACH_STRING_M "#ifdef OPENGL_ES\nprecision mediump float;\n#endif\n"
25 | #define GLES_ATTACH_STRING_H "#ifdef OPENGL_ES\nprecision highp float;\n#endif\n"
26 |
27 | #define GLES_SHADER_STRING(...) #__VA_ARGS__
28 | #define GLES_SHADER_STRING_PRECISION_L(...) GLES_ATTACH_STRING_L #__VA_ARGS__
29 | #define GLES_SHADER_STRING_PRECISION_M(...) GLES_ATTACH_STRING_M #__VA_ARGS__
30 | #define GLES_SHADER_STRING_PRECISION_H(...) GLES_ATTACH_STRING_H #__VA_ARGS__
31 |
32 | typedef const char* ConstString;
33 |
34 |
35 | #endif //FILTERENGINE_COMMON_H
36 |
--------------------------------------------------------------------------------
/src/common/filter_interface.cpp:
--------------------------------------------------------------------------------
1 | //
2 | // Created by zhouhaibo on 2017/9/11.
3 | //
4 |
5 | #include "filter_interface.h"
6 |
7 | FilterInterface::FilterInterface() {
8 |
9 | }
10 |
11 | FilterInterface::~FilterInterface() {
12 |
13 | }
14 |
15 | void FilterInterface::init() {
16 |
17 | }
18 |
19 | void FilterInterface::setParam(float param) {
20 |
21 | }
22 |
23 | //void FilterInterface::process(GLuint textureId) {
24 | //
25 | //}
26 |
27 | void FilterInterface::destroy() {
28 |
29 | }
--------------------------------------------------------------------------------
/src/common/filter_interface.h:
--------------------------------------------------------------------------------
1 | //
2 | // Created by zhouhaibo on 2017/9/11.
3 | //
4 |
5 | #ifndef FILTERENGINE_FILTER_INTERFACE_H
6 | #define FILTERENGINE_FILTER_INTERFACE_H
7 |
8 | #include "common.h"
9 | #include "utils/gl_utils.h"
10 |
11 | class FilterInterface {
12 |
13 | public:
14 | FilterInterface();
15 |
16 | virtual ~FilterInterface();
17 |
18 | virtual void init();
19 |
20 | virtual void setParam(float params);
21 |
22 | virtual void process(GLuint textureId, int width, int height) = 0;
23 |
24 | virtual void destroy();
25 | };
26 |
27 |
28 | #endif //FILTERENGINE_FILTER_INTERFACE_H
29 |
--------------------------------------------------------------------------------
/src/common/platform.h:
--------------------------------------------------------------------------------
1 | //
2 | // Created by zhouhaibo on 2017/9/11.
3 | //
4 |
5 | #ifndef FILTERENGINE_PLATFORM_H
6 | #define FILTERENGINE_PLATFORM_H
7 |
8 | #define DEBUG_FLAG true
9 | #define INFO_FLAG true
10 |
11 | #define __FILENAME__ (strrchr(__FILE__, '/') ? (strrchr(__FILE__, '/') + 1):__FILE__)
12 |
13 | // 调试信息
14 | #ifdef __APPLE__
15 | #define LOGD(...) if (DEBUG_FLAG) \
16 | {printf("[DEBUG] FILE: %s, LINE: %d", __FILENAME__, __LINE__);printf(__VA_ARGS__);printf("\n");} // 定义LOGD
17 | #define LOGI(...) if (INFO_FLAG) \
18 | {printf("[INFO] FILE: %s, LINE: %d", __FILENAME__, __LINE__);printf(__VA_ARGS__);printf("\n");} // 定义LOGI
19 | #define LOGE(...) if (true) \
20 | {printf("[ERROR] FILE: %s, LINE: %d", __FILENAME__, __LINE__);printf(__VA_ARGS__);printf("\n");} // 定义LOGE
21 | #elif __ANDROID__
22 | #include
23 |
24 | // 定义LOGD
25 | #if DEBUG_FLAG
26 | #define LOGD(LOG_TAG, fmt, ...) __android_log_print(ANDROID_LOG_DEBUG, LOG_TAG, "[%s, %d]: "fmt, __FILENAME__, __LINE__, ##__VA_ARGS__)
27 | #else
28 | #define LOGD(LOG_TAG, fmt, ...)
29 | #endif
30 |
31 | // 定义LOGI
32 | #if INFO_FLAG
33 | #define LOGI(LOG_TAG, fmt, ...) __android_log_print(ANDROID_LOG_INFO, LOG_TAG, "[%s, %d]: "fmt, __FILENAME__, __LINE__, ##__VA_ARGS__)
34 | #else
35 | LOGI(LOG_TAG, fmt, ...)
36 | #endif
37 |
38 | // 定义LOGE
39 | #define LOGE(LOG_TAG, fmt, ...) __android_log_print(ANDROID_LOG_ERROR, LOG_TAG, "[%s, %d]: "fmt, __FILENAME__, __LINE__, ##__VA_ARGS__)
40 |
41 | #endif
42 |
43 | // OpenGL ES 头文件
44 | #ifdef __APPLE__
45 | #include
46 | #include
47 | #include
48 | #elif __ANDROID__
49 | #include
50 | #include
51 | #include
52 | #include
53 | #endif
54 |
55 | #endif //FILTERENGINE_PLATFORM_H
56 |
--------------------------------------------------------------------------------
/src/decoder/picture_decoder.h:
--------------------------------------------------------------------------------
1 | //
2 | // Created by zhouhaibo on 2017/8/1.
3 | //
4 |
5 | #ifndef FILTERENGINE_PIC_DECODER_H
6 | #define FILTERENGINE_PIC_DECODER_H
7 |
8 | #include "common/common.h"
9 |
10 | extern "C" {
11 | #include
12 | #include
13 | #include
14 | #include
15 | }
16 |
17 | int pic_decode(const char *filePath, int *width, int *height, unsigned char **rgbaBuf);
18 |
19 | #endif //FILTERENGINE_PIC_DECODER_H
20 |
--------------------------------------------------------------------------------
/src/effect/effect_interface.cpp:
--------------------------------------------------------------------------------
1 | //
2 | // Created by zhouhaibo on 2017/9/11.
3 | //
4 |
5 | #include "effect_interface.h"
--------------------------------------------------------------------------------
/src/effect/effect_interface.h:
--------------------------------------------------------------------------------
1 | //
2 | // Created by zhouhaibo on 2017/9/11.
3 | //
4 |
5 | #ifndef FILTERENGINE_EFFECT_INTERFACE_H
6 | #define FILTERENGINE_EFFECT_INTERFACE_H
7 |
8 |
9 | class EffectInterface {
10 |
11 | };
12 |
13 |
14 | #endif //FILTERENGINE_EFFECT_INTERFACE_H
15 |
--------------------------------------------------------------------------------
/src/filter/adjust/adjust_filter.h:
--------------------------------------------------------------------------------
1 | //
2 | // Created by zhouhaibo on 2017/9/20.
3 | //
4 |
5 | #ifndef FILTERENGINE_ADJUST_FILTER_H
6 | #define FILTERENGINE_ADJUST_FILTER_H
7 |
8 | #include "common/filter_interface.h"
9 | #include "utils/common_utils.h"
10 |
11 | /** 基础调节滤镜参数类型 */
12 | enum AdjustFilterParamsType {
13 | ADJUST_FILTER_NONE,
14 | ADJUST_FILTER_BRIGHTNESS_INTENSITY,
15 | ADJUST_FILTER_CONTRAST_INTENSITY,
16 | ADJUST_FILTER_EXPOSURE_INTENSITY,
17 | ADJUST_FILTER_HUE_INTENSITY,
18 | ADJUST_FILTER_SHARPEN_INTENSITY,
19 | ADJUST_FILTER_SATURATION_INTENSITY
20 | };
21 |
22 | class AdjustFilter : public FilterInterface {
23 | private:
24 | float mBrightnessIntensity;
25 | float mContrastIntensity;
26 | float mExposureIntensity;
27 | float mHueIntensity;
28 | float mSharpenIntensity;
29 | float mSaturationIntensity;
30 | ConstString mVertexShader;
31 | ConstString mFragmentShader;
32 | GLuint mProgramId;
33 | GLint mVertexCoords;;
34 | GLint mTextureCoords;
35 | GLint mTextureHandle;
36 | GLint mBrightnessIntensityHandle;
37 | GLint mContrastIntensityHandle;
38 | GLint mExposureIntensityHandle;
39 | GLint mHueIntensityHandle;
40 | GLint mSharpenIntensityHandle;
41 | GLint mSaturationIntensityHandle;
42 | GLint mWidthHandle;
43 | GLint mHeightHandle;
44 |
45 | public:
46 | AdjustFilter();
47 |
48 | ~AdjustFilter();
49 |
50 | void init();
51 |
52 | void setParam(int type, float intensity);
53 |
54 | void process(GLuint textureId, int width, int height);
55 |
56 | void destroy();
57 |
58 | };
59 |
60 |
61 | #endif //FILTERENGINE_ADJUST_FILTER_H
62 |
--------------------------------------------------------------------------------
/src/filter/adjust/adjust_filter_manager.cpp:
--------------------------------------------------------------------------------
1 | //
2 | // Created by zhouhaibo on 2017/9/20.
3 | //
4 |
5 | #include "adjust_filter_manager.h"
6 |
7 | #define LOG_TAG "AdjustFilterManager"
8 |
9 | AdjustFilterManager::AdjustFilterManager() {
10 | mIsInitialized = false;
11 | mFboTextureID = 0;
12 | mFboBufferID = 0;
13 | mAdjustFilter = NULL;
14 | }
15 |
16 | AdjustFilterManager::~AdjustFilterManager() {
17 | if (mIsInitialized) {
18 | destroy();
19 | }
20 | }
21 |
22 | void AdjustFilterManager::init(int width, int height) {
23 | if (NULL == mAdjustFilter) {
24 | mAdjustFilter = new AdjustFilter();
25 | mAdjustFilter->init();
26 | }
27 |
28 | if (mFboTextureID == 0) {
29 | glGenTextures(1, &mFboTextureID);
30 | }
31 |
32 | if (mFboBufferID == 0) {
33 | glGenFramebuffers(1, &mFboBufferID);
34 | }
35 |
36 | bindFrameBuffer(mFboTextureID, mFboBufferID, width, height);
37 |
38 | mIsInitialized = true;
39 | }
40 |
41 | void AdjustFilterManager::setParams(int type, float intensity) {
42 | if (NULL != mAdjustFilter) {
43 | mAdjustFilter->setParam(type, intensity);
44 | }
45 | }
46 |
47 | GLuint AdjustFilterManager::process(GLuint textureId, int width, int height) {
48 | glViewport(0, 0, width, height);
49 | glBindFramebuffer(GL_FRAMEBUFFER, mFboBufferID);
50 | GLuint targetTexture = textureId;
51 |
52 | if (NULL != mAdjustFilter) {
53 | mAdjustFilter->process(targetTexture, width, height);
54 | targetTexture = mFboTextureID;
55 | }
56 |
57 | glBindFramebuffer(GL_FRAMEBUFFER, 0);
58 |
59 | return targetTexture;
60 | }
61 |
62 | void AdjustFilterManager::destroy() {
63 | if (!mIsInitialized) {
64 | LOGE(LOG_TAG, "BeautifyInterFace is not Initialized");
65 | return;
66 | }
67 |
68 | if (NULL != mAdjustFilter) {
69 | mAdjustFilter->destroy();
70 | delete mAdjustFilter;
71 | }
72 |
73 | mIsInitialized = false;
74 | }
--------------------------------------------------------------------------------
/src/filter/adjust/adjust_filter_manager.h:
--------------------------------------------------------------------------------
1 | //
2 | // Created by zhouhaibo on 2017/9/20.
3 | //
4 |
5 | #ifndef FILTERENGINE_ADJUST_FILTER_MANAGER_H
6 | #define FILTERENGINE_ADJUST_FILTER_MANAGER_H
7 |
8 | #include "adjust_filter.h"
9 |
10 | class AdjustFilterManager {
11 | private:
12 | bool mIsInitialized;
13 | GLuint mFboBufferID;
14 | GLuint mFboTextureID;
15 |
16 | AdjustFilter *mAdjustFilter;
17 |
18 | public:
19 | AdjustFilterManager();
20 |
21 | ~AdjustFilterManager();
22 |
23 | void init(int width, int height);
24 |
25 | void setParams(int type, float intensity);
26 |
27 | GLuint process(GLuint textureId, int width, int height);
28 |
29 | void destroy();
30 |
31 | };
32 |
33 |
34 | #endif //FILTERENGINE_ADJUST_FILTER_MANAGER_H
35 |
--------------------------------------------------------------------------------
/src/filter/advanced/I1977_filter.cpp:
--------------------------------------------------------------------------------
1 | //
2 | // Created by zhouhaibo on 2017/9/11.
3 | //
4 |
5 | #include "I1977_filter.h"
6 |
7 | static ConstString I1977_FSH = GLES_SHADER_STRING_PRECISION_H(
8 | varying vec2 textureCoordinate;
9 | uniform sampler2D inputImageTexture;
10 | uniform sampler2D inputImageTexture1;
11 |
12 | void main() {
13 | vec3 texel = texture2D(inputImageTexture, textureCoordinate).rgb;
14 | texel = vec3(texture2D(inputImageTexture1, vec2(texel.r, .16666)).r,
15 | texture2D(inputImageTexture1, vec2(texel.g, .5)).g,
16 | texture2D(inputImageTexture1, vec2(texel.b, .83333)).b);
17 |
18 | gl_FragColor = vec4(texel, 1.0);
19 | }
20 | );
21 |
22 | I1977Filter::I1977Filter() {
23 |
24 | }
25 |
26 | I1977Filter::~I1977Filter() {
27 |
28 | }
29 |
30 | void I1977Filter::init(FilterConfig *filterConfig) {
31 | mFragmentShader = I1977_FSH;
32 | MultiInputFilter::init(filterConfig);
33 | }
--------------------------------------------------------------------------------
/src/filter/advanced/I1977_filter.h:
--------------------------------------------------------------------------------
1 | //
2 | // Created by zhouhaibo on 2017/9/11.
3 | //
4 |
5 | #ifndef FILTERENGINE_1977_FLITER_H
6 | #define FILTERENGINE_1977_FLITER_H
7 |
8 | #include "filter/base/multi_input_filter.h"
9 |
10 | class I1977Filter : public MultiInputFilter {
11 | public:
12 | I1977Filter();
13 |
14 | ~I1977Filter();
15 |
16 | void init(FilterConfig *filterConfig);
17 |
18 | };
19 |
20 |
21 | #endif //FILTERENGINE_1977_FLITER_H
22 |
--------------------------------------------------------------------------------
/src/filter/advanced/amaro_filter.cpp:
--------------------------------------------------------------------------------
1 | //
2 | // Created by zhouhaibo on 2017/9/11.
3 | //
4 |
5 | #include "amaro_filter.h"
6 |
7 | static ConstString Amaro_FSH = GLES_SHADER_STRING_PRECISION_H(
8 | varying vec2 textureCoordinate;
9 | uniform sampler2D inputImageTexture;
10 | uniform sampler2D inputImageTexture1;
11 | uniform sampler2D inputImageTexture2;
12 | uniform sampler2D inputImageTexture3;
13 |
14 | void main() {
15 | vec4 texel = texture2D(inputImageTexture, textureCoordinate);
16 | vec3 bbTexel = texture2D(inputImageTexture1, textureCoordinate).rgb;
17 | texel.r = texture2D(inputImageTexture2, vec2(bbTexel.r, texel.r)).r;
18 | texel.g = texture2D(inputImageTexture2, vec2(bbTexel.g, texel.g)).g;
19 | texel.b = texture2D(inputImageTexture2, vec2(bbTexel.b, texel.b)).b;
20 | vec4 mapped;
21 | mapped.r = texture2D(inputImageTexture3, vec2(texel.r, .16666)).r;
22 | mapped.g = texture2D(inputImageTexture3, vec2(texel.g, .5)).g;
23 | mapped.b = texture2D(inputImageTexture3, vec2(texel.b, .83333)).b;
24 | mapped.a = 1.0;
25 | gl_FragColor = mapped;
26 | }
27 | );
28 |
29 |
30 | AmaroFilter::AmaroFilter() {
31 |
32 | }
33 |
34 | AmaroFilter::~AmaroFilter() {
35 |
36 | }
37 |
38 | void AmaroFilter::init(FilterConfig *filterConfig) {
39 | mFragmentShader = Amaro_FSH;
40 | MultiInputFilter::init(filterConfig);
41 | }
42 |
--------------------------------------------------------------------------------
/src/filter/advanced/amaro_filter.h:
--------------------------------------------------------------------------------
1 | //
2 | // Created by zhouhaibo on 2017/9/11.
3 | //
4 |
5 | #ifndef FILTERENGINE_AMARO_FILTER_H
6 | #define FILTERENGINE_AMARO_FILTER_H
7 |
8 | #include "filter/base/multi_input_filter.h"
9 |
10 | class AmaroFilter : public MultiInputFilter {
11 | public:
12 | AmaroFilter();
13 |
14 | ~AmaroFilter();
15 |
16 | void init(FilterConfig *filterConfig);
17 |
18 | };
19 |
20 |
21 | #endif //FILTERENGINE_AMARO_FILTER_H
22 |
--------------------------------------------------------------------------------
/src/filter/advanced/brannan_filter.h:
--------------------------------------------------------------------------------
1 | //
2 | // Created by zhouhaibo on 2017/9/11.
3 | //
4 |
5 | #ifndef FILTERENGINE_BRANNAN_FILTER_H
6 | #define FILTERENGINE_BRANNAN_FILTER_H
7 |
8 | #include "filter/base/multi_input_filter.h"
9 |
10 | class BrannanFilter : public MultiInputFilter {
11 | public:
12 | BrannanFilter();
13 |
14 | ~BrannanFilter();
15 |
16 | void init(FilterConfig *filterConfig);
17 | };
18 |
19 | #endif //FILTERENGINE_BRANNAN_FILTER_H
20 |
--------------------------------------------------------------------------------
/src/filter/advanced/earlybird_filter.h:
--------------------------------------------------------------------------------
1 | //
2 | // Created by zhouhaibo on 2017/9/11.
3 | //
4 |
5 | #ifndef FILTERENGINE_EARLYBIRD_FILTER_H
6 | #define FILTERENGINE_EARLYBIRD_FILTER_H
7 |
8 | #include "filter/base/multi_input_filter.h"
9 |
10 | class EarlybirdFilter : public MultiInputFilter {
11 | public:
12 | EarlybirdFilter();
13 |
14 | ~EarlybirdFilter();
15 |
16 | void init(FilterConfig *filterConfig);
17 |
18 | };
19 |
20 |
21 | #endif //FILTERENGINE_EARLYBIRD_FILTER_H
22 |
--------------------------------------------------------------------------------
/src/filter/advanced/hefe_filter.h:
--------------------------------------------------------------------------------
1 | //
2 | // Created by zhouhaibo on 2017/9/11.
3 | //
4 |
5 | #ifndef FILTERENGINE_HEFE_FILTER_H
6 | #define FILTERENGINE_HEFE_FILTER_H
7 |
8 | #include "filter/base/multi_input_filter.h"
9 |
10 | class HefeFilter : public MultiInputFilter {
11 | public:
12 | HefeFilter();
13 |
14 | ~HefeFilter();
15 |
16 | void init(FilterConfig *filterConfig);
17 |
18 | };
19 |
20 |
21 | #endif //FILTERENGINE_HEFE_FILTER_H
22 |
--------------------------------------------------------------------------------
/src/filter/advanced/hudson_filter.cpp:
--------------------------------------------------------------------------------
1 | //
2 | // Created by zhouhaibo on 2017/9/11.
3 | //
4 |
5 | #include "hudson_filter.h"
6 |
7 | static ConstString Hudson_FSH = GLES_SHADER_STRING_PRECISION_H(
8 | varying vec2 textureCoordinate;
9 | uniform sampler2D inputImageTexture;
10 | uniform sampler2D inputImageTexture1; //blowout;
11 | uniform sampler2D inputImageTexture2; //overlay;
12 | uniform sampler2D inputImageTexture3; //map
13 |
14 | void main() {
15 | vec4 texel = texture2D(inputImageTexture, textureCoordinate);
16 | vec3 bbTexel = texture2D(inputImageTexture1, textureCoordinate).rgb;
17 |
18 | texel.r = texture2D(inputImageTexture2, vec2(bbTexel.r, texel.r)).r;
19 | texel.g = texture2D(inputImageTexture2, vec2(bbTexel.g, texel.g)).g;
20 | texel.b = texture2D(inputImageTexture2, vec2(bbTexel.b, texel.b)).b;
21 |
22 | vec4 mapped;
23 | mapped.r = texture2D(inputImageTexture3, vec2(texel.r, .16666)).r;
24 | mapped.g = texture2D(inputImageTexture3, vec2(texel.g, .5)).g;
25 | mapped.b = texture2D(inputImageTexture3, vec2(texel.b, .83333)).b;
26 | mapped.a = 1.0;
27 |
28 | gl_FragColor = mapped;
29 | }
30 | );
31 |
32 |
33 | HudsonFilter::HudsonFilter() {
34 |
35 | }
36 |
37 | HudsonFilter::~HudsonFilter() {
38 |
39 | }
40 |
41 | void HudsonFilter::init(FilterConfig *filterConfig) {
42 | mFragmentShader = Hudson_FSH;
43 | MultiInputFilter::init(filterConfig);
44 | }
--------------------------------------------------------------------------------
/src/filter/advanced/hudson_filter.h:
--------------------------------------------------------------------------------
1 | //
2 | // Created by zhouhaibo on 2017/9/11.
3 | //
4 |
5 | #ifndef FILTERENGINE_HUDSON_FILTER_H
6 | #define FILTERENGINE_HUDSON_FILTER_H
7 |
8 | #include "filter/base/multi_input_filter.h"
9 |
10 | class HudsonFilter : public MultiInputFilter {
11 | public:
12 | HudsonFilter();
13 |
14 | ~HudsonFilter();
15 |
16 | void init(FilterConfig *filterConfig);
17 |
18 | };
19 |
20 |
21 | #endif //FILTERENGINE_HUDSON_FILTER_H
22 |
--------------------------------------------------------------------------------
/src/filter/advanced/inkwell_filter.cpp:
--------------------------------------------------------------------------------
1 | //
2 | // Created by zhouhaibo on 2017/9/11.
3 | //
4 |
5 | #include "inkwell_filter.h"
6 |
7 | static ConstString Inkwell_FSH = GLES_SHADER_STRING_PRECISION_H(
8 | varying vec2 textureCoordinate;
9 | uniform sampler2D inputImageTexture;
10 | uniform sampler2D inputImageTexture1;
11 |
12 | void main() {
13 | vec3 texel = texture2D(inputImageTexture, textureCoordinate).rgb;
14 | texel = vec3(dot(vec3(0.3, 0.6, 0.1), texel));
15 | texel = vec3(texture2D(inputImageTexture1, vec2(texel.r, .16666)).r);
16 | gl_FragColor = vec4(texel, 1.0);
17 | }
18 | );
19 |
20 |
21 | InkwellFilter::InkwellFilter() {
22 |
23 | }
24 |
25 | InkwellFilter::~InkwellFilter() {
26 |
27 | }
28 |
29 | void InkwellFilter::init(FilterConfig *filterConfig) {
30 | mFragmentShader = Inkwell_FSH;
31 | MultiInputFilter::init(filterConfig);
32 | }
--------------------------------------------------------------------------------
/src/filter/advanced/inkwell_filter.h:
--------------------------------------------------------------------------------
1 | //
2 | // Created by zhouhaibo on 2017/9/11.
3 | //
4 |
5 | #ifndef FILTERENGINE_INKWELL_FILTER_H
6 | #define FILTERENGINE_INKWELL_FILTER_H
7 |
8 | #include "filter/base/multi_input_filter.h"
9 |
10 | class InkwellFilter : public MultiInputFilter {
11 | public:
12 | InkwellFilter();
13 |
14 | ~InkwellFilter();
15 |
16 | void init(FilterConfig *filterConfig);
17 |
18 | };
19 |
20 |
21 | #endif //FILTERENGINE_INKWELL_FILTER_H
22 |
--------------------------------------------------------------------------------
/src/filter/advanced/lomo_filter.cpp:
--------------------------------------------------------------------------------
1 | //
2 | // Created by zhouhaibo on 2017/9/11.
3 | //
4 |
5 | #include "lomo_filter.h"
6 |
7 | static ConstString Lomo_FSH = GLES_SHADER_STRING_PRECISION_H(
8 | varying vec2 textureCoordinate;
9 | uniform sampler2D inputImageTexture;
10 | uniform sampler2D inputImageTexture1;
11 | uniform sampler2D inputImageTexture2;
12 |
13 | void main() {
14 | vec3 texel = texture2D(inputImageTexture, textureCoordinate).rgb;
15 |
16 | vec2 red = vec2(texel.r, 0.16666);
17 | vec2 green = vec2(texel.g, 0.5);
18 | vec2 blue = vec2(texel.b, 0.83333);
19 |
20 | texel.rgb = vec3(texture2D(inputImageTexture1, red).r,
21 | texture2D(inputImageTexture1, green).g,
22 | texture2D(inputImageTexture1, blue).b);
23 |
24 | vec2 tc = (2.0 * textureCoordinate) - 1.0;
25 | float d = dot(tc, tc);
26 | vec2 lookup = vec2(d, texel.r);
27 | texel.r = texture2D(inputImageTexture2, lookup).r;
28 | lookup.y = texel.g;
29 | texel.g = texture2D(inputImageTexture2, lookup).g;
30 | lookup.y = texel.b;
31 | texel.b = texture2D(inputImageTexture2, lookup).b;
32 |
33 | gl_FragColor = vec4(texel, 1.0);
34 | }
35 | );
36 |
37 |
38 | LomoFilter::LomoFilter() {
39 |
40 | }
41 |
42 | LomoFilter::~LomoFilter() {
43 |
44 | }
45 |
46 | void LomoFilter::init(FilterConfig *filterConfig) {
47 | mFragmentShader = Lomo_FSH;
48 | MultiInputFilter::init(filterConfig);
49 | }
--------------------------------------------------------------------------------
/src/filter/advanced/lomo_filter.h:
--------------------------------------------------------------------------------
1 | //
2 | // Created by zhouhaibo on 2017/9/11.
3 | //
4 |
5 | #ifndef FILTERENGINE_LOMO_FILTER_H
6 | #define FILTERENGINE_LOMO_FILTER_H
7 |
8 | #include "filter/base/multi_input_filter.h"
9 |
10 | class LomoFilter : public MultiInputFilter {
11 | public:
12 | LomoFilter();
13 |
14 | ~LomoFilter();
15 |
16 | void init(FilterConfig *filterConfig);
17 |
18 | };
19 |
20 | #endif //FILTERENGINE_LOMO_FILTER_H
21 |
--------------------------------------------------------------------------------
/src/filter/advanced/lordkelvin_filter.cpp:
--------------------------------------------------------------------------------
1 | //
2 | // Created by zhouhaibo on 2017/9/11.
3 | //
4 |
5 | #include "lordkelvin_filter.h"
6 |
7 | static ConstString Lordkelvin_FSH = GLES_SHADER_STRING_PRECISION_H(
8 | varying vec2 textureCoordinate;
9 | uniform sampler2D inputImageTexture;
10 | uniform sampler2D inputImageTexture1;
11 |
12 | void main() {
13 | vec3 texel = texture2D(inputImageTexture, textureCoordinate).rgb;
14 |
15 | vec2 lookup;
16 | lookup.y = .5;
17 |
18 | lookup.x = texel.r;
19 | texel.r = texture2D(inputImageTexture1, lookup).r;
20 |
21 | lookup.x = texel.g;
22 | texel.g = texture2D(inputImageTexture1, lookup).g;
23 |
24 | lookup.x = texel.b;
25 | texel.b = texture2D(inputImageTexture1, lookup).b;
26 |
27 | gl_FragColor = vec4(texel, 1.0);
28 | }
29 | );
30 |
31 | LordkelvinFilter::LordkelvinFilter() {
32 |
33 | }
34 |
35 | LordkelvinFilter::~LordkelvinFilter() {
36 |
37 | }
38 |
39 | void LordkelvinFilter::init(FilterConfig *filterConfig) {
40 | mFragmentShader = Lordkelvin_FSH;
41 | MultiInputFilter::init(filterConfig);
42 | }
--------------------------------------------------------------------------------
/src/filter/advanced/lordkelvin_filter.h:
--------------------------------------------------------------------------------
1 | //
2 | // Created by zhouhaibo on 2017/9/11.
3 | //
4 |
5 | #ifndef FILTERENGINE_LORDKELVIN_FILTER_H
6 | #define FILTERENGINE_LORDKELVIN_FILTER_H
7 |
8 | #include "filter/base/multi_input_filter.h"
9 |
10 | class LordkelvinFilter : public MultiInputFilter {
11 | public:
12 | LordkelvinFilter();
13 |
14 | ~LordkelvinFilter();
15 |
16 | void init(FilterConfig *filterConfig);
17 |
18 | };
19 |
20 |
21 | #endif //FILTERENGINE_LORDKELVIN_FILTER_H
22 |
--------------------------------------------------------------------------------
/src/filter/advanced/nashville_filter.cpp:
--------------------------------------------------------------------------------
1 | //
2 | // Created by zhouhaibo on 2017/9/11.
3 | //
4 |
5 | #include "nashville_filter.h"
6 |
7 | static ConstString Nashville_FSH = GLES_SHADER_STRING_PRECISION_H(
8 | varying vec2 textureCoordinate;
9 | uniform sampler2D inputImageTexture;
10 | uniform sampler2D inputImageTexture1;
11 |
12 | void main() {
13 | vec3 texel = texture2D(inputImageTexture, textureCoordinate).rgb;
14 | texel = vec3(texture2D(inputImageTexture1, vec2(texel.r, .16666)).r,
15 | texture2D(inputImageTexture1, vec2(texel.g, .5)).g,
16 | texture2D(inputImageTexture1, vec2(texel.b, .83333)).b);
17 | gl_FragColor = vec4(texel, 1.0);
18 | }
19 | );
20 |
21 | NashvilleFilter::NashvilleFilter() {
22 |
23 | }
24 |
25 | NashvilleFilter::~NashvilleFilter() {
26 |
27 | }
28 |
29 | void NashvilleFilter::init(FilterConfig *filterConfig) {
30 | mFragmentShader = Nashville_FSH;
31 | MultiInputFilter::init(filterConfig);
32 | }
--------------------------------------------------------------------------------
/src/filter/advanced/nashville_filter.h:
--------------------------------------------------------------------------------
1 | //
2 | // Created by zhouhaibo on 2017/9/11.
3 | //
4 |
5 | #ifndef FILTERENGINE_NASHVILLE_FILTER_H
6 | #define FILTERENGINE_NASHVILLE_FILTER_H
7 |
8 | #include "filter/base/multi_input_filter.h"
9 |
10 | class NashvilleFilter : public MultiInputFilter {
11 | public:
12 | NashvilleFilter();
13 |
14 | ~NashvilleFilter();
15 |
16 | void init(FilterConfig *filterConfig);
17 |
18 | };
19 |
20 | #endif //FILTERENGINE_NASHVILLE_FILTER_H
21 |
--------------------------------------------------------------------------------
/src/filter/advanced/rise_filter.cpp:
--------------------------------------------------------------------------------
1 | //
2 | // Created by zhouhaibo on 2017/9/11.
3 | //
4 |
5 | #include "rise_filter.h"
6 |
7 | static ConstString Rise_FSH = GLES_SHADER_STRING_PRECISION_H(
8 | varying vec2 textureCoordinate;
9 | uniform sampler2D inputImageTexture;
10 | uniform sampler2D inputImageTexture1; // blowout;
11 | uniform sampler2D inputImageTexture2; // overlay;
12 | uniform sampler2D inputImageTexture3; // map
13 |
14 | void main() {
15 | vec4 texel = texture2D(inputImageTexture, textureCoordinate);
16 | vec3 bbTexel = texture2D(inputImageTexture1, textureCoordinate).rgb;
17 |
18 | texel.r = texture2D(inputImageTexture2, vec2(bbTexel.r, texel.r)).r;
19 | texel.g = texture2D(inputImageTexture2, vec2(bbTexel.g, texel.g)).g;
20 | texel.b = texture2D(inputImageTexture2, vec2(bbTexel.b, texel.b)).b;
21 |
22 | vec4 mapped;
23 | mapped.r = texture2D(inputImageTexture3, vec2(texel.r, .16666)).r;
24 | mapped.g = texture2D(inputImageTexture3, vec2(texel.g, .5)).g;
25 | mapped.b = texture2D(inputImageTexture3, vec2(texel.b, .83333)).b;
26 | mapped.a = 1.0;
27 |
28 | gl_FragColor = mapped;
29 | }
30 | );
31 |
32 | RiseFilter::RiseFilter() {
33 |
34 | }
35 |
36 | RiseFilter::~RiseFilter() {
37 |
38 | }
39 |
40 | void RiseFilter::init(FilterConfig *filterConfig) {
41 | mFragmentShader = Rise_FSH;
42 | MultiInputFilter::init(filterConfig);
43 | }
--------------------------------------------------------------------------------
/src/filter/advanced/rise_filter.h:
--------------------------------------------------------------------------------
1 | //
2 | // Created by zhouhaibo on 2017/9/11.
3 | //
4 |
5 | #ifndef FILTERENGINE_RISE_FILTER_H
6 | #define FILTERENGINE_RISE_FILTER_H
7 |
8 | #include "filter/base/multi_input_filter.h"
9 |
10 | class RiseFilter : public MultiInputFilter {
11 | public:
12 | RiseFilter();
13 |
14 | ~RiseFilter();
15 |
16 | void init(FilterConfig *filterConfig);
17 |
18 | };
19 |
20 |
21 | #endif //FILTERENGINE_RISE_FILTER_H
22 |
--------------------------------------------------------------------------------
/src/filter/advanced/sierra_filter.cpp:
--------------------------------------------------------------------------------
1 | //
2 | // Created by zhouhaibo on 2017/9/11.
3 | //
4 |
5 | #include "sierra_filter.h"
6 |
7 | static ConstString Sierra_FSH = GLES_SHADER_STRING_PRECISION_H(
8 | varying vec2 textureCoordinate;
9 | uniform sampler2D inputImageTexture;
10 | uniform sampler2D inputImageTexture1;
11 | uniform sampler2D inputImageTexture2;
12 | uniform sampler2D inputImageTexture3;
13 |
14 | void main() {
15 | vec4 texel = texture2D(inputImageTexture, textureCoordinate);
16 | vec3 bbTexel = texture2D(inputImageTexture1, textureCoordinate).rgb;
17 |
18 | texel.r = texture2D(inputImageTexture2, vec2(bbTexel.r, texel.r)).r;
19 | texel.g = texture2D(inputImageTexture2, vec2(bbTexel.g, texel.g)).g;
20 | texel.b = texture2D(inputImageTexture2, vec2(bbTexel.b, texel.b)).b;
21 |
22 | vec4 mapped;
23 | mapped.r = texture2D(inputImageTexture3, vec2(texel.r, .16666)).r;
24 | mapped.g = texture2D(inputImageTexture3, vec2(texel.g, .5)).g;
25 | mapped.b = texture2D(inputImageTexture3, vec2(texel.b, .83333)).b;
26 | mapped.a = 1.0;
27 |
28 | gl_FragColor = mapped;
29 | }
30 | );
31 |
32 |
33 | SierraFilter::SierraFilter() {
34 |
35 | }
36 |
37 | SierraFilter::~SierraFilter() {
38 |
39 | }
40 |
41 | void SierraFilter::init(FilterConfig *filterConfig) {
42 | mFragmentShader = Sierra_FSH;
43 | MultiInputFilter::init(filterConfig);
44 | }
--------------------------------------------------------------------------------
/src/filter/advanced/sierra_filter.h:
--------------------------------------------------------------------------------
1 | //
2 | // Created by zhouhaibo on 2017/9/11.
3 | //
4 |
5 | #ifndef FILTERENGINE_SIERRA_FILTER_H
6 | #define FILTERENGINE_SIERRA_FILTER_H
7 |
8 | #include "filter/base/multi_input_filter.h"
9 |
10 | class SierraFilter : public MultiInputFilter {
11 | public:
12 | SierraFilter();
13 |
14 | ~SierraFilter();
15 |
16 | void init(FilterConfig *filterConfig);
17 |
18 | };
19 |
20 |
21 | #endif //FILTERENGINE_SIERRA_FILTER_H
22 |
--------------------------------------------------------------------------------
/src/filter/advanced/sutro_filter.cpp:
--------------------------------------------------------------------------------
1 | //
2 | // Created by zhouhaibo on 2017/9/11.
3 | //
4 |
5 | #include "sutro_filter.h"
6 |
7 | static ConstString Sutro_FSH = GLES_SHADER_STRING_PRECISION_H(
8 | varying vec2 textureCoordinate;
9 | uniform sampler2D inputImageTexture;
10 | uniform sampler2D inputImageTexture1; //sutroMap;
11 | uniform sampler2D inputImageTexture2; //sutroMetal;
12 | uniform sampler2D inputImageTexture3; //softLight
13 | uniform sampler2D inputImageTexture4; //sutroEdgeburn
14 | uniform sampler2D inputImageTexture5; //sutroCurves
15 |
16 | void main() {
17 | vec3 texel = texture2D(inputImageTexture, textureCoordinate).rgb;
18 |
19 | vec2 tc = (2.0 * textureCoordinate) - 1.0;
20 | float d = dot(tc, tc);
21 | vec2 lookup = vec2(d, texel.r);
22 | texel.r = texture2D(inputImageTexture1, lookup).r;
23 | lookup.y = texel.g;
24 | texel.g = texture2D(inputImageTexture1, lookup).g;
25 | lookup.y = texel.b;
26 | texel.b = texture2D(inputImageTexture1, lookup).b;
27 |
28 | vec3 rgbPrime = vec3(0.1019, 0.0, 0.0);
29 | float m = dot(vec3(.3, .59, .11), texel.rgb) - 0.03058;
30 | texel = mix(texel, rgbPrime + m, 0.32);
31 |
32 | vec3 metal = texture2D(inputImageTexture2, textureCoordinate).rgb;
33 | texel.r = texture2D(inputImageTexture3, vec2(metal.r, texel.r)).r;
34 | texel.g = texture2D(inputImageTexture3, vec2(metal.g, texel.g)).g;
35 | texel.b = texture2D(inputImageTexture3, vec2(metal.b, texel.b)).b;
36 |
37 | texel = texel * texture2D(inputImageTexture4, textureCoordinate).rgb;
38 |
39 | texel.r = texture2D(inputImageTexture5, vec2(texel.r, .16666)).r;
40 | texel.g = texture2D(inputImageTexture5, vec2(texel.g, .5)).g;
41 | texel.b = texture2D(inputImageTexture5, vec2(texel.b, .83333)).b;
42 |
43 | gl_FragColor = vec4(texel, 1.0);
44 | }
45 | );
46 |
47 | SutroFilter::SutroFilter() {
48 |
49 | }
50 |
51 | SutroFilter::~SutroFilter() {
52 |
53 | }
54 |
55 | void SutroFilter::init(FilterConfig *filterConfig) {
56 | mFragmentShader = Sutro_FSH;
57 | MultiInputFilter::init(filterConfig);
58 | }
--------------------------------------------------------------------------------
/src/filter/advanced/sutro_filter.h:
--------------------------------------------------------------------------------
1 | //
2 | // Created by zhouhaibo on 2017/9/11.
3 | //
4 |
5 | #ifndef FILTERENGINE_SUTRO_FILTER_H
6 | #define FILTERENGINE_SUTRO_FILTER_H
7 |
8 | #include "filter/base/multi_input_filter.h"
9 |
10 | class SutroFilter : public MultiInputFilter {
11 | public:
12 | SutroFilter();
13 |
14 | ~SutroFilter();
15 |
16 | void init(FilterConfig *filterConfig);
17 |
18 | };
19 |
20 | #endif //FILTERENGINE_SUTRO_FILTER_H
21 |
--------------------------------------------------------------------------------
/src/filter/advanced/toaster_filter.h:
--------------------------------------------------------------------------------
1 | //
2 | // Created by zhouhaibo on 2017/9/11.
3 | //
4 |
5 | #ifndef FILTERENGINE_TOASTER_FILTER_H
6 | #define FILTERENGINE_TOASTER_FILTER_H
7 |
8 | #include "filter/base/multi_input_filter.h"
9 |
10 | class ToasterFilter : public MultiInputFilter {
11 | public:
12 | ToasterFilter();
13 |
14 | ~ToasterFilter();
15 |
16 | void init(FilterConfig *filterConfig);
17 |
18 | };
19 |
20 |
21 | #endif //FILTERENGINE_TOASTER_FILTER_H
22 |
--------------------------------------------------------------------------------
/src/filter/advanced/valencia_filter.cpp:
--------------------------------------------------------------------------------
1 | //
2 | // Created by zhouhaibo on 2017/9/11.
3 | //
4 |
5 | #include "valencia_filter.h"
6 |
7 |
8 | static ConstString Valencia_FSH = GLES_SHADER_STRING_PRECISION_H(
9 | varying vec2 textureCoordinate;
10 | uniform sampler2D inputImageTexture;
11 | uniform sampler2D inputImageTexture1; //map
12 | uniform sampler2D inputImageTexture2; //gradMap
13 | mat3 saturateMatrix = mat3( 1.1402, -0.0598, -0.061,
14 | -0.1174, 1.0826, -0.1186,
15 | -0.0228, -0.0228, 1.1772);
16 | vec3 lumaCoeffs = vec3(.3, .59, .11);
17 |
18 | void main() {
19 | vec3 texel = texture2D(inputImageTexture, textureCoordinate).rgb;
20 | texel = vec3(texture2D(inputImageTexture1, vec2(texel.r, .1666666)).r,
21 | texture2D(inputImageTexture1, vec2(texel.g, .5)).g,
22 | texture2D(inputImageTexture1, vec2(texel.b, .8333333)).b);
23 |
24 | texel = saturateMatrix * texel;
25 | float luma = dot(lumaCoeffs, texel);
26 | texel = vec3(texture2D(inputImageTexture2, vec2(luma, texel.r)).r,
27 | texture2D(inputImageTexture2, vec2(luma, texel.g)).g,
28 | texture2D(inputImageTexture2, vec2(luma, texel.b)).b);
29 |
30 | gl_FragColor = vec4(texel, 1.0);
31 | }
32 | );
33 |
34 | ValenciaFilter::ValenciaFilter() {
35 |
36 | }
37 |
38 | ValenciaFilter::~ValenciaFilter() {
39 |
40 | }
41 |
42 | void ValenciaFilter::init(FilterConfig *filterConfig) {
43 | mFragmentShader = Valencia_FSH;
44 | MultiInputFilter::init(filterConfig);
45 | }
--------------------------------------------------------------------------------
/src/filter/advanced/valencia_filter.h:
--------------------------------------------------------------------------------
1 | //
2 | // Created by zhouhaibo on 2017/9/11.
3 | //
4 |
5 | #ifndef FILTERENGINE_VALENCIA_FILTER_H
6 | #define FILTERENGINE_VALENCIA_FILTER_H
7 |
8 | #include "filter/base/multi_input_filter.h"
9 |
10 | class ValenciaFilter : public MultiInputFilter {
11 | public:
12 | ValenciaFilter();
13 |
14 | ~ValenciaFilter();
15 |
16 | void init(FilterConfig *filterConfig);
17 |
18 | };
19 |
20 | #endif //FILTERENGINE_VALENCIA_FILTER_H
21 |
--------------------------------------------------------------------------------
/src/filter/advanced/walden_filter.cpp:
--------------------------------------------------------------------------------
1 | //
2 | // Created by zhouhaibo on 2017/9/11.
3 | //
4 |
5 | #include "walden_filter.h"
6 |
7 | static ConstString Walden_FSH = GLES_SHADER_STRING_PRECISION_H(
8 | varying vec2 textureCoordinate;
9 | uniform sampler2D inputImageTexture;
10 | uniform sampler2D inputImageTexture1; //map
11 | uniform sampler2D inputImageTexture2; //vigMap
12 |
13 | void main() {
14 | vec3 texel = texture2D(inputImageTexture, textureCoordinate).rgb;
15 | texel = vec3(texture2D(inputImageTexture1, vec2(texel.r, .16666)).r,
16 | texture2D(inputImageTexture1, vec2(texel.g, .5)).g,
17 | texture2D(inputImageTexture1, vec2(texel.b, .83333)).b);
18 |
19 | vec2 tc = (2.0 * textureCoordinate) - 1.0;
20 | float d = dot(tc, tc);
21 | vec2 lookup = vec2(d, texel.r);
22 | texel.r = texture2D(inputImageTexture2, lookup).r;
23 | lookup.y = texel.g;
24 | texel.g = texture2D(inputImageTexture2, lookup).g;
25 | lookup.y = texel.b;
26 | texel.b = texture2D(inputImageTexture2, lookup).b;
27 |
28 | gl_FragColor = vec4(texel, 1.0);
29 | }
30 | );
31 |
32 | WaldenFilter::WaldenFilter() {
33 |
34 | }
35 |
36 | WaldenFilter::~WaldenFilter() {
37 |
38 | }
39 |
40 | void WaldenFilter::init(FilterConfig *filterConfig) {
41 | mFragmentShader = Walden_FSH;
42 | MultiInputFilter::init(filterConfig);
43 | }
--------------------------------------------------------------------------------
/src/filter/advanced/walden_filter.h:
--------------------------------------------------------------------------------
1 | //
2 | // Created by zhouhaibo on 2017/9/11.
3 | //
4 |
5 | #ifndef FILTERENGINE_WALDEN_FILTER_H
6 | #define FILTERENGINE_WALDEN_FILTER_H
7 |
8 | #include "filter/base/multi_input_filter.h"
9 |
10 | class WaldenFilter : public MultiInputFilter {
11 | public:
12 | WaldenFilter();
13 |
14 | ~WaldenFilter();
15 |
16 | void init(FilterConfig *filterConfig);
17 |
18 | };
19 |
20 | #endif //FILTERENGINE_WALDEN_FILTER_H
21 |
--------------------------------------------------------------------------------
/src/filter/advanced/xproll_filter.cpp:
--------------------------------------------------------------------------------
1 | //
2 | // Created by zhouhaibo on 2017/9/11.
3 | //
4 |
5 | #include "xproll_filter.h"
6 |
7 | static ConstString Xproll_FSH = GLES_SHADER_STRING_PRECISION_H(
8 | varying vec2 textureCoordinate;
9 | uniform sampler2D inputImageTexture;
10 | uniform sampler2D inputImageTexture1; //map
11 | uniform sampler2D inputImageTexture2; //vigMap
12 |
13 | void main() {
14 | vec3 texel = texture2D(inputImageTexture, textureCoordinate).rgb;
15 | vec2 tc = (2.0 * textureCoordinate) - 1.0;
16 | float d = dot(tc, tc);
17 | vec2 lookup = vec2(d, texel.r);
18 | texel.r = texture2D(inputImageTexture2, lookup).r;
19 | lookup.y = texel.g;
20 | texel.g = texture2D(inputImageTexture2, lookup).g;
21 | lookup.y = texel.b;
22 | texel.b = texture2D(inputImageTexture2, lookup).b;
23 |
24 | vec2 red = vec2(texel.r, 0.16666);
25 | vec2 green = vec2(texel.g, 0.5);
26 | vec2 blue = vec2(texel.b, .83333);
27 | texel.r = texture2D(inputImageTexture1, red).r;
28 | texel.g = texture2D(inputImageTexture1, green).g;
29 | texel.b = texture2D(inputImageTexture1, blue).b;
30 |
31 | gl_FragColor = vec4(texel, 1.0);
32 | }
33 | );
34 |
35 |
36 | XprollFilter::XprollFilter() {
37 |
38 | }
39 |
40 | XprollFilter::~XprollFilter() {
41 |
42 | }
43 |
44 | void XprollFilter::init(FilterConfig *filterConfig) {
45 | mFragmentShader = Xproll_FSH;
46 | MultiInputFilter::init(filterConfig);
47 | }
--------------------------------------------------------------------------------
/src/filter/advanced/xproll_filter.h:
--------------------------------------------------------------------------------
1 | //
2 | // Created by zhouhaibo on 2017/9/11.
3 | //
4 |
5 | #ifndef FILTERENGINE_XPROLL_FILTER_H
6 | #define FILTERENGINE_XPROLL_FILTER_H
7 |
8 | #include "filter/base/multi_input_filter.h"
9 |
10 | class XprollFilter : public MultiInputFilter {
11 | public:
12 | XprollFilter();
13 |
14 | ~XprollFilter();
15 |
16 | void init(FilterConfig *filterConfig);
17 |
18 | };
19 |
20 | #endif //FILTERENGINE_XPROLL_FILTER_H
21 |
--------------------------------------------------------------------------------
/src/filter/base/multi_input_filter.h:
--------------------------------------------------------------------------------
1 | //
2 | // Created by zhouhaibo on 2017/9/20.
3 | //
4 |
5 | #ifndef FILTERENGINE_MULTI_INPUT_FILTER_H
6 | #define FILTERENGINE_MULTI_INPUT_FILTER_H
7 |
8 | #include "common/filter_interface.h"
9 | #include "utils/parse_config.h"
10 |
11 | //enum MultiInputTypes {
12 | // One_Input_Type,
13 | // Two_Input_Type,
14 | // Three_Input_Type,
15 | // Four_Input_Type,
16 | // Five_Input_Type,
17 | // Six_Input_Type
18 | //};
19 |
20 | class MultiInputFilter : public FilterInterface {
21 | protected:
22 | bool mIsInitialized;
23 | ConstString mVertexShader;
24 | ConstString mFragmentShader;
25 | GLuint mProgramId;
26 | GLint mVertexCoords;;
27 | GLint mTextureCoords;
28 | GLint mTextureHandle;
29 |
30 | int mInputImageNum;
31 | GLint *mInputImageHandle;
32 | GLuint *mInputTexture;
33 |
34 | public:
35 |
36 | MultiInputFilter();
37 |
38 | virtual ~MultiInputFilter();
39 |
40 | virtual void init(FilterConfig *filterConfig);
41 |
42 | virtual void process(GLuint textureId, int width, int height);
43 |
44 | virtual void destroy();
45 |
46 | protected:
47 | void internalPreProcess(GLuint textureId);
48 |
49 | void internalDraw(int width, int height);
50 | };
51 |
52 |
53 | #endif //FILTERENGINE_MULTI_INPUT_FILTER_H
54 |
--------------------------------------------------------------------------------
/src/filter/filter_factory.h:
--------------------------------------------------------------------------------
1 | //
2 | // Created by zhouhaibo on 2017/9/25.
3 | //
4 |
5 | #ifndef FILTERENGINE_FILTER_FACTORY_H
6 | #define FILTERENGINE_FILTER_FACTORY_H
7 |
8 | #include "filter/base/multi_input_filter.h"
9 |
10 | typedef enum {
11 | No_Filter,
12 | Antique_Filter = 0x01,
13 | Blackcat_Filter,
14 | Cool_Filter,
15 | Whitecat_Filter,
16 | Romance_Filter,
17 | Latte_Filter,
18 | Sakura_Filter,
19 | Emerald_Filter,
20 | Evergreen_Filter,
21 | Crayon_Filter,
22 | Sketch_Filter,
23 | Nostalgia_Filter,
24 | Healthy_Filter,
25 | Sweets_Filter,
26 | Tender_Filter,
27 | Calm_Filter,
28 | Warm_Filter,
29 | Sunset_Filter,
30 | Sunrise_Filter,
31 |
32 | I1977_Fliter = 0x21,
33 | Inkwell_Filter,
34 | Lordkelvin_Filter,
35 | Nashville_Filter,
36 | Lomo_Filter,
37 | Valencia_Filter,
38 | Walden_Filter,
39 | Xproll_Filter,
40 | Amaro_Filter,
41 | Hudson_Filter,
42 | Rise_Filter,
43 | Sierra_Filter,
44 | Brannan_Filter,
45 | Earlybird_Filter,
46 | Hefe_Filter,
47 | Sutro_Filter,
48 | Toaster_Filter,
49 |
50 | Fairytale_Filter = 0x41,
51 | Amatorka_Filter,
52 | Highkey_Filter
53 | } FilterType ;
54 |
55 |
56 | class FilterFactory {
57 |
58 | public:
59 | FilterFactory();
60 |
61 | ~FilterFactory();
62 |
63 | static MultiInputFilter * createFilter(FilterType type);
64 | };
65 |
66 |
67 | #endif //FILTERENGINE_FILTER_FACTORY_H
68 |
--------------------------------------------------------------------------------
/src/filter/filter_manager.h:
--------------------------------------------------------------------------------
1 | //
2 | // Created by zhouhaibo on 2017/9/15.
3 | //
4 |
5 | #ifndef FILTERENGINE_FILTER_MANAGER_H
6 | #define FILTERENGINE_FILTER_MANAGER_H
7 |
8 | #include "filter/base/multi_input_filter.h"
9 | #include "filter/filter_factory.h"
10 |
11 | class FilterManager {
12 |
13 | private:
14 | bool mIsInitialized;
15 | GLuint mFboBufferID;
16 | GLuint mFboTextureID;
17 |
18 | FilterType mCurrentFilter;
19 |
20 | FilterConfig *mFilterConfig;
21 |
22 | MultiInputFilter *mMultiInputFilter;
23 |
24 | public:
25 | FilterManager();
26 |
27 | ~FilterManager();
28 |
29 | void init(int width, int height);
30 |
31 | void setFilter(ConstString zipPath);
32 |
33 | GLuint process(GLuint textureId, int width, int height);
34 |
35 | void destroy();
36 |
37 | void getResult(unsigned char * buffer, int width, int height);
38 | };
39 |
40 |
41 | #endif //FILTERENGINE_FILTER_MANAGER_H
42 |
--------------------------------------------------------------------------------
/src/filter/normal/antique_filter.h:
--------------------------------------------------------------------------------
1 | //
2 | // Created by zhouhaibo on 2017/9/21.
3 | //
4 |
5 | #ifndef FILTERENGINE_ANTIQUE_FILTER_H
6 | #define FILTERENGINE_ANTIQUE_FILTER_H
7 |
8 | #include "filter/base/multi_input_filter.h"
9 |
10 | class AntiqueFilter : public MultiInputFilter {
11 |
12 | public:
13 | AntiqueFilter();
14 |
15 | ~AntiqueFilter();
16 |
17 | void init(FilterConfig *filterConfig);
18 | };
19 |
20 |
21 | #endif //FILTERENGINE_ANTIQUE_FILTER_H
22 |
--------------------------------------------------------------------------------
/src/filter/normal/blackcat_filter.h:
--------------------------------------------------------------------------------
1 | //
2 | // Created by zhouhaibo on 2017/9/21.
3 | //
4 |
5 | #ifndef FILTERENGINE_BLACKCAT_FILTER_H
6 | #define FILTERENGINE_BLACKCAT_FILTER_H
7 |
8 | #include "filter/base/multi_input_filter.h"
9 |
10 | class BlackcatFilter : public MultiInputFilter {
11 |
12 | public:
13 | BlackcatFilter();
14 |
15 | ~BlackcatFilter();
16 |
17 | void init(FilterConfig *filterConfig);
18 |
19 | };
20 |
21 |
22 | #endif //FILTERENGINE_BLACKCAT_FILTER_H
23 |
--------------------------------------------------------------------------------
/src/filter/normal/calm_filter.h:
--------------------------------------------------------------------------------
1 | //
2 | // Created by zhouhaibo on 2017/9/25.
3 | //
4 |
5 | #ifndef FILTERENGINE_CALM_FILTER_H
6 | #define FILTERENGINE_CALM_FILTER_H
7 |
8 | #include "filter/base/multi_input_filter.h"
9 |
10 | class CalmFilter : public MultiInputFilter {
11 | public:
12 | CalmFilter();
13 |
14 | ~CalmFilter();
15 |
16 | void init(FilterConfig *filterConfig);
17 | };
18 |
19 | #endif //FILTERENGINE_CALM_FILTER_H
20 |
--------------------------------------------------------------------------------
/src/filter/normal/cool_filter.h:
--------------------------------------------------------------------------------
1 | //
2 | // Created by zhouhaibo on 2017/9/21.
3 | //
4 |
5 | #ifndef FILTERENGINE_COOL_FILTER_H
6 | #define FILTERENGINE_COOL_FILTER_H
7 |
8 | #include "filter/base/multi_input_filter.h"
9 |
10 | class CoolFilter : public MultiInputFilter {
11 | public:
12 | CoolFilter();
13 |
14 | ~CoolFilter();
15 |
16 | void init(FilterConfig *filterConfig);
17 | };
18 |
19 |
20 | #endif //FILTERENGINE_COOL_FILTER_H
21 |
--------------------------------------------------------------------------------
/src/filter/normal/crayon_filter.h:
--------------------------------------------------------------------------------
1 | //
2 | // Created by zhouhaibo on 2017/9/25.
3 | //
4 |
5 | #ifndef FILTERENGINE_CRAYON_FILTER_H
6 | #define FILTERENGINE_CRAYON_FILTER_H
7 |
8 | #include "filter/base/multi_input_filter.h"
9 |
10 | class CrayonFilter : public MultiInputFilter {
11 | private:
12 | GLint mWidthOffsetHandle;
13 | GLint mHeightOffsetHandle;
14 |
15 | public:
16 | CrayonFilter();
17 |
18 | ~CrayonFilter();
19 |
20 | void init(FilterConfig *filterConfig);
21 |
22 | void process(GLuint textureId, int width, int height);
23 | };
24 |
25 | #endif //FILTERENGINE_CRAYON_FILTER_H
26 |
--------------------------------------------------------------------------------
/src/filter/normal/emerald_filter.h:
--------------------------------------------------------------------------------
1 | //
2 | // Created by zhouhaibo on 2017/9/25.
3 | //
4 |
5 | #ifndef FILTERENGINE_EMERALD_FILTER_H
6 | #define FILTERENGINE_EMERALD_FILTER_H
7 |
8 | #include "filter/base/multi_input_filter.h"
9 |
10 | class EmeraldFilter : public MultiInputFilter {
11 | public:
12 | EmeraldFilter();
13 |
14 | ~EmeraldFilter();
15 |
16 | void init(FilterConfig *filterConfig);
17 | };
18 |
19 |
20 | #endif //FILTERENGINE_EMERALD_FILTER_H
21 |
--------------------------------------------------------------------------------
/src/filter/normal/evergreen_filter.h:
--------------------------------------------------------------------------------
1 | //
2 | // Created by zhouhaibo on 2017/9/25.
3 | //
4 |
5 | #ifndef FILTERENGINE_EVERGREEN_FILTER_H
6 | #define FILTERENGINE_EVERGREEN_FILTER_H
7 |
8 | #include "filter/base/multi_input_filter.h"
9 |
10 | class EvergreenFilter : public MultiInputFilter {
11 | public:
12 | EvergreenFilter();
13 |
14 | ~EvergreenFilter();
15 |
16 | void init(FilterConfig *filterConfig);
17 | };
18 |
19 | #endif //FILTERENGINE_EVERGREEN_FILTER_H
20 |
--------------------------------------------------------------------------------
/src/filter/normal/healthy_filter.h:
--------------------------------------------------------------------------------
1 | //
2 | // Created by zhouhaibo on 2017/9/25.
3 | //
4 |
5 | #ifndef FILTERENGINE_HEALTHY_FILTER_H
6 | #define FILTERENGINE_HEALTHY_FILTER_H
7 |
8 | #include "filter/base/multi_input_filter.h"
9 |
10 | class HealthyFilter : public MultiInputFilter {
11 | private:
12 | GLint mWidthOffsetHandle;
13 | GLint mHeightOffsetHandle;
14 |
15 | public:
16 | HealthyFilter();
17 |
18 | ~HealthyFilter();
19 |
20 | void init(FilterConfig *filterConfig);
21 |
22 | void process(GLuint textureId, int width, int height);
23 | };
24 |
25 |
26 | #endif //FILTERENGINE_HEALTHY_FILTER_H
27 |
--------------------------------------------------------------------------------
/src/filter/normal/latte_filter.h:
--------------------------------------------------------------------------------
1 | //
2 | // Created by zhouhaibo on 2017/9/21.
3 | //
4 |
5 | #ifndef FILTERENGINE_LATTE_FILTER_H
6 | #define FILTERENGINE_LATTE_FILTER_H
7 |
8 | #include "filter/base/multi_input_filter.h"
9 |
10 | class LatteFilter : public MultiInputFilter {
11 |
12 | public:
13 | LatteFilter();
14 |
15 | ~LatteFilter();
16 |
17 | void init(FilterConfig *filterConfig);
18 | };
19 |
20 | #endif //FILTERENGINE_LATTE_FILTER_H
21 |
--------------------------------------------------------------------------------
/src/filter/normal/lookup_filter.cpp:
--------------------------------------------------------------------------------
1 | //
2 | // Created by zhouhaibo on 2017/9/12.
3 | //
4 |
5 | #include "lookup_filter.h"
6 |
7 | static ConstString Lookup_FSH = GLES_SHADER_STRING_PRECISION_H(
8 | varying vec2 textureCoordinate;
9 | uniform sampler2D inputImageTexture;
10 | uniform sampler2D inputImageTexture1;
11 |
12 | void main() {
13 | vec4 textureColor = texture2D(inputImageTexture, textureCoordinate);
14 |
15 | float blueColor = textureColor.b * 63.0;
16 |
17 | vec2 quad1;
18 | quad1.y = floor(floor(blueColor) / 8.0);
19 | quad1.x = floor(blueColor) - (quad1.y * 8.0);
20 |
21 | vec2 quad2;
22 | quad2.y = floor(ceil(blueColor) / 8.0);
23 | quad2.x = ceil(blueColor) - (quad2.y * 8.0);
24 |
25 | vec2 texPos1;
26 | texPos1.x = (quad1.x * 0.125) + 0.5/512.0 + ((0.125 - 1.0/512.0) * textureColor.r);
27 | texPos1.y = (quad1.y * 0.125) + 0.5/512.0 + ((0.125 - 1.0/512.0) * textureColor.g);
28 |
29 | vec2 texPos2;
30 | texPos2.x = (quad2.x * 0.125) + 0.5/512.0 + ((0.125 - 1.0/512.0) * textureColor.r);
31 | texPos2.y = (quad2.y * 0.125) + 0.5/512.0 + ((0.125 - 1.0/512.0) * textureColor.g);
32 |
33 | vec4 newColor1 = texture2D(inputImageTexture1, texPos1);
34 |
35 | vec4 newColor2 = texture2D(inputImageTexture1, texPos2);
36 |
37 | vec4 newColor = mix(newColor1, newColor2, fract(blueColor));
38 |
39 | gl_FragColor = vec4(newColor.rgb, textureColor.w);
40 | }
41 | );
42 |
43 | LookupFilter::LookupFilter() {
44 |
45 | }
46 |
47 | LookupFilter::~LookupFilter() {
48 |
49 | }
50 |
51 | void LookupFilter::init(FilterConfig *filterConfig) {
52 | mFragmentShader = Lookup_FSH;
53 | MultiInputFilter::init(filterConfig);
54 | }
--------------------------------------------------------------------------------
/src/filter/normal/lookup_filter.h:
--------------------------------------------------------------------------------
1 | //
2 | // Created by zhouhaibo on 2017/9/12.
3 | //
4 |
5 | #ifndef FILTERENGINE_LOOKUP_FILTER_H
6 | #define FILTERENGINE_LOOKUP_FILTER_H
7 |
8 | #include "filter/base/multi_input_filter.h"
9 |
10 | class LookupFilter : public MultiInputFilter {
11 |
12 | public:
13 | LookupFilter();
14 |
15 | ~LookupFilter();
16 |
17 | void init(FilterConfig *filterConfig);
18 | };
19 |
20 | #endif //FILTERENGINE_LOOKUP_FILTER_H
21 |
--------------------------------------------------------------------------------
/src/filter/normal/nostalgia_filter.h:
--------------------------------------------------------------------------------
1 | //
2 | // Created by zhouhaibo on 2017/9/25.
3 | //
4 |
5 | #ifndef FILTERENGINE_NOSTALGIA_FILTER_H
6 | #define FILTERENGINE_NOSTALGIA_FILTER_H
7 |
8 | #include "filter/base/multi_input_filter.h"
9 |
10 | class NostalgiaFilter : public MultiInputFilter {
11 | private:
12 | GLint mWidthOffsetHandle;
13 | GLint mHeightOffsetHandle;
14 |
15 | public:
16 | NostalgiaFilter();
17 |
18 | ~NostalgiaFilter();
19 |
20 | void init(FilterConfig *filterConfig);
21 |
22 | void process(GLuint textureId, int width, int height);
23 | };
24 |
25 |
26 | #endif //FILTERENGINE_NOSTALGIA_FILTER_H
27 |
--------------------------------------------------------------------------------
/src/filter/normal/romance_filter.h:
--------------------------------------------------------------------------------
1 | //
2 | // Created by zhouhaibo on 2017/9/21.
3 | //
4 |
5 | #ifndef FILTERENGINE_ROMANCE_FILTER_H
6 | #define FILTERENGINE_ROMANCE_FILTER_H
7 |
8 | #include "filter/base/multi_input_filter.h"
9 |
10 | class RomanceFilter : public MultiInputFilter {
11 |
12 | public:
13 | RomanceFilter();
14 |
15 | ~RomanceFilter();
16 |
17 | void init(FilterConfig *filterConfig);
18 | };
19 |
20 | #endif //FILTERENGINE_ROMANCE_FILTER_H
21 |
--------------------------------------------------------------------------------
/src/filter/normal/sakura_filter.h:
--------------------------------------------------------------------------------
1 | //
2 | // Created by zhouhaibo on 2017/9/21.
3 | //
4 |
5 | #ifndef FILTERENGINE_SAKURA_FILTER_H
6 | #define FILTERENGINE_SAKURA_FILTER_H
7 |
8 | #include "filter/base/multi_input_filter.h"
9 |
10 | class SakuraFilter : public MultiInputFilter {
11 | private:
12 | GLint mWidthOffsetHandle;
13 | GLint mHeightOffsetHandle;
14 |
15 | public:
16 | SakuraFilter();
17 |
18 | ~SakuraFilter();
19 |
20 | void init(FilterConfig *filterConfig);
21 |
22 | void process(GLuint textureId, int width, int height);
23 | };
24 |
25 | #endif //FILTERENGINEDEMO_SAKURA_FILTER_H
26 |
--------------------------------------------------------------------------------
/src/filter/normal/sketch_filter.h:
--------------------------------------------------------------------------------
1 | //
2 | // Created by zhouhaibo on 2017/9/25.
3 | //
4 |
5 | #ifndef FILTERENGINE_SKETCH_FILTER_H
6 | #define FILTERENGINE_SKETCH_FILTER_H
7 |
8 | #include "filter/base/multi_input_filter.h"
9 |
10 | class SketchFilter : public MultiInputFilter {
11 | private:
12 | GLint mWidthOffsetHandle;
13 | GLint mHeightOffsetHandle;
14 |
15 | public:
16 | SketchFilter();
17 |
18 | ~SketchFilter();
19 |
20 | void init(FilterConfig *filterConfig);
21 |
22 | void process(GLuint textureId, int width, int height);
23 | };
24 |
25 | #endif //FILTERENGINE_SKETCH_FILTER_H
26 |
--------------------------------------------------------------------------------
/src/filter/normal/sunrise_filter.h:
--------------------------------------------------------------------------------
1 | //
2 | // Created by zhouhaibo on 2017/9/25.
3 | //
4 |
5 | #ifndef FILTERENGINE_SUNRISE_FILTER_H
6 | #define FILTERENGINE_SUNRISE_FILTER_H
7 |
8 | #include "filter/base/multi_input_filter.h"
9 |
10 | class SunriseFilter : public MultiInputFilter {
11 | public:
12 | SunriseFilter();
13 |
14 | ~SunriseFilter();
15 |
16 | void init(FilterConfig *filterConfig);
17 | };
18 |
19 | #endif //FILTERENGINE_SUNRISE_FILTER_H
20 |
--------------------------------------------------------------------------------
/src/filter/normal/sunset_filter.h:
--------------------------------------------------------------------------------
1 | //
2 | // Created by zhouhaibo on 2017/9/25.
3 | //
4 |
5 | #ifndef FILTERENGINE_SUNSET_FILTER_H
6 | #define FILTERENGINE_SUNSET_FILTER_H
7 |
8 | #include "filter/base/multi_input_filter.h"
9 |
10 | class SunsetFilter : public MultiInputFilter {
11 | public:
12 | SunsetFilter();
13 |
14 | ~SunsetFilter();
15 |
16 | void init(FilterConfig *filterConfig);
17 | };
18 |
19 | #endif //FILTERENGINE_SUNSET_FILTER_H
20 |
--------------------------------------------------------------------------------
/src/filter/normal/sweets_filter.h:
--------------------------------------------------------------------------------
1 | //
2 | // Created by zhouhaibo on 2017/9/25.
3 | //
4 |
5 | #ifndef FILTERENGINE_SWEETS_FILTER_H
6 | #define FILTERENGINE_SWEETS_FILTER_H
7 |
8 | #include "filter/base/multi_input_filter.h"
9 |
10 | class SweetsFilter : public MultiInputFilter {
11 | private:
12 | GLint mWidthOffsetHandle;
13 | GLint mHeightOffsetHandle;
14 |
15 | public:
16 | SweetsFilter();
17 |
18 | ~SweetsFilter();
19 |
20 | void init(FilterConfig *filterConfig);
21 |
22 | void process(GLuint textureId, int width, int height);
23 | };
24 | #endif //FILTERENGINE_SWEETS_FILTER_H
25 |
--------------------------------------------------------------------------------
/src/filter/normal/tender_filter.h:
--------------------------------------------------------------------------------
1 | //
2 | // Created by zhouhaibo on 2017/9/25.
3 | //
4 |
5 | #ifndef FILTERENGINE_TENDER_FILTER_H
6 | #define FILTERENGINE_TENDER_FILTER_H
7 |
8 | #include "filter/base/multi_input_filter.h"
9 |
10 | class TenderFilter : public MultiInputFilter {
11 |
12 | public:
13 | TenderFilter();
14 |
15 | ~TenderFilter();
16 |
17 | void init(FilterConfig *filterConfig);
18 |
19 | };
20 |
21 | #endif //FILTERENGINE_TENDER_FILTER_H
22 |
--------------------------------------------------------------------------------
/src/filter/normal/warm_filter.h:
--------------------------------------------------------------------------------
1 | //
2 | // Created by zhouhaibo on 2017/9/25.
3 | //
4 |
5 | #ifndef FILTERENGINE_WARM_FILTER_H
6 | #define FILTERENGINE_WARM_FILTER_H
7 |
8 | #include "filter/base/multi_input_filter.h"
9 |
10 | class WarmFilter : public MultiInputFilter {
11 | public:
12 | WarmFilter();
13 |
14 | ~WarmFilter();
15 |
16 | void init(FilterConfig *filterConfig);
17 | };
18 |
19 | #endif //FILTERENGINE_WARM_FILTER_H
20 |
--------------------------------------------------------------------------------
/src/filter/normal/whitecat_filter.h:
--------------------------------------------------------------------------------
1 | //
2 | // Created by zhouhaibo on 2017/9/21.
3 | //
4 |
5 | #ifndef FILTERENGINE_WHITECAT_FILTER_H
6 | #define FILTERENGINE_WHITECAT_FILTER_H
7 |
8 | #include "filter/base/multi_input_filter.h"
9 |
10 | class WhitecatFilter : public MultiInputFilter {
11 |
12 | public:
13 | WhitecatFilter();
14 |
15 | ~WhitecatFilter();
16 |
17 | void init(FilterConfig *filterConfig);
18 |
19 | };
20 |
21 |
22 | #endif //FILTERENGINE_WHITECAT_FILTER_H
23 |
--------------------------------------------------------------------------------
/src/filter_handler.h:
--------------------------------------------------------------------------------
1 | //
2 | // Created by zhouhaibo on 2017/9/12.
3 | //
4 |
5 | #ifndef FILTERENGINE_FILTER_HANDLER_H
6 | #define FILTERENGINE_FILTER_HANDLER_H
7 |
8 |
9 |
10 | #include "beautify/beautify_manager.h"
11 | #include "filter/adjust/adjust_filter_manager.h"
12 | #include "filter/filter_manager.h"
13 | #include "utils/default_drawer.h"
14 |
15 | class FilterHandler {
16 | private:
17 | bool mIsInitialized;
18 | GLuint mTextureID;
19 | int mViewWidth;
20 | int mViewHeight;
21 |
22 | int mImgWidth;
23 | int mImgHeight;
24 |
25 | bool mIsEnableFilter;
26 |
27 | BeautifyManager *mBeautifyManager;
28 |
29 | AdjustFilterManager *mAdjustFilterManager;
30 |
31 | FilterManager *mFilterManager;
32 |
33 | DefaultDrawer *mDefaultDrawer;
34 |
35 | public:
36 | FilterHandler();
37 |
38 | ~FilterHandler();
39 |
40 | int init(ConstString fileName);
41 |
42 | int setBeautifyParams(int type, float intensity);
43 |
44 | int setFilter(const char *filter_zip);
45 |
46 | int setSize(int width, int height);
47 |
48 | int setAdjustParams(int type, float intensity);
49 |
50 | GLuint process(GLuint textureId);
51 |
52 | void getResult(unsigned char *data);
53 |
54 | void getIameSize(int *width, int *height);
55 |
56 | void destroy();
57 | };
58 |
59 |
60 | #endif //FILTERENGINE_FILTER_HANDLER_H
61 |
--------------------------------------------------------------------------------
/src/utils/common_utils.cpp:
--------------------------------------------------------------------------------
1 | //
2 | // Created by zhouhaibo on 2017/9/20.
3 | //
4 |
5 | #include "common_utils.h"
6 |
7 | float caculateIntensity(float intensity, float minValue, float defaultValue, float maxValue) {
8 | float mIntensity;
9 | if (intensity <= 0.0) {
10 | mIntensity = minValue;
11 | } else if (intensity >= 1.0) {
12 | mIntensity = maxValue;
13 | } else if (intensity <= 0.5) {
14 | mIntensity = minValue + (defaultValue - minValue) * intensity * 2.0f;
15 | } else {
16 | mIntensity = maxValue + (defaultValue - maxValue) * (1.0f - intensity) * 2.0f;
17 | }
18 |
19 | return mIntensity;
20 | }
21 |
22 | size_t caculateBinDataLength(uint8_t * dataBuf, size_t dataLength) {
23 | size_t length = 0;
24 | if (dataLength >= 4) {
25 | size_t width = dataBuf[1] * 256 + dataBuf[0];
26 | size_t height = dataBuf[3] * 256 + dataBuf[2];
27 | length = width * height * 4;
28 | }
29 | return length;
30 | }
--------------------------------------------------------------------------------
/src/utils/common_utils.h:
--------------------------------------------------------------------------------
1 | //
2 | // Created by zhouhaibo on 2017/9/20.
3 | //
4 |
5 | #ifndef FILTERENGINE_MATHMATIC_H
6 | #define FILTERENGINE_MATHMATIC_H
7 |
8 | #include "common/common.h"
9 |
10 | /**
11 | * 计算滤镜强度值, 线性变换
12 | * @param intensity 输入值[0.0, 1.0]
13 | * @param minValue 滤镜最小值
14 | * @param defaultValue 滤镜默认值, 无滤镜效果
15 | * @param maxValue 滤镜最大值
16 | * @return 当前滤镜设定值
17 | */
18 | float caculateIntensity(float intensity, float minValue, float defaultValue, float maxValue);
19 |
20 | /**
21 | * 计算Bin真实数据长度
22 | * @param dataBuf 数据指针
23 | * @param dataLength 数据长度
24 | * @return 返回真实数据长度
25 | */
26 | size_t caculateBinDataLength(uint8_t * dataBuf, size_t dataLength);
27 |
28 | #endif //FILTERENGINE_MATHMATIC_H
29 |
--------------------------------------------------------------------------------
/src/utils/default_drawer.h:
--------------------------------------------------------------------------------
1 | //
2 | // Created by zhouhaibo on 2017/9/19.
3 | //
4 |
5 | #ifndef FILTERENGINE_DEFAULT_DRAWER_H
6 | #define FILTERENGINE_DEFAULT_DRAWER_H
7 |
8 | #include "common/filter_interface.h"
9 |
10 | class DefaultDrawer : public FilterInterface {
11 | private:
12 | ConstString mVertexShader;
13 | ConstString mFragmentShader;
14 | GLuint mProgramId;
15 | GLint mVertexCoords;;
16 | GLint mTextureCoords;
17 | GLint mTextureHandle;
18 |
19 | // VAO
20 | GLuint mVAOId;
21 |
22 | public:
23 | DefaultDrawer();
24 |
25 | ~DefaultDrawer();
26 |
27 | void init();
28 |
29 | void process(GLuint textureId, int width, int height);
30 |
31 | void destroy();
32 | };
33 |
34 |
35 |
36 | #endif //FILTERENGINE_DEFAULT_DRAWER_H
37 |
--------------------------------------------------------------------------------
/src/utils/gl_utils.h:
--------------------------------------------------------------------------------
1 | //
2 | // Created by zhouhaibo on 2017/7/24.
3 | //
4 |
5 | #ifndef FILTERENGINE_GL_UTILS_H
6 | #define FILTERENGINE_GL_UTILS_H
7 |
8 | #include "common/common.h"
9 | #include "decoder/picture_decoder.h"
10 |
11 | #define GLES_CHECK_ERROR_FLAG true
12 |
13 | static const float VERTICE_NO_ROTATION[] = {
14 | -1.0f, -1.0f,
15 | 1.0f, -1.0f,
16 | -1.0f, 1.0f,
17 | 1.0f, 1.0f,
18 | };
19 |
20 | static const float TEXTURE_NO_ROTATION[] = {
21 | 0.0f, 0.0f,
22 | 1.0f, 0.0f,
23 | 0.0f, 1.0f,
24 | 1.0f, 1.0f,
25 | };
26 |
27 | static const float TEXTURE_ROTATED_90[] = {
28 | 0.0f, 0.0f,
29 | 0.0f, 1.0f,
30 | 1.0f, 0.0f,
31 | 1.0f, 1.0f,
32 | };
33 |
34 | static const float TEXTURE_ROTATED_180[] = {
35 | 0.0f, 1.0f,
36 | 1.0f, 1.0f,
37 | 0.0f, 0.0f,
38 | 1.0f, 0.0f,
39 | };
40 |
41 | static const float TEXTURE_ROTATED_270[] = {
42 | 1.0f, 1.0f,
43 | 1.0f, 0.0f,
44 | 0.0f, 1.0f,
45 | 0.0f, 0.0f,
46 | };
47 |
48 |
49 | bool checkGlError(const char* op);
50 |
51 | GLuint loadShader(GLenum shaderType, ConstString pSource);
52 |
53 | GLuint loadProgram(ConstString pVertexSource, ConstString pFragmentSource);
54 |
55 | void bindFrameBuffer(GLuint textureId, GLuint frameBuffer, int width, int height);
56 |
57 | void bindFrameBufferWithDepth(GLuint textureId, GLuint frameBuffer, int width, int height);
58 |
59 | void bindFrameBufferWithMSAA(GLuint frameBuffer, int width, int height);
60 |
61 | GLuint loadTexture(int width, int height, unsigned char *rgbaBuf);
62 |
63 | GLuint loadTextureFromBin(ConstString binName);
64 |
65 | GLuint loadTextureFromPng(ConstString pngName);
66 |
67 | GLuint loadTextureFromPngWithSize(ConstString pngName, int *imgWidth, int *imgHeight);
68 |
69 | #endif //FILTERENGINE_GL_UTILS_H
70 |
--------------------------------------------------------------------------------
/src/utils/parse_config.h:
--------------------------------------------------------------------------------
1 | //
2 | // Created by zhouhaibo on 2017/9/21.
3 | //
4 |
5 | #ifndef FILTERENGINE_CONFIG_H
6 | #define FILTERENGINE_CONFIG_H
7 |
8 | #include "common/common.h"
9 |
10 | typedef enum {
11 | Type_None,
12 | Type_Bin_Data,
13 | Type_Png_Data
14 | } FilterDataType;
15 |
16 | typedef struct {
17 | FilterDataType type;
18 | char name[1024];
19 | } FilterData;
20 |
21 | typedef struct {
22 | uint8_t type;
23 | uint8_t num;
24 | FilterData *data;
25 | } FilterConfig;
26 |
27 | void parsingFilterConfig(ConstString filterZipPath, FilterConfig *filterConfig);
28 |
29 |
30 | #endif //FILTERENGINE_CONFIG_H
31 |
--------------------------------------------------------------------------------