├── .bash_profile ├── .gitignore ├── README.md ├── app ├── .gitignore ├── build.gradle ├── proguard-rules.pro ├── release │ ├── app-release.apk │ └── output.json └── src │ └── main │ ├── AndroidManifest.xml │ ├── java │ └── com │ │ └── bajie │ │ └── uvccamera │ │ └── rtmplive │ │ ├── activity │ │ ├── ExternalCameraLiveActivity.java │ │ ├── InternalCameraLiveActivity.java │ │ └── MainActivity.java │ │ ├── application │ │ └── MyApplication.java │ │ ├── base │ │ └── BaseActivity.java │ │ ├── callback │ │ └── IBase.java │ │ └── util │ │ ├── TestConfig.java │ │ └── ToastUtils.java │ └── res │ ├── drawable-v24 │ └── ic_launcher_foreground.xml │ ├── drawable │ └── ic_launcher_background.xml │ ├── layout │ ├── activity_external_camera_live.xml │ ├── activity_internal_camera_live.xml │ ├── activity_main.xml │ └── layout_magic_filter_item.xml │ ├── mipmap-anydpi-v26 │ ├── ic_launcher.xml │ └── ic_launcher_round.xml │ ├── mipmap-hdpi │ ├── ic_launcher.png │ └── ic_launcher_round.png │ ├── mipmap-mdpi │ ├── ic_launcher.png │ └── ic_launcher_round.png │ ├── mipmap-xhdpi │ ├── ic_launcher.png │ └── ic_launcher_round.png │ ├── mipmap-xxhdpi │ ├── ic_launcher.png │ └── ic_launcher_round.png │ ├── mipmap-xxxhdpi │ ├── ic_launcher.png │ └── ic_launcher_round.png │ └── values │ ├── colors.xml │ ├── strings.xml │ └── styles.xml ├── bajie.jks ├── build.gradle ├── gradle.properties ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── magicfilter ├── .gitignore ├── build.gradle ├── proguard-rules.pro └── src │ └── main │ ├── AndroidManifest.xml │ ├── assets │ └── filter │ │ ├── amaro_mask1.jpg │ │ ├── amaro_mask2.jpg │ │ ├── amaromap.png │ │ ├── blackboard1024.png │ │ ├── bluevintage_mask1.jpg │ │ ├── brannan_blowout.png │ │ ├── brannan_contrast.png │ │ ├── brannan_luma.png │ │ ├── brannan_process.png │ │ ├── brannan_screen.png │ │ ├── brooklynCurves1.png │ │ ├── brooklynCurves2.png │ │ ├── calm_mask1.jpg │ │ ├── calm_mask2.jpg │ │ ├── earlybirdblowout.png │ │ ├── earlybirdcurves.png │ │ ├── earlybirdmap.png │ │ ├── earlybirdoverlaymap_new.png │ │ ├── filter_map_first.png │ │ ├── freud_rand.png │ │ ├── healthy_mask_1.jpg │ │ ├── hudsonbackground.png │ │ ├── hudsonmap.png │ │ ├── inkwellmap.png │ │ ├── kelvinmap.png │ │ ├── n1977blowout.png │ │ ├── n1977map.png │ │ ├── nashvillemap.png │ │ ├── overlaymap.png │ │ ├── pixar_curves.png │ │ ├── rise_mask1.jpg │ │ ├── rise_mask2.jpg │ │ ├── risemap.png │ │ ├── sierramap.png │ │ ├── sierravignette.png │ │ ├── softlight.png │ │ ├── sutrocurves.png │ │ ├── sutroedgeburn.png │ │ ├── sutrometal.png │ │ ├── toastercolorshift.png │ │ ├── toastercurves.png │ │ ├── toastermetal.png │ │ ├── toasteroverlaymapwarm.png │ │ ├── toastersoftlight.png │ │ ├── toy_mask1.jpg │ │ ├── valenciagradientmap.png │ │ ├── valenciamap.png │ │ ├── vignette_map.png │ │ ├── vignettemap_new.png │ │ ├── walden_map.png │ │ ├── warm_layer1.jpg │ │ └── xpromap.png │ ├── java │ └── com │ │ └── seu │ │ └── magicfilter │ │ ├── advanced │ │ ├── MagicAmaroFilter.java │ │ ├── MagicAntiqueFilter.java │ │ ├── MagicBeautyFilter.java │ │ ├── MagicBlackCatFilter.java │ │ ├── MagicBrannanFilter.java │ │ ├── MagicBrooklynFilter.java │ │ ├── MagicCalmFilter.java │ │ ├── MagicCoolFilter.java │ │ ├── MagicEarlyBirdFilter.java │ │ ├── MagicEmeraldFilter.java │ │ ├── MagicEvergreenFilter.java │ │ ├── MagicFreudFilter.java │ │ ├── MagicHealthyFilter.java │ │ ├── MagicHudsonFilter.java │ │ ├── MagicInkwellFilter.java │ │ ├── MagicKevinFilter.java │ │ ├── MagicLatteFilter.java │ │ ├── MagicN1977Filter.java │ │ ├── MagicNashvilleFilter.java │ │ ├── MagicNostalgiaFilter.java │ │ ├── MagicPixarFilter.java │ │ ├── MagicRiseFilter.java │ │ ├── MagicRomanceFilter.java │ │ ├── MagicSakuraFilter.java │ │ ├── MagicSierraFilter.java │ │ ├── MagicSketchFilter.java │ │ ├── MagicSkinWhitenFilter.java │ │ ├── MagicSunriseFilter.java │ │ ├── MagicSunsetFilter.java │ │ ├── MagicSutroFilter.java │ │ ├── MagicTenderFilter.java │ │ ├── MagicToasterFilter.java │ │ ├── MagicValenciaFilter.java │ │ ├── MagicWaldenFilter.java │ │ ├── MagicWarmFilter.java │ │ ├── MagicWhiteCatFilter.java │ │ └── MagicXproIIFilter.java │ │ ├── base │ │ └── gpuimage │ │ │ └── GPUImageFilter.java │ │ └── utils │ │ ├── MagicFilterFactory.java │ │ ├── MagicFilterType.java │ │ └── OpenGLUtils.java │ └── res │ └── raw │ ├── amaro.glsl │ ├── antique.glsl │ ├── beauty.glsl │ ├── blackcat.glsl │ ├── brannan.glsl │ ├── brooklyn.glsl │ ├── calm.glsl │ ├── cool.glsl │ ├── earlybird.glsl │ ├── emerald.glsl │ ├── evergreen.glsl │ ├── fragment.glsl │ ├── freud.glsl │ ├── healthy.glsl │ ├── hudson.glsl │ ├── inkwell.glsl │ ├── kevin_new.glsl │ ├── latte.glsl │ ├── n1977.glsl │ ├── nashville.glsl │ ├── nostalgia.glsl │ ├── pixar.glsl │ ├── rise.glsl │ ├── romance.glsl │ ├── sierra.glsl │ ├── sketch.glsl │ ├── skinwhiten.glsl │ ├── sunrise.glsl │ ├── sunset.glsl │ ├── sutro.glsl │ ├── tender.glsl │ ├── toaster2_filter_shader.glsl │ ├── valencia.glsl │ ├── vertex.glsl │ ├── walden.glsl │ ├── warm.glsl │ ├── whitecat.glsl │ └── xproii_filter_shader.glsl ├── mp4parser ├── .gitignore ├── build.gradle ├── proguard-rules.pro └── src │ └── main │ ├── AndroidManifest.xml │ └── java │ └── com │ ├── coremedia │ └── iso │ │ ├── BoxParser.java │ │ ├── ChannelHelper.java │ │ ├── Hex.java │ │ ├── IsoFile.java │ │ ├── IsoTypeReader.java │ │ ├── IsoTypeWriter.java │ │ ├── Utf8.java │ │ └── boxes │ │ ├── AbstractMediaHeaderBox.java │ │ ├── Box.java │ │ ├── ChunkOffsetBox.java │ │ ├── ContainerBox.java │ │ ├── DataEntryUrlBox.java │ │ ├── DataInformationBox.java │ │ ├── DataReferenceBox.java │ │ ├── FileTypeBox.java │ │ ├── FullBox.java │ │ ├── HandlerBox.java │ │ ├── MediaBox.java │ │ ├── MediaHeaderBox.java │ │ ├── MediaInformationBox.java │ │ ├── MovieBox.java │ │ ├── MovieHeaderBox.java │ │ ├── SampleDescriptionBox.java │ │ ├── SampleSizeBox.java │ │ ├── SampleTableBox.java │ │ ├── SampleToChunkBox.java │ │ ├── SoundMediaHeaderBox.java │ │ ├── StaticChunkOffsetBox.java │ │ ├── SyncSampleBox.java │ │ ├── TimeToSampleBox.java │ │ ├── TrackBox.java │ │ ├── TrackHeaderBox.java │ │ ├── UserBox.java │ │ ├── VideoMediaHeaderBox.java │ │ ├── h264 │ │ └── AvcConfigurationBox.java │ │ └── sampleentry │ │ ├── AudioSampleEntry.java │ │ ├── SampleEntry.java │ │ └── VisualSampleEntry.java │ └── googlecode │ └── mp4parser │ ├── AbstractBox.java │ ├── AbstractContainerBox.java │ ├── AbstractFullBox.java │ ├── FullContainerBox.java │ ├── annotations │ └── DoNotParseDetail.java │ ├── authoring │ └── DateHelper.java │ ├── boxes │ └── mp4 │ │ ├── AbstractDescriptorBox.java │ │ ├── ESDescriptorBox.java │ │ └── objectdescriptors │ │ ├── AudioSpecificConfig.java │ │ ├── BaseDescriptor.java │ │ ├── BitReaderBuffer.java │ │ ├── BitWriterBuffer.java │ │ ├── DecoderConfigDescriptor.java │ │ ├── DecoderSpecificInfo.java │ │ ├── Descriptor.java │ │ ├── ESDescriptor.java │ │ ├── ExtensionDescriptor.java │ │ ├── ExtensionProfileLevelDescriptor.java │ │ ├── ObjectDescriptorBase.java │ │ ├── ObjectDescriptorFactory.java │ │ ├── ProfileLevelIndicationDescriptor.java │ │ ├── SLConfigDescriptor.java │ │ └── UnknownDescriptor.java │ ├── h264 │ ├── CharCache.java │ ├── Debug.java │ ├── model │ │ ├── AspectRatio.java │ │ ├── BitstreamElement.java │ │ ├── ChromaFormat.java │ │ ├── HRDParameters.java │ │ ├── PictureParameterSet.java │ │ ├── ScalingList.java │ │ ├── ScalingMatrix.java │ │ ├── SeqParameterSet.java │ │ └── VUIParameters.java │ ├── read │ │ ├── BitstreamReader.java │ │ └── CAVLCReader.java │ └── write │ │ ├── BitstreamWriter.java │ │ └── CAVLCWriter.java │ └── util │ ├── ByteBufferByteChannel.java │ ├── CastUtils.java │ ├── Math.java │ └── Matrix.java ├── rtmppusher ├── .DS_Store ├── .gitignore ├── build.gradle ├── proguard-rules.pro └── src │ ├── .DS_Store │ └── main │ ├── .DS_Store │ ├── AndroidManifest.xml │ └── java │ ├── .DS_Store │ └── com │ ├── .DS_Store │ └── github │ └── faucamp │ └── simplertmp │ ├── Crypto.java │ ├── DefaultRtmpPublisher.java │ ├── RtmpHandler.java │ ├── RtmpPublisher.java │ ├── Util.java │ ├── amf │ ├── AmfArray.java │ ├── AmfBoolean.java │ ├── AmfData.java │ ├── AmfDecoder.java │ ├── AmfMap.java │ ├── AmfNull.java │ ├── AmfNumber.java │ ├── AmfObject.java │ ├── AmfString.java │ ├── AmfType.java │ └── AmfUndefined.java │ ├── io │ ├── ChunkStreamInfo.java │ ├── RtmpConnection.java │ ├── RtmpDecoder.java │ ├── RtmpSessionInfo.java │ └── WindowAckRequired.java │ └── packets │ ├── Abort.java │ ├── Acknowledgement.java │ ├── Audio.java │ ├── Command.java │ ├── ContentData.java │ ├── Data.java │ ├── Handshake.java │ ├── RtmpHeader.java │ ├── RtmpPacket.java │ ├── SetChunkSize.java │ ├── SetPeerBandwidth.java │ ├── UserControl.java │ ├── VariableBodyRtmpPacket.java │ ├── Video.java │ └── WindowAckSize.java ├── screenshoot ├── 0.png └── InternalCamera │ ├── a1.png │ ├── a10.png │ ├── a11.png │ ├── a12.png │ ├── a13.png │ ├── a14.png │ ├── a2.png │ ├── a3.png │ ├── a4.png │ ├── a5.png │ ├── a6.png │ ├── a7.png │ ├── a8.png │ ├── a9.png │ ├── as1.png │ ├── as2.png │ ├── as3.png │ ├── as4.png │ ├── as5.png │ ├── with_magicfilter.mp4 │ └── without_magicfilter.mp4 ├── settings.gradle ├── uvccamera ├── .DS_Store ├── .gitignore ├── build.gradle ├── proguard-rules.pro └── src │ └── main │ ├── AndroidManifest.xml │ ├── cpp │ ├── Android.mk │ ├── Application.mk │ ├── UVCCamera │ │ ├── Android.mk │ │ ├── Parameters.cpp │ │ ├── Parameters.h │ │ ├── UVCButtonCallback.cpp │ │ ├── UVCButtonCallback.h │ │ ├── UVCCamera.cpp │ │ ├── UVCCamera.h │ │ ├── UVCPreview.cpp │ │ ├── UVCPreview.h │ │ ├── UVCStatusCallback.cpp │ │ ├── UVCStatusCallback.h │ │ ├── _onload.cpp │ │ ├── _onload.h │ │ ├── libUVCCamera.h │ │ ├── objectarray.h │ │ ├── pipeline │ │ │ ├── AbstractBufferedPipeline.cpp │ │ │ ├── AbstractBufferedPipeline.h │ │ │ ├── CallbackPipeline.cpp │ │ │ ├── CallbackPipeline.h │ │ │ ├── CaptureBasePipeline.cpp │ │ │ ├── CaptureBasePipeline.h │ │ │ ├── ConvertPipeline.cpp │ │ │ ├── ConvertPipeline.h │ │ │ ├── DistributePipeline.cpp │ │ │ ├── DistributePipeline.h │ │ │ ├── IPipeline.cpp │ │ │ ├── IPipeline.h │ │ │ ├── PreviewPipeline.cpp │ │ │ ├── PreviewPipeline.h │ │ │ ├── PublisherPipeline.cpp │ │ │ ├── PublisherPipeline.h │ │ │ ├── SQLiteBufferedPipeline.cpp │ │ │ ├── SQLiteBufferedPipeline.h │ │ │ ├── SimpleBufferedPipeline.cpp │ │ │ ├── SimpleBufferedPipeline.h │ │ │ ├── pipeline_helper.cpp │ │ │ └── pipeline_helper.h │ │ ├── serenegiant_usb_UVCCamera.cpp │ │ └── utilbase.cpp │ ├── empty.c │ ├── libjpeg-turbo-1.5.0 │ │ ├── Android.mk │ │ ├── BUILDING.md │ │ ├── CMakeLists.txt │ │ ├── ChangeLog.md │ │ ├── LICENSE.md │ │ ├── Makefile.am │ │ ├── Makefile.in │ │ ├── README.ijg │ │ ├── README.md │ │ ├── acinclude.m4 │ │ ├── aclocal.m4 │ │ ├── ar-lib │ │ ├── bmp.c │ │ ├── bmp.h │ │ ├── cderror.h │ │ ├── cdjpeg.c │ │ ├── cdjpeg.h │ │ ├── change.log │ │ ├── cjpeg.1 │ │ ├── cjpeg.c │ │ ├── cmakescripts │ │ │ └── testclean.cmake │ │ ├── coderules.txt │ │ ├── compile │ │ ├── config.guess │ │ ├── config.h.in │ │ ├── config.sub │ │ ├── configure │ │ ├── configure.ac │ │ ├── depcomp │ │ ├── djpeg.1 │ │ ├── djpeg.c │ │ ├── doc │ │ │ └── html │ │ │ │ ├── annotated.html │ │ │ │ ├── bc_s.png │ │ │ │ ├── bdwn.png │ │ │ │ ├── classes.html │ │ │ │ ├── closed.png │ │ │ │ ├── doxygen-extra.css │ │ │ │ ├── doxygen.css │ │ │ │ ├── doxygen.png │ │ │ │ ├── dynsections.js │ │ │ │ ├── ftv2blank.png │ │ │ │ ├── ftv2cl.png │ │ │ │ ├── ftv2doc.png │ │ │ │ ├── ftv2folderclosed.png │ │ │ │ ├── ftv2folderopen.png │ │ │ │ ├── ftv2lastnode.png │ │ │ │ ├── ftv2link.png │ │ │ │ ├── ftv2mlastnode.png │ │ │ │ ├── ftv2mnode.png │ │ │ │ ├── ftv2mo.png │ │ │ │ ├── ftv2node.png │ │ │ │ ├── ftv2ns.png │ │ │ │ ├── ftv2plastnode.png │ │ │ │ ├── ftv2pnode.png │ │ │ │ ├── ftv2splitbar.png │ │ │ │ ├── ftv2vertline.png │ │ │ │ ├── functions.html │ │ │ │ ├── functions_vars.html │ │ │ │ ├── group___turbo_j_p_e_g.html │ │ │ │ ├── index.html │ │ │ │ ├── jquery.js │ │ │ │ ├── modules.html │ │ │ │ ├── nav_f.png │ │ │ │ ├── nav_g.png │ │ │ │ ├── nav_h.png │ │ │ │ ├── open.png │ │ │ │ ├── search │ │ │ │ ├── all_63.html │ │ │ │ ├── all_63.js │ │ │ │ ├── all_64.html │ │ │ │ ├── all_64.js │ │ │ │ ├── all_68.html │ │ │ │ ├── all_68.js │ │ │ │ ├── all_6e.html │ │ │ │ ├── all_6e.js │ │ │ │ ├── all_6f.html │ │ │ │ ├── all_6f.js │ │ │ │ ├── all_72.html │ │ │ │ ├── all_72.js │ │ │ │ ├── all_74.html │ │ │ │ ├── all_74.js │ │ │ │ ├── all_77.html │ │ │ │ ├── all_77.js │ │ │ │ ├── all_78.html │ │ │ │ ├── all_78.js │ │ │ │ ├── all_79.html │ │ │ │ ├── all_79.js │ │ │ │ ├── classes_74.html │ │ │ │ ├── classes_74.js │ │ │ │ ├── close.png │ │ │ │ ├── enums_74.html │ │ │ │ ├── enums_74.js │ │ │ │ ├── enumvalues_74.html │ │ │ │ ├── enumvalues_74.js │ │ │ │ ├── functions_74.html │ │ │ │ ├── functions_74.js │ │ │ │ ├── groups_74.html │ │ │ │ ├── groups_74.js │ │ │ │ ├── mag_sel.png │ │ │ │ ├── nomatches.html │ │ │ │ ├── search.css │ │ │ │ ├── search.js │ │ │ │ ├── search_l.png │ │ │ │ ├── search_m.png │ │ │ │ ├── search_r.png │ │ │ │ ├── typedefs_74.html │ │ │ │ ├── typedefs_74.js │ │ │ │ ├── variables_63.html │ │ │ │ ├── variables_63.js │ │ │ │ ├── variables_64.html │ │ │ │ ├── variables_64.js │ │ │ │ ├── variables_68.html │ │ │ │ ├── variables_68.js │ │ │ │ ├── variables_6e.html │ │ │ │ ├── variables_6e.js │ │ │ │ ├── variables_6f.html │ │ │ │ ├── variables_6f.js │ │ │ │ ├── variables_72.html │ │ │ │ ├── variables_72.js │ │ │ │ ├── variables_74.html │ │ │ │ ├── variables_74.js │ │ │ │ ├── variables_77.html │ │ │ │ ├── variables_77.js │ │ │ │ ├── variables_78.html │ │ │ │ ├── variables_78.js │ │ │ │ ├── variables_79.html │ │ │ │ └── variables_79.js │ │ │ │ ├── structtjregion.html │ │ │ │ ├── structtjscalingfactor.html │ │ │ │ ├── structtjtransform.html │ │ │ │ ├── sync_off.png │ │ │ │ ├── sync_on.png │ │ │ │ ├── tab_a.png │ │ │ │ ├── tab_b.png │ │ │ │ ├── tab_h.png │ │ │ │ ├── tab_s.png │ │ │ │ └── tabs.css │ │ ├── doxygen-extra.css │ │ ├── doxygen.config │ │ ├── example.c │ │ ├── include │ │ │ ├── config.h │ │ │ ├── jconfig.h │ │ │ ├── jconfigint.h │ │ │ └── jsimdcfg.inc │ │ ├── install-sh │ │ ├── jaricom.c │ │ ├── java │ │ │ ├── CMakeLists.txt │ │ │ ├── MANIFEST.MF │ │ │ ├── Makefile.am │ │ │ ├── Makefile.in │ │ │ ├── README │ │ │ ├── TJBench.java │ │ │ ├── TJExample.java │ │ │ ├── TJUnitTest.java │ │ │ ├── doc │ │ │ │ ├── allclasses-frame.html │ │ │ │ ├── allclasses-noframe.html │ │ │ │ ├── constant-values.html │ │ │ │ ├── deprecated-list.html │ │ │ │ ├── help-doc.html │ │ │ │ ├── index-all.html │ │ │ │ ├── index.html │ │ │ │ ├── org │ │ │ │ │ └── libjpegturbo │ │ │ │ │ │ └── turbojpeg │ │ │ │ │ │ ├── TJ.html │ │ │ │ │ │ ├── TJCompressor.html │ │ │ │ │ │ ├── TJCustomFilter.html │ │ │ │ │ │ ├── TJDecompressor.html │ │ │ │ │ │ ├── TJException.html │ │ │ │ │ │ ├── TJScalingFactor.html │ │ │ │ │ │ ├── TJTransform.html │ │ │ │ │ │ ├── TJTransformer.html │ │ │ │ │ │ ├── YUVImage.html │ │ │ │ │ │ ├── package-frame.html │ │ │ │ │ │ ├── package-summary.html │ │ │ │ │ │ └── package-tree.html │ │ │ │ ├── overview-tree.html │ │ │ │ ├── package-list │ │ │ │ ├── resources │ │ │ │ │ ├── background.gif │ │ │ │ │ ├── tab.gif │ │ │ │ │ ├── titlebar.gif │ │ │ │ │ └── titlebar_end.gif │ │ │ │ ├── serialized-form.html │ │ │ │ └── stylesheet.css │ │ │ ├── org │ │ │ │ └── libjpegturbo │ │ │ │ │ └── turbojpeg │ │ │ │ │ ├── TJ.java │ │ │ │ │ ├── TJCompressor.java │ │ │ │ │ ├── TJCustomFilter.java │ │ │ │ │ ├── TJDecompressor.java │ │ │ │ │ ├── TJException.java │ │ │ │ │ ├── TJLoader.java.in │ │ │ │ │ ├── TJLoader.java.tmpl │ │ │ │ │ ├── TJScalingFactor.java │ │ │ │ │ ├── TJTransform.java │ │ │ │ │ ├── TJTransformer.java │ │ │ │ │ └── YUVImage.java │ │ │ ├── org_libjpegturbo_turbojpeg_TJ.h │ │ │ ├── org_libjpegturbo_turbojpeg_TJCompressor.h │ │ │ ├── org_libjpegturbo_turbojpeg_TJDecompressor.h │ │ │ └── org_libjpegturbo_turbojpeg_TJTransformer.h │ │ ├── jcapimin.c │ │ ├── jcapistd.c │ │ ├── jcarith.c │ │ ├── jccoefct.c │ │ ├── jccolext.c │ │ ├── jccolor.c │ │ ├── jcdctmgr.c │ │ ├── jchuff.c │ │ ├── jchuff.h │ │ ├── jcinit.c │ │ ├── jcmainct.c │ │ ├── jcmarker.c │ │ ├── jcmaster.c │ │ ├── jcomapi.c │ │ ├── jconfig.h.in │ │ ├── jconfig.txt │ │ ├── jconfigint.h.in │ │ ├── jcparam.c │ │ ├── jcphuff.c │ │ ├── jcprepct.c │ │ ├── jcsample.c │ │ ├── jcstest.c │ │ ├── jctrans.c │ │ ├── jdapimin.c │ │ ├── jdapistd.c │ │ ├── jdarith.c │ │ ├── jdatadst-tj.c │ │ ├── jdatadst.c │ │ ├── jdatasrc-tj.c │ │ ├── jdatasrc.c │ │ ├── jdcoefct.c │ │ ├── jdcoefct.h │ │ ├── jdcol565.c │ │ ├── jdcolext.c │ │ ├── jdcolor.c │ │ ├── jdct.h │ │ ├── jddctmgr.c │ │ ├── jdhuff.c │ │ ├── jdhuff.h │ │ ├── jdinput.c │ │ ├── jdmainct.c │ │ ├── jdmainct.h │ │ ├── jdmarker.c │ │ ├── jdmaster.c │ │ ├── jdmaster.h │ │ ├── jdmerge.c │ │ ├── jdmrg565.c │ │ ├── jdmrgext.c │ │ ├── jdphuff.c │ │ ├── jdpostct.c │ │ ├── jdsample.c │ │ ├── jdsample.h │ │ ├── jdtrans.c │ │ ├── jerror.c │ │ ├── jerror.h │ │ ├── jfdctflt.c │ │ ├── jfdctfst.c │ │ ├── jfdctint.c │ │ ├── jidctflt.c │ │ ├── jidctfst.c │ │ ├── jidctint.c │ │ ├── jidctred.c │ │ ├── jinclude.h │ │ ├── jmemmgr.c │ │ ├── jmemnobs.c │ │ ├── jmemsys.h │ │ ├── jmorecfg.h │ │ ├── jpeg_nbits_table.h │ │ ├── jpegcomp.h │ │ ├── jpegint.h │ │ ├── jpeglib.h │ │ ├── jpegtran.1 │ │ ├── jpegtran.c │ │ ├── jquant1.c │ │ ├── jquant2.c │ │ ├── jsimd.h │ │ ├── jsimd_none.c │ │ ├── jsimddct.h │ │ ├── jstdhuff.c │ │ ├── jutils.c │ │ ├── jversion.h │ │ ├── libjpeg.map.in │ │ ├── libjpeg.txt │ │ ├── ltmain.sh │ │ ├── md5 │ │ │ ├── CMakeLists.txt │ │ │ ├── Makefile.am │ │ │ ├── Makefile.in │ │ │ ├── md5.c │ │ │ ├── md5.h │ │ │ ├── md5cmp.c │ │ │ └── md5hl.c │ │ ├── missing │ │ ├── rdbmp.c │ │ ├── rdcolmap.c │ │ ├── rdgif.c │ │ ├── rdjpgcom.1 │ │ ├── rdjpgcom.c │ │ ├── rdppm.c │ │ ├── rdrle.c │ │ ├── rdswitch.c │ │ ├── rdtarga.c │ │ ├── release │ │ │ ├── Distribution.xml │ │ │ ├── License.rtf │ │ │ ├── ReadMe.txt │ │ │ ├── Welcome.rtf │ │ │ ├── deb-control.tmpl │ │ │ ├── libjpeg-turbo.nsi.in │ │ │ ├── libjpeg-turbo.spec.in │ │ │ ├── libjpeg.pc.in │ │ │ ├── libturbojpeg.pc.in │ │ │ ├── makecygwinpkg.in │ │ │ ├── makedpkg.in │ │ │ ├── makemacpkg.in │ │ │ └── uninstall.in │ │ ├── sharedlib │ │ │ └── CMakeLists.txt │ │ ├── simd │ │ │ ├── CMakeLists.txt │ │ │ ├── Makefile.am │ │ │ ├── Makefile.in │ │ │ ├── jccolext-altivec.c │ │ │ ├── jccolext-mmx.asm │ │ │ ├── jccolext-sse2-64.asm │ │ │ ├── jccolext-sse2.asm │ │ │ ├── jccolor-altivec.c │ │ │ ├── jccolor-mmx.asm │ │ │ ├── jccolor-sse2-64.asm │ │ │ ├── jccolor-sse2.asm │ │ │ ├── jcgray-altivec.c │ │ │ ├── jcgray-mmx.asm │ │ │ ├── jcgray-sse2-64.asm │ │ │ ├── jcgray-sse2.asm │ │ │ ├── jcgryext-altivec.c │ │ │ ├── jcgryext-mmx.asm │ │ │ ├── jcgryext-sse2-64.asm │ │ │ ├── jcgryext-sse2.asm │ │ │ ├── jchuff-sse2-64.asm │ │ │ ├── jchuff-sse2.asm │ │ │ ├── jcolsamp.inc │ │ │ ├── jcsample-altivec.c │ │ │ ├── jcsample-mmx.asm │ │ │ ├── jcsample-sse2-64.asm │ │ │ ├── jcsample-sse2.asm │ │ │ ├── jcsample.h │ │ │ ├── jdcolext-altivec.c │ │ │ ├── jdcolext-mmx.asm │ │ │ ├── jdcolext-sse2-64.asm │ │ │ ├── jdcolext-sse2.asm │ │ │ ├── jdcolor-altivec.c │ │ │ ├── jdcolor-mmx.asm │ │ │ ├── jdcolor-sse2-64.asm │ │ │ ├── jdcolor-sse2.asm │ │ │ ├── jdct.inc │ │ │ ├── jdmerge-altivec.c │ │ │ ├── jdmerge-mmx.asm │ │ │ ├── jdmerge-sse2-64.asm │ │ │ ├── jdmerge-sse2.asm │ │ │ ├── jdmrgext-altivec.c │ │ │ ├── jdmrgext-mmx.asm │ │ │ ├── jdmrgext-sse2-64.asm │ │ │ ├── jdmrgext-sse2.asm │ │ │ ├── jdsample-altivec.c │ │ │ ├── jdsample-mmx.asm │ │ │ ├── jdsample-sse2-64.asm │ │ │ ├── jdsample-sse2.asm │ │ │ ├── jfdctflt-3dn.asm │ │ │ ├── jfdctflt-sse-64.asm │ │ │ ├── jfdctflt-sse.asm │ │ │ ├── jfdctfst-altivec.c │ │ │ ├── jfdctfst-mmx.asm │ │ │ ├── jfdctfst-sse2-64.asm │ │ │ ├── jfdctfst-sse2.asm │ │ │ ├── jfdctint-altivec.c │ │ │ ├── jfdctint-mmx.asm │ │ │ ├── jfdctint-sse2-64.asm │ │ │ ├── jfdctint-sse2.asm │ │ │ ├── jidctflt-3dn.asm │ │ │ ├── jidctflt-sse.asm │ │ │ ├── jidctflt-sse2-64.asm │ │ │ ├── jidctflt-sse2.asm │ │ │ ├── jidctfst-altivec.c │ │ │ ├── jidctfst-mmx.asm │ │ │ ├── jidctfst-sse2-64.asm │ │ │ ├── jidctfst-sse2.asm │ │ │ ├── jidctint-altivec.c │ │ │ ├── jidctint-mmx.asm │ │ │ ├── jidctint-sse2-64.asm │ │ │ ├── jidctint-sse2.asm │ │ │ ├── jidctred-mmx.asm │ │ │ ├── jidctred-sse2-64.asm │ │ │ ├── jidctred-sse2.asm │ │ │ ├── jpeg_nbits_table.inc │ │ │ ├── jquant-3dn.asm │ │ │ ├── jquant-mmx.asm │ │ │ ├── jquant-sse.asm │ │ │ ├── jquantf-sse2-64.asm │ │ │ ├── jquantf-sse2.asm │ │ │ ├── jquanti-altivec.c │ │ │ ├── jquanti-sse2-64.asm │ │ │ ├── jquanti-sse2.asm │ │ │ ├── jsimd.h │ │ │ ├── jsimd_altivec.h │ │ │ ├── jsimd_arm.c │ │ │ ├── jsimd_arm64.c │ │ │ ├── jsimd_arm64_neon.S │ │ │ ├── jsimd_arm_neon.S │ │ │ ├── jsimd_i386.c │ │ │ ├── jsimd_mips.c │ │ │ ├── jsimd_mips_dspr2.S │ │ │ ├── jsimd_mips_dspr2_asm.h │ │ │ ├── jsimd_powerpc.c │ │ │ ├── jsimd_x86_64.c │ │ │ ├── jsimdcfg.inc.h │ │ │ ├── jsimdcpu.asm │ │ │ ├── jsimdext.inc │ │ │ └── nasm_lt.sh │ │ ├── structure.txt │ │ ├── testimages │ │ │ ├── nightshot_iso_100.bmp │ │ │ ├── nightshot_iso_100.txt │ │ │ ├── testimgari.jpg │ │ │ ├── testimgint.jpg │ │ │ ├── testorig.jpg │ │ │ ├── testorig.ppm │ │ │ ├── testorig12.jpg │ │ │ ├── vgl_5674_0098.bmp │ │ │ ├── vgl_6434_0018a.bmp │ │ │ └── vgl_6548_0026a.bmp │ │ ├── tjbench.c │ │ ├── tjbenchtest.in │ │ ├── tjbenchtest.java.in │ │ ├── tjexampletest.in │ │ ├── tjunittest.c │ │ ├── tjutil.c │ │ ├── tjutil.h │ │ ├── transupp.c │ │ ├── transupp.h │ │ ├── turbojpeg-jni.c │ │ ├── turbojpeg-mapfile │ │ ├── turbojpeg-mapfile.jni │ │ ├── turbojpeg.c │ │ ├── turbojpeg.h │ │ ├── usage.txt │ │ ├── win │ │ │ ├── jconfig.h.in │ │ │ ├── jconfigint.h.in │ │ │ ├── jpeg62-memsrcdst.def │ │ │ ├── jpeg62.def │ │ │ ├── jpeg7-memsrcdst.def │ │ │ ├── jpeg7.def │ │ │ ├── jpeg8.def │ │ │ └── jsimdcfg.inc │ │ ├── wizard.txt │ │ ├── wrbmp.c │ │ ├── wrgif.c │ │ ├── wrjpgcom.1 │ │ ├── wrjpgcom.c │ │ ├── wrppm.c │ │ ├── wrppm.h │ │ ├── wrrle.c │ │ └── wrtarga.c │ ├── libusb │ │ ├── .private │ │ │ ├── README.txt │ │ │ ├── bd.cmd │ │ │ ├── bm.sh │ │ │ ├── bwince.cmd │ │ │ ├── post-rewrite.sh │ │ │ ├── pre-commit.sh │ │ │ ├── wbs.txt │ │ │ └── wbs_wince.txt │ │ ├── AUTHORS │ │ ├── COPYING │ │ ├── ChangeLog │ │ ├── INSTALL │ │ ├── INSTALL_WIN.txt │ │ ├── Makefile.am │ │ ├── NEWS │ │ ├── PORTING │ │ ├── README │ │ ├── README.git │ │ ├── TODO │ │ ├── Xcode │ │ │ ├── common.xcconfig │ │ │ ├── config.h │ │ │ ├── debug.xcconfig │ │ │ ├── libusb.xcconfig │ │ │ ├── libusb.xcodeproj │ │ │ │ └── project.pbxproj │ │ │ ├── libusb_debug.xcconfig │ │ │ ├── libusb_release.xcconfig │ │ │ └── release.xcconfig │ │ ├── android │ │ │ ├── README │ │ │ ├── config.h │ │ │ ├── config_original.h │ │ │ └── jni │ │ │ │ ├── Android.mk │ │ │ │ ├── Android_original.mk │ │ │ │ ├── Application.mk │ │ │ │ ├── examples.mk │ │ │ │ ├── libusb.mk │ │ │ │ ├── libusb_original.mk │ │ │ │ └── tests.mk │ │ ├── autogen.sh │ │ ├── bootstrap.sh │ │ ├── configure.ac │ │ ├── doc │ │ │ ├── Makefile.am │ │ │ ├── doxygen.cfg.in │ │ │ └── libusb.png │ │ ├── examples │ │ │ ├── Makefile.am │ │ │ ├── dpfp.c │ │ │ ├── dpfp_threaded.c │ │ │ ├── ezusb.c │ │ │ ├── ezusb.h │ │ │ ├── fxload.c │ │ │ ├── getopt │ │ │ │ ├── getopt.c │ │ │ │ ├── getopt.h │ │ │ │ └── getopt1.c │ │ │ ├── hotplugtest.c │ │ │ ├── listdevs.c │ │ │ ├── sam3u_benchmark.c │ │ │ └── xusb.c │ │ ├── libusb-1.0.pc.in │ │ ├── libusb │ │ │ ├── Makefile.am │ │ │ ├── config.h │ │ │ ├── core.c │ │ │ ├── core_original.c │ │ │ ├── descriptor.c │ │ │ ├── descriptor_original.c │ │ │ ├── hotplug.c │ │ │ ├── hotplug.h │ │ │ ├── hotplug_original.c │ │ │ ├── io.c │ │ │ ├── io_original.c │ │ │ ├── libusb-1.0.def │ │ │ ├── libusb-1.0.rc │ │ │ ├── libusb.h │ │ │ ├── libusb_original.h │ │ │ ├── libusbi.h │ │ │ ├── libusbi_original.h │ │ │ ├── os │ │ │ │ ├── android_netlink.c │ │ │ │ ├── android_usbfs.c │ │ │ │ ├── android_usbfs.h │ │ │ │ ├── darwin_usb.c │ │ │ │ ├── darwin_usb.h │ │ │ │ ├── linux_netlink.c │ │ │ │ ├── linux_udev.c │ │ │ │ ├── linux_usbfs.c │ │ │ │ ├── linux_usbfs.h │ │ │ │ ├── netbsd_usb.c │ │ │ │ ├── openbsd_usb.c │ │ │ │ ├── poll_posix.c │ │ │ │ ├── poll_posix.h │ │ │ │ ├── poll_posix_original.c │ │ │ │ ├── poll_windows.c │ │ │ │ ├── poll_windows.h │ │ │ │ ├── threads_posix.c │ │ │ │ ├── threads_posix.h │ │ │ │ ├── threads_windows.c │ │ │ │ ├── threads_windows.h │ │ │ │ ├── wince_usb.c │ │ │ │ ├── wince_usb.h │ │ │ │ ├── windows_common.h │ │ │ │ ├── windows_usb.c │ │ │ │ └── windows_usb.h │ │ │ ├── strerror.c │ │ │ ├── sync.c │ │ │ ├── sync_original.c │ │ │ ├── version.h │ │ │ └── version_nano.h │ │ ├── msvc │ │ │ ├── config.h │ │ │ ├── ddk_build.cmd │ │ │ ├── errno.h │ │ │ ├── fxload_2010.vcxproj │ │ │ ├── fxload_2010.vcxproj.filters │ │ │ ├── fxload_2012.vcxproj │ │ │ ├── fxload_2012.vcxproj.filters │ │ │ ├── fxload_2013.vcxproj │ │ │ ├── fxload_sources │ │ │ ├── getopt_2005.vcproj │ │ │ ├── getopt_2010.vcxproj │ │ │ ├── getopt_2010.vcxproj.filters │ │ │ ├── getopt_2012.vcxproj │ │ │ ├── getopt_2012.vcxproj.filters │ │ │ ├── getopt_2013.vcxproj │ │ │ ├── getopt_sources │ │ │ ├── hotplugtest_2010.vcxproj │ │ │ ├── hotplugtest_2010.vcxproj.filters │ │ │ ├── hotplugtest_2012.vcxproj │ │ │ ├── hotplugtest_2012.vcxproj.filters │ │ │ ├── hotplugtest_2013.vcxproj │ │ │ ├── hotplugtest_sources │ │ │ ├── inttypes.h │ │ │ ├── libusb.dsw │ │ │ ├── libusb_2005.sln │ │ │ ├── libusb_2010.sln │ │ │ ├── libusb_2012.sln │ │ │ ├── libusb_2013.sln │ │ │ ├── libusb_dll.dsp │ │ │ ├── libusb_dll_2005.vcproj │ │ │ ├── libusb_dll_2010.vcxproj │ │ │ ├── libusb_dll_2010.vcxproj.filters │ │ │ ├── libusb_dll_2012.vcxproj │ │ │ ├── libusb_dll_2012.vcxproj.filters │ │ │ ├── libusb_dll_2013.vcxproj │ │ │ ├── libusb_dll_wince.vcproj │ │ │ ├── libusb_sources │ │ │ ├── libusb_static.dsp │ │ │ ├── libusb_static_2005.vcproj │ │ │ ├── libusb_static_2010.vcxproj │ │ │ ├── libusb_static_2010.vcxproj.filters │ │ │ ├── libusb_static_2012.vcxproj │ │ │ ├── libusb_static_2012.vcxproj.filters │ │ │ ├── libusb_static_2013.vcxproj │ │ │ ├── libusb_static_wince.vcproj │ │ │ ├── libusb_wince.sln │ │ │ ├── listdevs.dsp │ │ │ ├── listdevs_2005.vcproj │ │ │ ├── listdevs_2010.vcxproj │ │ │ ├── listdevs_2010.vcxproj.filters │ │ │ ├── listdevs_2012.vcxproj │ │ │ ├── listdevs_2012.vcxproj.filters │ │ │ ├── listdevs_2013.vcxproj │ │ │ ├── listdevs_sources │ │ │ ├── listdevs_wince.vcproj │ │ │ ├── missing.c │ │ │ ├── missing.h │ │ │ ├── stdint.h │ │ │ ├── stress_2005.vcproj │ │ │ ├── stress_2010.vcxproj │ │ │ ├── stress_2010.vcxproj.filters │ │ │ ├── stress_2012.vcxproj │ │ │ ├── stress_2012.vcxproj.filters │ │ │ ├── stress_2013.vcxproj │ │ │ ├── stress_wince.vcproj │ │ │ ├── xusb.dsp │ │ │ ├── xusb_2005.vcproj │ │ │ ├── xusb_2010.vcxproj │ │ │ ├── xusb_2010.vcxproj.filters │ │ │ ├── xusb_2012.vcxproj │ │ │ ├── xusb_2012.vcxproj.filters │ │ │ ├── xusb_2013.vcxproj │ │ │ ├── xusb_sources │ │ │ └── xusb_wince.vcproj │ │ └── tests │ │ │ ├── Makefile.am │ │ │ ├── libusb_testlib.h │ │ │ ├── stress.c │ │ │ └── testlib.c │ ├── libuvc │ │ ├── CMakeLists.txt │ │ ├── README.md │ │ ├── android │ │ │ └── jni │ │ │ │ └── Android.mk │ │ ├── cameras │ │ │ ├── isight_imac.txt │ │ │ ├── isight_macbook.txt │ │ │ ├── ms_lifecam_show.txt │ │ │ ├── quickcampro9000.txt │ │ │ ├── quickcampro9000_builtin_ctrls.txt │ │ │ └── quickcampro9000_extra_ctrls.txt │ │ ├── changelog.txt │ │ ├── doxygen.conf │ │ ├── include │ │ │ ├── libuvc │ │ │ │ ├── libuvc.h │ │ │ │ ├── libuvc_config.h │ │ │ │ ├── libuvc_config.h.in │ │ │ │ ├── libuvc_internal.h │ │ │ │ ├── libuvc_internal_original.h │ │ │ │ └── libuvc_original.h │ │ │ └── utlist.h │ │ ├── libuvcConfig.cmake.in │ │ ├── libuvcConfigVersion.cmake.in │ │ └── src │ │ │ ├── ctrl.c │ │ │ ├── ctrl_original.c │ │ │ ├── device.c │ │ │ ├── device_original.c │ │ │ ├── diag.c │ │ │ ├── diag_original.c │ │ │ ├── example.c │ │ │ ├── frame-mjpeg.c │ │ │ ├── frame-mjpeg_original.c │ │ │ ├── frame.c │ │ │ ├── frame_original.c │ │ │ ├── init.c │ │ │ ├── init_original.c │ │ │ ├── misc.c │ │ │ ├── stream.c │ │ │ ├── stream_original.c │ │ │ └── test.c │ ├── localdefines.h │ ├── rapidjson │ │ ├── .gitmodules │ │ ├── .travis.yml │ │ ├── doc │ │ │ ├── diagram │ │ │ │ ├── insituparsing.dot │ │ │ │ ├── insituparsing.png │ │ │ │ ├── iterative-parser-states-diagram.dot │ │ │ │ ├── iterative-parser-states-diagram.png │ │ │ │ ├── makefile │ │ │ │ ├── move1.dot │ │ │ │ ├── move1.png │ │ │ │ ├── move2.dot │ │ │ │ ├── move2.png │ │ │ │ ├── move3.dot │ │ │ │ ├── move3.png │ │ │ │ ├── normalparsing.dot │ │ │ │ ├── normalparsing.png │ │ │ │ ├── simpledom.dot │ │ │ │ ├── simpledom.png │ │ │ │ ├── tutorial.dot │ │ │ │ └── tutorial.png │ │ │ ├── dom.md │ │ │ ├── encoding.md │ │ │ ├── faq.md │ │ │ ├── features.md │ │ │ ├── internals.md │ │ │ ├── logo │ │ │ │ ├── rapidjson.png │ │ │ │ └── rapidjson.svg │ │ │ ├── misc │ │ │ │ ├── DoxygenLayout.xml │ │ │ │ ├── doxygenextra.css │ │ │ │ ├── footer.html │ │ │ │ └── header.html │ │ │ ├── performance.md │ │ │ ├── sax.md │ │ │ ├── stream.md │ │ │ └── tutorial.md │ │ ├── example │ │ │ ├── capitalize │ │ │ │ └── capitalize.cpp │ │ │ ├── condense │ │ │ │ └── condense.cpp │ │ │ ├── messagereader │ │ │ │ └── messagereader.cpp │ │ │ ├── pretty │ │ │ │ └── pretty.cpp │ │ │ ├── prettyauto │ │ │ │ └── prettyauto.cpp │ │ │ ├── serialize │ │ │ │ └── serialize.cpp │ │ │ ├── simpledom │ │ │ │ └── simpledom.cpp │ │ │ ├── simplereader │ │ │ │ └── simplereader.cpp │ │ │ ├── simplewriter │ │ │ │ └── simplewriter.cpp │ │ │ └── tutorial │ │ │ │ └── tutorial.cpp │ │ ├── include │ │ │ └── rapidjson │ │ │ │ ├── allocators.h │ │ │ │ ├── document.h │ │ │ │ ├── encodedstream.h │ │ │ │ ├── encodings.h │ │ │ │ ├── error │ │ │ │ ├── en.h │ │ │ │ └── error.h │ │ │ │ ├── filereadstream.h │ │ │ │ ├── filestream.h │ │ │ │ ├── filewritestream.h │ │ │ │ ├── internal │ │ │ │ ├── dtoa.h │ │ │ │ ├── itoa.h │ │ │ │ ├── meta.h │ │ │ │ ├── pow10.h │ │ │ │ ├── stack.h │ │ │ │ └── strfunc.h │ │ │ │ ├── memorybuffer.h │ │ │ │ ├── memorystream.h │ │ │ │ ├── msinttypes │ │ │ │ ├── inttypes.h │ │ │ │ └── stdint.h │ │ │ │ ├── prettywriter.h │ │ │ │ ├── rapidjson.h │ │ │ │ ├── reader.h │ │ │ │ ├── stringbuffer.h │ │ │ │ └── writer.h │ │ ├── license.txt │ │ ├── readme.md │ │ ├── test │ │ │ ├── perftest │ │ │ │ ├── jsoncpptest.cpp │ │ │ │ ├── misctest.cpp │ │ │ │ ├── perftest.cpp │ │ │ │ ├── perftest.h │ │ │ │ ├── platformtest.cpp │ │ │ │ ├── rapidjsontest.cpp │ │ │ │ ├── ultrajsontest.cpp │ │ │ │ ├── yajl_all.c │ │ │ │ └── yajltest.cpp │ │ │ └── unittest │ │ │ │ ├── documenttest.cpp │ │ │ │ ├── encodedstreamtest.cpp │ │ │ │ ├── encodingstest.cpp │ │ │ │ ├── filestreamtest.cpp │ │ │ │ ├── jsoncheckertest.cpp │ │ │ │ ├── readertest.cpp │ │ │ │ ├── unittest.cpp │ │ │ │ ├── unittest.h │ │ │ │ ├── valuetest.cpp │ │ │ │ └── writertest.cpp │ │ └── thirdparty │ │ │ ├── jsoncpp │ │ │ ├── AUTHORS │ │ │ ├── LICENSE │ │ │ ├── README.txt │ │ │ ├── include │ │ │ │ └── json │ │ │ │ │ ├── autolink.h │ │ │ │ │ ├── config.h │ │ │ │ │ ├── features.h │ │ │ │ │ ├── forwards.h │ │ │ │ │ ├── json.h │ │ │ │ │ ├── reader.h │ │ │ │ │ ├── value.h │ │ │ │ │ └── writer.h │ │ │ ├── src │ │ │ │ ├── jsontestrunner │ │ │ │ │ ├── main.cpp │ │ │ │ │ └── sconscript │ │ │ │ ├── lib_json │ │ │ │ │ ├── json_batchallocator.h │ │ │ │ │ ├── json_internalarray.inl │ │ │ │ │ ├── json_internalmap.inl │ │ │ │ │ ├── json_reader.cpp │ │ │ │ │ ├── json_value.cpp │ │ │ │ │ ├── json_valueiterator.inl │ │ │ │ │ ├── json_writer.cpp │ │ │ │ │ └── sconscript │ │ │ │ └── test_lib_json │ │ │ │ │ ├── jsontest.cpp │ │ │ │ │ ├── jsontest.h │ │ │ │ │ ├── main.cpp │ │ │ │ │ └── sconscript │ │ │ └── version │ │ │ ├── ultrajson │ │ │ ├── README │ │ │ ├── ultrajson.h │ │ │ ├── ultrajsondec.c │ │ │ └── ultrajsonenc.c │ │ │ └── yajl │ │ │ ├── COPYING │ │ │ ├── ChangeLog │ │ │ ├── README │ │ │ ├── TODO │ │ │ ├── include │ │ │ └── yajl │ │ │ │ ├── yajl_common.h │ │ │ │ ├── yajl_gen.h │ │ │ │ ├── yajl_parse.h │ │ │ │ ├── yajl_tree.h │ │ │ │ └── yajl_version.h │ │ │ └── src │ │ │ ├── CMakeLists.txt │ │ │ ├── YAJL.dxy │ │ │ ├── api │ │ │ ├── yajl_common.h │ │ │ ├── yajl_gen.h │ │ │ ├── yajl_parse.h │ │ │ ├── yajl_tree.h │ │ │ └── yajl_version.h.cmake │ │ │ ├── yajl │ │ │ ├── yajl.c │ │ │ ├── yajl_alloc.c │ │ │ ├── yajl_alloc.h │ │ │ ├── yajl_buf.c │ │ │ ├── yajl_buf.h │ │ │ ├── yajl_bytestack.h │ │ │ ├── yajl_encode.c │ │ │ ├── yajl_encode.h │ │ │ ├── yajl_gen.c │ │ │ ├── yajl_lex.c │ │ │ ├── yajl_lex.h │ │ │ ├── yajl_parser.c │ │ │ ├── yajl_parser.h │ │ │ ├── yajl_tree.c │ │ │ └── yajl_version.c │ └── utilbase.h │ ├── java │ └── com │ │ └── serenegiant │ │ ├── encoder │ │ ├── IVideoEncoder.java │ │ ├── MediaAudioEncoder.java │ │ ├── MediaEncoder.java │ │ ├── MediaMuxerWrapper.java │ │ ├── MediaSurfaceEncoder.java │ │ ├── MediaVideoBufferEncoder.java │ │ └── MediaVideoEncoder.java │ │ ├── usb │ │ ├── DeviceFilter.java │ │ ├── IButtonCallback.java │ │ ├── IFrameCallback.java │ │ ├── IStatusCallback.java │ │ ├── Size.java │ │ ├── USBMonitor.java │ │ ├── USBVendorId.java │ │ └── UVCCamera.java │ │ ├── usbcameracommon │ │ ├── AbstractUVCCameraHandler.java │ │ ├── UVCCameraHandler.java │ │ └── UVCCameraHandlerMultiSurface.java │ │ └── widget │ │ ├── AspectRatioTextureView.java │ │ ├── CameraViewInterface.java │ │ └── UVCCameraTextureView.java │ └── res │ ├── raw │ └── camera_click.ogg │ └── xml │ └── device_filter.xml └── yasea ├── .DS_Store ├── .gitignore ├── build.gradle ├── proguard-rules.pro └── src ├── .DS_Store └── main ├── .DS_Store ├── AndroidManifest.xml ├── cpp ├── Android.mk ├── Application.mk ├── libenc │ ├── Android.mk │ └── libenc.cc ├── libx264 │ ├── AUTHORS │ ├── Android.mk │ ├── COPYING │ ├── Makefile │ ├── android_build_arm64_v8a.sh │ ├── android_build_armeabi_v7a.sh │ ├── android_build_x86.sh │ ├── common │ │ ├── aarch64 │ │ │ ├── asm-offsets.c │ │ │ ├── asm-offsets.h │ │ │ ├── asm.S │ │ │ ├── bitstream-a.S │ │ │ ├── cabac-a.S │ │ │ ├── dct-a.S │ │ │ ├── dct.h │ │ │ ├── deblock-a.S │ │ │ ├── mc-a.S │ │ │ ├── mc-c.c │ │ │ ├── mc.h │ │ │ ├── pixel-a.S │ │ │ ├── pixel.h │ │ │ ├── predict-a.S │ │ │ ├── predict-c.c │ │ │ ├── predict.h │ │ │ ├── quant-a.S │ │ │ └── quant.h │ │ ├── arm │ │ │ ├── asm.S │ │ │ ├── bitstream-a.S │ │ │ ├── cpu-a.S │ │ │ ├── dct-a.S │ │ │ ├── dct.h │ │ │ ├── deblock-a.S │ │ │ ├── mc-a.S │ │ │ ├── mc-c.c │ │ │ ├── mc.h │ │ │ ├── pixel-a.S │ │ │ ├── pixel.h │ │ │ ├── predict-a.S │ │ │ ├── predict-c.c │ │ │ ├── predict.h │ │ │ ├── quant-a.S │ │ │ └── quant.h │ │ ├── bitstream.c │ │ ├── bitstream.h │ │ ├── cabac.c │ │ ├── cabac.h │ │ ├── common.c │ │ ├── common.h │ │ ├── cpu.c │ │ ├── cpu.h │ │ ├── dct.c │ │ ├── dct.h │ │ ├── deblock.c │ │ ├── frame.c │ │ ├── frame.h │ │ ├── macroblock.c │ │ ├── macroblock.h │ │ ├── mc.c │ │ ├── mc.h │ │ ├── mips │ │ │ ├── dct-c.c │ │ │ ├── dct.h │ │ │ ├── deblock-c.c │ │ │ ├── macros.h │ │ │ ├── mc-c.c │ │ │ ├── mc.h │ │ │ ├── pixel-c.c │ │ │ ├── pixel.h │ │ │ ├── predict-c.c │ │ │ ├── predict.h │ │ │ ├── quant-c.c │ │ │ └── quant.h │ │ ├── mvpred.c │ │ ├── opencl.c │ │ ├── opencl.h │ │ ├── opencl │ │ │ ├── bidir.cl │ │ │ ├── downscale.cl │ │ │ ├── intra.cl │ │ │ ├── motionsearch.cl │ │ │ ├── subpel.cl │ │ │ ├── weightp.cl │ │ │ └── x264-cl.h │ │ ├── osdep.c │ │ ├── osdep.h │ │ ├── pixel.c │ │ ├── pixel.h │ │ ├── ppc │ │ │ ├── dct.c │ │ │ ├── dct.h │ │ │ ├── deblock.c │ │ │ ├── mc.c │ │ │ ├── mc.h │ │ │ ├── pixel.c │ │ │ ├── pixel.h │ │ │ ├── ppccommon.h │ │ │ ├── predict.c │ │ │ ├── predict.h │ │ │ ├── quant.c │ │ │ └── quant.h │ │ ├── predict.c │ │ ├── predict.h │ │ ├── quant.c │ │ ├── quant.h │ │ ├── rectangle.c │ │ ├── rectangle.h │ │ ├── set.c │ │ ├── set.h │ │ ├── threadpool.c │ │ ├── threadpool.h │ │ ├── vlc.c │ │ ├── win32thread.c │ │ ├── win32thread.h │ │ └── x86 │ │ │ ├── bitstream-a.asm │ │ │ ├── cabac-a.asm │ │ │ ├── const-a.asm │ │ │ ├── cpu-a.asm │ │ │ ├── dct-32.asm │ │ │ ├── dct-64.asm │ │ │ ├── dct-a.asm │ │ │ ├── dct.h │ │ │ ├── deblock-a.asm │ │ │ ├── mc-a.asm │ │ │ ├── mc-a2.asm │ │ │ ├── mc-c.c │ │ │ ├── mc.h │ │ │ ├── pixel-32.asm │ │ │ ├── pixel-a.asm │ │ │ ├── pixel.h │ │ │ ├── predict-a.asm │ │ │ ├── predict-c.c │ │ │ ├── predict.h │ │ │ ├── quant-a.asm │ │ │ ├── quant.h │ │ │ ├── sad-a.asm │ │ │ ├── sad16-a.asm │ │ │ ├── trellis-64.asm │ │ │ ├── util.h │ │ │ ├── x86inc.asm │ │ │ └── x86util.asm │ ├── config.guess │ ├── config.sub │ ├── configure │ ├── doc │ │ ├── ratecontrol.txt │ │ ├── regression_test.txt │ │ ├── standards.txt │ │ ├── threads.txt │ │ └── vui.txt │ ├── encoder │ │ ├── analyse.c │ │ ├── analyse.h │ │ ├── cabac.c │ │ ├── cavlc.c │ │ ├── encoder.c │ │ ├── lookahead.c │ │ ├── macroblock.c │ │ ├── macroblock.h │ │ ├── me.c │ │ ├── me.h │ │ ├── ratecontrol.c │ │ ├── ratecontrol.h │ │ ├── rdo.c │ │ ├── set.c │ │ ├── set.h │ │ ├── slicetype-cl.c │ │ └── slicetype.c │ ├── example.c │ ├── extras │ │ ├── avisynth_c.h │ │ ├── avxsynth_c.h │ │ ├── cl.h │ │ ├── cl_platform.h │ │ ├── getopt.c │ │ ├── getopt.h │ │ ├── intel_dispatcher.h │ │ ├── inttypes.h │ │ └── stdint.h │ ├── filters │ │ ├── filters.c │ │ ├── filters.h │ │ └── video │ │ │ ├── cache.c │ │ │ ├── crop.c │ │ │ ├── depth.c │ │ │ ├── fix_vfr_pts.c │ │ │ ├── internal.c │ │ │ ├── internal.h │ │ │ ├── resize.c │ │ │ ├── select_every.c │ │ │ ├── source.c │ │ │ ├── video.c │ │ │ └── video.h │ ├── input │ │ ├── avs.c │ │ ├── ffms.c │ │ ├── input.c │ │ ├── input.h │ │ ├── lavf.c │ │ ├── raw.c │ │ ├── thread.c │ │ ├── timecode.c │ │ └── y4m.c │ ├── libs │ │ ├── arm64-v8a │ │ │ └── libx264.a │ │ ├── armeabi-v7a │ │ │ └── libx264.a │ │ └── x86 │ │ │ └── libx264.a │ ├── output │ │ ├── flv.c │ │ ├── flv_bytestream.c │ │ ├── flv_bytestream.h │ │ ├── matroska.c │ │ ├── matroska_ebml.c │ │ ├── matroska_ebml.h │ │ ├── mp4.c │ │ ├── mp4_lsmash.c │ │ ├── output.h │ │ └── raw.c │ ├── tools │ │ ├── checkasm-a.asm │ │ ├── checkasm-aarch64.S │ │ ├── checkasm-arm.S │ │ ├── checkasm.c │ │ ├── cltostr.sh │ │ ├── countquant_x264.pl │ │ ├── digress │ │ │ ├── __init__.py │ │ │ ├── cli.py │ │ │ ├── comparers.py │ │ │ ├── constants.py │ │ │ ├── errors.py │ │ │ ├── scm │ │ │ │ ├── __init__.py │ │ │ │ ├── dummy.py │ │ │ │ └── git.py │ │ │ └── testing.py │ │ ├── gas-preprocessor.pl │ │ ├── msvsdepend.sh │ │ ├── q_matrix_jvt.cfg │ │ └── test_x264.py │ ├── version.sh │ ├── x264.c │ ├── x264.h │ ├── x264_config.h │ ├── x264cli.h │ ├── x264dll.c │ └── x264res.rc └── libyuv │ ├── Android.mk │ ├── LICENSE │ ├── include │ ├── 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 │ │ ├── mjpeg_decoder.h │ │ ├── planar_functions.h │ │ ├── rotate.h │ │ ├── rotate_argb.h │ │ ├── rotate_row.h │ │ ├── row.h │ │ ├── scale.h │ │ ├── scale_argb.h │ │ ├── scale_row.h │ │ ├── version.h │ │ └── video_common.h │ └── source │ ├── compare.cc │ ├── compare_common.cc │ ├── compare_gcc.cc │ ├── compare_neon.cc │ ├── compare_neon64.cc │ ├── compare_win.cc │ ├── convert.cc │ ├── convert_argb.cc │ ├── convert_from.cc │ ├── convert_from_argb.cc │ ├── convert_jpeg.cc │ ├── convert_to_argb.cc │ ├── convert_to_i420.cc │ ├── cpu_id.cc │ ├── mjpeg_decoder.cc │ ├── mjpeg_validate.cc │ ├── planar_functions.cc │ ├── rotate.cc │ ├── rotate_any.cc │ ├── rotate_argb.cc │ ├── rotate_common.cc │ ├── rotate_gcc.cc │ ├── rotate_mips.cc │ ├── rotate_neon.cc │ ├── rotate_neon64.cc │ ├── rotate_win.cc │ ├── row_any.cc │ ├── row_common.cc │ ├── row_gcc.cc │ ├── row_mips.cc │ ├── row_neon.cc │ ├── row_neon64.cc │ ├── row_win.cc │ ├── scale.cc │ ├── scale_any.cc │ ├── scale_argb.cc │ ├── scale_common.cc │ ├── scale_gcc.cc │ ├── scale_mips.cc │ ├── scale_neon.cc │ ├── scale_neon64.cc │ ├── scale_win.cc │ └── video_common.cc └── java ├── .DS_Store ├── com └── youngwu │ └── live │ ├── UVCCameraGLSurfaceView.java │ └── UVCPublisher.java └── net ├── .DS_Store └── ossrs ├── .DS_Store └── yasea ├── SrsAllocator.java ├── SrsCameraGLSurfaceView.java ├── SrsEncodeHandler.java ├── SrsEncoder.java ├── SrsFlvMuxer.java ├── SrsLiveConfig.java ├── SrsMp4Muxer.java ├── SrsPublisher.java └── SrsRecordHandler.java /.bash_profile: -------------------------------------------------------------------------------- 1 | ANDROID_HOME=/Library/Android/sdk 2 | export PATH=${PATH}:${ANDROID_HOME}/tools 3 | export PATH=${PATH}:${ANDROID_HOME}/platform-tools 4 | NDK_HOME=/Library/Android/ndk/android-ndk-r17c 5 | export PATH=${PATH}:${NDK_HOME} 6 | NDK_HOST_PLATFORM=darwin-x86_64 7 | export PATH=${PATH}:#NDK_HOST_PLATFORM 8 | JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_221.jdk/Contents/Home 9 | export PATH=${PATH}:${JAVA_HOME}/lib 10 | export PATH=${PATH}:${JAVA_HOME}/bin 11 | GRADLE_HOME=/Users/YoungWu/.gradle/wrapper/dists/gradle-5.4.1-all/3221gyojl5jsh0helicew7rwx/gradle-5.4.1 12 | export PATH=${PATH}:${GRADLE_HOME}/bin -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Gradle文件目录 2 | .gradle 3 | 4 | # local配置文件 5 | local.properties 6 | 7 | # Intellij文件 8 | *.iml 9 | .idea 10 | .DS_Store -------------------------------------------------------------------------------- /app/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /app/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # You can control the set of applied configuration files using the 3 | # proguardFiles setting in build.gradle. 4 | # 5 | # For more details, see 6 | # http://developer.android.com/guide/developing/tools/proguard.html 7 | 8 | # If your project uses WebView with JS, uncomment the following 9 | # and specify the fully qualified class name to the JavaScript interface 10 | # class: 11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 12 | # public *; 13 | #} 14 | 15 | # Uncomment this to preserve the line number information for 16 | # debugging stack traces. 17 | #-keepattributes SourceFile,LineNumberTable 18 | 19 | # If you keep the line number information, uncomment this to 20 | # hide the original source file name. 21 | #-renamesourcefileattribute SourceFile 22 | -------------------------------------------------------------------------------- /app/release/app-release.apk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yinyangwu/BajieRTMPLive/2843e7f4f3dd88602a6e192c8b2a3da1a0c05d63/app/release/app-release.apk -------------------------------------------------------------------------------- /app/release/output.json: -------------------------------------------------------------------------------- 1 | [{"outputType":{"type":"APK"},"apkData":{"type":"MAIN","splits":[],"versionCode":1,"versionName":"1.0.0","enabled":true,"outputFile":"app-release.apk","fullName":"release","baseName":"release"},"path":"app-release.apk","properties":{}}] -------------------------------------------------------------------------------- /app/src/main/java/com/bajie/uvccamera/rtmplive/application/MyApplication.java: -------------------------------------------------------------------------------- 1 | package com.bajie.uvccamera.rtmplive.application; 2 | 3 | import android.support.multidex.MultiDexApplication; 4 | 5 | import com.orhanobut.logger.AndroidLogAdapter; 6 | import com.orhanobut.logger.Logger; 7 | 8 | /** 9 | * Desc:UVCCamera直播 10 | *

