├── .gitignore
├── .idea
├── .gitignore
├── .name
├── codeStyles
│ ├── Project.xml
│ └── codeStyleConfig.xml
├── compiler.xml
├── gradle.xml
├── kotlinc.xml
├── misc.xml
└── vcs.xml
├── LICENSE
├── README.md
├── app
├── .gitignore
├── build.gradle
├── proguard-rules.pro
└── src
│ ├── androidTest
│ └── java
│ │ └── com
│ │ └── xyq
│ │ └── ffmpegdemo
│ │ └── ExampleInstrumentedTest.kt
│ ├── main
│ ├── AndroidManifest.xml
│ ├── java
│ │ └── com
│ │ │ └── xyq
│ │ │ └── ffmpegdemo
│ │ │ ├── MainActivity.kt
│ │ │ ├── adapter
│ │ │ └── ThumbnailAdapter.kt
│ │ │ ├── entity
│ │ │ ├── MediaInfo.kt
│ │ │ └── Thumbnail.kt
│ │ │ ├── player
│ │ │ ├── IMediaPlayer.kt
│ │ │ ├── IMediaPlayerStatusListener.kt
│ │ │ ├── MyPlayer.kt
│ │ │ └── PlayerConfig.kt
│ │ │ ├── view
│ │ │ ├── AudioVisualizeView.kt
│ │ │ ├── AutoFitSurfaceView.kt
│ │ │ └── CircleVisualizeView.kt
│ │ │ └── viewmodel
│ │ │ ├── PlayViewModel.kt
│ │ │ ├── VideoThumbnailModel.kt
│ │ │ └── VideoThumbnailViewModel.kt
│ └── res
│ │ ├── drawable-v24
│ │ └── ic_launcher_foreground.xml
│ │ ├── drawable
│ │ ├── audio_disable.png
│ │ ├── audio_enable.png
│ │ ├── ic_launcher_background.xml
│ │ ├── play_pause.png
│ │ └── play_resume.png
│ │ ├── layout
│ │ ├── activity_main.xml
│ │ └── thumbnail_item.xml
│ │ ├── mipmap-anydpi-v26
│ │ ├── ic_launcher.xml
│ │ └── ic_launcher_round.xml
│ │ ├── mipmap-hdpi
│ │ ├── ic_launcher.webp
│ │ └── ic_launcher_round.webp
│ │ ├── mipmap-mdpi
│ │ ├── ic_launcher.webp
│ │ └── ic_launcher_round.webp
│ │ ├── mipmap-xhdpi
│ │ ├── ic_launcher.webp
│ │ └── ic_launcher_round.webp
│ │ ├── mipmap-xxhdpi
│ │ ├── ic_launcher.webp
│ │ └── ic_launcher_round.webp
│ │ ├── mipmap-xxxhdpi
│ │ ├── ic_launcher.webp
│ │ └── ic_launcher_round.webp
│ │ ├── values-night
│ │ └── themes.xml
│ │ ├── values
│ │ ├── attrs.xml
│ │ ├── colors.xml
│ │ ├── strings.xml
│ │ └── themes.xml
│ │ └── xml
│ │ ├── backup_rules.xml
│ │ └── data_extraction_rules.xml
│ └── test
│ └── java
│ └── com
│ └── xyq
│ └── ffmpegdemo
│ └── ExampleUnitTest.kt
├── build.gradle
├── gradle.properties
├── gradle
└── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
├── img_import_capture.png
├── img_main.png
├── img_media_picker.png
├── libbase
├── .gitignore
├── build.gradle
├── consumer-rules.pro
├── proguard-rules.pro
└── src
│ ├── androidTest
│ └── java
│ │ └── com
│ │ └── xyq
│ │ └── libbase
│ │ └── ExampleInstrumentedTest.kt
│ ├── main
│ ├── AndroidManifest.xml
│ └── java
│ │ └── com
│ │ └── xyq
│ │ └── libbase
│ │ └── player
│ │ ├── IPlayer.kt
│ │ └── IPlayerListener.kt
│ └── test
│ └── java
│ └── com
│ └── xyq
│ └── libbase
│ └── ExampleUnitTest.kt
├── libcamerakit
├── .gitignore
├── build.gradle
├── consumer-rules.pro
├── proguard-rules.pro
└── src
│ ├── androidTest
│ └── java
│ │ └── com
│ │ └── xyq
│ │ └── camerakit
│ │ └── ExampleInstrumentedTest.kt
│ ├── main
│ ├── AndroidManifest.xml
│ ├── java
│ │ └── com
│ │ │ └── xyq
│ │ │ └── camerakit
│ │ │ └── CameraPreviewActivity.kt
│ └── res
│ │ ├── drawable
│ │ └── camera_switch.png
│ │ ├── layout
│ │ └── camera_preview.xml
│ │ └── values
│ │ └── strings.xml
│ └── test
│ └── java
│ └── com
│ └── xyq
│ └── camerakit
│ └── ExampleUnitTest.kt
├── libffplayer
├── .gitignore
├── build.gradle
├── consumer-rules.pro
├── proguard-rules.pro
└── src
│ ├── androidTest
│ └── java
│ │ └── com
│ │ └── xyq
│ │ └── libffplayer
│ │ └── ExampleInstrumentedTest.kt
│ ├── main
│ ├── AndroidManifest.xml
│ ├── assets
│ │ └── oceans.mp4
│ ├── cpp
│ │ ├── CMakeLists.txt
│ │ ├── base
│ │ │ ├── AVPacketQueue.cpp
│ │ │ └── AVPacketQueue.h
│ │ ├── decoder
│ │ │ ├── AudioDecoder.cpp
│ │ │ ├── AudioDecoder.h
│ │ │ ├── BaseDecoder.cpp
│ │ │ ├── BaseDecoder.h
│ │ │ ├── VideoDecoder.cpp
│ │ │ └── VideoDecoder.h
│ │ ├── filter
│ │ │ ├── FFFilter.cpp
│ │ │ └── FFFilter.h
│ │ ├── main
│ │ │ ├── FFMpegPlayer.cpp
│ │ │ └── FFMpegPlayer.h
│ │ ├── native-lib.cpp
│ │ ├── reader
│ │ │ ├── FFReader.cpp
│ │ │ ├── FFReader.h
│ │ │ ├── FFVideoReader.cpp
│ │ │ └── FFVideoReader.h
│ │ ├── settings
│ │ │ └── CompileSettings.h
│ │ ├── utils
│ │ │ ├── FFConverter.h
│ │ │ ├── FFMpegUtils.cpp
│ │ │ ├── ImageDef.h
│ │ │ ├── MutexObj.cpp
│ │ │ ├── MutexObj.h
│ │ │ ├── TraceUtils.cpp
│ │ │ └── TraceUtils.h
│ │ ├── vendor
│ │ │ ├── ffmpeg
│ │ │ │ ├── libavcodec
│ │ │ │ │ ├── ac3_parser.h
│ │ │ │ │ ├── adts_parser.h
│ │ │ │ │ ├── avcodec.h
│ │ │ │ │ ├── avdct.h
│ │ │ │ │ ├── avfft.h
│ │ │ │ │ ├── bsf.h
│ │ │ │ │ ├── codec.h
│ │ │ │ │ ├── codec_desc.h
│ │ │ │ │ ├── codec_id.h
│ │ │ │ │ ├── codec_par.h
│ │ │ │ │ ├── d3d11va.h
│ │ │ │ │ ├── defs.h
│ │ │ │ │ ├── dirac.h
│ │ │ │ │ ├── dv_profile.h
│ │ │ │ │ ├── dxva2.h
│ │ │ │ │ ├── jni.h
│ │ │ │ │ ├── mediacodec.h
│ │ │ │ │ ├── packet.h
│ │ │ │ │ ├── qsv.h
│ │ │ │ │ ├── vdpau.h
│ │ │ │ │ ├── version.h
│ │ │ │ │ ├── version_major.h
│ │ │ │ │ ├── videotoolbox.h
│ │ │ │ │ ├── vorbis_parser.h
│ │ │ │ │ └── xvmc.h
│ │ │ │ ├── libavfilter
│ │ │ │ │ ├── avfilter.h
│ │ │ │ │ ├── buffersink.h
│ │ │ │ │ ├── buffersrc.h
│ │ │ │ │ ├── version.h
│ │ │ │ │ └── version_major.h
│ │ │ │ ├── libavformat
│ │ │ │ │ ├── avformat.h
│ │ │ │ │ ├── avio.h
│ │ │ │ │ ├── version.h
│ │ │ │ │ └── version_major.h
│ │ │ │ ├── libavutil
│ │ │ │ │ ├── adler32.h
│ │ │ │ │ ├── aes.h
│ │ │ │ │ ├── aes_ctr.h
│ │ │ │ │ ├── ambient_viewing_environment.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
│ │ │ │ │ ├── csp.h
│ │ │ │ │ ├── des.h
│ │ │ │ │ ├── detection_bbox.h
│ │ │ │ │ ├── dict.h
│ │ │ │ │ ├── display.h
│ │ │ │ │ ├── dovi_meta.h
│ │ │ │ │ ├── downmix_info.h
│ │ │ │ │ ├── encryption_info.h
│ │ │ │ │ ├── error.h
│ │ │ │ │ ├── eval.h
│ │ │ │ │ ├── ffversion.h
│ │ │ │ │ ├── fifo.h
│ │ │ │ │ ├── file.h
│ │ │ │ │ ├── film_grain_params.h
│ │ │ │ │ ├── frame.h
│ │ │ │ │ ├── hash.h
│ │ │ │ │ ├── hdr_dynamic_metadata.h
│ │ │ │ │ ├── hdr_dynamic_vivid_metadata.h
│ │ │ │ │ ├── hmac.h
│ │ │ │ │ ├── hwcontext.h
│ │ │ │ │ ├── hwcontext_cuda.h
│ │ │ │ │ ├── hwcontext_d3d11va.h
│ │ │ │ │ ├── hwcontext_drm.h
│ │ │ │ │ ├── hwcontext_dxva2.h
│ │ │ │ │ ├── hwcontext_mediacodec.h
│ │ │ │ │ ├── hwcontext_opencl.h
│ │ │ │ │ ├── hwcontext_qsv.h
│ │ │ │ │ ├── hwcontext_vaapi.h
│ │ │ │ │ ├── hwcontext_vdpau.h
│ │ │ │ │ ├── hwcontext_videotoolbox.h
│ │ │ │ │ ├── hwcontext_vulkan.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
│ │ │ │ │ ├── threadmessage.h
│ │ │ │ │ ├── time.h
│ │ │ │ │ ├── timecode.h
│ │ │ │ │ ├── timestamp.h
│ │ │ │ │ ├── tree.h
│ │ │ │ │ ├── twofish.h
│ │ │ │ │ ├── tx.h
│ │ │ │ │ ├── uuid.h
│ │ │ │ │ ├── version.h
│ │ │ │ │ ├── video_enc_params.h
│ │ │ │ │ └── xtea.h
│ │ │ │ ├── libswresample
│ │ │ │ │ ├── swresample.h
│ │ │ │ │ ├── version.h
│ │ │ │ │ └── version_major.h
│ │ │ │ └── libswscale
│ │ │ │ │ ├── swscale.h
│ │ │ │ │ ├── version.h
│ │ │ │ │ └── version_major.h
│ │ │ ├── libyuv
│ │ │ │ ├── libyuv.h
│ │ │ │ └── libyuv
│ │ │ │ │ ├── basic_types.h
│ │ │ │ │ ├── compare.h
│ │ │ │ │ ├── compare_row.h
│ │ │ │ │ ├── convert.h
│ │ │ │ │ ├── convert_argb.h
│ │ │ │ │ ├── convert_from.h
│ │ │ │ │ ├── convert_from_argb.h
│ │ │ │ │ ├── cpu_id.h
│ │ │ │ │ ├── loongson_intrinsics.h
│ │ │ │ │ ├── macros_msa.h
│ │ │ │ │ ├── mjpeg_decoder.h
│ │ │ │ │ ├── planar_functions.h
│ │ │ │ │ ├── rotate.h
│ │ │ │ │ ├── rotate_argb.h
│ │ │ │ │ ├── rotate_row.h
│ │ │ │ │ ├── row.h
│ │ │ │ │ ├── scale.h
│ │ │ │ │ ├── scale_argb.h
│ │ │ │ │ ├── scale_rgb.h
│ │ │ │ │ ├── scale_row.h
│ │ │ │ │ ├── scale_uv.h
│ │ │ │ │ ├── version.h
│ │ │ │ │ └── video_common.h
│ │ │ └── nlohmann
│ │ │ │ └── json.hpp
│ │ └── writer
│ │ │ ├── FFVideoWriter.cpp
│ │ │ └── FFVideoWriter.h
│ ├── java
│ │ └── com
│ │ │ └── xyq
│ │ │ └── libffplayer
│ │ │ ├── FFPlayer.kt
│ │ │ └── utils
│ │ │ └── FFMpegUtils.kt
│ └── libs
│ │ ├── arm64-v8a
│ │ ├── libavcodec.so
│ │ ├── libavfilter.so
│ │ ├── libavformat.so
│ │ ├── libavutil.so
│ │ ├── libswresample.so
│ │ ├── libswscale.so
│ │ └── libyuv.so
│ │ └── armeabi-v7a
│ │ ├── libavcodec.so
│ │ ├── libavfilter.so
│ │ ├── libavformat.so
│ │ ├── libavutil.so
│ │ ├── libswresample.so
│ │ ├── libswscale.so
│ │ └── libyuv.so
│ └── test
│ └── java
│ └── com
│ └── xyq
│ └── libffplayer
│ └── ExampleUnitTest.kt
├── libhwplayer
├── .gitignore
├── build.gradle
├── consumer-rules.pro
├── proguard-rules.pro
└── src
│ ├── androidTest
│ └── java
│ │ └── com
│ │ └── xyq
│ │ └── libhwplayer
│ │ └── ExampleInstrumentedTest.kt
│ ├── main
│ ├── AndroidManifest.xml
│ └── java
│ │ └── com
│ │ └── xyq
│ │ └── libhwplayer
│ │ ├── HwPlayer.kt
│ │ ├── ImagePlayer.kt
│ │ ├── decoder
│ │ ├── AudioDecoder.kt
│ │ └── VideoDecoder.kt
│ │ ├── extractor
│ │ ├── AudioExtractor.kt
│ │ ├── IExtractor.kt
│ │ ├── MyExtractor.kt
│ │ └── VideoExtractor.kt
│ │ ├── reader
│ │ ├── ImageInfo.kt
│ │ └── ReaderWrapper.kt
│ │ └── utils
│ │ └── MimeTypeHelper.kt
│ └── test
│ └── java
│ └── com
│ └── xyq
│ └── libhwplayer
│ └── ExampleUnitTest.kt
├── libjpeg
├── .gitignore
├── build.gradle
├── consumer-rules.pro
├── proguard-rules.pro
└── src
│ ├── androidTest
│ └── java
│ │ └── com
│ │ └── xyq
│ │ └── libjpeg
│ │ └── ExampleInstrumentedTest.kt
│ ├── main
│ ├── AndroidManifest.xml
│ ├── cpp
│ │ ├── CMakeLists.txt
│ │ ├── native-lib.cpp
│ │ └── source
│ │ │ ├── jconfig.h
│ │ │ ├── jconfigint.h
│ │ │ ├── jerror.h
│ │ │ ├── jmorecfg.h
│ │ │ ├── jpeglib.h
│ │ │ └── turbojpeg.h
│ ├── java
│ │ └── com
│ │ │ └── xyq
│ │ │ └── libjpeg
│ │ │ ├── JpegReader.kt
│ │ │ └── cpp
│ │ │ ├── CMakeLists.txt
│ │ │ └── native-lib.cpp
│ └── libs
│ │ ├── arm64-v8a
│ │ ├── libjpeg.so
│ │ └── libturbojpeg.so
│ │ └── armeabi-v7a
│ │ ├── libjpeg.so
│ │ └── libturbojpeg.so
│ └── test
│ └── java
│ └── com
│ └── xyq
│ └── libjpeg
│ └── ExampleUnitTest.kt
├── libmediapicker
├── .gitignore
├── build.gradle
├── consumer-rules.pro
├── proguard-rules.pro
└── src
│ ├── androidTest
│ └── java
│ │ └── com
│ │ └── xyq
│ │ └── libmediapicker
│ │ └── ExampleInstrumentedTest.kt
│ ├── main
│ ├── AndroidManifest.xml
│ ├── java
│ │ └── com
│ │ │ └── xyq
│ │ │ └── libmediapicker
│ │ │ ├── MediaPickerActivity.kt
│ │ │ ├── PickerConfig.kt
│ │ │ ├── adapter
│ │ │ ├── FolderAdapter.kt
│ │ │ ├── MediaGridAdapter.kt
│ │ │ └── SpacingDecoration.kt
│ │ │ ├── data
│ │ │ ├── BaseLoader.kt
│ │ │ ├── ImageLoader.kt
│ │ │ ├── MediaDataCallback.kt
│ │ │ ├── MediaLoader.kt
│ │ │ └── VideoLoader.kt
│ │ │ ├── entity
│ │ │ ├── Folder.kt
│ │ │ └── Media.kt
│ │ │ └── utils
│ │ │ ├── FileUtils.java
│ │ │ ├── MyFileProvider.java
│ │ │ └── ScreenUtils.java
│ └── res
│ │ ├── drawable-xhdpi-v4
│ │ ├── default_check.png
│ │ ├── default_image.png
│ │ └── text_indicator.png
│ │ ├── drawable
│ │ ├── action_btn.xml
│ │ ├── btn_selected.png
│ │ ├── btn_unselected.png
│ │ └── ic_back.png
│ │ ├── layout
│ │ ├── folders_view_item.xml
│ │ ├── main_media_picker.xml
│ │ ├── media_view_item.xml
│ │ └── picker_actionbar.xml
│ │ ├── values
│ │ ├── colors.xml
│ │ └── values.xml
│ │ └── xml
│ │ └── file_provider_paths.xml
│ └── test
│ └── java
│ └── com
│ └── xyq
│ └── libmediapicker
│ └── ExampleUnitTest.kt
├── libpng
├── .gitignore
├── build.gradle
├── consumer-rules.pro
├── proguard-rules.pro
└── src
│ ├── androidTest
│ └── java
│ │ └── com
│ │ └── xyq
│ │ └── libpng
│ │ └── ExampleInstrumentedTest.kt
│ ├── main
│ ├── AndroidManifest.xml
│ ├── cpp
│ │ ├── CMakeLists.txt
│ │ ├── native-lib.cpp
│ │ └── source
│ │ │ ├── ANNOUNCE
│ │ │ ├── AUTHORS
│ │ │ ├── CHANGES
│ │ │ ├── INSTALL
│ │ │ ├── LICENSE
│ │ │ ├── Makefile.am
│ │ │ ├── Makefile.in
│ │ │ ├── README
│ │ │ ├── TODO
│ │ │ ├── TRADEMARK
│ │ │ ├── aclocal.m4
│ │ │ ├── arm
│ │ │ ├── arm_init.c
│ │ │ ├── filter_neon.S
│ │ │ ├── filter_neon_intrinsics.c
│ │ │ └── palette_neon_intrinsics.c
│ │ │ ├── autogen.sh
│ │ │ ├── ci
│ │ │ ├── ci_autotools.sh
│ │ │ ├── ci_cmake.sh
│ │ │ └── ci_legacy.sh
│ │ │ ├── compile
│ │ │ ├── config.guess
│ │ │ ├── config.h.in
│ │ │ ├── config.sub
│ │ │ ├── configure
│ │ │ ├── configure.ac
│ │ │ ├── contrib
│ │ │ ├── README.txt
│ │ │ ├── arm-neon
│ │ │ │ ├── README
│ │ │ │ ├── android-ndk.c
│ │ │ │ ├── linux-auxv.c
│ │ │ │ └── linux.c
│ │ │ ├── conftest
│ │ │ │ ├── README
│ │ │ │ ├── pngcp.dfa
│ │ │ │ ├── read.dfa
│ │ │ │ ├── s_read.dfa
│ │ │ │ ├── s_write.dfa
│ │ │ │ ├── simple.dfa
│ │ │ │ └── write.dfa
│ │ │ ├── examples
│ │ │ │ ├── README.txt
│ │ │ │ ├── iccfrompng.c
│ │ │ │ ├── pngpixel.c
│ │ │ │ ├── pngtopng.c
│ │ │ │ └── simpleover.c
│ │ │ ├── gregbook
│ │ │ │ ├── COPYING
│ │ │ │ ├── LICENSE
│ │ │ │ ├── Makefile.mingw32
│ │ │ │ ├── Makefile.sgi
│ │ │ │ ├── Makefile.unx
│ │ │ │ ├── Makefile.w32
│ │ │ │ ├── README
│ │ │ │ ├── makevms.com
│ │ │ │ ├── readpng.c
│ │ │ │ ├── readpng.h
│ │ │ │ ├── readpng2.c
│ │ │ │ ├── readpng2.h
│ │ │ │ ├── readppm.c
│ │ │ │ ├── rpng-win.c
│ │ │ │ ├── rpng-x.c
│ │ │ │ ├── rpng2-win.c
│ │ │ │ ├── rpng2-x.c
│ │ │ │ ├── toucan.png
│ │ │ │ ├── wpng.c
│ │ │ │ ├── writepng.c
│ │ │ │ └── writepng.h
│ │ │ ├── libtests
│ │ │ │ ├── fakepng.c
│ │ │ │ ├── gentests.sh
│ │ │ │ ├── makepng.c
│ │ │ │ ├── pngimage.c
│ │ │ │ ├── pngstest-errors.h
│ │ │ │ ├── pngstest.c
│ │ │ │ ├── pngunknown.c
│ │ │ │ ├── pngvalid.c
│ │ │ │ ├── readpng.c
│ │ │ │ ├── tarith.c
│ │ │ │ └── timepng.c
│ │ │ ├── mips-msa
│ │ │ │ ├── README
│ │ │ │ └── linux.c
│ │ │ ├── oss-fuzz
│ │ │ │ ├── Dockerfile
│ │ │ │ ├── README.txt
│ │ │ │ ├── build.sh
│ │ │ │ ├── libpng_read_fuzzer.cc
│ │ │ │ ├── libpng_read_fuzzer.options
│ │ │ │ └── png.dict
│ │ │ ├── pngminim
│ │ │ │ ├── README
│ │ │ │ ├── decoder
│ │ │ │ │ ├── README
│ │ │ │ │ ├── makefile
│ │ │ │ │ ├── pngusr.dfa
│ │ │ │ │ └── pngusr.h
│ │ │ │ ├── encoder
│ │ │ │ │ ├── README
│ │ │ │ │ ├── makefile
│ │ │ │ │ ├── pngusr.dfa
│ │ │ │ │ └── pngusr.h
│ │ │ │ └── preader
│ │ │ │ │ ├── README
│ │ │ │ │ ├── makefile
│ │ │ │ │ ├── pngusr.dfa
│ │ │ │ │ └── pngusr.h
│ │ │ ├── pngminus
│ │ │ │ ├── CHANGES.txt
│ │ │ │ ├── CMakeLists.txt
│ │ │ │ ├── LICENSE.txt
│ │ │ │ ├── Makefile
│ │ │ │ ├── README.txt
│ │ │ │ ├── makevms.com
│ │ │ │ ├── png2pnm.bat
│ │ │ │ ├── png2pnm.c
│ │ │ │ ├── png2pnm.sh
│ │ │ │ ├── pngminus.bat
│ │ │ │ ├── pngminus.sh
│ │ │ │ ├── pnm2png.bat
│ │ │ │ ├── pnm2png.c
│ │ │ │ └── pnm2png.sh
│ │ │ ├── pngsuite
│ │ │ │ ├── README
│ │ │ │ ├── bad_interlace_conversions.txt
│ │ │ │ ├── basn0g01.png
│ │ │ │ ├── basn0g02.png
│ │ │ │ ├── basn0g04.png
│ │ │ │ ├── basn0g08.png
│ │ │ │ ├── basn0g16.png
│ │ │ │ ├── basn2c08.png
│ │ │ │ ├── basn2c16.png
│ │ │ │ ├── basn3p01.png
│ │ │ │ ├── basn3p02.png
│ │ │ │ ├── basn3p04.png
│ │ │ │ ├── basn3p08.png
│ │ │ │ ├── basn4a08.png
│ │ │ │ ├── basn4a16.png
│ │ │ │ ├── basn6a08.png
│ │ │ │ ├── basn6a16.png
│ │ │ │ ├── ftbbn0g01.png
│ │ │ │ ├── ftbbn0g02.png
│ │ │ │ ├── ftbbn0g04.png
│ │ │ │ ├── ftbbn2c16.png
│ │ │ │ ├── ftbbn3p08.png
│ │ │ │ ├── ftbgn2c16.png
│ │ │ │ ├── ftbgn3p08.png
│ │ │ │ ├── ftbrn2c08.png
│ │ │ │ ├── ftbwn0g16.png
│ │ │ │ ├── ftbwn3p08.png
│ │ │ │ ├── ftbyn3p08.png
│ │ │ │ ├── ftp0n0g08.png
│ │ │ │ ├── ftp0n2c08.png
│ │ │ │ ├── ftp0n3p08.png
│ │ │ │ ├── ftp1n3p08.png
│ │ │ │ ├── ibasn0g08.png
│ │ │ │ ├── ibasn0g16.png
│ │ │ │ ├── ibasn2c08.png
│ │ │ │ ├── ibasn2c16.png
│ │ │ │ ├── ibasn3p08.png
│ │ │ │ ├── ibasn4a08.png
│ │ │ │ ├── ibasn4a16.png
│ │ │ │ ├── ibasn6a08.png
│ │ │ │ ├── ibasn6a16.png
│ │ │ │ ├── iftbbn2c16.png
│ │ │ │ ├── iftbbn3p08.png
│ │ │ │ ├── iftbgn2c16.png
│ │ │ │ ├── iftbgn3p08.png
│ │ │ │ ├── iftbrn2c08.png
│ │ │ │ ├── iftbwn0g16.png
│ │ │ │ ├── iftbwn3p08.png
│ │ │ │ ├── iftbyn3p08.png
│ │ │ │ ├── iftp0n0g08.png
│ │ │ │ ├── iftp0n2c08.png
│ │ │ │ ├── iftp0n3p08.png
│ │ │ │ ├── iftp1n3p08.png
│ │ │ │ └── interlaced
│ │ │ │ │ ├── README
│ │ │ │ │ ├── ibasn0g01.png
│ │ │ │ │ ├── ibasn0g02.png
│ │ │ │ │ ├── ibasn0g04.png
│ │ │ │ │ ├── ibasn3p01.png
│ │ │ │ │ ├── ibasn3p02.png
│ │ │ │ │ ├── ibasn3p04.png
│ │ │ │ │ ├── iftbbn0g01.png
│ │ │ │ │ ├── iftbbn0g02.png
│ │ │ │ │ └── iftbbn0g04.png
│ │ │ ├── powerpc-vsx
│ │ │ │ ├── README
│ │ │ │ ├── linux.c
│ │ │ │ └── linux_aux.c
│ │ │ ├── testpngs
│ │ │ │ ├── crashers
│ │ │ │ │ ├── bad_iCCP.png
│ │ │ │ │ ├── badadler.png
│ │ │ │ │ ├── badcrc.png
│ │ │ │ │ ├── empty_ancillary_chunks.png
│ │ │ │ │ ├── huge_IDAT.png
│ │ │ │ │ ├── huge_bKGD_chunk.png
│ │ │ │ │ ├── huge_cHRM_chunk.png
│ │ │ │ │ ├── huge_eXIf_chunk.png
│ │ │ │ │ ├── huge_gAMA_chunk.png
│ │ │ │ │ ├── huge_hIST_chunk.png
│ │ │ │ │ ├── huge_iCCP_chunk.png
│ │ │ │ │ ├── huge_iTXt_chunk.png
│ │ │ │ │ ├── huge_juNK_unsafe_to_copy.png
│ │ │ │ │ ├── huge_juNk_safe_to_copy.png
│ │ │ │ │ ├── huge_pCAL_chunk.png
│ │ │ │ │ ├── huge_pHYs_chunk.png
│ │ │ │ │ ├── huge_sCAL_chunk.png
│ │ │ │ │ ├── huge_sPLT_chunk.png
│ │ │ │ │ ├── huge_sRGB_chunk.png
│ │ │ │ │ ├── huge_sTER_chunk.png
│ │ │ │ │ ├── huge_tEXt_chunk.png
│ │ │ │ │ ├── huge_tIME_chunk.png
│ │ │ │ │ └── huge_zTXt_chunk.png
│ │ │ │ ├── gray-1-1.8-tRNS.png
│ │ │ │ ├── gray-1-1.8.png
│ │ │ │ ├── gray-1-linear-tRNS.png
│ │ │ │ ├── gray-1-linear.png
│ │ │ │ ├── gray-1-sRGB-tRNS.png
│ │ │ │ ├── gray-1-sRGB.png
│ │ │ │ ├── gray-1-tRNS.png
│ │ │ │ ├── gray-1.png
│ │ │ │ ├── gray-16-1.8-tRNS.png
│ │ │ │ ├── gray-16-1.8.png
│ │ │ │ ├── gray-16-linear-tRNS.png
│ │ │ │ ├── gray-16-linear.png
│ │ │ │ ├── gray-16-sRGB-tRNS.png
│ │ │ │ ├── gray-16-sRGB.png
│ │ │ │ ├── gray-16-tRNS.png
│ │ │ │ ├── gray-16.png
│ │ │ │ ├── gray-2-1.8-tRNS.png
│ │ │ │ ├── gray-2-1.8.png
│ │ │ │ ├── gray-2-linear-tRNS.png
│ │ │ │ ├── gray-2-linear.png
│ │ │ │ ├── gray-2-sRGB-tRNS.png
│ │ │ │ ├── gray-2-sRGB.png
│ │ │ │ ├── gray-2-tRNS.png
│ │ │ │ ├── gray-2.png
│ │ │ │ ├── gray-4-1.8-tRNS.png
│ │ │ │ ├── gray-4-1.8.png
│ │ │ │ ├── gray-4-linear-tRNS.png
│ │ │ │ ├── gray-4-linear.png
│ │ │ │ ├── gray-4-sRGB-tRNS.png
│ │ │ │ ├── gray-4-sRGB.png
│ │ │ │ ├── gray-4-tRNS.png
│ │ │ │ ├── gray-4.png
│ │ │ │ ├── gray-8-1.8-tRNS.png
│ │ │ │ ├── gray-8-1.8.png
│ │ │ │ ├── gray-8-linear-tRNS.png
│ │ │ │ ├── gray-8-linear.png
│ │ │ │ ├── gray-8-sRGB-tRNS.png
│ │ │ │ ├── gray-8-sRGB.png
│ │ │ │ ├── gray-8-tRNS.png
│ │ │ │ ├── gray-8.png
│ │ │ │ ├── gray-alpha-16-1.8.png
│ │ │ │ ├── gray-alpha-16-linear.png
│ │ │ │ ├── gray-alpha-16-sRGB.png
│ │ │ │ ├── gray-alpha-16.png
│ │ │ │ ├── gray-alpha-8-1.8.png
│ │ │ │ ├── gray-alpha-8-linear.png
│ │ │ │ ├── gray-alpha-8-sRGB.png
│ │ │ │ ├── gray-alpha-8.png
│ │ │ │ ├── makepngs.sh
│ │ │ │ ├── palette-1-1.8-tRNS.png
│ │ │ │ ├── palette-1-1.8.png
│ │ │ │ ├── palette-1-linear-tRNS.png
│ │ │ │ ├── palette-1-linear.png
│ │ │ │ ├── palette-1-sRGB-tRNS.png
│ │ │ │ ├── palette-1-sRGB.png
│ │ │ │ ├── palette-1-tRNS.png
│ │ │ │ ├── palette-1.png
│ │ │ │ ├── palette-2-1.8-tRNS.png
│ │ │ │ ├── palette-2-1.8.png
│ │ │ │ ├── palette-2-linear-tRNS.png
│ │ │ │ ├── palette-2-linear.png
│ │ │ │ ├── palette-2-sRGB-tRNS.png
│ │ │ │ ├── palette-2-sRGB.png
│ │ │ │ ├── palette-2-tRNS.png
│ │ │ │ ├── palette-2.png
│ │ │ │ ├── palette-4-1.8-tRNS.png
│ │ │ │ ├── palette-4-1.8.png
│ │ │ │ ├── palette-4-linear-tRNS.png
│ │ │ │ ├── palette-4-linear.png
│ │ │ │ ├── palette-4-sRGB-tRNS.png
│ │ │ │ ├── palette-4-sRGB.png
│ │ │ │ ├── palette-4-tRNS.png
│ │ │ │ ├── palette-4.png
│ │ │ │ ├── palette-8-1.8-tRNS.png
│ │ │ │ ├── palette-8-1.8.png
│ │ │ │ ├── palette-8-linear-tRNS.png
│ │ │ │ ├── palette-8-linear.png
│ │ │ │ ├── palette-8-sRGB-tRNS.png
│ │ │ │ ├── palette-8-sRGB.png
│ │ │ │ ├── palette-8-tRNS.png
│ │ │ │ ├── palette-8.png
│ │ │ │ ├── rgb-16-1.8-tRNS.png
│ │ │ │ ├── rgb-16-1.8.png
│ │ │ │ ├── rgb-16-linear-tRNS.png
│ │ │ │ ├── rgb-16-linear.png
│ │ │ │ ├── rgb-16-sRGB-tRNS.png
│ │ │ │ ├── rgb-16-sRGB.png
│ │ │ │ ├── rgb-16-tRNS.png
│ │ │ │ ├── rgb-16.png
│ │ │ │ ├── rgb-8-1.8-tRNS.png
│ │ │ │ ├── rgb-8-1.8.png
│ │ │ │ ├── rgb-8-linear-tRNS.png
│ │ │ │ ├── rgb-8-linear.png
│ │ │ │ ├── rgb-8-sRGB-tRNS.png
│ │ │ │ ├── rgb-8-sRGB.png
│ │ │ │ ├── rgb-8-tRNS.png
│ │ │ │ ├── rgb-8.png
│ │ │ │ ├── rgb-alpha-16-1.8.png
│ │ │ │ ├── rgb-alpha-16-linear.png
│ │ │ │ ├── rgb-alpha-16-sRGB.png
│ │ │ │ ├── rgb-alpha-16.png
│ │ │ │ ├── rgb-alpha-8-1.8.png
│ │ │ │ ├── rgb-alpha-8-linear.png
│ │ │ │ ├── rgb-alpha-8-sRGB.png
│ │ │ │ └── rgb-alpha-8.png
│ │ │ ├── tools
│ │ │ │ ├── README.txt
│ │ │ │ ├── checksum-icc.c
│ │ │ │ ├── chkfmt.sh
│ │ │ │ ├── cvtcolor.c
│ │ │ │ ├── genpng.c
│ │ │ │ ├── intgamma.sh
│ │ │ │ ├── makesRGB.c
│ │ │ │ ├── png-fix-itxt.c
│ │ │ │ ├── pngcp.c
│ │ │ │ ├── pngfix.c
│ │ │ │ └── sRGB.h
│ │ │ └── visupng
│ │ │ │ ├── PngFile.c
│ │ │ │ ├── PngFile.h
│ │ │ │ ├── README.txt
│ │ │ │ ├── VisualPng.c
│ │ │ │ ├── VisualPng.dsp
│ │ │ │ ├── VisualPng.dsw
│ │ │ │ ├── VisualPng.ico
│ │ │ │ ├── VisualPng.png
│ │ │ │ ├── VisualPng.rc
│ │ │ │ ├── cexcept.h
│ │ │ │ └── resource.h
│ │ │ ├── depcomp
│ │ │ ├── example.c
│ │ │ ├── install-sh
│ │ │ ├── intel
│ │ │ ├── filter_sse2_intrinsics.c
│ │ │ └── intel_init.c
│ │ │ ├── libpng-config.in
│ │ │ ├── libpng-manual.txt
│ │ │ ├── libpng.3
│ │ │ ├── libpng.pc.in
│ │ │ ├── libpngpf.3
│ │ │ ├── ltmain.sh
│ │ │ ├── mips
│ │ │ ├── filter_msa_intrinsics.c
│ │ │ └── mips_init.c
│ │ │ ├── missing
│ │ │ ├── png.5
│ │ │ ├── png.c
│ │ │ ├── png.h
│ │ │ ├── pngbar.jpg
│ │ │ ├── pngbar.png
│ │ │ ├── pngconf.h
│ │ │ ├── pngdebug.h
│ │ │ ├── pngerror.c
│ │ │ ├── pngget.c
│ │ │ ├── pnginfo.h
│ │ │ ├── pnglibconf.h
│ │ │ ├── pngmem.c
│ │ │ ├── pngnow.png
│ │ │ ├── pngpread.c
│ │ │ ├── pngpriv.h
│ │ │ ├── pngread.c
│ │ │ ├── pngrio.c
│ │ │ ├── pngrtran.c
│ │ │ ├── pngrutil.c
│ │ │ ├── pngset.c
│ │ │ ├── pngstruct.h
│ │ │ ├── pngtest.c
│ │ │ ├── pngtest.png
│ │ │ ├── pngtrans.c
│ │ │ ├── pngusr.dfa
│ │ │ ├── pngwio.c
│ │ │ ├── pngwrite.c
│ │ │ ├── pngwtran.c
│ │ │ ├── pngwutil.c
│ │ │ ├── powerpc
│ │ │ ├── filter_vsx_intrinsics.c
│ │ │ └── powerpc_init.c
│ │ │ ├── projects
│ │ │ ├── owatcom
│ │ │ │ ├── libpng.tgt
│ │ │ │ ├── libpng.wpj
│ │ │ │ ├── pngconfig.mak
│ │ │ │ ├── pngstest.tgt
│ │ │ │ ├── pngtest.tgt
│ │ │ │ └── pngvalid.tgt
│ │ │ ├── visualc71
│ │ │ │ ├── PRJ0041.mak
│ │ │ │ ├── README.txt
│ │ │ │ ├── README_zlib.txt
│ │ │ │ ├── libpng.sln
│ │ │ │ ├── libpng.vcproj
│ │ │ │ ├── pngtest.vcproj
│ │ │ │ └── zlib.vcproj
│ │ │ └── vstudio
│ │ │ │ ├── README.txt
│ │ │ │ ├── libpng
│ │ │ │ └── libpng.vcxproj
│ │ │ │ ├── pnglibconf
│ │ │ │ └── pnglibconf.vcxproj
│ │ │ │ ├── pngstest
│ │ │ │ └── pngstest.vcxproj
│ │ │ │ ├── pngtest
│ │ │ │ └── pngtest.vcxproj
│ │ │ │ ├── pngunknown
│ │ │ │ └── pngunknown.vcxproj
│ │ │ │ ├── pngvalid
│ │ │ │ └── pngvalid.vcxproj
│ │ │ │ ├── vstudio.sln
│ │ │ │ ├── zlib.props
│ │ │ │ └── zlib
│ │ │ │ └── zlib.vcxproj
│ │ │ ├── scripts
│ │ │ ├── README.txt
│ │ │ ├── SCOPTIONS.ppc
│ │ │ ├── checksym.awk
│ │ │ ├── descrip.mms
│ │ │ ├── dfn.awk
│ │ │ ├── genchk.cmake.in
│ │ │ ├── genout.cmake.in
│ │ │ ├── gensrc.cmake.in
│ │ │ ├── intprefix.c
│ │ │ ├── libpng-config-body.in
│ │ │ ├── libpng-config-head.in
│ │ │ ├── libpng.pc.in
│ │ │ ├── libtool.m4
│ │ │ ├── ltoptions.m4
│ │ │ ├── ltsugar.m4
│ │ │ ├── ltversion.m4
│ │ │ ├── lt~obsolete.m4
│ │ │ ├── macro.lst
│ │ │ ├── makefile.32sunu
│ │ │ ├── makefile.64sunu
│ │ │ ├── makefile.acorn
│ │ │ ├── makefile.aix
│ │ │ ├── makefile.amiga
│ │ │ ├── makefile.atari
│ │ │ ├── makefile.bc32
│ │ │ ├── makefile.beos
│ │ │ ├── makefile.clang
│ │ │ ├── makefile.darwin
│ │ │ ├── makefile.dec
│ │ │ ├── makefile.dj2
│ │ │ ├── makefile.emcc
│ │ │ ├── makefile.freebsd
│ │ │ ├── makefile.gcc
│ │ │ ├── makefile.hp64
│ │ │ ├── makefile.hpgcc
│ │ │ ├── makefile.hpux
│ │ │ ├── makefile.ibmc
│ │ │ ├── makefile.intel
│ │ │ ├── makefile.linux
│ │ │ ├── makefile.mips
│ │ │ ├── makefile.msys
│ │ │ ├── makefile.netbsd
│ │ │ ├── makefile.openbsd
│ │ │ ├── makefile.sco
│ │ │ ├── makefile.sggcc
│ │ │ ├── makefile.sgi
│ │ │ ├── makefile.so9
│ │ │ ├── makefile.solaris
│ │ │ ├── makefile.std
│ │ │ ├── makefile.sunos
│ │ │ ├── makefile.vcwin-arm64
│ │ │ ├── makefile.vcwin32
│ │ │ ├── makevms.com
│ │ │ ├── options.awk
│ │ │ ├── pnglibconf.dfa
│ │ │ ├── pnglibconf.h.prebuilt
│ │ │ ├── pnglibconf.mak
│ │ │ ├── pngwin.rc
│ │ │ ├── prefix.c
│ │ │ ├── smakefile.ppc
│ │ │ ├── sym.c
│ │ │ ├── symbols.c
│ │ │ ├── symbols.def
│ │ │ ├── test.cmake.in
│ │ │ └── vers.c
│ │ │ ├── test-driver
│ │ │ └── tests
│ │ │ ├── pngimage-full
│ │ │ ├── pngimage-quick
│ │ │ ├── pngstest
│ │ │ ├── pngstest-1.8
│ │ │ ├── pngstest-1.8-alpha
│ │ │ ├── pngstest-linear
│ │ │ ├── pngstest-linear-alpha
│ │ │ ├── pngstest-none
│ │ │ ├── pngstest-none-alpha
│ │ │ ├── pngstest-sRGB
│ │ │ ├── pngstest-sRGB-alpha
│ │ │ ├── pngtest-all
│ │ │ ├── pngunknown-IDAT
│ │ │ ├── pngunknown-discard
│ │ │ ├── pngunknown-if-safe
│ │ │ ├── pngunknown-sAPI
│ │ │ ├── pngunknown-sTER
│ │ │ ├── pngunknown-save
│ │ │ ├── pngunknown-vpAg
│ │ │ ├── pngvalid-gamma-16-to-8
│ │ │ ├── pngvalid-gamma-alpha-mode
│ │ │ ├── pngvalid-gamma-background
│ │ │ ├── pngvalid-gamma-expand16-alpha-mode
│ │ │ ├── pngvalid-gamma-expand16-background
│ │ │ ├── pngvalid-gamma-expand16-transform
│ │ │ ├── pngvalid-gamma-sbit
│ │ │ ├── pngvalid-gamma-threshold
│ │ │ ├── pngvalid-gamma-transform
│ │ │ ├── pngvalid-progressive-interlace-standard
│ │ │ ├── pngvalid-progressive-size
│ │ │ ├── pngvalid-progressive-standard
│ │ │ ├── pngvalid-standard
│ │ │ └── pngvalid-transform
│ └── java
│ │ └── com
│ │ └── xyq
│ │ └── libpng
│ │ └── PngReader.kt
│ └── test
│ └── java
│ └── com
│ └── xyq
│ └── libpng
│ └── ExampleUnitTest.kt
├── librender
├── .gitignore
├── build.gradle
├── consumer-rules.pro
├── proguard-rules.pro
└── src
│ ├── androidTest
│ └── java
│ │ └── com
│ │ └── xyq
│ │ └── librender
│ │ └── ExampleInstrumentedTest.kt
│ ├── main
│ ├── AndroidManifest.xml
│ ├── assets
│ │ ├── yuv_test_i420.yuv
│ │ ├── yuv_test_nv12.yuv
│ │ └── yuv_test_origin.png
│ ├── java
│ │ └── com
│ │ │ └── xyq
│ │ │ └── librender
│ │ │ ├── FilterProcessor.kt
│ │ │ ├── RenderManager.kt
│ │ │ ├── core
│ │ │ ├── BaseDrawer.kt
│ │ │ ├── IDrawer.kt
│ │ │ ├── NV12Drawer.kt
│ │ │ ├── OesDrawer.kt
│ │ │ ├── RgbDrawer.kt
│ │ │ ├── RgbaDrawer.kt
│ │ │ └── YuvDrawer.kt
│ │ │ ├── filter
│ │ │ ├── BaseFilter.kt
│ │ │ ├── GreyFilter.kt
│ │ │ ├── IFilter.kt
│ │ │ └── RadiusCornerFilter.kt
│ │ │ ├── model
│ │ │ ├── FboDesc.kt
│ │ │ ├── FrameBuffer.kt
│ │ │ ├── Pipeline.kt
│ │ │ ├── RenderData.kt
│ │ │ └── ResManager.kt
│ │ │ ├── test
│ │ │ └── RenderTestActivity.kt
│ │ │ └── utils
│ │ │ ├── OpenGLTools.kt
│ │ │ ├── ShaderHelper.kt
│ │ │ └── TextureHelper.kt
│ └── res
│ │ ├── layout
│ │ └── activity_render_test.xml
│ │ └── raw
│ │ ├── fragment_filter_grey.glsl
│ │ ├── fragment_filter_radius_corner.glsl
│ │ ├── fragment_nv12.glsl
│ │ ├── fragment_oes.glsl
│ │ ├── fragment_rgba.glsl
│ │ ├── fragment_yuv.glsl
│ │ └── vertex_normal.glsl
│ └── test
│ └── java
│ └── com
│ └── xyq
│ └── librender
│ └── ExampleUnitTest.kt
├── libutils
├── .gitignore
├── build.gradle
├── consumer-rules.pro
├── proguard-rules.pro
└── src
│ ├── androidTest
│ └── java
│ │ └── com
│ │ └── xyq
│ │ └── libutils
│ │ └── ExampleInstrumentedTest.kt
│ ├── main
│ ├── AndroidManifest.xml
│ ├── cpp
│ │ ├── CMakeLists.txt
│ │ ├── jni
│ │ │ ├── JNIHelp.h
│ │ │ ├── ScopedPrimitiveArray.h
│ │ │ └── ScopedUtfChars.h
│ │ └── utils
│ │ │ ├── header
│ │ │ ├── CommonUtils.h
│ │ │ └── Logger.h
│ │ │ └── native-lib.cpp
│ └── java
│ │ └── com
│ │ └── xyq
│ │ └── libutils
│ │ ├── CommonUtils.kt
│ │ ├── FileUtils.kt
│ │ └── TraceUtils.kt
│ └── test
│ └── java
│ └── com
│ └── xyq
│ └── libutils
│ └── ExampleUnitTest.kt
└── settings.gradle
/.gitignore:
--------------------------------------------------------------------------------
1 | *.iml
2 | .gradle
3 | /local.properties
4 | /.idea/caches
5 | /.idea/libraries
6 | /.idea/modules.xml
7 | /.idea/workspace.xml
8 | /.idea/navEditor.xml
9 | /.idea/assetWizardSettings.xml
10 | .idea/androidTestResultsUserPreferences.xml
11 | .DS_Store
12 | /build
13 | /captures
14 | .externalNativeBuild
15 | .cxx
16 | local.properties
17 | app/debug/app-debug.apk
18 | app/debug/output-metadata.json
19 | app/release/app-release.apk
20 | app/release/output-metadata.json
21 |
--------------------------------------------------------------------------------
/.idea/.gitignore:
--------------------------------------------------------------------------------
1 | # Default ignored files
2 | /shelf/
3 | /workspace.xml
4 |
--------------------------------------------------------------------------------
/.idea/.name:
--------------------------------------------------------------------------------
1 | FFMpegDemo
--------------------------------------------------------------------------------
/.idea/codeStyles/codeStyleConfig.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/.idea/compiler.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/.idea/gradle.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
28 |
29 |
--------------------------------------------------------------------------------
/.idea/kotlinc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/.idea/misc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/.idea/vcs.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/app/.gitignore:
--------------------------------------------------------------------------------
1 | /build
--------------------------------------------------------------------------------
/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
--------------------------------------------------------------------------------
/app/src/androidTest/java/com/xyq/ffmpegdemo/ExampleInstrumentedTest.kt:
--------------------------------------------------------------------------------
1 | package com.xyq.ffmpegdemo
2 |
3 | import androidx.test.platform.app.InstrumentationRegistry
4 | import androidx.test.ext.junit.runners.AndroidJUnit4
5 |
6 | import org.junit.Test
7 | import org.junit.runner.RunWith
8 |
9 | import org.junit.Assert.*
10 |
11 | /**
12 | * Instrumented test, which will execute on an Android device.
13 | *
14 | * See [testing documentation](http://d.android.com/tools/testing).
15 | */
16 | @RunWith(AndroidJUnit4::class)
17 | class ExampleInstrumentedTest {
18 | @Test
19 | fun useAppContext() {
20 | // Context of the app under test.
21 | val appContext = InstrumentationRegistry.getInstrumentation().targetContext
22 | assertEquals("com.xyq.ffmpegdemo", appContext.packageName)
23 | }
24 | }
--------------------------------------------------------------------------------
/app/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
7 |
8 |
9 |
19 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
--------------------------------------------------------------------------------
/app/src/main/java/com/xyq/ffmpegdemo/entity/Thumbnail.kt:
--------------------------------------------------------------------------------
1 | package com.xyq.ffmpegdemo.entity
2 |
3 | import android.graphics.Bitmap
4 |
5 | data class Thumbnail(val bitmap: Bitmap, val index: Int)
--------------------------------------------------------------------------------
/app/src/main/java/com/xyq/ffmpegdemo/player/IMediaPlayer.kt:
--------------------------------------------------------------------------------
1 | package com.xyq.ffmpegdemo.player
2 |
3 | /**
4 | * prepare -> start -> stop -> release
5 | */
6 | interface IMediaPlayer {
7 |
8 | fun prepare(path: String, config: PlayerConfig, isVideo: Boolean = true)
9 |
10 | fun start()
11 |
12 | fun stop()
13 |
14 | fun resume()
15 |
16 | fun pause()
17 |
18 | fun release()
19 |
20 | fun setListener(listener: IMediaPlayerStatusListener?)
21 |
22 | fun seek(position: Double): Boolean
23 |
24 | fun setMute(mute: Boolean)
25 |
26 | fun getDuration(): Double
27 |
28 | fun isPlayComplete(): Boolean
29 | }
--------------------------------------------------------------------------------
/app/src/main/java/com/xyq/ffmpegdemo/player/IMediaPlayerStatusListener.kt:
--------------------------------------------------------------------------------
1 | package com.xyq.ffmpegdemo.player
2 |
3 | interface IMediaPlayerStatusListener {
4 |
5 | fun onProgress(timestamp: Double)
6 |
7 | fun onComplete()
8 |
9 | fun onFftAudioDataArrived(data: FloatArray)
10 |
11 | }
--------------------------------------------------------------------------------
/app/src/main/java/com/xyq/ffmpegdemo/player/PlayerConfig.kt:
--------------------------------------------------------------------------------
1 | package com.xyq.ffmpegdemo.player
2 |
3 | class PlayerConfig {
4 |
5 | enum class DecodeConfig {
6 | USE_HW_DECODER, // media codec
7 | USE_FF_HW_DECODER, // media codec via ffmpeg
8 | USE_FF_SW_DECODER // ffmpeg software decoder
9 | }
10 |
11 | var decodeConfig = DecodeConfig.USE_FF_HW_DECODER
12 | }
--------------------------------------------------------------------------------
/app/src/main/java/com/xyq/ffmpegdemo/viewmodel/VideoThumbnailModel.kt:
--------------------------------------------------------------------------------
1 | package com.xyq.ffmpegdemo.viewmodel
2 |
3 | import android.graphics.Bitmap
4 | import android.graphics.Matrix
5 | import java.nio.ByteBuffer
6 |
7 | class VideoThumbnailModel(private val width: Int, private val height: Int, private val rotate: Int, val index: Int, private val buffer: ByteBuffer?) {
8 |
9 | private var mBitmap: Bitmap? = null
10 |
11 | fun isValid(): Boolean {
12 | return index >= 0 && getBitmap() != null
13 | }
14 |
15 | fun getBitmap(): Bitmap? {
16 | if (mBitmap == null && width > 0 && height > 0) {
17 | buffer?.let {
18 | val bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888)
19 | bitmap!!.copyPixelsFromBuffer(it)
20 | mBitmap = if (rotate != 0) {
21 | val matrix = Matrix()
22 | matrix.postRotate(rotate.toFloat())
23 | Bitmap.createBitmap(bitmap, 0, 0, bitmap.width, bitmap.height, matrix, true)
24 | } else {
25 | bitmap
26 | }
27 | }
28 | }
29 |
30 | return mBitmap
31 | }
32 |
33 | override fun toString(): String {
34 | return "VideoThumbnailModel(width=$width, height=$height, rotate=$rotate, index=$index)"
35 | }
36 |
37 | }
--------------------------------------------------------------------------------
/app/src/main/res/drawable/audio_disable.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/app/src/main/res/drawable/audio_disable.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/audio_enable.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/app/src/main/res/drawable/audio_enable.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/play_pause.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/app/src/main/res/drawable/play_pause.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/play_resume.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/app/src/main/res/drawable/play_resume.png
--------------------------------------------------------------------------------
/app/src/main/res/layout/thumbnail_item.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-hdpi/ic_launcher.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/app/src/main/res/mipmap-hdpi/ic_launcher.webp
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-mdpi/ic_launcher.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/app/src/main/res/mipmap-mdpi/ic_launcher.webp
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xhdpi/ic_launcher.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/app/src/main/res/mipmap-xhdpi/ic_launcher.webp
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp
--------------------------------------------------------------------------------
/app/src/main/res/values-night/themes.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
16 |
--------------------------------------------------------------------------------
/app/src/main/res/values/attrs.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/values/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #FFBB86FC
4 | #FF6200EE
5 | #FF3700B3
6 | #FF03DAC5
7 | #FF018786
8 | #FF000000
9 | #FFFFFFFF
10 |
--------------------------------------------------------------------------------
/app/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | MyPlayer
3 | 导入
4 | 导出
5 | 拍摄
6 | 00:00:00
7 |
--------------------------------------------------------------------------------
/app/src/main/res/values/themes.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
16 |
--------------------------------------------------------------------------------
/app/src/main/res/xml/backup_rules.xml:
--------------------------------------------------------------------------------
1 |
8 |
9 |
13 |
--------------------------------------------------------------------------------
/app/src/main/res/xml/data_extraction_rules.xml:
--------------------------------------------------------------------------------
1 |
6 |
7 |
8 |
12 |
13 |
19 |
--------------------------------------------------------------------------------
/app/src/test/java/com/xyq/ffmpegdemo/ExampleUnitTest.kt:
--------------------------------------------------------------------------------
1 | package com.xyq.ffmpegdemo
2 |
3 | import org.junit.Test
4 |
5 | import org.junit.Assert.*
6 |
7 | /**
8 | * Example local unit test, which will execute on the development machine (host).
9 | *
10 | * See [testing documentation](http://d.android.com/tools/testing).
11 | */
12 | class ExampleUnitTest {
13 | @Test
14 | fun addition_isCorrect() {
15 | assertEquals(4, 2 + 2)
16 | }
17 | }
--------------------------------------------------------------------------------
/build.gradle:
--------------------------------------------------------------------------------
1 | // Top-level build file where you can add configuration options common to all sub-projects/modules.
2 | plugins {
3 | id 'com.android.application' version '7.2.0' apply false
4 | id 'com.android.library' version '7.2.0' apply false
5 | id 'org.jetbrains.kotlin.android' version '1.8.0' apply false
6 | }
7 |
8 | task clean(type: Delete) {
9 | delete rootProject.buildDir
10 | }
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | #Sat Jul 30 19:39:45 CST 2022
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-7.3.3-all.zip
7 |
--------------------------------------------------------------------------------
/img_import_capture.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/img_import_capture.png
--------------------------------------------------------------------------------
/img_main.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/img_main.png
--------------------------------------------------------------------------------
/img_media_picker.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/img_media_picker.png
--------------------------------------------------------------------------------
/libbase/.gitignore:
--------------------------------------------------------------------------------
1 | /build
--------------------------------------------------------------------------------
/libbase/build.gradle:
--------------------------------------------------------------------------------
1 | plugins {
2 | id 'com.android.library'
3 | id 'org.jetbrains.kotlin.android'
4 | }
5 |
6 | android {
7 | namespace 'com.xyq.libbase'
8 | compileSdk 33
9 |
10 | defaultConfig {
11 | minSdk 26
12 | targetSdk 33
13 |
14 | testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
15 | consumerProguardFiles "consumer-rules.pro"
16 | }
17 |
18 | buildTypes {
19 | release {
20 | minifyEnabled false
21 | proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
22 | }
23 | }
24 | compileOptions {
25 | sourceCompatibility JavaVersion.VERSION_1_8
26 | targetCompatibility JavaVersion.VERSION_1_8
27 | }
28 | kotlinOptions {
29 | jvmTarget = '1.8'
30 | }
31 | }
32 |
33 | dependencies {
34 | implementation libs.coreKtx
35 | implementation libs.appcompat
36 | implementation libs.material
37 |
38 | testImplementation libs.junit
39 | androidTestImplementation libs.androidxJunit
40 | androidTestImplementation libs.androidxEspressoCore
41 | }
--------------------------------------------------------------------------------
/libbase/consumer-rules.pro:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libbase/consumer-rules.pro
--------------------------------------------------------------------------------
/libbase/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
--------------------------------------------------------------------------------
/libbase/src/androidTest/java/com/xyq/libbase/ExampleInstrumentedTest.kt:
--------------------------------------------------------------------------------
1 | package com.xyq.libbase
2 |
3 | import androidx.test.platform.app.InstrumentationRegistry
4 | import androidx.test.ext.junit.runners.AndroidJUnit4
5 |
6 | import org.junit.Test
7 | import org.junit.runner.RunWith
8 |
9 | import org.junit.Assert.*
10 |
11 | /**
12 | * Instrumented test, which will execute on an Android device.
13 | *
14 | * See [testing documentation](http://d.android.com/tools/testing).
15 | */
16 | @RunWith(AndroidJUnit4::class)
17 | class ExampleInstrumentedTest {
18 | @Test
19 | fun useAppContext() {
20 | // Context of the app under test.
21 | val appContext = InstrumentationRegistry.getInstrumentation().targetContext
22 | assertEquals("com.xyq.libbase.test", appContext.packageName)
23 | }
24 | }
--------------------------------------------------------------------------------
/libbase/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/libbase/src/main/java/com/xyq/libbase/player/IPlayer.kt:
--------------------------------------------------------------------------------
1 | package com.xyq.libbase.player
2 |
3 | import android.view.Surface
4 |
5 | interface IPlayer {
6 |
7 | fun init()
8 |
9 | fun setPlayerListener(listener: IPlayerListener)
10 |
11 | fun prepare(path: String, surface: Surface?)
12 |
13 | fun start()
14 |
15 | fun resume()
16 |
17 | fun pause()
18 |
19 | fun stop()
20 |
21 | fun release()
22 |
23 | fun seek(position: Double): Boolean
24 |
25 | fun setMute(mute: Boolean)
26 |
27 | fun getRotate(): Int
28 |
29 | /**
30 | * ms
31 | */
32 | fun getDuration(): Double
33 |
34 | fun getMediaInfo(): String?
35 | }
--------------------------------------------------------------------------------
/libbase/src/main/java/com/xyq/libbase/player/IPlayerListener.kt:
--------------------------------------------------------------------------------
1 | package com.xyq.libbase.player
2 |
3 | interface IPlayerListener {
4 |
5 | fun onVideoTrackPrepared(width: Int, height: Int, displayRatio: Double)
6 |
7 | fun onAudioTrackPrepared()
8 |
9 | fun onVideoFrameArrived(width: Int, height: Int, format: Int, y: ByteArray?, u: ByteArray?, v: ByteArray?)
10 |
11 | fun onAudioFrameArrived(buffer: ByteArray?, size: Int, flush: Boolean)
12 |
13 | fun onPlayProgress(timestamp: Double)
14 |
15 | fun onPlayComplete()
16 | }
--------------------------------------------------------------------------------
/libbase/src/test/java/com/xyq/libbase/ExampleUnitTest.kt:
--------------------------------------------------------------------------------
1 | package com.xyq.libbase
2 |
3 | import org.junit.Test
4 |
5 | import org.junit.Assert.*
6 |
7 | /**
8 | * Example local unit test, which will execute on the development machine (host).
9 | *
10 | * See [testing documentation](http://d.android.com/tools/testing).
11 | */
12 | class ExampleUnitTest {
13 | @Test
14 | fun addition_isCorrect() {
15 | assertEquals(4, 2 + 2)
16 | }
17 | }
--------------------------------------------------------------------------------
/libcamerakit/.gitignore:
--------------------------------------------------------------------------------
1 | /build
--------------------------------------------------------------------------------
/libcamerakit/consumer-rules.pro:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libcamerakit/consumer-rules.pro
--------------------------------------------------------------------------------
/libcamerakit/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
--------------------------------------------------------------------------------
/libcamerakit/src/androidTest/java/com/xyq/camerakit/ExampleInstrumentedTest.kt:
--------------------------------------------------------------------------------
1 | package com.xyq.camerakit
2 |
3 | import androidx.test.platform.app.InstrumentationRegistry
4 | import androidx.test.ext.junit.runners.AndroidJUnit4
5 |
6 | import org.junit.Test
7 | import org.junit.runner.RunWith
8 |
9 | import org.junit.Assert.*
10 |
11 | /**
12 | * Instrumented test, which will execute on an Android device.
13 | *
14 | * See [testing documentation](http://d.android.com/tools/testing).
15 | */
16 | @RunWith(AndroidJUnit4::class)
17 | class ExampleInstrumentedTest {
18 | @Test
19 | fun useAppContext() {
20 | // Context of the app under test.
21 | val appContext = InstrumentationRegistry.getInstrumentation().targetContext
22 | assertEquals("com.xyq.camerakit.test", appContext.packageName)
23 | }
24 | }
--------------------------------------------------------------------------------
/libcamerakit/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
9 |
10 |
11 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/libcamerakit/src/main/res/drawable/camera_switch.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libcamerakit/src/main/res/drawable/camera_switch.png
--------------------------------------------------------------------------------
/libcamerakit/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | 拍照
3 | 开始录制
4 | 停止录制
5 |
--------------------------------------------------------------------------------
/libcamerakit/src/test/java/com/xyq/camerakit/ExampleUnitTest.kt:
--------------------------------------------------------------------------------
1 | package com.xyq.camerakit
2 |
3 | import org.junit.Test
4 |
5 | import org.junit.Assert.*
6 |
7 | /**
8 | * Example local unit test, which will execute on the development machine (host).
9 | *
10 | * See [testing documentation](http://d.android.com/tools/testing).
11 | */
12 | class ExampleUnitTest {
13 | @Test
14 | fun addition_isCorrect() {
15 | assertEquals(4, 2 + 2)
16 | }
17 | }
--------------------------------------------------------------------------------
/libffplayer/.gitignore:
--------------------------------------------------------------------------------
1 | /build
--------------------------------------------------------------------------------
/libffplayer/consumer-rules.pro:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libffplayer/consumer-rules.pro
--------------------------------------------------------------------------------
/libffplayer/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
--------------------------------------------------------------------------------
/libffplayer/src/androidTest/java/com/xyq/libffplayer/ExampleInstrumentedTest.kt:
--------------------------------------------------------------------------------
1 | package com.xyq.libffplayer
2 |
3 | import androidx.test.platform.app.InstrumentationRegistry
4 | import androidx.test.ext.junit.runners.AndroidJUnit4
5 |
6 | import org.junit.Test
7 | import org.junit.runner.RunWith
8 |
9 | import org.junit.Assert.*
10 |
11 | /**
12 | * Instrumented test, which will execute on an Android device.
13 | *
14 | * See [testing documentation](http://d.android.com/tools/testing).
15 | */
16 | @RunWith(AndroidJUnit4::class)
17 | class ExampleInstrumentedTest {
18 | @Test
19 | fun useAppContext() {
20 | // Context of the app under test.
21 | val appContext = InstrumentationRegistry.getInstrumentation().targetContext
22 | assertEquals("com.example.libffplayer.test", appContext.packageName)
23 | }
24 | }
--------------------------------------------------------------------------------
/libffplayer/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/libffplayer/src/main/assets/oceans.mp4:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libffplayer/src/main/assets/oceans.mp4
--------------------------------------------------------------------------------
/libffplayer/src/main/cpp/base/AVPacketQueue.h:
--------------------------------------------------------------------------------
1 | #ifndef FFMPEGDEMO_AVPACKETQUEUE_H
2 | #define FFMPEGDEMO_AVPACKETQUEUE_H
3 |
4 | #include
5 | #include
6 |
7 | extern "C" {
8 | #include "../vendor/ffmpeg/libavcodec/packet.h"
9 | #include "../vendor/ffmpeg/libavutil/avutil.h"
10 | }
11 |
12 | class AVPacketQueue {
13 |
14 | public:
15 | AVPacketQueue(int64_t maxSize);
16 |
17 | ~AVPacketQueue();
18 |
19 | void push(AVPacket *packet);
20 |
21 | AVPacket* pop();
22 |
23 | int popTo(AVPacket *packet);
24 |
25 | void clear();
26 |
27 | bool isFull();
28 |
29 | bool isEmpty();
30 |
31 | void wait(unsigned int timeOutMs = -1);
32 |
33 | void notify();
34 |
35 | private:
36 |
37 | int64_t mMaxSize = INT64_MAX;
38 |
39 | std::queue mQueue;
40 |
41 | pthread_cond_t mCond{};
42 | pthread_mutex_t mMutex{};
43 | };
44 |
45 |
46 | #endif //FFMPEGDEMO_AVPACKETQUEUE_H
47 |
--------------------------------------------------------------------------------
/libffplayer/src/main/cpp/decoder/AudioDecoder.h:
--------------------------------------------------------------------------------
1 | #ifndef FFMPEGDEMO_AUDIODECODER_H
2 | #define FFMPEGDEMO_AUDIODECODER_H
3 |
4 | #include
5 | #include
6 | #include "../utils/ImageDef.h"
7 | #include "BaseDecoder.h"
8 |
9 | extern "C" {
10 | #include "../vendor/ffmpeg/libswresample/swresample.h"
11 | #include "../vendor/ffmpeg/libavutil/imgutils.h"
12 | }
13 |
14 | class AudioDecoder: public BaseDecoder {
15 |
16 | public:
17 | AudioDecoder(int index, AVFormatContext *ftx);
18 | ~AudioDecoder();
19 |
20 | virtual double getDuration() override;
21 |
22 | virtual bool prepare() override;
23 |
24 | virtual int decode(AVPacket *packet) override;
25 |
26 | virtual void avSync(AVFrame *frame) override;
27 |
28 | virtual int seek(double pos) override;
29 |
30 | virtual void release() override;
31 |
32 | int64_t getTimestamp() const;
33 |
34 | int64_t mCurTimeStampMs = 0;
35 |
36 | bool mNeedFlushRender = false;
37 |
38 | int mDataSize = 0;
39 | uint8_t *mAudioBuffer = nullptr;
40 |
41 | private:
42 | int64_t mStartTimeMsForSync = -1;
43 |
44 | const AVCodec *mAudioCodec = nullptr;
45 |
46 | SwrContext *mSwrContext = nullptr;
47 |
48 | void updateTimestamp(AVFrame *frame);
49 |
50 | int resample(AVFrame *frame);
51 | };
52 |
53 |
54 | #endif //FFMPEGDEMO_AUDIODECODER_H
55 |
--------------------------------------------------------------------------------
/libffplayer/src/main/cpp/reader/FFVideoReader.h:
--------------------------------------------------------------------------------
1 | #ifndef FFMPEGDEMO_FFVIDEOREADER_H
2 | #define FFMPEGDEMO_FFVIDEOREADER_H
3 |
4 | #include "FFReader.h"
5 | #include
6 |
7 | class FFVideoReader: public FFReader {
8 |
9 | public:
10 | FFVideoReader();
11 | ~FFVideoReader();
12 |
13 | bool init(std::string &path) override;
14 |
15 | static int getRotate(AVStream *stream);
16 |
17 | int getRotate();
18 |
19 | void getFrame(int64_t pts, int width, int height, uint8_t *buffer, bool precise = true);
20 |
21 | void getNextFrame(const std::function& frameArrivedCallback);
22 |
23 | private:
24 | bool mInit = false;
25 |
26 | int64_t mLastPts = -1;
27 |
28 | SwsContext *mSwsContext = nullptr;
29 |
30 | uint8_t *mScaleBuffer = nullptr;
31 | int64_t mScaleBufferSize = -1;
32 |
33 | AVFrame *mAvFrame = nullptr;
34 | };
35 |
36 |
37 | #endif //FFMPEGDEMO_FFVIDEOREADER_H
38 |
--------------------------------------------------------------------------------
/libffplayer/src/main/cpp/utils/FFConverter.h:
--------------------------------------------------------------------------------
1 | //
2 | // Created by 雪月清的随笔 on 14/6/23.
3 | //
4 |
5 | #ifndef FFMPEGDEMO_FFCONVERTER_H
6 | #define FFMPEGDEMO_FFCONVERTER_H
7 |
8 | extern "C" {
9 | #include "../vendor/ffmpeg/libavformat/avformat.h"
10 | #include "../vendor/ffmpeg//libavcodec/avcodec.h"
11 | #include "../vendor/ffmpeg/libavutil/imgutils.h"
12 | #include "../vendor/ffmpeg/libswscale/swscale.h"
13 | }
14 |
15 | #include "../settings/CompileSettings.h"
16 |
17 | static AVMediaType getAvMediaType(MediaType type) {
18 | if (type == MEDIA_TYPE_VIDEO) {
19 | return AVMEDIA_TYPE_VIDEO;
20 | } else if (type == MEDIA_TYPE_AUDIO) {
21 | return AVMEDIA_TYPE_AUDIO;
22 | }
23 | return AVMEDIA_TYPE_UNKNOWN;
24 | }
25 |
26 | static AVPixelFormat getAvPixelFormat(PixelFormat format) {
27 | if (format == PIX_FMT_RGB8) {
28 | return AV_PIX_FMT_RGB8;
29 | }
30 | return AV_PIX_FMT_NONE;
31 | }
32 |
33 | static AVCodecID getAvCodecID(ENCODE_TYPE type) {
34 | if (type == ENCODE_TYPE_GIF) {
35 | return AV_CODEC_ID_GIF;
36 | } else if (type == ENCODE_TYPE_H264) {
37 | return AV_CODEC_ID_H264;
38 | }
39 | return AV_CODEC_ID_NONE;
40 | }
41 |
42 | #endif //FFMPEGDEMO_FFCONVERTER_H
43 |
--------------------------------------------------------------------------------
/libffplayer/src/main/cpp/utils/ImageDef.h:
--------------------------------------------------------------------------------
1 | #ifndef FFMPEGDEMO_IMAGEDEF_H
2 | #define FFMPEGDEMO_IMAGEDEF_H
3 |
4 | #define FMT_VIDEO_YUV420 0x00
5 | #define FMT_VIDEO_NV12 0x01
6 | #define FMT_VIDEO_RGBA 0x02
7 | #define FMT_VIDEO_MEDIACODEC 0x03
8 | #define FMT_VIDEO_RGB 0x04
9 |
10 | #define FMT_AUDIO_PCM 0x00
11 |
12 | typedef struct _tag_NativeAvData {
13 |
14 | int width;
15 | int height;
16 | int format;
17 | uint8_t *datas[3];
18 | int lizeSize[3];
19 |
20 | _tag_NativeAvData() {
21 | width = 0;
22 | height = 0;
23 | format = FMT_VIDEO_YUV420;
24 |
25 | datas[0] = nullptr;
26 | datas[1] = nullptr;
27 | datas[2] = nullptr;
28 |
29 | lizeSize[0] = 0;
30 | lizeSize[1] = 0;
31 | lizeSize[2] = 0;
32 | }
33 |
34 | } NativeAvData;
35 |
36 | #endif //FFMPEGDEMO_IMAGEDEF_H
37 |
--------------------------------------------------------------------------------
/libffplayer/src/main/cpp/utils/MutexObj.cpp:
--------------------------------------------------------------------------------
1 | //
2 | // Created by 雪月清的随笔 on 2023/4/18.
3 | //
4 |
5 | #include "MutexObj.h"
6 |
7 | MutexObj::MutexObj() {
8 | pthread_mutex_init(&mMutex, nullptr);
9 | pthread_cond_init(&mCond, nullptr);
10 | }
11 |
12 | MutexObj::~MutexObj() {
13 | pthread_mutex_destroy(&mMutex);
14 | pthread_cond_destroy(&mCond);
15 | }
16 |
17 | void MutexObj::wakeUp() {
18 | pthread_mutex_lock(&mMutex);
19 | pthread_cond_signal(&mCond);
20 | pthread_mutex_unlock(&mMutex);
21 | }
22 |
23 | void MutexObj::wait() {
24 | pthread_mutex_lock(&mMutex);
25 | pthread_cond_wait(&mCond, &mMutex);
26 | pthread_mutex_unlock(&mMutex);
27 | }
28 |
--------------------------------------------------------------------------------
/libffplayer/src/main/cpp/utils/MutexObj.h:
--------------------------------------------------------------------------------
1 | //
2 | // Created by 雪月清的随笔 on 2023/4/18.
3 | //
4 |
5 | #ifndef FFMPEGDEMO_MUTEXOBJ_H
6 | #define FFMPEGDEMO_MUTEXOBJ_H
7 |
8 | #include
9 |
10 | class MutexObj {
11 |
12 | public:
13 | MutexObj();
14 |
15 | ~MutexObj();
16 |
17 | void wakeUp();
18 |
19 | void wait();
20 |
21 | private:
22 | pthread_cond_t mCond{};
23 | pthread_mutex_t mMutex{};
24 | };
25 |
26 |
27 | #endif //FFMPEGDEMO_MUTEXOBJ_H
28 |
--------------------------------------------------------------------------------
/libffplayer/src/main/cpp/vendor/ffmpeg/libavutil/avconfig.h:
--------------------------------------------------------------------------------
1 | /* Generated by ffmpeg configure */
2 | #ifndef AVUTIL_AVCONFIG_H
3 | #define AVUTIL_AVCONFIG_H
4 | #define AV_HAVE_BIGENDIAN 0
5 | #define AV_HAVE_FAST_UNALIGNED 0
6 | #endif /* AVUTIL_AVCONFIG_H */
7 |
--------------------------------------------------------------------------------
/libffplayer/src/main/cpp/vendor/ffmpeg/libavutil/ffversion.h:
--------------------------------------------------------------------------------
1 | /* Automatically generated by version.sh, do not manually edit! */
2 | #ifndef AVUTIL_FFVERSION_H
3 | #define AVUTIL_FFVERSION_H
4 | #define FFMPEG_VERSION "6.0"
5 | #endif /* AVUTIL_FFVERSION_H */
6 |
--------------------------------------------------------------------------------
/libffplayer/src/main/cpp/vendor/ffmpeg/libswresample/version_major.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_MAJOR_H
22 | #define SWRESAMPLE_VERSION_MAJOR_H
23 |
24 | /**
25 | * @file
26 | * Libswresample version macros
27 | */
28 |
29 | #define LIBSWRESAMPLE_VERSION_MAJOR 4
30 |
31 | #endif /* SWRESAMPLE_VERSION_MAJOR_H */
32 |
--------------------------------------------------------------------------------
/libffplayer/src/main/cpp/vendor/libyuv/libyuv.h:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2011 The LibYuv Project Authors. All rights reserved.
3 | *
4 | * Use of this source code is governed by a BSD-style license
5 | * that can be found in the LICENSE file in the root of the source
6 | * tree. An additional intellectual property rights grant can be found
7 | * in the file PATENTS. All contributing project authors may
8 | * be found in the AUTHORS file in the root of the source tree.
9 | */
10 |
11 | #ifndef INCLUDE_LIBYUV_H_
12 | #define INCLUDE_LIBYUV_H_
13 |
14 | #include "libyuv/basic_types.h"
15 | #include "libyuv/compare.h"
16 | #include "libyuv/convert.h"
17 | #include "libyuv/convert_argb.h"
18 | #include "libyuv/convert_from.h"
19 | #include "libyuv/convert_from_argb.h"
20 | #include "libyuv/cpu_id.h"
21 | #include "libyuv/mjpeg_decoder.h"
22 | #include "libyuv/planar_functions.h"
23 | #include "libyuv/rotate.h"
24 | #include "libyuv/rotate_argb.h"
25 | #include "libyuv/row.h"
26 | #include "libyuv/scale.h"
27 | #include "libyuv/scale_argb.h"
28 | #include "libyuv/scale_row.h"
29 | #include "libyuv/scale_uv.h"
30 | #include "libyuv/version.h"
31 | #include "libyuv/video_common.h"
32 |
33 | #endif // INCLUDE_LIBYUV_H_
34 |
--------------------------------------------------------------------------------
/libffplayer/src/main/cpp/vendor/libyuv/libyuv/rotate_argb.h:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2012 The LibYuv Project Authors. All rights reserved.
3 | *
4 | * Use of this source code is governed by a BSD-style license
5 | * that can be found in the LICENSE file in the root of the source
6 | * tree. An additional intellectual property rights grant can be found
7 | * in the file PATENTS. All contributing project authors may
8 | * be found in the AUTHORS file in the root of the source tree.
9 | */
10 |
11 | #ifndef INCLUDE_LIBYUV_ROTATE_ARGB_H_
12 | #define INCLUDE_LIBYUV_ROTATE_ARGB_H_
13 |
14 | #include "../libyuv/basic_types.h"
15 | #include "../libyuv/rotate.h" // For RotationMode.
16 |
17 | #ifdef __cplusplus
18 | namespace libyuv {
19 | extern "C" {
20 | #endif
21 |
22 | // Rotate ARGB frame
23 | LIBYUV_API
24 | int ARGBRotate(const uint8_t* src_argb,
25 | int src_stride_argb,
26 | uint8_t* dst_argb,
27 | int dst_stride_argb,
28 | int src_width,
29 | int src_height,
30 | enum RotationMode mode);
31 |
32 | #ifdef __cplusplus
33 | } // extern "C"
34 | } // namespace libyuv
35 | #endif
36 |
37 | #endif // INCLUDE_LIBYUV_ROTATE_ARGB_H_
38 |
--------------------------------------------------------------------------------
/libffplayer/src/main/cpp/vendor/libyuv/libyuv/version.h:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2012 The LibYuv Project Authors. All rights reserved.
3 | *
4 | * Use of this source code is governed by a BSD-style license
5 | * that can be found in the LICENSE file in the root of the source
6 | * tree. An additional intellectual property rights grant can be found
7 | * in the file PATENTS. All contributing project authors may
8 | * be found in the AUTHORS file in the root of the source tree.
9 | */
10 |
11 | #ifndef INCLUDE_LIBYUV_VERSION_H_
12 | #define INCLUDE_LIBYUV_VERSION_H_
13 |
14 | #define LIBYUV_VERSION 1844
15 |
16 | #endif // INCLUDE_LIBYUV_VERSION_H_
17 |
--------------------------------------------------------------------------------
/libffplayer/src/main/cpp/writer/FFVideoWriter.h:
--------------------------------------------------------------------------------
1 | //
2 | // Created by 雪月清的随笔 on 14/5/23.
3 | //
4 |
5 | #ifndef FFMPEGDEMO_FFVIDEOWRITER_H
6 | #define FFMPEGDEMO_FFVIDEOWRITER_H
7 |
8 | extern "C" {
9 | #include "libavformat/avformat.h"
10 | #include "../vendor/ffmpeg//libavcodec/avcodec.h"
11 | #include "../vendor/ffmpeg/libavutil/imgutils.h"
12 | #include "../vendor/ffmpeg/libswscale/swscale.h"
13 | }
14 |
15 | #include
16 | #include "../settings/CompileSettings.h"
17 |
18 | class FFVideoWriter {
19 | public:
20 | FFVideoWriter();
21 |
22 | ~FFVideoWriter();
23 |
24 | bool init(std::string &outputPath, CompileSettings &settings);
25 |
26 | void encode(AVFrame *frame);
27 |
28 | void signalEof();
29 |
30 | void release();
31 |
32 | private:
33 | AVFormatContext *mOutputFtx = nullptr;
34 | AVCodecContext *mCodecContext = nullptr;
35 | AVCodecParameters *mCodecParameters = nullptr;
36 | AVStream *mStream = nullptr;
37 |
38 | SwsContext *mSwsContext = nullptr;
39 | AVFrame *mAvFrame = nullptr;
40 |
41 | int mFrameIndex = 0;
42 | };
43 |
44 | #endif //FFMPEGDEMO_FFVIDEOWRITER_H
45 |
--------------------------------------------------------------------------------
/libffplayer/src/main/libs/arm64-v8a/libavcodec.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libffplayer/src/main/libs/arm64-v8a/libavcodec.so
--------------------------------------------------------------------------------
/libffplayer/src/main/libs/arm64-v8a/libavfilter.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libffplayer/src/main/libs/arm64-v8a/libavfilter.so
--------------------------------------------------------------------------------
/libffplayer/src/main/libs/arm64-v8a/libavformat.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libffplayer/src/main/libs/arm64-v8a/libavformat.so
--------------------------------------------------------------------------------
/libffplayer/src/main/libs/arm64-v8a/libavutil.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libffplayer/src/main/libs/arm64-v8a/libavutil.so
--------------------------------------------------------------------------------
/libffplayer/src/main/libs/arm64-v8a/libswresample.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libffplayer/src/main/libs/arm64-v8a/libswresample.so
--------------------------------------------------------------------------------
/libffplayer/src/main/libs/arm64-v8a/libswscale.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libffplayer/src/main/libs/arm64-v8a/libswscale.so
--------------------------------------------------------------------------------
/libffplayer/src/main/libs/arm64-v8a/libyuv.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libffplayer/src/main/libs/arm64-v8a/libyuv.so
--------------------------------------------------------------------------------
/libffplayer/src/main/libs/armeabi-v7a/libavcodec.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libffplayer/src/main/libs/armeabi-v7a/libavcodec.so
--------------------------------------------------------------------------------
/libffplayer/src/main/libs/armeabi-v7a/libavfilter.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libffplayer/src/main/libs/armeabi-v7a/libavfilter.so
--------------------------------------------------------------------------------
/libffplayer/src/main/libs/armeabi-v7a/libavformat.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libffplayer/src/main/libs/armeabi-v7a/libavformat.so
--------------------------------------------------------------------------------
/libffplayer/src/main/libs/armeabi-v7a/libavutil.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libffplayer/src/main/libs/armeabi-v7a/libavutil.so
--------------------------------------------------------------------------------
/libffplayer/src/main/libs/armeabi-v7a/libswresample.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libffplayer/src/main/libs/armeabi-v7a/libswresample.so
--------------------------------------------------------------------------------
/libffplayer/src/main/libs/armeabi-v7a/libswscale.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libffplayer/src/main/libs/armeabi-v7a/libswscale.so
--------------------------------------------------------------------------------
/libffplayer/src/main/libs/armeabi-v7a/libyuv.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libffplayer/src/main/libs/armeabi-v7a/libyuv.so
--------------------------------------------------------------------------------
/libffplayer/src/test/java/com/xyq/libffplayer/ExampleUnitTest.kt:
--------------------------------------------------------------------------------
1 | package com.xyq.libffplayer
2 |
3 | import org.junit.Test
4 |
5 | import org.junit.Assert.*
6 |
7 | /**
8 | * Example local unit test, which will execute on the development machine (host).
9 | *
10 | * See [testing documentation](http://d.android.com/tools/testing).
11 | */
12 | class ExampleUnitTest {
13 | @Test
14 | fun addition_isCorrect() {
15 | assertEquals(4, 2 + 2)
16 | }
17 | }
--------------------------------------------------------------------------------
/libhwplayer/.gitignore:
--------------------------------------------------------------------------------
1 | /build
--------------------------------------------------------------------------------
/libhwplayer/build.gradle:
--------------------------------------------------------------------------------
1 | plugins {
2 | id 'com.android.library'
3 | id 'org.jetbrains.kotlin.android'
4 | }
5 |
6 | android {
7 | namespace 'com.xyq.libhwplayer'
8 | compileSdk 33
9 |
10 | defaultConfig {
11 | minSdk 26
12 | targetSdk 33
13 |
14 | testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
15 | consumerProguardFiles "consumer-rules.pro"
16 | }
17 |
18 | buildTypes {
19 | release {
20 | minifyEnabled false
21 | proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
22 | }
23 | }
24 | compileOptions {
25 | sourceCompatibility JavaVersion.VERSION_1_8
26 | targetCompatibility JavaVersion.VERSION_1_8
27 | }
28 | kotlinOptions {
29 | jvmTarget = '1.8'
30 | }
31 | }
32 |
33 | dependencies {
34 | implementation project(path: ':libbase')
35 | implementation project(path: ':libpng')
36 | implementation project(path: ':libjpeg')
37 | implementation project(path: ':libutils')
38 |
39 | implementation libs.coreKtx
40 | implementation libs.appcompat
41 | implementation libs.material
42 |
43 | testImplementation libs.junit
44 | androidTestImplementation libs.androidxJunit
45 | androidTestImplementation libs.androidxEspressoCore
46 | }
--------------------------------------------------------------------------------
/libhwplayer/consumer-rules.pro:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libhwplayer/consumer-rules.pro
--------------------------------------------------------------------------------
/libhwplayer/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
--------------------------------------------------------------------------------
/libhwplayer/src/androidTest/java/com/xyq/libhwplayer/ExampleInstrumentedTest.kt:
--------------------------------------------------------------------------------
1 | package com.xyq.libhwplayer
2 |
3 | import androidx.test.platform.app.InstrumentationRegistry
4 | import androidx.test.ext.junit.runners.AndroidJUnit4
5 |
6 | import org.junit.Test
7 | import org.junit.runner.RunWith
8 |
9 | import org.junit.Assert.*
10 |
11 | /**
12 | * Instrumented test, which will execute on an Android device.
13 | *
14 | * See [testing documentation](http://d.android.com/tools/testing).
15 | */
16 | @RunWith(AndroidJUnit4::class)
17 | class ExampleInstrumentedTest {
18 | @Test
19 | fun useAppContext() {
20 | // Context of the app under test.
21 | val appContext = InstrumentationRegistry.getInstrumentation().targetContext
22 | assertEquals("com.xyq.libhwplayer.test", appContext.packageName)
23 | }
24 | }
--------------------------------------------------------------------------------
/libhwplayer/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/libhwplayer/src/main/java/com/xyq/libhwplayer/extractor/AudioExtractor.kt:
--------------------------------------------------------------------------------
1 | package com.xyq.libhwplayer.extractor
2 |
3 | import android.media.MediaFormat
4 |
5 | class AudioExtractor(path: String): VideoExtractor(path) {
6 |
7 | override fun getFormat(): MediaFormat? {
8 | return mMediaExtractor.getAudioFormat()
9 | }
10 |
11 | }
--------------------------------------------------------------------------------
/libhwplayer/src/main/java/com/xyq/libhwplayer/extractor/IExtractor.kt:
--------------------------------------------------------------------------------
1 | package com.xyq.libhwplayer.extractor
2 |
3 | import android.media.MediaFormat
4 | import java.nio.ByteBuffer
5 |
6 | interface IExtractor {
7 |
8 | fun getFormat(): MediaFormat?
9 |
10 | fun readBuffer(byteBuffer: ByteBuffer): Int
11 |
12 | fun getCurrentTimestamp(): Long
13 |
14 | fun getSampleFlags(): Int
15 |
16 | fun seek(pos: Long): Long
17 |
18 | fun setStartPos(pos: Long)
19 |
20 | fun release()
21 | }
--------------------------------------------------------------------------------
/libhwplayer/src/main/java/com/xyq/libhwplayer/extractor/VideoExtractor.kt:
--------------------------------------------------------------------------------
1 | package com.xyq.libhwplayer.extractor
2 |
3 | import android.media.MediaFormat
4 | import java.nio.ByteBuffer
5 |
6 | open class VideoExtractor(path: String): IExtractor {
7 |
8 | protected val mMediaExtractor = MyExtractor(path)
9 |
10 | override fun getFormat(): MediaFormat? {
11 | return mMediaExtractor.getVideoFormat()
12 | }
13 |
14 | override fun readBuffer(byteBuffer: ByteBuffer): Int {
15 | return mMediaExtractor.readBuffer(byteBuffer)
16 | }
17 |
18 | override fun getCurrentTimestamp(): Long {
19 | return mMediaExtractor.getCurrentTimestamp()
20 | }
21 |
22 | override fun getSampleFlags(): Int {
23 | return mMediaExtractor.getSampleFlags()
24 | }
25 |
26 | override fun seek(pos: Long): Long {
27 | return mMediaExtractor.seek(pos)
28 | }
29 |
30 | override fun setStartPos(pos: Long) {
31 | mMediaExtractor.setStartPos(pos)
32 | }
33 |
34 | override fun release() {
35 | mMediaExtractor.release()
36 | }
37 | }
--------------------------------------------------------------------------------
/libhwplayer/src/main/java/com/xyq/libhwplayer/reader/ImageInfo.kt:
--------------------------------------------------------------------------------
1 | package com.xyq.libhwplayer.reader
2 |
3 | import java.nio.ByteBuffer
4 |
5 | class ImageInfo {
6 | var width = 0
7 | var height = 0
8 | var rotate = 0
9 | var data: ByteBuffer? = null
10 |
11 | fun isValid(): Boolean {
12 | return width > 0 && height > 0 && data != null
13 | }
14 | }
--------------------------------------------------------------------------------
/libhwplayer/src/test/java/com/xyq/libhwplayer/ExampleUnitTest.kt:
--------------------------------------------------------------------------------
1 | package com.xyq.libhwplayer
2 |
3 | import org.junit.Test
4 |
5 | import org.junit.Assert.*
6 |
7 | /**
8 | * Example local unit test, which will execute on the development machine (host).
9 | *
10 | * See [testing documentation](http://d.android.com/tools/testing).
11 | */
12 | class ExampleUnitTest {
13 | @Test
14 | fun addition_isCorrect() {
15 | assertEquals(4, 2 + 2)
16 | }
17 | }
--------------------------------------------------------------------------------
/libjpeg/.gitignore:
--------------------------------------------------------------------------------
1 | /build
--------------------------------------------------------------------------------
/libjpeg/consumer-rules.pro:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libjpeg/consumer-rules.pro
--------------------------------------------------------------------------------
/libjpeg/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
--------------------------------------------------------------------------------
/libjpeg/src/androidTest/java/com/xyq/libjpeg/ExampleInstrumentedTest.kt:
--------------------------------------------------------------------------------
1 | package com.xyq.libjpeg
2 |
3 | import androidx.test.platform.app.InstrumentationRegistry
4 | import androidx.test.ext.junit.runners.AndroidJUnit4
5 |
6 | import org.junit.Test
7 | import org.junit.runner.RunWith
8 |
9 | import org.junit.Assert.*
10 |
11 | /**
12 | * Instrumented test, which will execute on an Android device.
13 | *
14 | * See [testing documentation](http://d.android.com/tools/testing).
15 | */
16 | @RunWith(AndroidJUnit4::class)
17 | class ExampleInstrumentedTest {
18 | @Test
19 | fun useAppContext() {
20 | // Context of the app under test.
21 | val appContext = InstrumentationRegistry.getInstrumentation().targetContext
22 | assertEquals("com.xyq.libjpeg.test", appContext.packageName)
23 | }
24 | }
--------------------------------------------------------------------------------
/libjpeg/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/libjpeg/src/main/libs/arm64-v8a/libjpeg.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libjpeg/src/main/libs/arm64-v8a/libjpeg.so
--------------------------------------------------------------------------------
/libjpeg/src/main/libs/arm64-v8a/libturbojpeg.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libjpeg/src/main/libs/arm64-v8a/libturbojpeg.so
--------------------------------------------------------------------------------
/libjpeg/src/main/libs/armeabi-v7a/libjpeg.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libjpeg/src/main/libs/armeabi-v7a/libjpeg.so
--------------------------------------------------------------------------------
/libjpeg/src/main/libs/armeabi-v7a/libturbojpeg.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libjpeg/src/main/libs/armeabi-v7a/libturbojpeg.so
--------------------------------------------------------------------------------
/libjpeg/src/test/java/com/xyq/libjpeg/ExampleUnitTest.kt:
--------------------------------------------------------------------------------
1 | package com.xyq.libjpeg
2 |
3 | import org.junit.Test
4 |
5 | import org.junit.Assert.*
6 |
7 | /**
8 | * Example local unit test, which will execute on the development machine (host).
9 | *
10 | * See [testing documentation](http://d.android.com/tools/testing).
11 | */
12 | class ExampleUnitTest {
13 | @Test
14 | fun addition_isCorrect() {
15 | assertEquals(4, 2 + 2)
16 | }
17 | }
--------------------------------------------------------------------------------
/libmediapicker/.gitignore:
--------------------------------------------------------------------------------
1 | /build
--------------------------------------------------------------------------------
/libmediapicker/build.gradle:
--------------------------------------------------------------------------------
1 | plugins {
2 | id 'com.android.library'
3 | id 'org.jetbrains.kotlin.android'
4 | }
5 |
6 | android {
7 | namespace 'com.xyq.libmediapicker'
8 | compileSdk 33
9 |
10 | defaultConfig {
11 | minSdk 26
12 | targetSdk 33
13 |
14 | testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
15 | consumerProguardFiles "consumer-rules.pro"
16 | }
17 |
18 | buildTypes {
19 | release {
20 | minifyEnabled false
21 | proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
22 | }
23 | }
24 | compileOptions {
25 | sourceCompatibility JavaVersion.VERSION_1_8
26 | targetCompatibility JavaVersion.VERSION_1_8
27 | }
28 | kotlinOptions {
29 | jvmTarget = '1.8'
30 | }
31 | }
32 |
33 | dependencies {
34 | implementation project(path: ':libcamerakit')
35 |
36 | implementation 'com.github.bumptech.glide:glide:4.11.0'
37 | implementation libs.coreKtx
38 | implementation libs.appcompat
39 | implementation libs.material
40 |
41 | testImplementation libs.junit
42 | androidTestImplementation libs.androidxJunit
43 | androidTestImplementation libs.androidxEspressoCore
44 | }
--------------------------------------------------------------------------------
/libmediapicker/consumer-rules.pro:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libmediapicker/consumer-rules.pro
--------------------------------------------------------------------------------
/libmediapicker/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
--------------------------------------------------------------------------------
/libmediapicker/src/androidTest/java/com/xyq/libmediapicker/ExampleInstrumentedTest.kt:
--------------------------------------------------------------------------------
1 | package com.xyq.libmediapicker
2 |
3 | import androidx.test.platform.app.InstrumentationRegistry
4 | import androidx.test.ext.junit.runners.AndroidJUnit4
5 |
6 | import org.junit.Test
7 | import org.junit.runner.RunWith
8 |
9 | import org.junit.Assert.*
10 |
11 | /**
12 | * Instrumented test, which will execute on an Android device.
13 | *
14 | * See [testing documentation](http://d.android.com/tools/testing).
15 | */
16 | @RunWith(AndroidJUnit4::class)
17 | class ExampleInstrumentedTest {
18 | @Test
19 | fun useAppContext() {
20 | // Context of the app under test.
21 | val appContext = InstrumentationRegistry.getInstrumentation().targetContext
22 | assertEquals("com.xyq.libmediapicker.test", appContext.packageName)
23 | }
24 | }
--------------------------------------------------------------------------------
/libmediapicker/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
9 |
10 |
15 |
18 |
19 |
20 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/libmediapicker/src/main/java/com/xyq/libmediapicker/PickerConfig.kt:
--------------------------------------------------------------------------------
1 | package com.xyq.libmediapicker
2 |
3 | object PickerConfig {
4 |
5 | const val MAX_SELECT_COUNT = "max_select_count"
6 | const val DEFAULT_SELECTED_MAX_COUNT = 1
7 |
8 | const val SELECT_MODE = "select_mode"
9 | const val EXTRA_RESULT = "select_result"
10 |
11 | const val DEFAULT_SELECTED_LIST = "default_list"
12 | const val RESULT_CODE = 4000
13 |
14 | const val PICKER_IMAGE = 100
15 | const val PICKER_VIDEO = 101
16 | const val PICKER_IMAGE_VIDEO = 102
17 |
18 | const val GridSpanCount = 3
19 | const val GridSpace = 4
20 | }
--------------------------------------------------------------------------------
/libmediapicker/src/main/java/com/xyq/libmediapicker/adapter/SpacingDecoration.kt:
--------------------------------------------------------------------------------
1 | package com.xyq.libmediapicker.adapter
2 |
3 | import android.graphics.Rect
4 | import android.view.View
5 | import androidx.recyclerview.widget.RecyclerView
6 |
7 | class SpacingDecoration(private val space: Int,
8 | private val spanCount: Int): RecyclerView.ItemDecoration() {
9 |
10 | override fun getItemOffsets(
11 | outRect: Rect,
12 | view: View,
13 | parent: RecyclerView,
14 | state: RecyclerView.State) {
15 | outRect.left = space
16 | outRect.bottom = space
17 | val position = parent.getChildLayoutPosition(view)
18 | if (position % spanCount == 0) {
19 | outRect.left = 0
20 | }
21 | }
22 | }
--------------------------------------------------------------------------------
/libmediapicker/src/main/java/com/xyq/libmediapicker/data/MediaDataCallback.kt:
--------------------------------------------------------------------------------
1 | package com.xyq.libmediapicker.data
2 |
3 | import com.xyq.libmediapicker.entity.Folder
4 |
5 | interface MediaDataCallback {
6 | fun onMediaDataArrived(list: ArrayList)
7 | }
--------------------------------------------------------------------------------
/libmediapicker/src/main/java/com/xyq/libmediapicker/entity/Folder.kt:
--------------------------------------------------------------------------------
1 | package com.xyq.libmediapicker.entity
2 |
3 | import android.os.Parcel
4 | import android.os.Parcelable
5 |
6 | class Folder(val name: String): Parcelable {
7 |
8 | var count = 0
9 |
10 | private var medias: ArrayList = ArrayList()
11 |
12 | constructor(parcel: Parcel) : this(parcel.readString()!!) {
13 | count = parcel.readInt()
14 | medias = parcel.createTypedArrayList(Media.CREATOR as Parcelable.Creator)!!
15 | }
16 |
17 | fun addMedias(media: Media) {
18 | this.medias.add(media)
19 | }
20 |
21 | fun getMedias(): ArrayList {
22 | return this.medias
23 | }
24 |
25 | override fun writeToParcel(parcel: Parcel, flags: Int) {
26 | parcel.writeString(name)
27 | parcel.writeInt(count)
28 | parcel.writeTypedList(medias)
29 | }
30 |
31 | override fun describeContents(): Int {
32 | return 0
33 | }
34 |
35 | companion object CREATOR : Parcelable.Creator {
36 | override fun createFromParcel(parcel: Parcel): Folder {
37 | return Folder(parcel)
38 | }
39 |
40 | override fun newArray(size: Int): Array {
41 | return arrayOfNulls(size)
42 | }
43 | }
44 | }
--------------------------------------------------------------------------------
/libmediapicker/src/main/java/com/xyq/libmediapicker/utils/MyFileProvider.java:
--------------------------------------------------------------------------------
1 | package com.xyq.libmediapicker.utils;
2 |
3 | import androidx.core.content.FileProvider;
4 |
5 | public class MyFileProvider extends FileProvider {
6 | }
7 |
--------------------------------------------------------------------------------
/libmediapicker/src/main/res/drawable-xhdpi-v4/default_check.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libmediapicker/src/main/res/drawable-xhdpi-v4/default_check.png
--------------------------------------------------------------------------------
/libmediapicker/src/main/res/drawable-xhdpi-v4/default_image.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libmediapicker/src/main/res/drawable-xhdpi-v4/default_image.png
--------------------------------------------------------------------------------
/libmediapicker/src/main/res/drawable-xhdpi-v4/text_indicator.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libmediapicker/src/main/res/drawable-xhdpi-v4/text_indicator.png
--------------------------------------------------------------------------------
/libmediapicker/src/main/res/drawable/action_btn.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 |
--------------------------------------------------------------------------------
/libmediapicker/src/main/res/drawable/btn_selected.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libmediapicker/src/main/res/drawable/btn_selected.png
--------------------------------------------------------------------------------
/libmediapicker/src/main/res/drawable/btn_unselected.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libmediapicker/src/main/res/drawable/btn_unselected.png
--------------------------------------------------------------------------------
/libmediapicker/src/main/res/drawable/ic_back.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libmediapicker/src/main/res/drawable/ic_back.png
--------------------------------------------------------------------------------
/libmediapicker/src/main/res/values/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #FFFFFFFF
4 |
--------------------------------------------------------------------------------
/libmediapicker/src/main/res/values/values.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | 需要打开读取外置存储的权限
4 | 视频与图片
5 | 图片
6 | 所有视频
7 | 完成
8 | 拍摄
9 |
10 | 选择图片
11 | 选择图片或视频
12 | 选择视频
13 | 所有视频
14 |
15 | GIF
16 |
--------------------------------------------------------------------------------
/libmediapicker/src/main/res/xml/file_provider_paths.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/libmediapicker/src/test/java/com/xyq/libmediapicker/ExampleUnitTest.kt:
--------------------------------------------------------------------------------
1 | package com.xyq.libmediapicker
2 |
3 | import org.junit.Test
4 |
5 | import org.junit.Assert.*
6 |
7 | /**
8 | * Example local unit test, which will execute on the development machine (host).
9 | *
10 | * See [testing documentation](http://d.android.com/tools/testing).
11 | */
12 | class ExampleUnitTest {
13 | @Test
14 | fun addition_isCorrect() {
15 | assertEquals(4, 2 + 2)
16 | }
17 | }
--------------------------------------------------------------------------------
/libpng/.gitignore:
--------------------------------------------------------------------------------
1 | /build
--------------------------------------------------------------------------------
/libpng/consumer-rules.pro:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/consumer-rules.pro
--------------------------------------------------------------------------------
/libpng/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
--------------------------------------------------------------------------------
/libpng/src/androidTest/java/com/xyq/libpng/ExampleInstrumentedTest.kt:
--------------------------------------------------------------------------------
1 | package com.xyq.libpng
2 |
3 | import androidx.test.platform.app.InstrumentationRegistry
4 | import androidx.test.ext.junit.runners.AndroidJUnit4
5 |
6 | import org.junit.Test
7 | import org.junit.runner.RunWith
8 |
9 | import org.junit.Assert.*
10 |
11 | /**
12 | * Instrumented test, which will execute on an Android device.
13 | *
14 | * See [testing documentation](http://d.android.com/tools/testing).
15 | */
16 | @RunWith(AndroidJUnit4::class)
17 | class ExampleInstrumentedTest {
18 | @Test
19 | fun useAppContext() {
20 | // Context of the app under test.
21 | val appContext = InstrumentationRegistry.getInstrumentation().targetContext
22 | assertEquals("com.xyq.libpng.test", appContext.packageName)
23 | }
24 | }
--------------------------------------------------------------------------------
/libpng/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/TODO:
--------------------------------------------------------------------------------
1 | TODO - list of things to do for libpng:
2 |
3 | * Fix all defects (duh!)
4 | * Better C++ wrapper / full C++ implementation (?)
5 | * Fix the problems with C++ and 'extern "C"'.
6 | * cHRM transformation.
7 | * Palette creation.
8 | * "grayscale->palette" transformation and "palette->grayscale" detection.
9 | * Improved dithering.
10 | * Multi-lingual error and warning message support.
11 | * Complete sRGB transformation. (Currently it simply uses gamma=0.45455.)
12 | * Man pages for function calls.
13 | * Better documentation.
14 | * Better filter selection
15 | (e.g., counting huffman bits/precompression; filter inertia; filter costs).
16 | * Histogram creation.
17 | * Text conversion between different code pages (e.g., Latin-1 -> Mac).
18 | * Avoid building gamma tables whenever possible.
19 | * Greater precision in changing to linear gamma for compositing against
20 | background, and in doing rgb-to-gray transformations.
21 | * Investigate pre-incremented loop counters and other loop constructions.
22 | * Interpolated method of handling interlacing.
23 | * More validations for libpng transformations.
24 |
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/TRADEMARK:
--------------------------------------------------------------------------------
1 | TRADEMARK
2 | =========
3 |
4 | The name "libpng" has not been registered by the Copyright owners
5 | as a trademark in any jurisdiction. However, because libpng has
6 | been distributed and maintained world-wide, continually since 1995,
7 | the Copyright owners claim "common-law trademark protection" in any
8 | jurisdiction where common-law trademark is recognized.
9 |
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/README.txt:
--------------------------------------------------------------------------------
1 |
2 | This "contrib" directory contains contributions which are not necessarily under
3 | the libpng license, although all are open source. They are not part of
4 | libpng proper and are not used for building the library, although some are used
5 | for testing the library via "make check".
6 |
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/examples/README.txt:
--------------------------------------------------------------------------------
1 |
2 | This directory (contrib/examples) contains examples of libpng usage.
3 |
4 | NO COPYRIGHT RIGHTS ARE CLAIMED TO ANY OF THE FILES IN THIS DIRECTORY.
5 |
6 | To the extent possible under law, the authors have waived all copyright and
7 | related or neighboring rights to this work. This work is published from:
8 | United States.
9 |
10 | The files may be used freely in any way. The intention is that appropriate
11 | parts of the files be used in other libpng-using programs without any need for
12 | the authors of the using code to seek copyright or license from the original
13 | authors.
14 |
15 | The source code and comments in this directory are the original work of the
16 | people named below. No other person or organization has made contributions to
17 | the work in this directory.
18 |
19 | ORIGINAL AUTHORS
20 | The following people have contributed to the code in this directory. None
21 | of the people below claim any rights with regard to the contents of this
22 | directory.
23 |
24 | John Bowler
25 |
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/gregbook/rpng-x.c:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/gregbook/rpng-x.c
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/gregbook/rpng2-x.c:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/gregbook/rpng2-x.c
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/gregbook/toucan.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/gregbook/toucan.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/oss-fuzz/Dockerfile:
--------------------------------------------------------------------------------
1 | # Copyright 2016 Google Inc.
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # http://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 | #
15 | ################################################################################
16 |
17 | FROM gcr.io/oss-fuzz-base/base-builder
18 | MAINTAINER glennrp@gmail.com
19 | RUN apt-get update && \
20 | apt-get install -y make autoconf automake libtool
21 |
22 | RUN git clone --depth 1 https://github.com/madler/zlib.git
23 | RUN git clone --depth 1 https://github.com/glennrp/libpng.git
24 | RUN cp libpng/contrib/oss-fuzz/build.sh $SRC
25 | WORKDIR libpng
26 |
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/oss-fuzz/libpng_read_fuzzer.options:
--------------------------------------------------------------------------------
1 | [libfuzzer]
2 | dict = png.dict
3 |
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/oss-fuzz/png.dict:
--------------------------------------------------------------------------------
1 | #
2 | # AFL dictionary for PNG images
3 | # -----------------------------
4 | #
5 | # Just the basic, standard-originating sections; does not include vendor
6 | # extensions.
7 | #
8 | # Created by Michal Zalewski
9 | #
10 |
11 | header_png="\x89PNG\x0d\x0a\x1a\x0a"
12 |
13 | section_IDAT="IDAT"
14 | section_IEND="IEND"
15 | section_IHDR="IHDR"
16 | section_PLTE="PLTE"
17 | section_bKGD="bKGD"
18 | section_cHRM="cHRM"
19 | section_eXIf="eXIf"
20 | section_fRAc="fRAc"
21 | section_gAMA="gAMA"
22 | section_gIFg="gIFg"
23 | section_gIFt="gIFt"
24 | section_gIFx="gIFx"
25 | section_hIST="hIST"
26 | section_iCCP="iCCP"
27 | section_iTXt="iTXt"
28 | section_oFFs="oFFs"
29 | section_pCAL="pCAL"
30 | section_pHYs="pHYs"
31 | section_sBIT="sBIT"
32 | section_sCAL="sCAL"
33 | section_sPLT="sPLT"
34 | section_sRGB="sRGB"
35 | section_sTER="sTER"
36 | section_tEXt="tEXt"
37 | section_tIME="tIME"
38 | section_tRNS="tRNS"
39 | section_zTXt="zTXt"
40 |
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/pngminim/README:
--------------------------------------------------------------------------------
1 |
2 | This demonstrates the use of PNG_USER_CONFIG, pngusr.h and pngusr.dfa
3 | to build minimal decoder, encoder, and progressive reader applications.
4 |
5 | See the individual README and pngusr.dfa files for more explanation.
6 |
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/pngminim/decoder/README:
--------------------------------------------------------------------------------
1 | This demonstrates the use of PNG_USER_CONFIG, pngusr.h and pngusr.dfa
2 |
3 | The makefile builds a minimal read-only decoder with embedded libpng
4 | and zlib.
5 |
6 | Specify the location of the zlib source (1.2.1 or later) as ZLIBSRC
7 | on the make command line.
8 |
9 | If you prefer to use the shared libraries, go to contrib/pngminus
10 | and build the png2pnm application there.
11 |
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/pngminim/decoder/pngusr.dfa:
--------------------------------------------------------------------------------
1 | # pngminim/decoder/pngusr.dfa
2 | #
3 | # Copyright (c) 2010-2013 Glenn Randers-Pehrson
4 | #
5 | # This code is released under the libpng license.
6 | # For conditions of distribution and use, see the disclaimer
7 | # and license in png.h
8 |
9 | # First all the build options off:
10 |
11 | everything = off
12 |
13 | # All that is required is some read code. This example switches
14 | # on the sequential read code (see ../preader for a progressive
15 | # read example).
16 |
17 | option SEQUENTIAL_READ on
18 |
19 | # You must choose fixed or floating point arithmetic:
20 | # option FLOATING_POINT on
21 |
22 | option FIXED_POINT on
23 |
24 | # You must chose the internal fixed point implementation or to
25 | # use the system floating point. The latter is considerably
26 | # smaller (by about 1kbyte on an x86 system):
27 | # option FLOATING_ARITHMETIC on
28 |
29 | option FLOATING_ARITHMETIC off
30 |
31 | # Your program will probably need other options. The example
32 | # program here, pngm2pnm, requires the following. Take a look
33 | # at pnglibconf.h to find out the full set of what has to be
34 | # enabled to make the following work.
35 |
36 | option SETJMP on
37 | option STDIO on
38 | option READ_EXPAND on
39 | option READ_STRIP_16_TO_8 on
40 | option USER_LIMITS on
41 |
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/pngminim/decoder/pngusr.h:
--------------------------------------------------------------------------------
1 | /* minrdpngconf.h: headers to make a minimal png-read-only library
2 | *
3 | * Copyright (c) 2007, 2010-2013 Glenn Randers-Pehrson
4 | *
5 | * This code is released under the libpng license.
6 | * For conditions of distribution and use, see the disclaimer
7 | * and license in png.h
8 | *
9 | * Derived from pngcrush.h, Copyright 1998-2007, Glenn Randers-Pehrson
10 | */
11 |
12 | #ifndef MINRDPNGCONF_H
13 | #define MINRDPNGCONF_H
14 |
15 | /* To include pngusr.h set -DPNG_USER_CONFIG in CPPFLAGS */
16 |
17 | /* List options to turn off features of the build that do not
18 | * affect the API (so are not recorded in pnglibconf.h)
19 | */
20 |
21 | #define PNG_ALIGN_TYPE PNG_ALIGN_NONE
22 |
23 | #endif /* MINRDPNGCONF_H */
24 |
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/pngminim/encoder/README:
--------------------------------------------------------------------------------
1 | This demonstrates the use of PNG_USER_CONFIG and pngusr.h
2 |
3 | The makefile builds a minimal write-only encoder with embedded libpng
4 | and zlib.
5 |
6 | Specify the location of the zlib source (1.2.1 or later) as ZLIBSRC
7 | on the make command line.
8 |
9 | If you prefer to use the shared libraries, go to contrib/pngminus
10 | and build the pnm2png application there.
11 |
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/pngminim/encoder/pngusr.dfa:
--------------------------------------------------------------------------------
1 | # pngminim/encoder/pngusr.dfa
2 | #
3 | # Copyright (c) 2010-2013 Glenn Randers-Pehrson
4 | #
5 | # This code is released under the libpng license.
6 | # For conditions of distribution and use, see the disclaimer
7 | # and license in png.h
8 |
9 | # First all the build options off:
10 |
11 | everything = off
12 |
13 | # Switch on the write code - this makes a minimalist encoder
14 |
15 | option WRITE on
16 |
17 | # These 2 options are required if you need to read PBM (P1 or P4) files.
18 | option WRITE_INVERT on
19 | option WRITE_PACK on
20 |
21 | # You must choose fixed or floating point arithmetic:
22 | # option FLOATING_POINT on
23 |
24 | option FIXED_POINT on
25 |
26 | # You must chose the internal fixed point implementation or to
27 | # use the system floating point. The latter is considerably
28 | # smaller (by about 1kbyte on an x86 system):
29 | # option FLOATING_ARITHMETIC on
30 |
31 | option FLOATING_ARITHMETIC off
32 |
33 | # Your program will probably need other options. The example
34 | # program here, pnm2pngm, requires the following. Take a look
35 | # at pnglibconf.h to find out the full set of what has to be
36 | # enabled to make the following work.
37 |
38 | option SETJMP on
39 | option STDIO on
40 |
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/pngminim/encoder/pngusr.h:
--------------------------------------------------------------------------------
1 | /* minwrpngconf.h: headers to make a minimal png-write-only library
2 | *
3 | * Copyright (c) 2007, 2010-2013 Glenn Randers-Pehrson
4 | *
5 | * This code is released under the libpng license.
6 | * For conditions of distribution and use, see the disclaimer
7 | * and license in png.h
8 | *
9 | * Derived from pngcrush.h, Copyright 1998-2007, Glenn Randers-Pehrson
10 | */
11 |
12 | #ifndef MINWRPNGCONF_H
13 | #define MINWRPNGCONF_H
14 |
15 | /* To include pngusr.h set -DPNG_USER_CONFIG in CPPFLAGS */
16 |
17 | /* List options to turn off features of the build that do not
18 | * affect the API (so are not recorded in pnglibconf.h)
19 | */
20 |
21 | #define PNG_ALIGN_TYPE PNG_ALIGN_NONE
22 |
23 | #endif /* MINWRPNGCONF_H */
24 |
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/pngminim/preader/README:
--------------------------------------------------------------------------------
1 | This demonstrates the use of PNG_USER_CONFIG and pngusr.h
2 |
3 | The makefile builds a minimal read-only progressive decoder with
4 | embedded libpng, zlib and your system's X library.
5 |
6 | Specify the location of the zlib source (1.2.1 or later) as ZLIBSRC
7 | on the make command line.
8 |
9 | Edit makefile if required, to find your X library and include files,
10 | then
11 |
12 | make ZLIBSRC=directory
13 |
14 | If you prefer to use the shared libraries, go to contrib/gregbook
15 | and build the rpng2-x application there.
16 |
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/pngminim/preader/pngusr.dfa:
--------------------------------------------------------------------------------
1 | # pngminim/preader/pngusr.dfa
2 | #
3 | # Copyright (c) 2010-2013 Glenn Randers-Pehrson
4 | #
5 | # This code is released under the libpng license.
6 | # For conditions of distribution and use, see the disclaimer
7 | # and license in png.h
8 |
9 | # First all the build options off:
10 |
11 | everything = off
12 |
13 | # Just switch on the progressive read code
14 |
15 | option PROGRESSIVE_READ on
16 |
17 | # You may choose fixed or floating point APIs:
18 | # option FLOATING_POINT on
19 |
20 | option FIXED_POINT on
21 |
22 | # You must chose the internal fixed point implementation or to
23 | # use the system floating point. The latter is considerably
24 | # smaller (by about 1kbyte on an x86 system):
25 |
26 | option FLOATING_ARITHMETIC on
27 | # option FLOATING_ARITHMETIC off
28 |
29 | # Your program will probably need other options. The example
30 | # program here, rpng2-x, requires the following. Take a look
31 | # at pnglibconf.h to find out the full set of what has to be
32 | # enabled to make the following work.
33 |
34 | option SETJMP on
35 | option STDIO on
36 | option READ_bKGD on
37 | option READ_GAMMA on
38 | option READ_EXPAND on
39 | option READ_STRIP_16_TO_8 on
40 | option READ_GRAY_TO_RGB on
41 |
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/pngminim/preader/pngusr.h:
--------------------------------------------------------------------------------
1 | /* minrdpngconf.h: headers to make a minimal png-read-only library
2 | *
3 | * Copyright (c) 2009, 2010-2013 Glenn Randers-Pehrson
4 | *
5 | * This code is released under the libpng license.
6 | * For conditions of distribution and use, see the disclaimer
7 | * and license in png.h
8 | *
9 | * Derived from pngcrush.h, Copyright 1998-2007, Glenn Randers-Pehrson
10 | */
11 |
12 | #ifndef MINPRDPNGCONF_H
13 | #define MINPRDPNGCONF_H
14 |
15 | /* To include pngusr.h set -DPNG_USER_CONFIG in CPPFLAGS */
16 |
17 | /* List options to turn off features of the build that do not
18 | * affect the API (so are not recorded in pnglibconf.h)
19 | */
20 |
21 | #define PNG_ALIGN_TYPE PNG_ALIGN_NONE
22 |
23 | #endif /* MINPRDPNGCONF_H */
24 |
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/pngminus/CHANGES.txt:
--------------------------------------------------------------------------------
1 |
2 | pnm2png / png2pnm --- conversion from PBM/PGM/PPM-file to PNG-file
3 | copyright (C) 1999-2019 by Willem van Schaik
4 |
5 | version 1.0 - 1999.10.15 - First version.
6 | 1.1 - 2015.07.29 - Fixed leaks (Glenn Randers-Pehrson)
7 | 1.2 - 2017.04.22 - Add buffer-size check
8 | 1.3 - 2017.08.24 - Fix potential overflow in buffer-size check
9 | (Glenn Randers-Pehrson)
10 | 1.4 - 2017.08.28 - Add PNGMINUS_UNUSED (Christian Hesse)
11 | 1.5 - 2018.08.05 - Fix buffer overflow in tokenizer (Cosmin Truta)
12 | 1.6 - 2018.08.05 - Improve portability and fix style (Cosmin Truta)
13 | 1.7 - 2019.01.22 - Change license to MIT (Willem van Schaik)
14 |
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/pngminus/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | cmake_minimum_required(VERSION 3.1)
2 | cmake_policy(VERSION 3.1)
3 |
4 | project(PNGMINUS C)
5 |
6 | option(PNGMINUS_USE_STATIC_LIBRARIES "Use the static library builds" ON)
7 |
8 | # libpng
9 | add_subdirectory(../.. libpng)
10 | include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../..)
11 | include_directories(${CMAKE_CURRENT_BINARY_DIR}/libpng)
12 | if(PNGMINUS_USE_STATIC_LIBRARIES)
13 | set(PNGMINUS_PNG_LIBRARY png_static)
14 | else()
15 | set(PNGMINUS_PNG_LIBRARY png)
16 | endif()
17 |
18 | # png2pnm
19 | add_executable(png2pnm png2pnm.c)
20 | target_link_libraries(png2pnm ${PNGMINUS_PNG_LIBRARY})
21 |
22 | # pnm2png
23 | add_executable(pnm2png pnm2png.c)
24 | target_link_libraries(pnm2png ${PNGMINUS_PNG_LIBRARY})
25 |
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/pngminus/LICENSE.txt:
--------------------------------------------------------------------------------
1 |
2 | pnm2png / png2pnm --- conversion from PBM/PGM/PPM-file to PNG-file
3 |
4 | copyright (C) 1999-2019 by Willem van Schaik
5 |
6 | Permission is hereby granted, free of charge, to any person obtaining a copy
7 | of this software and associated documentation files (the "Software"), to deal
8 | in the Software without restriction, including without limitation the rights
9 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10 | copies of the Software, and to permit persons to whom the Software is
11 | furnished to do so, subject to the following conditions:
12 |
13 | The above copyright notice and this permission notice shall be included in all
14 | copies or substantial portions of the Software.
15 |
16 | The software is provided "as is", without warranty of any kind, express or
17 | implied, including but not limited to the warranties of merchantability,
18 | fitness for a particular purpose and noninfringement. In no event shall the
19 | authors or copyight holders be liable for any claim, damages or other
20 | liability, whether in an action of contract, tort or otherwise, arising from,
21 | out of or in connection with the software or the use or other dealings in the
22 | software.
23 |
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/pngminus/pngminus.bat:
--------------------------------------------------------------------------------
1 | make
2 | call png2pnm.bat
3 | call pnm2png.bat
4 |
5 |
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/pngminus/pngminus.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | make
3 | sh png2pnm.sh
4 | sh pnm2png.sh
5 |
6 |
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/pngsuite/bad_interlace_conversions.txt:
--------------------------------------------------------------------------------
1 | basn0g01.png
2 | basn0g02.png
3 | basn0g04.png
4 | basn3p01.png
5 | basn3p02.png
6 | basn3p04.png
7 | ftbbn0g01.png
8 | ftbbn0g02.png
9 | ftbbn0g04.png
10 |
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/pngsuite/basn0g01.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/pngsuite/basn0g01.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/pngsuite/basn0g02.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/pngsuite/basn0g02.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/pngsuite/basn0g04.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/pngsuite/basn0g04.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/pngsuite/basn0g08.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/pngsuite/basn0g08.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/pngsuite/basn0g16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/pngsuite/basn0g16.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/pngsuite/basn2c08.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/pngsuite/basn2c08.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/pngsuite/basn2c16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/pngsuite/basn2c16.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/pngsuite/basn3p01.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/pngsuite/basn3p01.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/pngsuite/basn3p02.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/pngsuite/basn3p02.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/pngsuite/basn3p04.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/pngsuite/basn3p04.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/pngsuite/basn3p08.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/pngsuite/basn3p08.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/pngsuite/basn4a08.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/pngsuite/basn4a08.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/pngsuite/basn4a16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/pngsuite/basn4a16.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/pngsuite/basn6a08.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/pngsuite/basn6a08.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/pngsuite/basn6a16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/pngsuite/basn6a16.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/pngsuite/ftbbn0g01.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/pngsuite/ftbbn0g01.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/pngsuite/ftbbn0g02.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/pngsuite/ftbbn0g02.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/pngsuite/ftbbn0g04.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/pngsuite/ftbbn0g04.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/pngsuite/ftbbn2c16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/pngsuite/ftbbn2c16.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/pngsuite/ftbbn3p08.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/pngsuite/ftbbn3p08.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/pngsuite/ftbgn2c16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/pngsuite/ftbgn2c16.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/pngsuite/ftbgn3p08.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/pngsuite/ftbgn3p08.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/pngsuite/ftbrn2c08.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/pngsuite/ftbrn2c08.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/pngsuite/ftbwn0g16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/pngsuite/ftbwn0g16.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/pngsuite/ftbwn3p08.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/pngsuite/ftbwn3p08.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/pngsuite/ftbyn3p08.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/pngsuite/ftbyn3p08.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/pngsuite/ftp0n0g08.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/pngsuite/ftp0n0g08.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/pngsuite/ftp0n2c08.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/pngsuite/ftp0n2c08.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/pngsuite/ftp0n3p08.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/pngsuite/ftp0n3p08.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/pngsuite/ftp1n3p08.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/pngsuite/ftp1n3p08.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/pngsuite/ibasn0g08.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/pngsuite/ibasn0g08.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/pngsuite/ibasn0g16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/pngsuite/ibasn0g16.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/pngsuite/ibasn2c08.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/pngsuite/ibasn2c08.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/pngsuite/ibasn2c16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/pngsuite/ibasn2c16.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/pngsuite/ibasn3p08.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/pngsuite/ibasn3p08.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/pngsuite/ibasn4a08.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/pngsuite/ibasn4a08.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/pngsuite/ibasn4a16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/pngsuite/ibasn4a16.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/pngsuite/ibasn6a08.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/pngsuite/ibasn6a08.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/pngsuite/ibasn6a16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/pngsuite/ibasn6a16.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/pngsuite/iftbbn2c16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/pngsuite/iftbbn2c16.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/pngsuite/iftbbn3p08.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/pngsuite/iftbbn3p08.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/pngsuite/iftbgn2c16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/pngsuite/iftbgn2c16.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/pngsuite/iftbgn3p08.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/pngsuite/iftbgn3p08.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/pngsuite/iftbrn2c08.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/pngsuite/iftbrn2c08.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/pngsuite/iftbwn0g16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/pngsuite/iftbwn0g16.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/pngsuite/iftbwn3p08.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/pngsuite/iftbwn3p08.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/pngsuite/iftbyn3p08.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/pngsuite/iftbyn3p08.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/pngsuite/iftp0n0g08.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/pngsuite/iftp0n0g08.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/pngsuite/iftp0n2c08.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/pngsuite/iftp0n2c08.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/pngsuite/iftp0n3p08.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/pngsuite/iftp0n3p08.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/pngsuite/iftp1n3p08.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/pngsuite/iftp1n3p08.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/pngsuite/interlaced/README:
--------------------------------------------------------------------------------
1 |
2 | These images fail the "pngimage-quick" and "pngimage-full" tests.
3 |
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/pngsuite/interlaced/ibasn0g01.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/pngsuite/interlaced/ibasn0g01.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/pngsuite/interlaced/ibasn0g02.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/pngsuite/interlaced/ibasn0g02.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/pngsuite/interlaced/ibasn0g04.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/pngsuite/interlaced/ibasn0g04.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/pngsuite/interlaced/ibasn3p01.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/pngsuite/interlaced/ibasn3p01.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/pngsuite/interlaced/ibasn3p02.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/pngsuite/interlaced/ibasn3p02.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/pngsuite/interlaced/ibasn3p04.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/pngsuite/interlaced/ibasn3p04.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/pngsuite/interlaced/iftbbn0g01.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/pngsuite/interlaced/iftbbn0g01.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/pngsuite/interlaced/iftbbn0g02.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/pngsuite/interlaced/iftbbn0g02.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/pngsuite/interlaced/iftbbn0g04.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/pngsuite/interlaced/iftbbn0g04.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/powerpc-vsx/linux_aux.c:
--------------------------------------------------------------------------------
1 | /* contrib/powerpc-vsx/linux_aux.c
2 | *
3 | * Copyright (c) 2017 Glenn Randers-Pehrson
4 | * Written by Vadim Barkov, 2017.
5 | *
6 | * This code is released under the libpng license.
7 | * For conditions of distribution and use, see the disclaimer
8 | * and license in png.h
9 | *
10 | * STATUS: TESTED
11 | * BUG REPORTS: png-mng-implement@sourceforge.net
12 | *
13 | * png_have_vsx implemented for Linux by using the auxiliary vector mechanism.
14 | *
15 | * This code is strict ANSI-C and is probably moderately portable; it does
16 | * however use and it assumes that /proc/cpuinfo is never localized.
17 | */
18 |
19 | #include "sys/auxv.h"
20 | #include "png.h"
21 |
22 | static int
23 | png_have_vsx(png_structp png_ptr)
24 | {
25 | unsigned long auxv = getauxval(AT_HWCAP);
26 |
27 | PNG_UNUSED(png_ptr)
28 |
29 | if(auxv & (PPC_FEATURE_HAS_ALTIVEC|PPC_FEATURE_HAS_VSX))
30 | return 1;
31 | else
32 | return 0;
33 | }
34 |
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/testpngs/crashers/bad_iCCP.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/testpngs/crashers/bad_iCCP.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/testpngs/crashers/badadler.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/testpngs/crashers/badadler.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/testpngs/crashers/badcrc.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/testpngs/crashers/badcrc.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/testpngs/crashers/empty_ancillary_chunks.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/testpngs/crashers/empty_ancillary_chunks.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/testpngs/crashers/huge_IDAT.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/testpngs/crashers/huge_IDAT.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/testpngs/crashers/huge_bKGD_chunk.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/testpngs/crashers/huge_bKGD_chunk.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/testpngs/crashers/huge_cHRM_chunk.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/testpngs/crashers/huge_cHRM_chunk.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/testpngs/crashers/huge_eXIf_chunk.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/testpngs/crashers/huge_eXIf_chunk.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/testpngs/crashers/huge_gAMA_chunk.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/testpngs/crashers/huge_gAMA_chunk.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/testpngs/crashers/huge_hIST_chunk.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/testpngs/crashers/huge_hIST_chunk.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/testpngs/crashers/huge_iCCP_chunk.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/testpngs/crashers/huge_iCCP_chunk.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/testpngs/crashers/huge_iTXt_chunk.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/testpngs/crashers/huge_iTXt_chunk.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/testpngs/crashers/huge_juNK_unsafe_to_copy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/testpngs/crashers/huge_juNK_unsafe_to_copy.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/testpngs/crashers/huge_juNk_safe_to_copy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/testpngs/crashers/huge_juNk_safe_to_copy.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/testpngs/crashers/huge_pCAL_chunk.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/testpngs/crashers/huge_pCAL_chunk.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/testpngs/crashers/huge_pHYs_chunk.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/testpngs/crashers/huge_pHYs_chunk.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/testpngs/crashers/huge_sCAL_chunk.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/testpngs/crashers/huge_sCAL_chunk.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/testpngs/crashers/huge_sPLT_chunk.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/testpngs/crashers/huge_sPLT_chunk.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/testpngs/crashers/huge_sRGB_chunk.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/testpngs/crashers/huge_sRGB_chunk.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/testpngs/crashers/huge_sTER_chunk.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/testpngs/crashers/huge_sTER_chunk.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/testpngs/crashers/huge_tEXt_chunk.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/testpngs/crashers/huge_tEXt_chunk.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/testpngs/crashers/huge_tIME_chunk.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/testpngs/crashers/huge_tIME_chunk.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/testpngs/crashers/huge_zTXt_chunk.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/testpngs/crashers/huge_zTXt_chunk.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/testpngs/gray-1-1.8-tRNS.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/testpngs/gray-1-1.8-tRNS.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/testpngs/gray-1-1.8.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/testpngs/gray-1-1.8.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/testpngs/gray-1-linear-tRNS.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/testpngs/gray-1-linear-tRNS.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/testpngs/gray-1-linear.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/testpngs/gray-1-linear.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/testpngs/gray-1-sRGB-tRNS.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/testpngs/gray-1-sRGB-tRNS.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/testpngs/gray-1-sRGB.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/testpngs/gray-1-sRGB.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/testpngs/gray-1-tRNS.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/testpngs/gray-1-tRNS.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/testpngs/gray-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/testpngs/gray-1.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/testpngs/gray-16-1.8-tRNS.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/testpngs/gray-16-1.8-tRNS.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/testpngs/gray-16-1.8.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/testpngs/gray-16-1.8.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/testpngs/gray-16-linear-tRNS.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/testpngs/gray-16-linear-tRNS.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/testpngs/gray-16-linear.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/testpngs/gray-16-linear.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/testpngs/gray-16-sRGB-tRNS.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/testpngs/gray-16-sRGB-tRNS.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/testpngs/gray-16-sRGB.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/testpngs/gray-16-sRGB.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/testpngs/gray-16-tRNS.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/testpngs/gray-16-tRNS.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/testpngs/gray-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/testpngs/gray-16.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/testpngs/gray-2-1.8-tRNS.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/testpngs/gray-2-1.8-tRNS.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/testpngs/gray-2-1.8.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/testpngs/gray-2-1.8.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/testpngs/gray-2-linear-tRNS.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/testpngs/gray-2-linear-tRNS.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/testpngs/gray-2-linear.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/testpngs/gray-2-linear.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/testpngs/gray-2-sRGB-tRNS.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/testpngs/gray-2-sRGB-tRNS.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/testpngs/gray-2-sRGB.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/testpngs/gray-2-sRGB.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/testpngs/gray-2-tRNS.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/testpngs/gray-2-tRNS.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/testpngs/gray-2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/testpngs/gray-2.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/testpngs/gray-4-1.8-tRNS.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/testpngs/gray-4-1.8-tRNS.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/testpngs/gray-4-1.8.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/testpngs/gray-4-1.8.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/testpngs/gray-4-linear-tRNS.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/testpngs/gray-4-linear-tRNS.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/testpngs/gray-4-linear.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/testpngs/gray-4-linear.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/testpngs/gray-4-sRGB-tRNS.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/testpngs/gray-4-sRGB-tRNS.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/testpngs/gray-4-sRGB.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/testpngs/gray-4-sRGB.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/testpngs/gray-4-tRNS.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/testpngs/gray-4-tRNS.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/testpngs/gray-4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/testpngs/gray-4.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/testpngs/gray-8-1.8-tRNS.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/testpngs/gray-8-1.8-tRNS.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/testpngs/gray-8-1.8.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/testpngs/gray-8-1.8.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/testpngs/gray-8-linear-tRNS.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/testpngs/gray-8-linear-tRNS.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/testpngs/gray-8-linear.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/testpngs/gray-8-linear.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/testpngs/gray-8-sRGB-tRNS.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/testpngs/gray-8-sRGB-tRNS.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/testpngs/gray-8-sRGB.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/testpngs/gray-8-sRGB.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/testpngs/gray-8-tRNS.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/testpngs/gray-8-tRNS.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/testpngs/gray-8.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/testpngs/gray-8.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/testpngs/gray-alpha-16-1.8.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/testpngs/gray-alpha-16-1.8.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/testpngs/gray-alpha-16-linear.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/testpngs/gray-alpha-16-linear.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/testpngs/gray-alpha-16-sRGB.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/testpngs/gray-alpha-16-sRGB.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/testpngs/gray-alpha-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/testpngs/gray-alpha-16.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/testpngs/gray-alpha-8-1.8.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/testpngs/gray-alpha-8-1.8.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/testpngs/gray-alpha-8-linear.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/testpngs/gray-alpha-8-linear.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/testpngs/gray-alpha-8-sRGB.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/testpngs/gray-alpha-8-sRGB.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/testpngs/gray-alpha-8.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/testpngs/gray-alpha-8.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/testpngs/palette-1-1.8-tRNS.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/testpngs/palette-1-1.8-tRNS.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/testpngs/palette-1-1.8.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/testpngs/palette-1-1.8.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/testpngs/palette-1-linear-tRNS.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/testpngs/palette-1-linear-tRNS.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/testpngs/palette-1-linear.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/testpngs/palette-1-linear.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/testpngs/palette-1-sRGB-tRNS.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/testpngs/palette-1-sRGB-tRNS.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/testpngs/palette-1-sRGB.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/testpngs/palette-1-sRGB.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/testpngs/palette-1-tRNS.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/testpngs/palette-1-tRNS.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/testpngs/palette-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/testpngs/palette-1.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/testpngs/palette-2-1.8-tRNS.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/testpngs/palette-2-1.8-tRNS.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/testpngs/palette-2-1.8.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/testpngs/palette-2-1.8.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/testpngs/palette-2-linear-tRNS.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/testpngs/palette-2-linear-tRNS.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/testpngs/palette-2-linear.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/testpngs/palette-2-linear.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/testpngs/palette-2-sRGB-tRNS.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/testpngs/palette-2-sRGB-tRNS.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/testpngs/palette-2-sRGB.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/testpngs/palette-2-sRGB.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/testpngs/palette-2-tRNS.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/testpngs/palette-2-tRNS.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/testpngs/palette-2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/testpngs/palette-2.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/testpngs/palette-4-1.8-tRNS.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/testpngs/palette-4-1.8-tRNS.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/testpngs/palette-4-1.8.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/testpngs/palette-4-1.8.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/testpngs/palette-4-linear-tRNS.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/testpngs/palette-4-linear-tRNS.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/testpngs/palette-4-linear.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/testpngs/palette-4-linear.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/testpngs/palette-4-sRGB-tRNS.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/testpngs/palette-4-sRGB-tRNS.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/testpngs/palette-4-sRGB.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/testpngs/palette-4-sRGB.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/testpngs/palette-4-tRNS.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/testpngs/palette-4-tRNS.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/testpngs/palette-4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/testpngs/palette-4.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/testpngs/palette-8-1.8-tRNS.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/testpngs/palette-8-1.8-tRNS.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/testpngs/palette-8-1.8.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/testpngs/palette-8-1.8.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/testpngs/palette-8-linear-tRNS.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/testpngs/palette-8-linear-tRNS.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/testpngs/palette-8-linear.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/testpngs/palette-8-linear.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/testpngs/palette-8-sRGB-tRNS.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/testpngs/palette-8-sRGB-tRNS.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/testpngs/palette-8-sRGB.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/testpngs/palette-8-sRGB.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/testpngs/palette-8-tRNS.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/testpngs/palette-8-tRNS.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/testpngs/palette-8.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/testpngs/palette-8.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/testpngs/rgb-16-1.8-tRNS.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/testpngs/rgb-16-1.8-tRNS.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/testpngs/rgb-16-1.8.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/testpngs/rgb-16-1.8.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/testpngs/rgb-16-linear-tRNS.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/testpngs/rgb-16-linear-tRNS.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/testpngs/rgb-16-linear.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/testpngs/rgb-16-linear.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/testpngs/rgb-16-sRGB-tRNS.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/testpngs/rgb-16-sRGB-tRNS.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/testpngs/rgb-16-sRGB.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/testpngs/rgb-16-sRGB.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/testpngs/rgb-16-tRNS.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/testpngs/rgb-16-tRNS.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/testpngs/rgb-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/testpngs/rgb-16.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/testpngs/rgb-8-1.8-tRNS.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/testpngs/rgb-8-1.8-tRNS.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/testpngs/rgb-8-1.8.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/testpngs/rgb-8-1.8.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/testpngs/rgb-8-linear-tRNS.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/testpngs/rgb-8-linear-tRNS.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/testpngs/rgb-8-linear.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/testpngs/rgb-8-linear.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/testpngs/rgb-8-sRGB-tRNS.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/testpngs/rgb-8-sRGB-tRNS.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/testpngs/rgb-8-sRGB.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/testpngs/rgb-8-sRGB.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/testpngs/rgb-8-tRNS.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/testpngs/rgb-8-tRNS.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/testpngs/rgb-8.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/testpngs/rgb-8.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/testpngs/rgb-alpha-16-1.8.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/testpngs/rgb-alpha-16-1.8.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/testpngs/rgb-alpha-16-linear.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/testpngs/rgb-alpha-16-linear.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/testpngs/rgb-alpha-16-sRGB.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/testpngs/rgb-alpha-16-sRGB.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/testpngs/rgb-alpha-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/testpngs/rgb-alpha-16.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/testpngs/rgb-alpha-8-1.8.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/testpngs/rgb-alpha-8-1.8.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/testpngs/rgb-alpha-8-linear.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/testpngs/rgb-alpha-8-linear.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/testpngs/rgb-alpha-8-sRGB.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/testpngs/rgb-alpha-8-sRGB.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/testpngs/rgb-alpha-8.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/testpngs/rgb-alpha-8.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/tools/README.txt:
--------------------------------------------------------------------------------
1 | This directory (contrib/tools) contains tools used by the authors of libpng.
2 |
3 | Code and data placed in this directory is not required to build libpng,
4 | however the code in this directory has been used to generate data or code in
5 | the body of the libpng source. The source code identifies where this has
6 | been done. Code in this directory may not compile on all operating systems
7 | that libpng supports.
8 |
9 | NO COPYRIGHT RIGHTS ARE CLAIMED TO ANY OF THE FILES IN THIS DIRECTORY.
10 |
11 | To the extent possible under law, the authors have waived all copyright and
12 | related or neighboring rights to this work. This work is published from:
13 | United States.
14 |
15 | The files may be used freely in any way.
16 |
17 | The source code and comments in this directory are the original work of the
18 | people named below. No other person or organization has made contributions to
19 | the work in this directory.
20 |
21 | ORIGINAL AUTHORS
22 | The following people have contributed to the code in this directory. None
23 | of the people below claim any rights with regard to the contents of this
24 | directory.
25 |
26 | John Bowler
27 | Glenn Randers-Pehrson
28 |
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/visupng/PngFile.h:
--------------------------------------------------------------------------------
1 | /*------------------------------------------*/
2 | /* PNGFILE.H -- Header File for pngfile.c*/
3 | /*------------------------------------------*/
4 |
5 | /* Copyright 2000, Willem van Schaik.*/
6 |
7 | /* This code is released under the libpng license.*/
8 | /* For conditions of distribution and use, see the disclaimer*/
9 | /* and license in png.h*/
10 |
11 | #include
12 | #include
13 | #include
14 | #include
15 |
16 | void PngFileInitialize (HWND hwnd) ;
17 | BOOL PngFileOpenDlg (HWND hwnd, PTSTR pstrFileName, PTSTR pstrTitleName) ;
18 | BOOL PngFileSaveDlg (HWND hwnd, PTSTR pstrFileName, PTSTR pstrTitleName) ;
19 |
20 | BOOL PngLoadImage (PTSTR pstrFileName, png_byte **ppbImageData,
21 | int *piWidth, int *piHeight, int *piChannels, png_color *pBkgColor);
22 | BOOL PngSaveImage (PTSTR pstrFileName, png_byte *pDiData,
23 | int iWidth, int iHeight, png_color BkgColor);
24 |
25 | #ifndef PNG_STDIO_SUPPORTED
26 | static void png_read_data(png_structp png_ptr, png_bytep data, size_t length);
27 | static void png_write_data(png_structp png_ptr, png_bytep data, size_t length);
28 | static void png_flush(png_structp png_ptr);
29 | #endif
30 |
31 |
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/visupng/VisualPng.dsw:
--------------------------------------------------------------------------------
1 | Microsoft Developer Studio Workspace File, Format Version 6.00
2 | # WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
3 |
4 | ###############################################################################
5 |
6 | Project: "VisualPng"=.\VisualPng.dsp - Package Owner=<4>
7 |
8 | Package=<5>
9 | {{{
10 | }}}
11 |
12 | Package=<4>
13 | {{{
14 | }}}
15 |
16 | ###############################################################################
17 |
18 | Global:
19 |
20 | Package=<5>
21 | {{{
22 | }}}
23 |
24 | Package=<3>
25 | {{{
26 | }}}
27 |
28 | ###############################################################################
29 |
30 |
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/visupng/VisualPng.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/visupng/VisualPng.ico
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/visupng/VisualPng.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/contrib/visupng/VisualPng.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/contrib/visupng/resource.h:
--------------------------------------------------------------------------------
1 | //{{NO_DEPENDENCIES}}
2 | // Microsoft Developer Studio generated include file.
3 | // Used by VisualPng.rc
4 | //
5 | #define IDM_FILE_OPEN 40001
6 | #define IDM_FILE_SAVE 40002
7 | #define IDM_FILE_NEXT 40003
8 | #define IDM_FILE_PREVIOUS 40004
9 | #define IDM_FILE_EXIT 40005
10 | #define IDM_OPTIONS_BACKGROUND 40006
11 | #define IDM_OPTIONS_STRETCH 40007
12 | #define IDM_HELP_ABOUT 40008
13 |
14 | // Next default values for new objects
15 | //
16 | #ifdef APSTUDIO_INVOKED
17 | #ifndef APSTUDIO_READONLY_SYMBOLS
18 | #define _APS_NEXT_RESOURCE_VALUE 113
19 | #define _APS_NEXT_COMMAND_VALUE 40009
20 | #define _APS_NEXT_CONTROL_VALUE 1001
21 | #define _APS_NEXT_SYMED_VALUE 101
22 | #endif
23 | #endif
24 |
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/libpng.pc.in:
--------------------------------------------------------------------------------
1 | prefix=@prefix@
2 | exec_prefix=@exec_prefix@
3 | libdir=@libdir@
4 | includedir=@includedir@/libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@
5 |
6 | Name: libpng
7 | Description: Loads and saves PNG files
8 | Version: @PNGLIB_VERSION@
9 | Requires.private: zlib
10 | Libs: -L${libdir} -lpng@PNGLIB_MAJOR@@PNGLIB_MINOR@
11 | Libs.private: @LIBS@
12 | Cflags: -I${includedir}
13 |
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/libpngpf.3:
--------------------------------------------------------------------------------
1 | .TH LIBPNGPF 3 "November 20, 2022"
2 | .SH NAME
3 | libpng \- Portable Network Graphics (PNG) Reference Library 1.6.39
4 | (private functions)
5 |
6 | .SH SYNOPSIS
7 | \fB#include \fI"pngpriv.h"
8 |
9 | \fBAs of libpng version \fP\fI1.5.1\fP\fB, this section is no longer
10 | \fP\fImaintained\fP\fB, now that the private function prototypes are hidden in
11 | \fP\fIpngpriv.h\fP\fB and not accessible to applications. Look in
12 | \fP\fIpngpriv.h\fP\fB for the prototypes and a short description of each
13 | function.
14 |
15 | .SH DESCRIPTION
16 | The functions previously listed here are used privately by libpng and are not
17 | available for use by applications. They are not "exported" to applications
18 | using shared libraries.
19 |
20 | .SH "SEE ALSO"
21 | .BR "png"(5), " libpng"(3), " zlib"(3), " deflate"(5), " " and " zlib"(5)
22 |
23 | .SH AUTHORS
24 | Cosmin Truta, Glenn Randers-Pehrson
25 |
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/pngbar.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/pngbar.jpg
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/pngbar.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/pngbar.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/pngnow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/pngnow.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/pngtest.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libpng/src/main/cpp/source/pngtest.png
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/pngusr.dfa:
--------------------------------------------------------------------------------
1 | # pngusr.dfa
2 | #
3 | # Build time configuration of libpng
4 | #
5 | # Enter build configuration options in this file
6 | #
7 | # Security settings: by default these limits are unset, you can change them
8 | # here by entering the appropriate values as #defines preceded by '@' (to cause,
9 | # them to be passed through to the build of pnglibconf.h), for example:
10 | #
11 | # @# define PNG_USER_WIDTH_MAX 65535
12 | # @# define PNG_USER_HEIGHT_MAX 65535
13 | # @# define PNG_USER_CHUNK_CACHE_MAX 256
14 | # @# define PNG_USER_CHUNK_MALLOC_MAX 640000
15 |
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/projects/visualc71/PRJ0041.mak:
--------------------------------------------------------------------------------
1 | # Prevent "Cannot find missing dependency..." warnings while compiling
2 | # pngwin.rc (PRJ0041).
3 |
4 | all: $(IntDir)\alloc.h \
5 | $(IntDir)\fp.h \
6 | $(IntDir)\m68881.h \
7 | $(IntDir)\mem.h \
8 | $(IntDir)\pngusr.h \
9 | $(IntDir)\strings.h \
10 | $(IntDir)\unistd.h \
11 | $(IntDir)\unixio.h
12 |
13 | $(IntDir)\alloc.h \
14 | $(IntDir)\fp.h \
15 | $(IntDir)\m68881.h \
16 | $(IntDir)\mem.h \
17 | $(IntDir)\pngusr.h \
18 | $(IntDir)\strings.h \
19 | $(IntDir)\unistd.h \
20 | $(IntDir)\unixio.h:
21 | @!echo.>$@
22 |
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/scripts/SCOPTIONS.ppc:
--------------------------------------------------------------------------------
1 | OPTIMIZE
2 | OPTPEEP
3 | OPTTIME
4 | OPTSCHED
5 | AUTOREGISTER
6 | PARMS=REGISTERS
7 | INCLUDEDIR=hlp:ppc/include
8 |
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/scripts/intprefix.c:
--------------------------------------------------------------------------------
1 |
2 | /* intprefix.c - generate an unprefixed internal symbol list
3 | *
4 | * Copyright (c) 2013-2014 Glenn Randers-Pehrson
5 | *
6 | * This code is released under the libpng license.
7 | * For conditions of distribution and use, see the disclaimer
8 | * and license in png.h
9 | */
10 |
11 | #define PNG_INTERNAL_DATA(type, name, array)\
12 | PNG_DFN "@" name "@"
13 |
14 | #define PNG_INTERNAL_FUNCTION(type, name, args, attributes)\
15 | PNG_DFN "@" name "@"
16 |
17 | #define PNG_INTERNAL_CALLBACK(type, name, args, attributes)\
18 | PNG_DFN "@" name "@"
19 |
20 | #define PNGPREFIX_H /* self generation */
21 | #include "../pngpriv.h"
22 |
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/scripts/libpng-config-head.in:
--------------------------------------------------------------------------------
1 | #! /bin/sh
2 |
3 | # libpng-config
4 | # provides configuration info for libpng.
5 |
6 | # Copyright (C) 2002 Glenn Randers-Pehrson
7 |
8 | # This code is released under the libpng license.
9 | # For conditions of distribution and use, see the disclaimer
10 | # and license in png.h
11 |
12 | # Modeled after libxml-config.
13 |
14 | version=1.6.39
15 | prefix=""
16 | libdir=""
17 | libs=""
18 | I_opts=""
19 | L_opts=""
20 | R_opts=""
21 | cppflags=""
22 | ccopts=""
23 | ldopts=""
24 |
25 |
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/scripts/libpng.pc.in:
--------------------------------------------------------------------------------
1 | prefix=@prefix@
2 | exec_prefix=@exec_prefix@
3 | libdir=@libdir@
4 | includedir=@includedir@/libpng16
5 |
6 | Name: libpng
7 | Description: Loads and saves PNG files
8 | Version: 1.6.39
9 | Libs: -L${libdir} -lpng16
10 | Cflags: -I${includedir}
11 |
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/scripts/ltversion.m4:
--------------------------------------------------------------------------------
1 | # ltversion.m4 -- version numbers -*- Autoconf -*-
2 | #
3 | # Copyright (C) 2004, 2011-2019, 2021-2022 Free Software Foundation,
4 | # Inc.
5 | # Written by Scott James Remnant, 2004
6 | #
7 | # This file is free software; the Free Software Foundation gives
8 | # unlimited permission to copy and/or distribute it, with or without
9 | # modifications, as long as this notice is preserved.
10 |
11 | # @configure_input@
12 |
13 | # serial 4245 ltversion.m4
14 | # This file is part of GNU Libtool
15 |
16 | m4_define([LT_PACKAGE_VERSION], [2.4.7])
17 | m4_define([LT_PACKAGE_REVISION], [2.4.7])
18 |
19 | AC_DEFUN([LTVERSION_VERSION],
20 | [macro_version='2.4.7'
21 | macro_revision='2.4.7'
22 | _LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?])
23 | _LT_DECL(, macro_revision, 0)
24 | ])
25 |
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/scripts/macro.lst:
--------------------------------------------------------------------------------
1 | get_uint_32(buf)
2 | get_uint_16(buf)
3 | get_int_32(buf)
4 |
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/scripts/prefix.c:
--------------------------------------------------------------------------------
1 |
2 | /* prefix.c - generate an unprefixed symbol list
3 | *
4 | * Copyright (c) 2013-2014 Glenn Randers-Pehrson
5 | *
6 | * This code is released under the libpng license.
7 | * For conditions of distribution and use, see the disclaimer
8 | * and license in png.h
9 | */
10 |
11 | #define PNG_EXPORTA(ordinal, type, name, args, attributes)\
12 | PNG_DFN "@" name "@"
13 |
14 | /* The configuration information *before* the additional of symbol renames,
15 | * the list is the C name list; no symbol prefix.
16 | */
17 | #include "pnglibconf.out"
18 |
19 | PNG_DFN_START_SORT 1
20 |
21 | #include "../png.h"
22 |
23 | PNG_DFN_END_SORT
24 |
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/scripts/smakefile.ppc:
--------------------------------------------------------------------------------
1 | # Amiga powerUP (TM) Makefile
2 | # makefile for libpng and SAS C V6.58/7.00 PPC compiler
3 | # Copyright (C) 1998 by Andreas R. Kleinert
4 | #
5 | # This code is released under the libpng license.
6 | # For conditions of distribution and use, see the disclaimer
7 | # and license in png.h
8 |
9 | CC = scppc
10 | CFLAGS = NOSTKCHK NOSINT OPTIMIZE OPTGO OPTPEEP OPTINLOCAL OPTINL IDIR /zlib \
11 | OPTLOOP OPTRDEP=8 OPTDEP=8 OPTCOMP=8
12 | LIBNAME = libpng.a
13 | AR = ppc-amigaos-ar
14 | AR_FLAGS = cr
15 | RANLIB = ppc-amigaos-ranlib
16 | LDFLAGS = -r -o
17 | LDLIBS = ../zlib/libzip.a LIB:scppc.a
18 | LN = ppc-amigaos-ld
19 | RM = delete quiet
20 | MKDIR = makedir
21 |
22 | OBJS = png.o pngerror.o pngget.o pngmem.o pngpread.o \
23 | pngread.o pngrio.o pngrtran.o pngrutil.o pngset.o \
24 | pngtrans.o pngwio.o pngwrite.o pngwtran.o pngwutil.o
25 |
26 | all: $(LIBNAME) pngtest
27 |
28 | $(LIBNAME): $(OBJS)
29 | $(AR) $(AR_FLAGS) $@ $(OBJS)
30 | $(RANLIB) $@
31 |
32 | pngtest: pngtest.o $(LIBNAME)
33 | $(LN) $(LDFLAGS) pngtest LIB:c_ppc.o pngtest.o $(LIBNAME) $(LDLIBS) \
34 | LIB:end.o
35 |
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/scripts/sym.c:
--------------------------------------------------------------------------------
1 |
2 | /* sym.c - define format of libpng.sym
3 | *
4 | * Copyright (c) 2011-2014 Glenn Randers-Pehrson
5 | *
6 | * This code is released under the libpng license.
7 | * For conditions of distribution and use, see the disclaimer
8 | * and license in png.h
9 | */
10 |
11 | #define PNG_EXPORTA(ordinal, type, name, args, attributes)\
12 | PNG_DFN "@" SYMBOL_PREFIX "@@" name "@"
13 |
14 | #include "../png.h"
15 |
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/scripts/test.cmake.in:
--------------------------------------------------------------------------------
1 | # test.cmake.in
2 |
3 | # Copyright (C) 2016 Glenn Randers-Pehrson
4 | # Written by Roger Leigh, 2016
5 |
6 | # This code is released under the libpng license.
7 | # For conditions of distribution and use, see the disclaimer
8 | # and license in png.h
9 |
10 | set(TEST_OPTIONS "@TEST_OPTIONS@")
11 | set(TEST_FILES "@TEST_FILES@")
12 |
13 | foreach(file ${TEST_FILES})
14 | file(TO_NATIVE_PATH "${file}" native_file)
15 | list(APPEND NATIVE_TEST_FILES "${native_file}")
16 | endforeach()
17 |
18 | # Add the directory containing libpng to the PATH (Windows only)
19 | if(WIN32)
20 | get_filename_component(LIBPNG_DIR "${LIBPNG}" PATH)
21 | file(TO_NATIVE_PATH "${LIBPNG_DIR}" LIBPNG_DIR)
22 | set(ENV{PATH} "${LIBPNG_DIR};$ENV{PATH}")
23 | endif()
24 |
25 | execute_process(COMMAND "${CMAKE_COMMAND}" -E echo "Running ${TEST_COMMAND}" ${TEST_OPTIONS} ${NATIVE_TEST_FILES})
26 |
27 | execute_process(COMMAND "${TEST_COMMAND}" ${TEST_OPTIONS} ${NATIVE_TEST_FILES}
28 | RESULT_VARIABLE TEST_STATUS)
29 | if(TEST_STATUS)
30 | message(FATAL_ERROR "Returned failed status ${TEST_STATUS}!")
31 | endif()
32 |
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/scripts/vers.c:
--------------------------------------------------------------------------------
1 |
2 | /* vers.c - define format of libpng.vers
3 | *
4 | * Copyright (c) 2011-2014 Glenn Randers-Pehrson
5 | *
6 | * This code is released under the libpng license.
7 | * For conditions of distribution and use, see the disclaimer
8 | * and license in png.h
9 | */
10 |
11 | #define PNG_EXPORTA(ordinal, type, name, args, attributes)\
12 | PNG_DFN " @" SYMBOL_PREFIX "@@" name "@;"
13 |
14 | PNG_DFN "@" PNGLIB_LIBNAME "@ {global:"
15 |
16 | #include "../png.h"
17 |
18 | PNG_DFN "local: *; };"
19 |
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/tests/pngimage-full:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | exec ./pngimage --exhaustive --list-combos --log "${srcdir}/contrib/pngsuite/"*.png
3 |
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/tests/pngimage-quick:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | exec ./pngimage --list-combos --log "${srcdir}/contrib/pngsuite/"*.png
3 |
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/tests/pngstest-1.8:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | exec "${srcdir}/tests/pngstest" 1.8 none
3 |
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/tests/pngstest-1.8-alpha:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | exec "${srcdir}/tests/pngstest" 1.8 alpha
3 |
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/tests/pngstest-linear:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | exec "${srcdir}/tests/pngstest" linear none
3 |
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/tests/pngstest-linear-alpha:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | exec "${srcdir}/tests/pngstest" linear alpha
3 |
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/tests/pngstest-none:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | exec "${srcdir}/tests/pngstest" none none
3 |
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/tests/pngstest-none-alpha:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | exec "${srcdir}/tests/pngstest" none alpha
3 |
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/tests/pngstest-sRGB:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | exec "${srcdir}/tests/pngstest" sRGB none
3 |
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/tests/pngstest-sRGB-alpha:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | exec "${srcdir}/tests/pngstest" sRGB alpha
3 |
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/tests/pngtest-all:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | # normal execution
4 |
5 | ./pngtest --strict ${srcdir}/pngtest.png
6 |
7 | # various crashers
8 | # using --relaxed because some come from fuzzers that don't maintain CRC's
9 |
10 | ./pngtest --relaxed ${srcdir}/contrib/testpngs/crashers/badcrc.png
11 | ./pngtest --relaxed ${srcdir}/contrib/testpngs/crashers/badadler.png
12 | ./pngtest --xfail ${srcdir}/contrib/testpngs/crashers/bad_iCCP.png
13 | ./pngtest --xfail ${srcdir}/contrib/testpngs/crashers/empty_ancillary_chunks.png
14 | ./pngtest --xfail ${srcdir}/contrib/testpngs/crashers/huge_*_chunk.png \
15 | ${srcdir}/contrib/testpngs/crashers/huge_*safe_to_copy.png
16 | ./pngtest --xfail ${srcdir}/contrib/testpngs/crashers/huge_IDAT.png
17 |
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/tests/pngunknown-IDAT:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | exec ./pngunknown --strict default=discard IDAT=save "${srcdir}/pngtest.png"
3 |
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/tests/pngunknown-discard:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | exec ./pngunknown --strict default=discard "${srcdir}/pngtest.png"
3 |
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/tests/pngunknown-if-safe:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | exec ./pngunknown --strict default=if-safe "${srcdir}/pngtest.png"
3 |
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/tests/pngunknown-sAPI:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | exec ./pngunknown --strict bKGD=save cHRM=save gAMA=save all=discard iCCP=save sBIT=save sRGB=save eXIf=save "${srcdir}/pngtest.png"
3 |
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/tests/pngunknown-sTER:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | exec ./pngunknown --strict sTER=if-safe "${srcdir}/pngtest.png"
3 |
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/tests/pngunknown-save:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | exec ./pngunknown --strict default=save "${srcdir}/pngtest.png"
3 |
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/tests/pngunknown-vpAg:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | exec ./pngunknown --strict vpAg=if-safe "${srcdir}/pngtest.png"
3 |
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/tests/pngvalid-gamma-16-to-8:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | exec ./pngvalid --strict --gamma-16-to-8
3 |
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/tests/pngvalid-gamma-alpha-mode:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | exec ./pngvalid --strict --gamma-alpha-mode
3 |
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/tests/pngvalid-gamma-background:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | exec ./pngvalid --strict --gamma-background
3 |
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/tests/pngvalid-gamma-expand16-alpha-mode:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | exec ./pngvalid --strict --gamma-alpha-mode --expand16
3 |
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/tests/pngvalid-gamma-expand16-background:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | exec ./pngvalid --strict --gamma-background --expand16
3 |
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/tests/pngvalid-gamma-expand16-transform:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | exec ./pngvalid --strict --gamma-transform --expand16
3 |
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/tests/pngvalid-gamma-sbit:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | exec ./pngvalid --strict --gamma-sbit
3 |
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/tests/pngvalid-gamma-threshold:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | exec ./pngvalid --strict --gamma-threshold
3 |
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/tests/pngvalid-gamma-transform:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | exec ./pngvalid --strict --gamma-transform
3 |
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/tests/pngvalid-progressive-interlace-standard:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | exec ./pngvalid --strict --standard --progressive-read --interlace
3 |
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/tests/pngvalid-progressive-size:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | exec ./pngvalid --strict --size --progressive-read
3 |
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/tests/pngvalid-progressive-standard:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | exec ./pngvalid --strict --standard --progressive-read
3 |
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/tests/pngvalid-standard:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | exec ./pngvalid --strict --standard
3 |
--------------------------------------------------------------------------------
/libpng/src/main/cpp/source/tests/pngvalid-transform:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | exec ./pngvalid --strict --transform
3 |
--------------------------------------------------------------------------------
/libpng/src/test/java/com/xyq/libpng/ExampleUnitTest.kt:
--------------------------------------------------------------------------------
1 | package com.xyq.libpng
2 |
3 | import org.junit.Test
4 |
5 | import org.junit.Assert.*
6 |
7 | /**
8 | * Example local unit test, which will execute on the development machine (host).
9 | *
10 | * See [testing documentation](http://d.android.com/tools/testing).
11 | */
12 | class ExampleUnitTest {
13 | @Test
14 | fun addition_isCorrect() {
15 | assertEquals(4, 2 + 2)
16 | }
17 | }
--------------------------------------------------------------------------------
/librender/.gitignore:
--------------------------------------------------------------------------------
1 | /build
--------------------------------------------------------------------------------
/librender/build.gradle:
--------------------------------------------------------------------------------
1 | plugins {
2 | id 'com.android.library'
3 | id 'org.jetbrains.kotlin.android'
4 | }
5 |
6 | android {
7 | namespace 'com.xyq.librender'
8 | compileSdk 33
9 |
10 | defaultConfig {
11 | minSdk 26
12 | targetSdk 33
13 |
14 | testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
15 | consumerProguardFiles "consumer-rules.pro"
16 | }
17 |
18 | buildTypes {
19 | release {
20 | minifyEnabled false
21 | proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
22 | }
23 | }
24 | compileOptions {
25 | sourceCompatibility JavaVersion.VERSION_1_8
26 | targetCompatibility JavaVersion.VERSION_1_8
27 | }
28 | kotlinOptions {
29 | jvmTarget = '1.8'
30 | }
31 | }
32 |
33 | dependencies {
34 | implementation project(path: ':libutils')
35 |
36 | implementation libs.coreKtx
37 | implementation libs.appcompat
38 | implementation libs.material
39 | implementation libs.constraintlayout
40 |
41 | testImplementation libs.junit
42 | androidTestImplementation libs.androidxJunit
43 | androidTestImplementation libs.androidxEspressoCore
44 | }
--------------------------------------------------------------------------------
/librender/consumer-rules.pro:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/librender/consumer-rules.pro
--------------------------------------------------------------------------------
/librender/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
--------------------------------------------------------------------------------
/librender/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/librender/src/main/assets/yuv_test_i420.yuv:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/librender/src/main/assets/yuv_test_i420.yuv
--------------------------------------------------------------------------------
/librender/src/main/assets/yuv_test_nv12.yuv:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/librender/src/main/assets/yuv_test_nv12.yuv
--------------------------------------------------------------------------------
/librender/src/main/assets/yuv_test_origin.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/librender/src/main/assets/yuv_test_origin.png
--------------------------------------------------------------------------------
/librender/src/main/java/com/xyq/librender/core/IDrawer.kt:
--------------------------------------------------------------------------------
1 | package com.xyq.librender.core
2 |
3 | import android.util.Size
4 | import com.xyq.librender.model.RenderData
5 |
6 | interface IDrawer {
7 |
8 | fun init(async: Boolean)
9 |
10 | fun pushData(data: RenderData)
11 |
12 | /**
13 | * pushData传数据,然后绘制
14 | */
15 | fun draw()
16 |
17 | /**
18 | * 外部传入纹理做输入,然后绘制
19 | */
20 | fun draw(input: Int)
21 |
22 | /**
23 | * 内部生成FBO,绘制到FBO上的纹理
24 | * 返回纹理id
25 | */
26 | fun drawToTex(): Int
27 |
28 | /**
29 | * 外部传入纹理做输入,然后绘制到FBO
30 | */
31 | fun drawToTex(from: Int): Int
32 |
33 | fun release()
34 |
35 | fun setFrameSize(size: Size)
36 |
37 | fun getFrameSize(): Size
38 |
39 | fun setCanvasSize(size: Size)
40 |
41 | fun setRotate(rotate: Int)
42 |
43 | fun setBackgroundColor(r: Float, g: Float, b: Float, a: Float);
44 | }
--------------------------------------------------------------------------------
/librender/src/main/java/com/xyq/librender/core/RgbDrawer.kt:
--------------------------------------------------------------------------------
1 | package com.xyq.librender.core
2 |
3 | import android.content.Context
4 | import android.opengl.GLES30
5 | import com.xyq.librender.R
6 | import com.xyq.librender.model.RenderData
7 |
8 | open class RgbDrawer(context: Context): BaseDrawer(context) {
9 |
10 | private var mTexHandler = -1
11 |
12 | override fun getVertexShader(): Int {
13 | return R.raw.vertex_normal
14 | }
15 |
16 | override fun getFragmentShader(): Int {
17 | return R.raw.fragment_rgba
18 | }
19 |
20 | override fun getTextureSize(): Int {
21 | return 1
22 | }
23 |
24 | override fun onInitParam() {
25 | mTexHandler = GLES30.glGetUniformLocation(mProgram, "sampler")
26 | }
27 |
28 | override fun uploadData(textures: IntArray, data: RenderData?) {
29 | GLES30.glActiveTexture(GLES30.GL_TEXTURE0)
30 | GLES30.glBindTexture(GLES30.GL_TEXTURE_2D, textures[0])
31 | data?.let {
32 | GLES30.glTexImage2D(GLES30.GL_TEXTURE_2D, 0, GLES30.GL_RGB, it.w, it.h,
33 | 0, GLES30.GL_RGB, GLES30.GL_UNSIGNED_BYTE, it.y)
34 | }
35 | GLES30.glUniform1i(mTexHandler, 0)
36 | }
37 | }
--------------------------------------------------------------------------------
/librender/src/main/java/com/xyq/librender/core/RgbaDrawer.kt:
--------------------------------------------------------------------------------
1 | package com.xyq.librender.core
2 |
3 | import android.content.Context
4 | import android.opengl.GLES30
5 | import com.xyq.librender.R
6 | import com.xyq.librender.model.RenderData
7 |
8 | open class RgbaDrawer(context: Context): BaseDrawer(context) {
9 |
10 | private var mRgbaTextureHandler = -1
11 |
12 | override fun getVertexShader(): Int {
13 | return R.raw.vertex_normal
14 | }
15 |
16 | override fun getFragmentShader(): Int {
17 | return R.raw.fragment_rgba
18 | }
19 |
20 | override fun getTextureSize(): Int {
21 | return 1
22 | }
23 |
24 | override fun onInitParam() {
25 | mRgbaTextureHandler = GLES30.glGetUniformLocation(mProgram, "sampler")
26 | }
27 |
28 | override fun uploadData(textures: IntArray, data: RenderData?) {
29 | GLES30.glActiveTexture(GLES30.GL_TEXTURE0)
30 | GLES30.glBindTexture(GLES30.GL_TEXTURE_2D, textures[0])
31 | data?.let {
32 | GLES30.glTexImage2D(GLES30.GL_TEXTURE_2D, 0, GLES30.GL_RGBA, it.w, it.h,
33 | 0, GLES30.GL_RGBA, GLES30.GL_UNSIGNED_BYTE, it.y)
34 | }
35 | GLES30.glUniform1i(mRgbaTextureHandler, 0)
36 | }
37 | }
--------------------------------------------------------------------------------
/librender/src/main/java/com/xyq/librender/filter/BaseFilter.kt:
--------------------------------------------------------------------------------
1 | package com.xyq.librender.filter
2 |
3 | import com.xyq.librender.core.RgbaDrawer
4 | import com.xyq.librender.model.Pipeline
5 |
6 | abstract class BaseFilter : IFilter {
7 |
8 | protected var mDrawer: RgbaDrawer? = null
9 |
10 | private var mNextFilter: IFilter? = null
11 |
12 | abstract fun doProcess(tex: Int): Int
13 |
14 | override fun process(pipeline: Pipeline): Int {
15 | if (!mDrawer!!.hasInit()) {
16 | mDrawer!!.init(false)
17 | }
18 | mDrawer!!.setCanvasSize(pipeline.canvasSize)
19 | mDrawer!!.setFrameSize(pipeline.frameSize)
20 | val id = doProcess(pipeline.texId)
21 | return if (mNextFilter == null) {
22 | id
23 | } else {
24 | val texId = mNextFilter!!.process(pipeline.copy(texId = id))
25 | texId
26 | }
27 | }
28 |
29 | override fun setVal(key: String, value: Float) {
30 | // nothing now
31 | }
32 |
33 | override fun setNext(filter: IFilter) {
34 | mNextFilter = filter
35 | }
36 |
37 | override fun getNextFilter(): IFilter? {
38 | return mNextFilter
39 | }
40 |
41 | override fun release() {
42 | mDrawer?.release()
43 | }
44 | }
--------------------------------------------------------------------------------
/librender/src/main/java/com/xyq/librender/filter/IFilter.kt:
--------------------------------------------------------------------------------
1 | package com.xyq.librender.filter
2 |
3 | import com.xyq.librender.model.Pipeline
4 |
5 | interface IFilter {
6 |
7 | /**
8 | * filter process, need run gl thread
9 | */
10 | fun process(pipeline: Pipeline): Int
11 |
12 | /**
13 | * release filter res, need run gl thread
14 | */
15 | fun release()
16 |
17 | fun setNext(filter: IFilter)
18 |
19 | fun getNextFilter(): IFilter?
20 |
21 | fun setVal(key: String, value: Float)
22 | }
--------------------------------------------------------------------------------
/librender/src/main/java/com/xyq/librender/model/FrameBuffer.kt:
--------------------------------------------------------------------------------
1 | package com.xyq.librender.model
2 |
3 | import android.graphics.Bitmap
4 | import java.nio.ByteBuffer
5 |
6 | data class FrameBuffer(val width: Int, val height: Int, val data: ByteBuffer) {
7 |
8 | fun toBitmap(): Bitmap {
9 | val bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888)
10 | bitmap.copyPixelsFromBuffer(data)
11 | return bitmap
12 | }
13 |
14 | }
15 |
--------------------------------------------------------------------------------
/librender/src/main/java/com/xyq/librender/model/Pipeline.kt:
--------------------------------------------------------------------------------
1 | package com.xyq.librender.model
2 |
3 | import android.util.Size
4 |
5 | data class Pipeline(val texId: Int,
6 | val canvasSize: Size,
7 | val frameSize: Size,
8 | val rotate: Int
9 | )
--------------------------------------------------------------------------------
/librender/src/main/java/com/xyq/librender/model/RenderData.kt:
--------------------------------------------------------------------------------
1 | package com.xyq.librender.model
2 |
3 | import java.nio.ByteBuffer
4 |
5 | data class RenderData(val w: Int, val h: Int, val y: ByteBuffer?, val u: ByteBuffer?, val v: ByteBuffer?, val rotate: Int = 0)
6 |
--------------------------------------------------------------------------------
/librender/src/main/java/com/xyq/librender/model/ResManager.kt:
--------------------------------------------------------------------------------
1 | package com.xyq.librender.model
2 |
3 | import android.content.Context
4 | import com.xyq.libutils.FileUtils
5 |
6 | object ResManager {
7 |
8 | object ShaderCache {
9 | private val mVertexShaderCache = HashMap()
10 | private val mFragmentShaderCache = HashMap()
11 |
12 | fun findVertexShader(resId: Int, context: Context): String {
13 | return findShader(resId, context, mVertexShaderCache)
14 | }
15 |
16 | fun findFragmentShader(resId: Int, context: Context): String {
17 | return findShader(resId, context, mFragmentShaderCache)
18 | }
19 |
20 | private fun findShader(resId: Int, context: Context, cache: HashMap): String {
21 | if (cache.contains(resId)) {
22 | return cache[resId]!!
23 | }
24 |
25 | val shader = FileUtils.readTextFileFromResource(context, resId)
26 | cache[resId] = shader
27 | return shader
28 | }
29 | }
30 | }
--------------------------------------------------------------------------------
/librender/src/main/res/layout/activity_render_test.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
17 |
18 |
--------------------------------------------------------------------------------
/librender/src/main/res/raw/fragment_filter_grey.glsl:
--------------------------------------------------------------------------------
1 | #version 300 es
2 |
3 | precision mediump float;
4 |
5 | out vec4 fragColor;
6 |
7 | in vec2 vCoordinate;
8 |
9 | uniform sampler2D sampler;
10 | uniform float progress;
11 |
12 | void main() {
13 | vec4 rgba = texture(sampler, vCoordinate);
14 | if (vCoordinate.x > progress) {
15 | fragColor = rgba;
16 | } else {
17 | float h = dot(rgba.xyz, vec3(0.3, 0.59, 0.21));
18 | fragColor = vec4(h, h, h, 1);
19 | }
20 | }
21 |
22 |
--------------------------------------------------------------------------------
/librender/src/main/res/raw/fragment_filter_radius_corner.glsl:
--------------------------------------------------------------------------------
1 | #version 300 es
2 |
3 | precision mediump float;
4 |
5 | out vec4 fragColor;
6 |
7 | in vec2 vCoordinate;
8 |
9 | uniform sampler2D sampler;
10 |
11 | uniform float radius;
12 | uniform vec2 texSize;
13 | uniform vec4 bgColor;
14 |
15 | void main() {
16 | vec2 imgTex = vCoordinate * texSize; //将纹理坐标系转换为图片坐标系
17 | float centerX = texSize.x / 2.0;
18 | float centerY = texSize.y / 2.0;
19 | vec2 center = vec2(centerX, centerY);
20 |
21 | vec2 imgCoord = imgTex - center; // 坐标点为中心点
22 | if (abs(imgCoord.x) < (centerX - radius) || abs(imgCoord.y) < (centerY - radius)) { // 十字区域
23 | fragColor = texture(sampler, vCoordinate);
24 | } else if (length(abs(imgCoord) - (center - radius)) < radius) { // 四个角弧形区域
25 | fragColor = texture(sampler, vCoordinate);
26 | } else {
27 | fragColor = bgColor;
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/librender/src/main/res/raw/fragment_nv12.glsl:
--------------------------------------------------------------------------------
1 | #version 300 es
2 |
3 | precision mediump float;
4 |
5 | out vec4 fragColor;
6 | in vec2 vCoordinate;
7 |
8 | uniform sampler2D samplerY;
9 | uniform sampler2D samplerUV;
10 |
11 | void main() {
12 | float y,u,v;
13 | y = texture(samplerY, vCoordinate).r;
14 | u = texture(samplerUV, vCoordinate).r - 0.5;
15 | v = texture(samplerUV, vCoordinate).a - 0.5;
16 |
17 | vec3 rgb;
18 | rgb.r = y + 1.403 * v;
19 | rgb.g = y - 0.344 * u - 0.714 * v;
20 | rgb.b = y + 1.770 * u;
21 |
22 | fragColor = vec4(rgb, 1.0);
23 | }
--------------------------------------------------------------------------------
/librender/src/main/res/raw/fragment_oes.glsl:
--------------------------------------------------------------------------------
1 | #version 300 es
2 | #extension GL_OES_EGL_image_external : require
3 | #extension GL_OES_EGL_image_external_essl3 : require
4 |
5 | precision mediump float;
6 |
7 | out vec4 fragColor;
8 |
9 | in vec2 vCoordinate;
10 |
11 | uniform samplerExternalOES samplerOES;
12 |
13 | void main() {
14 | fragColor = texture(samplerOES, vCoordinate);
15 | }
--------------------------------------------------------------------------------
/librender/src/main/res/raw/fragment_rgba.glsl:
--------------------------------------------------------------------------------
1 | #version 300 es
2 |
3 | precision mediump float;
4 |
5 | out vec4 fragColor;
6 |
7 | in vec2 vCoordinate;
8 |
9 | uniform sampler2D sampler;
10 |
11 | void main() {
12 | fragColor = texture(sampler, vCoordinate);
13 | }
--------------------------------------------------------------------------------
/librender/src/main/res/raw/fragment_yuv.glsl:
--------------------------------------------------------------------------------
1 | #version 300 es
2 |
3 | precision mediump float;
4 |
5 | out vec4 fragColor;
6 |
7 | in vec2 vCoordinate;
8 |
9 | uniform sampler2D samplerY;
10 | uniform sampler2D samplerU;
11 | uniform sampler2D samplerV;
12 |
13 | void main() {
14 | float y,u,v;
15 | y = texture(samplerY, vCoordinate).r;
16 | u = texture(samplerU, vCoordinate).r - 0.5;
17 | v = texture(samplerV, vCoordinate).r - 0.5;
18 |
19 | vec3 rgb;
20 | rgb.r = y + 1.403 * v;
21 | rgb.g = y - 0.344 * u - 0.714 * v;
22 | rgb.b = y + 1.770 * u;
23 |
24 | fragColor = vec4(rgb, 1.0);
25 | }
--------------------------------------------------------------------------------
/librender/src/main/res/raw/vertex_normal.glsl:
--------------------------------------------------------------------------------
1 | #version 300 es
2 |
3 | uniform mat4 uMatrix;
4 |
5 | layout (location = 0) in vec4 aPosition;
6 | layout (location = 1) in vec2 aCoordinate;
7 |
8 | out vec2 vCoordinate;
9 |
10 | void main() {
11 | gl_Position = uMatrix * aPosition;
12 | vCoordinate = aCoordinate;
13 | }
14 |
--------------------------------------------------------------------------------
/librender/src/test/java/com/xyq/librender/ExampleUnitTest.kt:
--------------------------------------------------------------------------------
1 | package com.xyq.librender
2 |
3 | import org.junit.Test
4 |
5 | import org.junit.Assert.*
6 |
7 | /**
8 | * Example local unit test, which will execute on the development machine (host).
9 | *
10 | * See [testing documentation](http://d.android.com/tools/testing).
11 | */
12 | class ExampleUnitTest {
13 | @Test
14 | fun addition_isCorrect() {
15 | assertEquals(4, 2 + 2)
16 | }
17 | }
--------------------------------------------------------------------------------
/libutils/.gitignore:
--------------------------------------------------------------------------------
1 | /build
--------------------------------------------------------------------------------
/libutils/consumer-rules.pro:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libutils/consumer-rules.pro
--------------------------------------------------------------------------------
/libutils/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
--------------------------------------------------------------------------------
/libutils/src/androidTest/java/com/xyq/libutils/ExampleInstrumentedTest.kt:
--------------------------------------------------------------------------------
1 | package com.xyq.libutils
2 |
3 | import androidx.test.platform.app.InstrumentationRegistry
4 | import androidx.test.ext.junit.runners.AndroidJUnit4
5 |
6 | import org.junit.Test
7 | import org.junit.runner.RunWith
8 |
9 | import org.junit.Assert.*
10 |
11 | /**
12 | * Instrumented test, which will execute on an Android device.
13 | *
14 | * See [testing documentation](http://d.android.com/tools/testing).
15 | */
16 | @RunWith(AndroidJUnit4::class)
17 | class ExampleInstrumentedTest {
18 | @Test
19 | fun useAppContext() {
20 | // Context of the app under test.
21 | val appContext = InstrumentationRegistry.getInstrumentation().targetContext
22 | assertEquals("com.xyq.libutils.test", appContext.packageName)
23 | }
24 | }
--------------------------------------------------------------------------------
/libutils/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/libutils/src/main/cpp/utils/header/CommonUtils.h:
--------------------------------------------------------------------------------
1 | #ifndef FFMPEGDEMO_COMMONUTILS_H
2 | #define FFMPEGDEMO_COMMONUTILS_H
3 |
4 | #include
5 |
6 | static int64_t getCurrentTimeMs() {
7 | struct timeval time;
8 | gettimeofday(&time, nullptr);
9 | return time.tv_sec * 1000.0 + time.tv_usec / 1000.0;
10 | }
11 |
12 | static bool isEven(int num) {
13 | return (num & 1) == 0;
14 | }
15 |
16 | #endif //FFMPEGDEMO_COMMONUTILS_H
17 |
--------------------------------------------------------------------------------
/libutils/src/main/cpp/utils/header/Logger.h:
--------------------------------------------------------------------------------
1 | #ifndef FFMPEGDEMO_LOGGER_H
2 | #define FFMPEGDEMO_LOGGER_H
3 |
4 | #include
5 |
6 | #define LOGD(FORMAT,...) __android_log_print(ANDROID_LOG_DEBUG, "NativeLog",FORMAT, ##__VA_ARGS__);
7 | #define LOGI(FORMAT,...) __android_log_print(ANDROID_LOG_INFO, "NativeLog",FORMAT, ##__VA_ARGS__);
8 | #define LOGW(FORMAT,...) __android_log_print(ANDROID_LOG_WARN, "NativeLog",FORMAT, ##__VA_ARGS__);
9 | #define LOGE(FORMAT,...) __android_log_print(ANDROID_LOG_ERROR, "NativeLog",FORMAT, ##__VA_ARGS__);
10 |
11 | #endif //FFMPEGDEMO_LOGGER_H
12 |
--------------------------------------------------------------------------------
/libutils/src/main/cpp/utils/native-lib.cpp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sifutang/ffmpeg-demo/ea5b35f4ead8bca8854e1e2b83fe47bcc21eb1ec/libutils/src/main/cpp/utils/native-lib.cpp
--------------------------------------------------------------------------------
/libutils/src/main/java/com/xyq/libutils/TraceUtils.kt:
--------------------------------------------------------------------------------
1 | package com.xyq.libutils
2 |
3 | import android.os.Build
4 | import android.os.Trace
5 |
6 | object TraceUtils {
7 |
8 | private val DEBUG = BuildConfig.DEBUG
9 |
10 | fun beginSection(sectionName: String) {
11 | if (DEBUG) {
12 | Trace.beginSection(sectionName)
13 | }
14 | }
15 |
16 | fun endSection() {
17 | if (DEBUG) {
18 | Trace.endSection()
19 | }
20 | }
21 |
22 | fun beginAsyncSection(methodName: String, cookie: Int) {
23 | if (DEBUG) {
24 | if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
25 | Trace.beginAsyncSection(methodName, cookie)
26 | }
27 | }
28 | }
29 |
30 | fun endAsyncSection(methodName: String, cookie: Int) {
31 | if (DEBUG) {
32 | if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
33 | Trace.endAsyncSection(methodName, cookie)
34 | }
35 | }
36 | }
37 |
38 | }
--------------------------------------------------------------------------------
/libutils/src/test/java/com/xyq/libutils/ExampleUnitTest.kt:
--------------------------------------------------------------------------------
1 | package com.xyq.libutils
2 |
3 | import org.junit.Test
4 |
5 | import org.junit.Assert.*
6 |
7 | /**
8 | * Example local unit test, which will execute on the development machine (host).
9 | *
10 | * See [testing documentation](http://d.android.com/tools/testing).
11 | */
12 | class ExampleUnitTest {
13 | @Test
14 | fun addition_isCorrect() {
15 | assertEquals(4, 2 + 2)
16 | }
17 | }
--------------------------------------------------------------------------------