├── .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 | 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 | 6 | -------------------------------------------------------------------------------- /.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 8 | 9 | 10 | 11 | 12 | 13 | 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 | } --------------------------------------------------------------------------------