11 | * Created by YoungWu on 2019/7/5. 12 | */ 13 | public class MyApplication extends MultiDexApplication { 14 | 15 | @Override 16 | public void onCreate() { 17 | super.onCreate(); 18 | Logger.addLogAdapter(new AndroidLogAdapter()); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /app/src/main/java/com/bajie/uvccamera/rtmplive/base/BaseActivity.java: -------------------------------------------------------------------------------- 1 | package com.bajie.uvccamera.rtmplive.base; 2 | 3 | import android.app.Activity; 4 | import android.os.Bundle; 5 | 6 | import com.bajie.uvccamera.rtmplive.callback.IBase; 7 | 8 | /** 9 | * desc: 基类activity 10 | * create at: 2016/9/19 9:41 11 | * create by: yyw 12 | */ 13 | public abstract class BaseActivity extends Activity implements IBase { 14 | protected Activity activity; 15 | 16 | @Override 17 | protected void onCreate(Bundle savedInstanceState) { 18 | super.onCreate(savedInstanceState); 19 | activity = this; 20 | setContentView(getLayout()); 21 | initView(savedInstanceState); 22 | initData(); 23 | setListener(); 24 | } 25 | 26 | @Override 27 | public void initData() { 28 | 29 | } 30 | 31 | @Override 32 | public void setListener() { 33 | 34 | } 35 | 36 | } 37 | -------------------------------------------------------------------------------- /app/src/main/java/com/bajie/uvccamera/rtmplive/callback/IBase.java: -------------------------------------------------------------------------------- 1 | package com.bajie.uvccamera.rtmplive.callback; 2 | 3 | /** 4 | * desc:基础接口 5 | * create at: 2016/9/20 14:47 6 | * create by: yyw 7 | */ 8 | public interface IBase { 9 | 10 | /** 11 | * 获取总体布局 12 | * 13 | * @return layoutID 14 | */ 15 | int getLayout(); 16 | 17 | /** 18 | * 初始化视图 19 | */ 20 | void initView(Object obj); 21 | 22 | /** 23 | * 初始化数据 24 | */ 25 | void initData(); 26 | 27 | /** 28 | * 设置监听器 29 | */ 30 | void setListener(); 31 | } 32 | -------------------------------------------------------------------------------- /app/src/main/java/com/bajie/uvccamera/rtmplive/util/TestConfig.java: -------------------------------------------------------------------------------- 1 | package com.bajie.uvccamera.rtmplive.util; 2 | 3 | /** 4 | * Desc:测试信息 5 | *

6 | * Created by YoungWu on 2019/7/30. 7 | */ 8 | public class TestConfig { 9 | /** 10 | * 测试推流地址 11 | */ 12 | public static final String TEST_URL = "rtmp://119.29.184.33:1935/live/livestream_863134036763822"; 13 | } 14 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_main.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 15 | 16 |