PK!! p)com/example/mp4composer/BuildConfig.class3+  ! "#$DEBUGZLIBRARY_PACKAGE_NAMELjava/lang/String; ConstantValue% BUILD_TYPE& VERSION_CODEI VERSION_NAME'()VCodeLineNumberTableLocalVariableTablethis%Lcom/example/mp4composer/BuildConfig; SourceFileBuildConfig.java true( )* #com/example/mp4composer/BuildConfigjava/lang/Objectcom.example.mp4composerdebug1.0java/lang/Boolean parseBoolean(Ljava/lang/String;)Z1        /* ! PK!!495&com/example/mp4composer/FillMode.class3G : ;<= > ? ? @ A BCPRESERVE_ASPECT_FIT"Lcom/example/mp4composer/FillMode;PRESERVE_ASPECT_CROPCUSTOM$VALUES#[Lcom/example/mp4composer/FillMode;values%()[Lcom/example/mp4composer/FillMode;CodeLineNumberTablevalueOf6(Ljava/lang/String;)Lcom/example/mp4composer/FillMode;LocalVariableTablenameLjava/lang/String;(Ljava/lang/String;I)Vthis Signature()VgetScaleAspectFit (IIIII)[FcxIanglewidthInheightInwidthOut heightOutscale[F aspectRatioInFheightOutCalculated StackMapTable-getScaleAspectCropwidthOutCalculatedaspectRatioOut4Ljava/lang/Enum; SourceFile FillMode.java  DE com/example/mp4composer/FillMode F    java/lang/Enumclone()Ljava/lang/Object;5(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Enum;@1@@@ "  4 *  1*+  !" #$`Y QY Q: [QQZ  6<=n8n8nQjnQ2 $'),3:CP]\ '%&`'&`(&`)&`*&`+& S,-3-./:&0/1$2# 3$F kY QY Q: [QQZ  6<=n8n8j8nQn8nQ>" #$$%'&)',*3+;-C.K/T0W1^2h5p '%&K 4/^ 0/k'&k(&k)&k*&k+& ^,-38./;05/1$2*6"eAY Y  Y  Y SY SY S  '!789PK!! ,\i2com/example/mp4composer/FillModeCustomItem$1.class3, !" # $ %&')()VCodeLineNumberTableLocalVariableTablethis InnerClasses.Lcom/example/mp4composer/FillModeCustomItem$1;createFromParcelA(Landroid/os/Parcel;)Lcom/example/mp4composer/FillModeCustomItem;sourceLandroid/os/Parcel;newArray0(I)[Lcom/example/mp4composer/FillModeCustomItem;sizeI(I)[Ljava/lang/Object;'(Landroid/os/Parcel;)Ljava/lang/Object; SignatureCreator_Ljava/lang/Object;Landroid/os/Parcelable$Creator; SourceFileFillModeCustomItem.javaEnclosingMethod *com/example/mp4composer/FillModeCustomItem *  ,com/example/mp4composer/FillModeCustomItem$1java/lang/Object+android/os/Parcelable$Creator(Landroid/os/Parcel;)Vandroid/os/Parcelable0  /* K  = Y+ N    9 S A 0* K A 0*+ K  ( PK!!qy  0com/example/mp4composer/FillModeCustomItem.class3N : ; < = > ? @ AB ACD : EFGH InnerClassesscaleFrotate translateX translateY videoWidth videoHeightCREATORICreatorLandroid/os/Parcelable$Creator; SignatureMLandroid/os/Parcelable$Creator; (FFFFFF)VCodeLineNumberTableLocalVariableTablethis,Lcom/example/mp4composer/FillModeCustomItem;getScale()F getRotate getTranslateX getTranslateY getVideoWidthgetVideoHeightdescribeContents()I writeToParcel(Landroid/os/Parcel;I)VdestLandroid/os/Parcel;flagsI(Landroid/os/Parcel;)Vin()V SourceFileFillModeCustomItem.java 7      J KL M&,com/example/mp4composer/FillModeCustomItem$1 *com/example/mp4composer/FillModeCustomItemjava/lang/Objectandroid/os/Parcelableandroid/os/Parcelable$Creatorandroid/os/Parcel writeFloat(F)V readFloat!   &**#*$*%***!" %"H&#$&&&&&&%& /*!" #$'& /*! " #$(& /*!$" #$)& /*!(" #$*& /*!," #$+& /*!0" #$,- ,!5" #$./ 1+*+*+*+*+*+*!:;<= >(?0@" 1#$1011234 5**+ *+ *+ *+ *+ *+ !"BC DEF$G,H4I"5#$55167 # Y !K89  PK!!wHH&com/example/mp4composer/Rotation.class3J 7 89: ; < = > ? @ A B C DENORMAL"Lcom/example/mp4composer/Rotation; ROTATION_90 ROTATION_180 ROTATION_270rotationI$VALUES#[Lcom/example/mp4composer/Rotation;values%()[Lcom/example/mp4composer/Rotation;CodeLineNumberTablevalueOf6(Ljava/lang/String;)Lcom/example/mp4composer/Rotation;LocalVariableTablenameLjava/lang/String;(Ljava/lang/String;II)Vthis Signature(I)V getRotation()IfromInt%(I)Lcom/example/mp4composer/Rotation;rotate calcRotate StackMapTable()V4Ljava/lang/Enum; SourceFile Rotation.java  FG com/example/mp4composer/Rotation !H &I   +,  &'   java/lang/Enumclone()Ljava/lang/Object;5(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Enum;(Ljava/lang/String;I)V@1@@@@ "   !"4 * #  $%&'H *+*  # ( )*+,/* # ( -.;<h ĄM,>6,2:    %17!# % ;/901 23]Y  Y Z Y Y Y SYSYSYS   - =)456PK!!n0(com/example/mp4composer/SampleType.class30 $ %&' ( ) ) * +,VIDEO$Lcom/example/mp4composer/SampleType;AUDIO$VALUES%[Lcom/example/mp4composer/SampleType;values'()[Lcom/example/mp4composer/SampleType;CodeLineNumberTablevalueOf8(Ljava/lang/String;)Lcom/example/mp4composer/SampleType;LocalVariableTablenameLjava/lang/String;(Ljava/lang/String;I)Vthis Signature()V6Ljava/lang/Enum; SourceFileSampleType.java  -."com/example/mp4composer/SampleType /   java/lang/Enumclone()Ljava/lang/Object;5(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Enum;@1 @ @ "  4 *  1*+  F.Y Y  Y SY S!"#PK!!,,1com/example/mp4composer/VideoFormatMimeType.class3P 8 9:#; < = >?@ A BC DE FG HI JKHEVC-Lcom/example/mp4composer/VideoFormatMimeType;AVCMPEG4H263AUTOvideoFormatMimeTypeLjava/lang/String;$VALUES.[Lcom/example/mp4composer/VideoFormatMimeType;values0()[Lcom/example/mp4composer/VideoFormatMimeType;CodeLineNumberTablevalueOfA(Ljava/lang/String;)Lcom/example/mp4composer/VideoFormatMimeType;LocalVariableTablename((Ljava/lang/String;ILjava/lang/String;)Vthis Signature(Ljava/lang/String;)V getFormat()Ljava/lang/String;()V?Ljava/lang/Enum; SourceFileVideoFormatMimeType.java "## LM+com/example/mp4composer/VideoFormatMimeType (N ,O !android/media/MediaFormat video/hevc ,-  video/avc  video/mp4v-es  video/3gpp  java/lang/Enumclone()Ljava/lang/Object;5(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Enum;(Ljava/lang/String;I)V@1@@@@@ !"# $%&" ' ()&4 *'*  +!,-&H *+*-' * . !/012&/*'* .34&qY Y  Y Y Y Y SYSYSYSYS'- < K/567PK!!63com/example/mp4composer/composer/AudioChannel.class3 } ~ <      <  < - <      < < < - - < - < -B@ < < < R(Landroid/media/MediaCodec;Landroid/media/MediaCodec;Landroid/media/MediaFormat;)VCodeLineNumberTableLocalVariableTablethis/Lcom/example/mp4composer/composer/AudioChannel;decoderLandroid/media/MediaCodec;encoder encodeFormatLandroid/media/MediaFormat;setActualDecodedFormat(Landroid/media/MediaFormat;)V decodedFormat StackMapTabledrainDecoderBufferAndQueue(IJ)V bufferIndexIpresentationTimeUsJdataLjava/nio/ByteBuffer;buffer AudioBuffer InnerClasses?Lcom/example/mp4composer/composer/BaseAudioChannel$AudioBuffer;RuntimeInvisibleAnnotations!Landroidx/annotation/RequiresApi;api feedEncoder(J)Z timeoutUs hasOverflowZencoderInBuffIndex outBufferLjava/nio/ShortBuffer;inBuffersampleCountToDurationUs(JII)J sampleCount sampleRate channelCount drainOverflow(Ljava/nio/ShortBuffer;)JoutBuff overflowBuff overflowLimit overflowSizebeginPresentationTimeUsremixAndMaybeFillOverflowX(Lcom/example/mp4composer/composer/BaseAudioChannel$AudioBuffer;Ljava/nio/ShortBuffer;)JconsumedDurationUsinputinBuff SourceFileAudioChannel.java => IJ P'java/lang/UnsupportedOperationExceptionjava/lang/StringBuilder =Input channel count ( ) not supported. = Hjava/lang/RuntimeExceptionBuffer received before format!1com/example/mp4composer/composer/BaseAudioChannel DE  =com/example/mp4composer/composer/BaseAudioChannel$AudioBuffer OP QR Sh X    FE op android/media/MediaCodec vw P P jk -com/example/mp4composer/composer/AudioChanneljava/nio/ByteBufferjava/nio/ShortBufferinputChannelCount()Vappend-(Ljava/lang/String;)Ljava/lang/StringBuilder;(I)Ljava/lang/StringBuilder;toString()Ljava/lang/String;(Ljava/lang/String;)VactualDecodedFormatgetOutputBuffer(I)Ljava/nio/ByteBuffer; emptyBuffersLjava/util/Queue;java/util/Queuepoll()Ljava/lang/Object; asShortBuffer()Ljava/nio/ShortBuffer;overflowBuffercapacity()IallocateDirectjava/nio/ByteOrder nativeOrder()Ljava/nio/ByteOrder;order+(Ljava/nio/ByteOrder;)Ljava/nio/ByteBuffer;clear()Ljava/nio/Buffer;java/nio/Bufferflip filledBuffersadd(Ljava/lang/Object;)Z hasRemaining()ZisEmptydequeueInputBuffer(J)IgetInputBufferpositionqueueInputBuffer(IIIJI)VreleaseOutputBuffer(IZ)Vlimit remaininginputSampleRateoutputChannelCount(I)Ljava/nio/Buffer;put.(Ljava/nio/ShortBuffer;)Ljava/nio/ShortBuffer; <=>?T*+,-@ A*BCDEFEGHIJ?9*+*.*&YY*   @8!A9BC9KHL8MN?f* Y *:*: Y: *)* *!"W*#$W@J'(+-$/2071@4F5L6_8i9o:u;{<=@AA4BCOPQR$xST2jUXL.GYYZVZ[YZZ\2] ^_I`ab? **%>*#& *'(6*'):!**7*'+h,*#:*' ,*.7*'+h,*/*$W@fFG-I/L9M>O@SNTRUZVcWkVnYp\~]^_bcdcfghkARZQRBCcRde9fPNgh~ViX4QRL@/\%Z;] ^_I`jk?U 0imm@pA* BC lR mP nPop?`*M,2>,36**,+*4*56a7+!W,+78W+,9W+7,!:W ,8W@2 tu vxy.{3}<BKW]A>`BC`qhXrh SsPMtP.2uRLW[\\vw?!w+N*:,!W-!W-3,3L-,78W,-9W--78W*-+*4*67-9W;W*+a ,-9W+@B#,2;=NU[ilrA>NxRwBCwyXwqhrzhirhL l\\{|W V PK!!M!Ħ9com/example/mp4composer/composer/AudioChannelWithSP.class3  ? ? ? ? ? ? ? ? ?  ?      ? ?   It$ ? " ? : ? :   ? ? : ? ? ? ? ?  : ? : TAGLjava/lang/String; ConstantValuestream6Lcom/example/mp4composer/composer/SonicAudioProcessor; timeScaleFisEOFZBUFFER_CAPACITYItotalDataAddedJpendingDecoderOutputBuffIndxtempInputBufferLjava/nio/ByteBuffer;isPendingFeedingisAffectInPitchT(Landroid/media/MediaCodec;Landroid/media/MediaCodec;Landroid/media/MediaFormat;FZ)VCodeLineNumberTableLocalVariableTablethis5Lcom/example/mp4composer/composer/AudioChannelWithSP;decoderLandroid/media/MediaCodec;encoder encodeFormatLandroid/media/MediaFormat;isPitchChangedsetActualDecodedFormat(Landroid/media/MediaFormat;)V decodedFormat StackMapTablesampleCountToDurationUs(JII)J sampleCount sampleRate channelCountdrainDecoderBufferAndQueue(IJ)V bufferIndexpresentationTimeUsdataRuntimeInvisibleAnnotations!Landroidx/annotation/RequiresApi;api feedEncoder(J)Z timeoutUsencoderInBuffIndexstatusupdatePendingDecoderStatus()VFastOrNormalTimeBufferProcess(I)Z samplesNum rawDataLenslowTimeBufferProcessfinalizeEncoderQueuereadStreamDataAndQueueToEncoder(II)ZcapacityrawData[SqueueInputBufferInEncoder([SI)Z outBufferLjava/nio/ShortBuffer;writeToSonicSteam(Ljava/nio/ShortBuffer;)VtemBuffisAnyPendingBuffIndex()Z SourceFileAudioChannelWithSP.java S DE FG HI JK LM NK OP QI RI `a K'java/lang/UnsupportedOperationExceptionjava/lang/StringBuilder SyInput channel count ( ) not supported. S4com/example/mp4composer/composer/SonicAudioProcessor K K S  1com/example/mp4composer/composer/BaseAudioChannel ^java/lang/RuntimeExceptionBuffer received before format! Z[ y xy \[ ~{ z{ {  de android/media/MediaCodec 3com/example/mp4composer/composer/AudioChannelWithSPAUDIO_CHANNEL_WITH_SONICjava/nio/ByteBufferjava/nio/ShortBufferR(Landroid/media/MediaCodec;Landroid/media/MediaCodec;Landroid/media/MediaFormat;)VinputChannelCountappend-(Ljava/lang/String;)Ljava/lang/StringBuilder;(I)Ljava/lang/StringBuilder;toString()Ljava/lang/String;(Ljava/lang/String;)VinputSampleRateoutputChannelCount(II)VallocateDirect(I)Ljava/nio/ByteBuffer;java/nio/ByteOrder nativeOrder()Ljava/nio/ByteOrder;order+(Ljava/nio/ByteOrder;)Ljava/nio/ByteBuffer;setRate(F)VsetSpeedactualDecodedFormatgetOutputBuffer asShortBuffer()Ljava/nio/ShortBuffer;releaseOutputBuffer(IZ)V flushStreamsamplesAvailable()IdequeueInputBuffer(J)IreadShortFromStream([SI)IgetInputBufferclear()Ljava/nio/Buffer;put([S)Ljava/nio/ShortBuffer;queueInputBuffer(IIIJI)VgetrewindwriteShortToStream([SI)V!? @ABCDEFGHIJKLMNKOPQIRI STU>*+,-** *** *** * *V2  "',1!7"=#W>>XY>Z[>\[>]^>FG>_I`aU*+ * & YY* *Y**** * **h* ****V2 ') *0,C-H.M/R0f2m3{57WXYb^c0J deUZ  jj jjnV<W*XYfMgKhKijUU*! "Y#$ *%&:"*'(***%)***V2 CDGI$K)L2M7N<OHQORTTW*UXYUkKUlM$1mPcGn%n o pqIrstU** **+ *,*/* &*+*+*h* *,*-.>6* */6 *06V:Z]#_%`RbVdXgaiekgnjosp}ruW*XYuMa&vKjwIc2o pqIrxyUI**Vz{ }W XYc z{UN*+=>*h6* **1* *1*  *2V*  %3;FLW4NXYNvKF|K DwI<}Kc %o pqIr~{UV*+=>*h6* **1** *1* *2V*  %:BNTW4VXYVvKN|K LwID}Kc %o pqIr{UD * *3V W XY vKo pqIrUj N*-*l4W*-3VW*XYKvKo pqIrUY*-5'N-6W+9-+7W*Y+a****87*-+h9*- 9V* '9IKWW49lMYXYYYvK McKo pqIrUp"+; M+,V !W "XY"mUG *V W  XYc PK!!&4com/example/mp4composer/composer/AudioComposer.class3 +o pq *rs o *t *u *v *w xy xz *{ *| *} ~    * *  *        * TAGLjava/lang/String; ConstantValuemediaExtractorLandroid/media/MediaExtractor; trackIndexI muxRender,Lcom/example/mp4composer/composer/MuxRender; sampleType$Lcom/example/mp4composer/SampleType; bufferInfo BufferInfo InnerClasses%Landroid/media/MediaCodec$BufferInfo; bufferSizebufferLjava/nio/ByteBuffer;isEOSZwrittenPresentationTimeUsJ trimStartUs trimEndUsloggerLjava/util/logging/Logger;j(Landroid/media/MediaExtractor;ILcom/example/mp4composer/composer/MuxRender;JJLjava/util/logging/Logger;)VCodeLineNumberTableLocalVariableTablethis0Lcom/example/mp4composer/composer/AudioComposer; trimStartMs trimEndMsactualOutputFormatLandroid/media/MediaFormat; StackMapTable$RuntimeInvisibleParameterAnnotationsLandroidx/annotation/NonNull; stepPipeline()Z sampleSize isKeyFrameflagsRuntimeInvisibleAnnotations!Landroidx/annotation/RequiresApi;api!Landroid/annotation/SuppressLint;valueAssertgetWrittenPresentationTimeUs()J isFinishedsetup()Vrelease SourceFileAudioComposer.java Hk 8 78#android/media/MediaCodec$BufferInfo 9< 12 34 56 DC EC FG  android/media/MediaFormatmax-input-size =4  >?android/media/MediaExtractor @A android/media/MediaCodec h BC \.com/example/mp4composer/composer/AudioComposerjava/lang/Object/com/example/mp4composer/composer/IAudioComposer AudioComposer*com/example/mp4composer/composer/MuxRenderjava/util/logging/Logger"com/example/mp4composer/SampleTypeAUDIOjava/util/concurrent/TimeUnit MILLISECONDSLjava/util/concurrent/TimeUnit;toMicros(J)JgetTrackFormat(I)Landroid/media/MediaFormat;setOutputFormatB(Lcom/example/mp4composer/SampleType;Landroid/media/MediaFormat;)V containsKey(Ljava/lang/String;)Z getInteger(Ljava/lang/String;)Ijava/nio/ByteBufferallocateDirect(I)Ljava/nio/ByteBuffer;java/nio/ByteOrder nativeOrder()Ljava/nio/ByteOrder;order+(Ljava/nio/ByteOrder;)Ljava/nio/ByteBuffer;seekTo(JI)VgetSampleTrackIndex()Iclear()Ljava/nio/Buffer;set(IIJI)VwriteSampleDataa(Lcom/example/mp4composer/SampleType;Ljava/nio/ByteBuffer;Landroid/media/MediaCodec$BufferInfo;)VreadSampleData(Ljava/nio/ByteBuffer;I)IgetSampleFlags getSampleTimeadvance *+, -./0123456789<=4>?@ABCDCECFGHIJ ***Y*+**- *  *   ***: * * *   **+* K>* +, -%.1/K0Q2^3k4567LRMN123456OCPCFG^BQR Sn@TUVWTTUVWT7TUVWXTTUVWXTYZZZ[\J** <0*!W* #* ***$***!W**%=**h***&~>6*'* B*'** (**'#* ***$**'(*)WKZ= >?@A(B;C@DBFLHTIaJiLpMOPRSTWXYL4MN34a]4n^Ac_4S 8 4@@*$`abIcde[sfghJ/*(K^L MNi\J/*KcL MNjkJ+KiL MNlkJ+KnL MNmn; ":PK!!/122Ccom/example/mp4composer/composer/BaseAudioChannel$AudioBuffer.class3  bufferIndexIpresentationTimeUsJdataLjava/nio/ShortBuffer;()VCodeLineNumberTableLocalVariableTablethis AudioBuffer InnerClasses?Lcom/example/mp4composer/composer/BaseAudioChannel$AudioBuffer; SourceFileBaseAudioChannel.java =com/example/mp4composer/composer/BaseAudioChannel$AudioBufferjava/lang/Object1com/example/mp4composer/composer/BaseAudioChannel!   /*    PK!!DBcom/example/mp4composer/composer/BaseAudioChannel$BufferInfo.class3  totaldataJpresentationTimeUs()VCodeLineNumberTableLocalVariableTablethis BufferInfo InnerClasses>Lcom/example/mp4composer/composer/BaseAudioChannel$BufferInfo; SourceFileBaseAudioChannel.java ; filledBuffersdecoderLandroid/media/MediaCodec;encoder encodeFormatLandroid/media/MediaFormat;inputSampleRateinputChannelCountoutputChannelCountoverflowBuffer?Lcom/example/mp4composer/composer/BaseAudioChannel$AudioBuffer;actualDecodedFormatR(Landroid/media/MediaCodec;Landroid/media/MediaCodec;Landroid/media/MediaFormat;)VCodeLineNumberTableLocalVariableTablethis3Lcom/example/mp4composer/composer/BaseAudioChannel;setActualDecodedFormat(Landroid/media/MediaFormat;)V decodedFormat StackMapTablesampleCountToDurationUs(JII)JdrainDecoderBufferAndQueue(IJ)V feedEncoder(J)Z SourceFileBaseAudioChannel.java @qjava/util/ArrayDeque 01 41=com/example/mp4composer/composer/BaseAudioChannel$AudioBuffer => 56 76 89 ?9android/media/MediaFormat sample-rate rs :&'java/lang/UnsupportedOperationException/Audio sample rate conversion not supported yet. @t channel-count ;& <&java/lang/StringBuilderOutput channel count ( uv uw) not supported. xy z-1com/example/mp4composer/composer/BaseAudioChanneljava/lang/Object?9@AB5**Y*Y*Y*+ *, *- C"/ *%0*1/243D*5EF556576589GHB*+ ** **  Y** ** *.*&YY** C* 689":,=9>F@VAyDEDEFI9J,LKLMNOPQR#!" $ PK!!:*??7com/example/mp4composer/composer/DecoderSurface$1.class3,      !+$SwitchMap$com$example$mp4composer$FillMode[I()VCodeLineNumberTableLocalVariableTable StackMapTable SourceFileDecoderSurface.javaEnclosingMethod"# $% &' ()java/lang/NoSuchFieldError *' +'1com/example/mp4composer/composer/DecoderSurface$1 InnerClassesjava/lang/Object/com/example/mp4composer/composer/DecoderSurface com/example/mp4composer/FillModevalues%()[Lcom/example/mp4composer/FillMode;PRESERVE_ASPECT_FIT"Lcom/example/mp4composer/FillMode;ordinal()IPRESERVE_ASPECT_CROPCUSTOM    7 OKOKOK #&'25WMM PK!!0 " "5com/example/mp4composer/composer/DecoderSurface.class3                        #  # # '  #     .  . @       ' #  '  A A # # ! " # $ % & ' ( s) * + , -" -# . / 0 1 2 3 45 46 7 48C4 49 4: 4; .<@ = > ?@ A B C .C@ D EGI InnerClassesTAGLjava/lang/String; ConstantValueJVERBOSEZ eglDisplayLandroid/opengl/EGLDisplay; eglContextLandroid/opengl/EGLContext; eglSurfaceLandroid/opengl/EGLSurface;surfaceLandroid/view/Surface;frameSyncObjectLjava/lang/Object;frameAvailablefilter)Lcom/example/mp4composer/filter/GlFilter;texNameIpreviewTexture-Lcom/example/mp4composer/gl/GlSurfaceTexture;filterFramebufferObject0Lcom/example/mp4composer/gl/GlFramebufferObject; previewShader,Lcom/example/mp4composer/gl/GlPreviewFilter; normalShaderframebufferObject MVPMatrix[F ProjMatrixMMatrixVMatrixSTMatrixrotation"Lcom/example/mp4composer/Rotation;outputResolutionLandroid/util/Size;inputResolutionfillMode"Lcom/example/mp4composer/FillMode;fillModeCustomItem,Lcom/example/mp4composer/FillModeCustomItem; flipVerticalflipHorizontallogger'Lcom/example/mp4composer/logger/Logger;S(Lcom/example/mp4composer/filter/GlFilter;Lcom/example/mp4composer/logger/Logger;)VCodeLineNumberTableLocalVariableTablethis1Lcom/example/mp4composer/composer/DecoderSurface;$RuntimeInvisibleParameterAnnotationsLandroidx/annotation/NonNull;setup()Vargs[Irelease StackMapTableRuntimeInvisibleAnnotations!Landroidx/annotation/RequiresApi;api getSurface()Landroid/view/Surface; awaitNewImageie Ljava/lang/InterruptedException; TIMEOUT_MSK drawImagescalescaleDirectionXFscaleDirectionYonFrameAvailable$(Landroid/graphics/SurfaceTexture;)Vst!Landroid/graphics/SurfaceTexture; setRotation%(Lcom/example/mp4composer/Rotation;)VsetOutputResolution(Landroid/util/Size;)V resolution setFillMode%(Lcom/example/mp4composer/FillMode;)VsetInputResolutionsetFillModeCustomItem/(Lcom/example/mp4composer/FillModeCustomItem;)VsetFlipVertical(Z)VsetFlipHorizontalcompleteParamswidthheight SourceFileDecoderSurface.java/com/example/mp4composer/composer/DecoderSurfaceandroid/opengl/GLES20 L M} |} N ~ O java/lang/Object P Q R S z z .com/example/mp4composer/gl/GlFramebufferObject 'com/example/mp4composer/filter/GlFilter TU +com/example/mp4composer/gl/GlSurfaceTexture V WXandroid/view/Surface YZ [\ ]^_ `a*com/example/mp4composer/gl/GlPreviewFilter b cd eU fg hi jk lm z nojava/lang/RuntimeExceptionSurface frame wait timed out pjava/lang/InterruptedException q r st u v\ w\ xy z{ |} ~V   \ \               ^ \ 2frameAvailable already set, frame could be dropped  ^ ^  8android/graphics/SurfaceTexture$OnFrameAvailableListenerOnFrameAvailableListener1com/example/mp4composer/composer/DecoderSurface$1DecoderSurfacejava/lang/Throwableandroid/opengl/EGL14EGL_NO_DISPLAYEGL_NO_CONTEXTEGL_NO_SURFACE com/example/mp4composer/RotationNORMAL com/example/mp4composer/FillModePRESERVE_ASPECT_FIT glGenTextures(I[II)V(I)VsetOnFrameAvailableListener=(Landroid/graphics/SurfaceTexture$OnFrameAvailableListener;)VgetSurfaceTexture#()Landroid/graphics/SurfaceTexture;getTextureTarget()I glBindTexture(II)V%com/example/mp4composer/utils/EglUtil setupSampler(III)Vandroid/opengl/Matrix setLookAtM([FIFFFFFFFFF)V glGetIntegerveglDestroySurface9(Landroid/opengl/EGLDisplay;Landroid/opengl/EGLSurface;)ZeglDestroyContext9(Landroid/opengl/EGLDisplay;Landroid/opengl/EGLContext;)ZeglReleaseThread()Z eglTerminate(Landroid/opengl/EGLDisplay;)Zwait(J)V(Ljava/lang/String;)V(Ljava/lang/Throwable;)VupdateTexImagegetTransformMatrix([F)VenablegetWidth getHeight glViewport(IIII)V getClearColor()[F glClearColor(FFFF)VglClear multiplyMM ([FI[FI[FI)V+$SwitchMap$com$example$mp4composer$FillModeordinal getRotationandroid/util/SizegetScaleAspectFit (IIIII)[FscaleM ([FIFFF)VrotateM ([FIFFFF)VgetScaleAspectCrop*com/example/mp4composer/FillModeCustomItem getTranslateX()F getTranslateY translateM getRotategetScale getVideoWidthgetVideoHeightdraw (I[F[FF)VglBindFramebuffer getTexName4(ILcom/example/mp4composer/gl/GlFramebufferObject;)V notifyAll setFrameSizefrustumM ([FIFFFFFF)V setIdentityM([FI)Vandroid/graphics/SurfaceTexture  ruvwxyzw{|}~zzzs**** * Y * * ********+*,*J`: ;<>$K,L4M<NDOLRSUZW_Xdaibncrd sss ? **Y*Y *  L++!*+."*#Y*"$%*%*&*'Y*%()**%+*",*%+&&- ,*.Y*%+/0*01*Y2* 3 4 3+5N$(/6EM_m}(h*'** 6W**7W8W*9W**:*%;*** *<****%> "&.5<CJQX]bg h. I/** ^'<* YM*=+* >@*= AYBCNAY-E*=,ç :,*%F*%*G-0D ADDHD: #-01:?KR] 1 ^Z !B I*H*I*JK*D*2H*2I*2JK*L0*L0*L0*L0M@N* **O* * * O*P D*P EQ*R.t*S*TU*TV*WU*WVXN* -0#j-0$j Y*[* *St ZD*S*TU*TV*WU*WV[N* -0#j-0$j Y** *St Z*\* *\]*\^v _*S*TU*TV*WU*WV[N*\` *\`a)* *\b-0j#j*\b-0j$j YH* *\b-0j *\cn*\djj#j*\b-0j*\c*\dnj$j Y* *S*\`bv Z*0*"* * e**H@Nfg*I*JKAN* *hi*!(;bhz' N ak /!IL%h3|578?@BCD>4N4%& b5@ @$ZZ^%D' I/* YM*= AYjC*=* k,çN,-&)),)IJKMN$O.P//P>*+ ST>*+W XY>*+ \]>*+T `a>*+\ de>* hiz>* lmz_*WU<*WV=*l* m*2l*0n* P P 3op*q* *m. qrst"v+w4yFzN|U}^ _WO^ I ItsrFH PK!!5com/example/mp4composer/composer/EncoderSurface.class3 .d e f g h i jk d l mn opq r stuv wx yz {| }~   (d ( (EGL_RECORDABLE_ANDROIDI ConstantValue1B eglDisplayLandroid/opengl/EGLDisplay; eglContextLandroid/opengl/EGLContext; eglSurfaceLandroid/opengl/EGLSurface;surfaceLandroid/view/Surface;4(Landroid/view/Surface;Landroid/opengl/EGLContext;)VCodeLineNumberTableLocalVariableTablethis1Lcom/example/mp4composer/composer/EncoderSurface; shareContext StackMapTableueglSetup(Landroid/opengl/EGLContext;)Vversion[I attribListconfigsandroid/opengl/EGLConfig; numConfigs attrib_listsurfaceAttribsJMvrelease()V makeCurrent swapBufferssetPresentationTime(J)VnsecsJ checkEglError(Ljava/lang/String;)VmsgLjava/lang/String;error SourceFileEncoderSurface.java ;V 4 34 6 56 8 78java/lang/NullPointerException 9: GHandroid/opengl/EGL14 java/lang/RuntimeExceptionunable to get EGL14 display ;^ unable to initialize EGL14/com/example/mp4composer/composer/EncoderSurfaceandroid/opengl/EGLConfig /unable to find RGB888+recordable ES2 EGL config zeglCreateContext ]^ null context ~eglCreateWindowSurfacesurface was null  UV eglMakeCurrent failed  java/lang/StringBuilder : EGL error: 0x java/lang/Objectandroid/view/Surfaceandroid/opengl/EGLContextandroid/opengl/EGLDisplayEGL_NO_DISPLAYEGL_NO_CONTEXTEGL_NO_SURFACE eglGetDisplay(I)Landroid/opengl/EGLDisplay; eglInitialize$(Landroid/opengl/EGLDisplay;[II[II)ZeglChooseConfigA(Landroid/opengl/EGLDisplay;[II[Landroid/opengl/EGLConfig;II[II)Zp(Landroid/opengl/EGLDisplay;Landroid/opengl/EGLConfig;Landroid/opengl/EGLContext;[II)Landroid/opengl/EGLContext;g(Landroid/opengl/EGLDisplay;Landroid/opengl/EGLConfig;Ljava/lang/Object;[II)Landroid/opengl/EGLSurface;eglDestroySurface9(Landroid/opengl/EGLDisplay;Landroid/opengl/EGLSurface;)ZeglDestroyContext9(Landroid/opengl/EGLDisplay;Landroid/opengl/EGLContext;)ZeglReleaseThread()Z eglTerminate(Landroid/opengl/EGLDisplay;)ZeglMakeCurrento(Landroid/opengl/EGLDisplay;Landroid/opengl/EGLSurface;Landroid/opengl/EGLSurface;Landroid/opengl/EGLContext;)ZeglSwapBuffersandroid/opengl/EGLExteglPresentationTimeANDROID:(Landroid/opengl/EGLDisplay;Landroid/opengl/EGLSurface;J)Z eglGetError()Iappend-(Ljava/lang/String;)Ljava/lang/StringBuilder;java/lang/Integer toHexString(I)Ljava/lang/String;toString()Ljava/lang/String; ./0123456789:;<=0****+ Y *+ *, >&   !%#*$/%? 0@A09:0B6C%DEFGH=c,* * Y M*,,*Y Y0$OYOY0#OYOY0"OYOY0@OYOY1BOY OY 08ON: :*- Y Y0OYOY08O:**2++* Y Y08O:**2* * Y>^+,-/ 0.132=6>?@BEIKLMPSUV!W+Y?R,@A,B6  IJKJLMNJkOJ-PJCi QnQRQ%DFQQRQQDSTDFQQRQQDSTF6QUV=P*'**W**W W*!W* "**** >. ` ab"c&d.f5g<hCiJjOk? P@AC.WV=\!****# Y$>qr t? !@AC XV=; **%W> z {?  @AYZ=F**&W>  ?@A[\ ]^=v.'Y<0%Y(Y)**+*,*-> -?._`)a0C-bcPK!!+5com/example/mp4composer/composer/IAudioComposer.class3 setup()V stepPipeline()ZgetWrittenPresentationTimeUs()J isFinishedrelease SourceFileIAudioComposer.java/com/example/mp4composer/composer/IAudioComposerjava/lang/Object    PK!!7ð4com/example/mp4composer/composer/Mp4Composer$1.class3&   this$0.Lcom/example/mp4composer/composer/Mp4Composer;1(Lcom/example/mp4composer/composer/Mp4Composer;)VCodeLineNumberTableLocalVariableTablethis InnerClasses0Lcom/example/mp4composer/composer/Mp4Composer$1;onError(Ljava/lang/Exception;)VeLjava/lang/Exception; SourceFileMp4Composer.javaEnclosingMethod!  " #$.com/example/mp4composer/composer/Mp4Composer$1java/lang/Object%2com/example/mp4composer/source/DataSource$ListenerListener,com/example/mp4composer/composer/Mp4Composer()V access$000F(Lcom/example/mp4composer/composer/Mp4Composer;Ljava/lang/Exception;)V)com/example/mp4composer/source/DataSource   > *+* C    A *+ FG     PK!!76com/example/mp4composer/composer/Mp4Composer$2$1.class34    ! "#$%'this$1) InnerClasses0Lcom/example/mp4composer/composer/Mp4Composer$2;3(Lcom/example/mp4composer/composer/Mp4Composer$2;)VCodeLineNumberTableLocalVariableTablethis2Lcom/example/mp4composer/composer/Mp4Composer$2$1; onProgress(D)VprogressD StackMapTable SourceFileMp4Composer.javaEnclosingMethod *+ + ,-. /12 0com/example/mp4composer/composer/Mp4Composer$2$1java/lang/Object3Ccom/example/mp4composer/composer/Mp4ComposerEngine$ProgressCallbackProgressCallback.com/example/mp4composer/composer/Mp4Composer$2run()Vthis$0.Lcom/example/mp4composer/composer/Mp4Composer;,com/example/mp4composer/composer/Mp4Composer access$300Listenerg(Lcom/example/mp4composer/composer/Mp4Composer;)Lcom/example/mp4composer/composer/Mp4Composer$Listener;5com/example/mp4composer/composer/Mp4Composer$Listener2com/example/mp4composer/composer/Mp4ComposerEngine   > *+*  c**'   " &(" 0 PK!!F?S!S!4com/example/mp4composer/composer/Mp4Composer$2.class3Q Y~ Z |  |  | |  | | |      | |  | | | | # | | |  . . . |> |A | | |   | | | | | | | | | | | |   |  |  InnerClassesthis$0.Lcom/example/mp4composer/composer/Mp4Composer;1(Lcom/example/mp4composer/composer/Mp4Composer;)VCodeLineNumberTableLocalVariableTablethis0Lcom/example/mp4composer/composer/Mp4Composer$2;run()Vrotate"Lcom/example/mp4composer/Rotation;eLjava/lang/Exception; videoRotateLjava/lang/Integer;srcVideoResolutionLandroid/util/Size; StackMapTableRuntimeInvisibleAnnotations!Landroidx/annotation/RequiresApi;api SourceFileMp4Composer.javaEnclosingMethod ]^ _g ,com/example/mp4composer/logger/AndroidLogger 2com/example/mp4composer/composer/Mp4ComposerEngine _ 0com/example/mp4composer/composer/Mp4Composer$2$1 _ 'java/lang/UnsupportedOperationExceptionjava/lang/StringBuilderFile type unsupported, path: _ 'com/example/mp4composer/filter/GlFilter         java/lang/IllegalAccessException-FillMode.CUSTOM must need fillModeCustomItem.         i iandroid/util/Size   _    ! "# $% & rotation = '( )*inputResolution width =  height = outputResolution width =  fillMode = +, -. /0 12 34 56 76 86 96 :; <; => ?@java/lang/ExceptionA'android/media/MediaCodec$CodecExceptionCodecException[This devicel cannot codec with that setting. Check width, height, bitrate and video format. BCUnable to compose the engine DF GHI Jg Kg LMN Og.com/example/mp4composer/composer/Mp4Composer$2java/lang/Objectjava/lang/Runnablejava/lang/Integer com/example/mp4composer/Rotation,com/example/mp4composer/composer/Mp4Composerstart0()Lcom/example/mp4composer/composer/Mp4Composer; access$100W(Lcom/example/mp4composer/composer/Mp4Composer;)Lcom/example/mp4composer/logger/Logger; access$102~(Lcom/example/mp4composer/composer/Mp4Composer;Lcom/example/mp4composer/logger/Logger;)Lcom/example/mp4composer/logger/Logger;*(Lcom/example/mp4composer/logger/Logger;)V access$202(Lcom/example/mp4composer/composer/Mp4Composer;Lcom/example/mp4composer/composer/Mp4ComposerEngine;)Lcom/example/mp4composer/composer/Mp4ComposerEngine; access$200d(Lcom/example/mp4composer/composer/Mp4Composer;)Lcom/example/mp4composer/composer/Mp4ComposerEngine;3(Lcom/example/mp4composer/composer/Mp4Composer$2;)VsetProgressCallbackPProgressCallbackH(Lcom/example/mp4composer/composer/Mp4ComposerEngine$ProgressCallback;)V access$400[(Lcom/example/mp4composer/composer/Mp4Composer;)Lcom/example/mp4composer/source/DataSource; access$500n(Lcom/example/mp4composer/composer/Mp4Composer;Lcom/example/mp4composer/source/DataSource;)Ljava/lang/Integer; access$600n(Lcom/example/mp4composer/composer/Mp4Composer;Lcom/example/mp4composer/source/DataSource;)Landroid/util/Size;append-(Ljava/lang/String;)Ljava/lang/StringBuilder;-(Ljava/lang/Object;)Ljava/lang/StringBuilder;toString()Ljava/lang/String;(Ljava/lang/String;)V access$000F(Lcom/example/mp4composer/composer/Mp4Composer;Ljava/lang/Exception;)V access$700Y(Lcom/example/mp4composer/composer/Mp4Composer;)Lcom/example/mp4composer/filter/GlFilter; access$702(Lcom/example/mp4composer/composer/Mp4Composer;Lcom/example/mp4composer/filter/GlFilter;)Lcom/example/mp4composer/filter/GlFilter; access$800R(Lcom/example/mp4composer/composer/Mp4Composer;)Lcom/example/mp4composer/FillMode; com/example/mp4composer/FillModePRESERVE_ASPECT_FIT"Lcom/example/mp4composer/FillMode; access$802t(Lcom/example/mp4composer/composer/Mp4Composer;Lcom/example/mp4composer/FillMode;)Lcom/example/mp4composer/FillMode;CUSTOM access$900\(Lcom/example/mp4composer/composer/Mp4Composer;)Lcom/example/mp4composer/FillModeCustomItem; access$1000C(Lcom/example/mp4composer/composer/Mp4Composer;)Landroid/util/Size; access$1002V(Lcom/example/mp4composer/composer/Mp4Composer;Landroid/util/Size;)Landroid/util/Size; access$1100R(Lcom/example/mp4composer/composer/Mp4Composer;)Lcom/example/mp4composer/Rotation; getRotation()IintValuefromInt%(I)Lcom/example/mp4composer/Rotation; ROTATION_90 ROTATION_270 getHeightgetWidth(II)V access$12001(Lcom/example/mp4composer/composer/Mp4Composer;)F access$12022(Lcom/example/mp4composer/composer/Mp4Composer;F)F access$1300K(Lcom/example/mp4composer/composer/Mp4Composer;)Landroid/opengl/EGLContext;android/opengl/EGL14EGL_NO_CONTEXTLandroid/opengl/EGLContext; access$1302f(Lcom/example/mp4composer/composer/Mp4Composer;Landroid/opengl/EGLContext;)Landroid/opengl/EGLContext; access$1400(I)Ljava/lang/StringBuilder;%com/example/mp4composer/logger/Loggerdebug'(Ljava/lang/String;Ljava/lang/String;)V access$15001(Lcom/example/mp4composer/composer/Mp4Composer;)I access$16003(Lcom/example/mp4composer/composer/Mp4Composer;II)I access$15022(Lcom/example/mp4composer/composer/Mp4Composer;I)I access$1700B(Lcom/example/mp4composer/composer/Mp4Composer;)Ljava/lang/String; access$1800H(Lcom/example/mp4composer/composer/Mp4Composer;)Ljava/io/FileDescriptor; access$19001(Lcom/example/mp4composer/composer/Mp4Composer;)Z access$2000 access$2100 access$2200 access$23001(Lcom/example/mp4composer/composer/Mp4Composer;)J access$2400 access$2500](Lcom/example/mp4composer/composer/Mp4Composer;)Lcom/example/mp4composer/VideoFormatMimeType;composeg(Lcom/example/mp4composer/source/DataSource;Ljava/lang/String;Ljava/io/FileDescriptor;Landroid/util/Size;Lcom/example/mp4composer/filter/GlFilter;IZLcom/example/mp4composer/Rotation;Landroid/util/Size;Lcom/example/mp4composer/FillMode;Lcom/example/mp4composer/FillModeCustomItem;FZZZJJLcom/example/mp4composer/VideoFormatMimeType;Landroid/opengl/EGLContext;)Vandroid/media/MediaCodecerror<(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V access$300Listenerg(Lcom/example/mp4composer/composer/Mp4Composer;)Lcom/example/mp4composer/composer/Mp4Composer$Listener; isCanceled()Z5com/example/mp4composer/composer/Mp4Composer$Listener onCanceled onCompleted access$2600V(Lcom/example/mp4composer/composer/Mp4Composer;)Ljava/util/concurrent/ExecutorService;$java/util/concurrent/ExecutorServiceshutdownCcom/example/mp4composer/composer/Mp4ComposerEngine$ProgressCallback YZ[]^_`a> *+*bc de ]^fga**YW*Y* W* Y* **L**M,++*YY***YW** W*!*"*#Y$%*"*! W*&`*!*,'WG*()+*`+N-, --*.Y,/,01'W *,'W*23*34W*25 *54W*6*78W*9Y:*()+*`;<*9Y:*()+*`+<*9Y=,0;>,/;<*9Y?*&0;>*&/;<*9Y@*<*A&***&0*&/BCW* **D*E*&**A*F*()+*`+,**"*2*G*H*I*J*K*L*6MAN-O*9P-Q*-*9R-Q*-*S+* T*SU*SV*WX* WadNb*J /AP_g   0>Xa#n${%&)*-. /;0x145789:;<=> ?A#B*C1D8E?FFGMHTI[J^7aWdMeNlO~PQTUVYZ[]`abc401hie=jkdePlm_nop3Mqr''" s%t"t% u vwIxyz{|}\*Y O|E PK!!]hh;com/example/mp4composer/composer/Mp4Composer$Listener.class3  onProgress(D)V onCompleted()V onCanceledonFailed(Ljava/lang/Exception;)V SourceFileMp4Composer.java5com/example/mp4composer/composer/Mp4Composer$ListenerListener InnerClassesjava/lang/Object,com/example/mp4composer/composer/Mp4Composer      PK!!F!;I;I2com/example/mp4composer/composer/Mp4Composer.class3 \1 \2 \3 \4 \5 \6 \7 \8 \9 \: \; \< \= \> \? \@ \A \B \C \D \E \F \G \H \I \J \KL M \N ^M OP QR STU %V \WX (YZ *[ \\] -^ _`ab 0c \de 4f Qg hi \jk 9V lm _n lo pqr ?M st ?u ?v ?wxy z{ |}~ |@ QM Q Q Q z | Listener InnerClassesTAGLjava/lang/String; srcDataSource+Lcom/example/mp4composer/source/DataSource;destPathdestFileDescriptorLjava/io/FileDescriptor;filter)Lcom/example/mp4composer/filter/GlFilter;outputResolutionLandroid/util/Size;bitrateImuteZrotation"Lcom/example/mp4composer/Rotation;listener7Lcom/example/mp4composer/composer/Mp4Composer$Listener;fillMode"Lcom/example/mp4composer/FillMode;fillModeCustomItem,Lcom/example/mp4composer/FillModeCustomItem; timeScaleFisPitchChanged flipVerticalflipHorizontal trimStartMsJ trimEndMsvideoFormatMimeType-Lcom/example/mp4composer/VideoFormatMimeType; shareContextLandroid/opengl/EGLContext;executorService&Ljava/util/concurrent/ExecutorService;engine4Lcom/example/mp4composer/composer/Mp4ComposerEngine;logger'Lcom/example/mp4composer/logger/Logger;errorDataSource4Lcom/example/mp4composer/source/DataSource$Listener;'(Ljava/lang/String;Ljava/lang/String;)VCodeLineNumberTableLocalVariableTablethis.Lcom/example/mp4composer/composer/Mp4Composer;srcPath$RuntimeInvisibleParameterAnnotationsLandroidx/annotation/NonNull;N(Ljava/lang/String;Ljava/lang/String;Lcom/example/mp4composer/logger/Logger;)V-(Ljava/io/FileDescriptor;Ljava/lang/String;)VsrcFileDescriptor?(Landroid/net/Uri;Ljava/lang/String;Landroid/content/Context;)VsrcUriLandroid/net/Uri;contextLandroid/content/Context;f(Landroid/net/Uri;Ljava/lang/String;Landroid/content/Context;Lcom/example/mp4composer/logger/Logger;)V3(Ljava/io/FileDescriptor;Ljava/io/FileDescriptor;)V StackMapTableRuntimeInvisibleAnnotationsLandroid/annotation/TargetApi;valueE(Landroid/net/Uri;Ljava/io/FileDescriptor;Landroid/content/Context;)Vl(Landroid/net/Uri;Ljava/io/FileDescriptor;Landroid/content/Context;Lcom/example/mp4composer/logger/Logger;)VY(Lcom/example/mp4composer/filter/GlFilter;)Lcom/example/mp4composer/composer/Mp4Composer;size2(II)Lcom/example/mp4composer/composer/Mp4Composer;widthheight!Landroidx/annotation/RequiresApi;api videoBitrate1(I)Lcom/example/mp4composer/composer/Mp4Composer;1(Z)Lcom/example/mp4composer/composer/Mp4Composer;R(Lcom/example/mp4composer/Rotation;)Lcom/example/mp4composer/composer/Mp4Composer;R(Lcom/example/mp4composer/FillMode;)Lcom/example/mp4composer/composer/Mp4Composer;customFillMode\(Lcom/example/mp4composer/FillModeCustomItem;)Lcom/example/mp4composer/composer/Mp4Composer;g(Lcom/example/mp4composer/composer/Mp4Composer$Listener;)Lcom/example/mp4composer/composer/Mp4Composer;1(F)Lcom/example/mp4composer/composer/Mp4Composer; changePitch](Lcom/example/mp4composer/VideoFormatMimeType;)Lcom/example/mp4composer/composer/Mp4Composer;W(Lcom/example/mp4composer/logger/Logger;)Lcom/example/mp4composer/composer/Mp4Composer;trim2(JJ)Lcom/example/mp4composer/composer/Mp4Composer;K(Landroid/opengl/EGLContext;)Lcom/example/mp4composer/composer/Mp4Composer;getExecutorService(()Ljava/util/concurrent/ExecutorService;start0()Lcom/example/mp4composer/composer/Mp4Composer;"notifyListenerOfFailureAndShutdown(Ljava/lang/Exception;)VfailureLjava/lang/Exception;cancel()VgetVideoRotation@(Lcom/example/mp4composer/source/DataSource;)Ljava/lang/Integer;eLjava/lang/RuntimeException; orientation$Ljava/lang/IllegalArgumentException; dataSourcemediaMetadataRetriever&Landroid/media/MediaMetadataRetriever;rxaLandroidx/annotation/Nullable; calcBitRate(II)IgetVideoResolution@(Lcom/example/mp4composer/source/DataSource;)Landroid/util/Size;rawWidth rawHeight retrievere access$000F(Lcom/example/mp4composer/composer/Mp4Composer;Ljava/lang/Exception;)Vx0x1 access$100W(Lcom/example/mp4composer/composer/Mp4Composer;)Lcom/example/mp4composer/logger/Logger; access$102~(Lcom/example/mp4composer/composer/Mp4Composer;Lcom/example/mp4composer/logger/Logger;)Lcom/example/mp4composer/logger/Logger; access$202(Lcom/example/mp4composer/composer/Mp4Composer;Lcom/example/mp4composer/composer/Mp4ComposerEngine;)Lcom/example/mp4composer/composer/Mp4ComposerEngine; access$300g(Lcom/example/mp4composer/composer/Mp4Composer;)Lcom/example/mp4composer/composer/Mp4Composer$Listener; access$200d(Lcom/example/mp4composer/composer/Mp4Composer;)Lcom/example/mp4composer/composer/Mp4ComposerEngine; access$400[(Lcom/example/mp4composer/composer/Mp4Composer;)Lcom/example/mp4composer/source/DataSource; access$500n(Lcom/example/mp4composer/composer/Mp4Composer;Lcom/example/mp4composer/source/DataSource;)Ljava/lang/Integer; access$600n(Lcom/example/mp4composer/composer/Mp4Composer;Lcom/example/mp4composer/source/DataSource;)Landroid/util/Size; access$700Y(Lcom/example/mp4composer/composer/Mp4Composer;)Lcom/example/mp4composer/filter/GlFilter; access$702(Lcom/example/mp4composer/composer/Mp4Composer;Lcom/example/mp4composer/filter/GlFilter;)Lcom/example/mp4composer/filter/GlFilter; access$800R(Lcom/example/mp4composer/composer/Mp4Composer;)Lcom/example/mp4composer/FillMode; access$802t(Lcom/example/mp4composer/composer/Mp4Composer;Lcom/example/mp4composer/FillMode;)Lcom/example/mp4composer/FillMode; access$900\(Lcom/example/mp4composer/composer/Mp4Composer;)Lcom/example/mp4composer/FillModeCustomItem; access$1000C(Lcom/example/mp4composer/composer/Mp4Composer;)Landroid/util/Size; access$1002V(Lcom/example/mp4composer/composer/Mp4Composer;Landroid/util/Size;)Landroid/util/Size; access$1100R(Lcom/example/mp4composer/composer/Mp4Composer;)Lcom/example/mp4composer/Rotation; access$12001(Lcom/example/mp4composer/composer/Mp4Composer;)F access$12022(Lcom/example/mp4composer/composer/Mp4Composer;F)F access$1300K(Lcom/example/mp4composer/composer/Mp4Composer;)Landroid/opengl/EGLContext; access$1302f(Lcom/example/mp4composer/composer/Mp4Composer;Landroid/opengl/EGLContext;)Landroid/opengl/EGLContext; access$1400()Ljava/lang/String; access$15001(Lcom/example/mp4composer/composer/Mp4Composer;)I access$15022(Lcom/example/mp4composer/composer/Mp4Composer;I)I access$16003(Lcom/example/mp4composer/composer/Mp4Composer;II)Ix2 access$1700B(Lcom/example/mp4composer/composer/Mp4Composer;)Ljava/lang/String; access$1800H(Lcom/example/mp4composer/composer/Mp4Composer;)Ljava/io/FileDescriptor; access$19001(Lcom/example/mp4composer/composer/Mp4Composer;)Z access$2000 access$2100 access$2200 access$23001(Lcom/example/mp4composer/composer/Mp4Composer;)J access$2400 access$2500](Lcom/example/mp4composer/composer/Mp4Composer;)Lcom/example/mp4composer/VideoFormatMimeType; access$2600V(Lcom/example/mp4composer/composer/Mp4Composer;)Ljava/util/concurrent/ExecutorService; SourceFileMp4Composer.java  ~ }p |p {p op gh fc mn bc yz qr kl wx uv ij de st ,com/example/mp4composer/logger/AndroidLogger  r v .com/example/mp4composer/composer/Mp4Composer$1  1com/example/mp4composer/source/FilePathDataSource 7com/example/mp4composer/source/FileDescriptorDataSource  ,com/example/mp4composer/source/UriDataSource  n"java/lang/IllegalArgumentExceptiondestFileDescriptor can not use  android/util/Size  v  .com/example/mp4composer/composer/Mp4Composer$2    $android/media/MediaMetadataRetriever    java/lang/RuntimeException)Failed to release mediaMetadataRetriever.  MediaMetadataRetriever)getVideoRotation IllegalArgumentException !getVideoRotation RuntimeExceptionjava/lang/ExceptiongetVideoRotation Exceptionjava/lang/StringBuilderbitrate=     +getVideoResolution IllegalArgumentException#getVideoResolution RuntimeExceptiongetVideoResolution Exception,com/example/mp4composer/composer/Mp4Composer java/lang/Object5com/example/mp4composer/composer/Mp4Composer$Listener2com/example/mp4composer/source/DataSource$Listenerjava/io/FileDescriptorandroid/net/Uriandroid/content/Context%com/example/mp4composer/logger/Loggerjava/lang/Stringjava/lang/Integer)com/example/mp4composer/source/DataSourcejava/lang/Throwable com/example/mp4composer/RotationNORMAL com/example/mp4composer/FillModePRESERVE_ASPECT_FIT+com/example/mp4composer/VideoFormatMimeTypeAUTO1(Lcom/example/mp4composer/composer/Mp4Composer;)Vp(Ljava/lang/String;Lcom/example/mp4composer/logger/Logger;Lcom/example/mp4composer/source/DataSource$Listener;)V(Ljava/io/FileDescriptor;)V(Landroid/net/Uri;Landroid/content/Context;Lcom/example/mp4composer/logger/Logger;Lcom/example/mp4composer/source/DataSource$Listener;)Vandroid/os/Build$VERSIONVERSIONSDK_INT(Ljava/lang/String;)V(II)VCUSTOMjava/util/concurrent/ExecutorsnewSingleThreadExecutor$java/util/concurrent/ExecutorServiceexecute(Ljava/lang/Runnable;)VonFailedshutdown2com/example/mp4composer/composer/Mp4ComposerEnginegetFileDescriptor()Ljava/io/FileDescriptor; setDataSourceextractMetadata(I)Ljava/lang/String;releaseerror<(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)VvalueOf'(Ljava/lang/String;)Ljava/lang/Integer;(I)Ljava/lang/Integer;append-(Ljava/lang/String;)Ljava/lang/StringBuilder;(I)Ljava/lang/StringBuilder;toStringdebugparseInt(Ljava/lang/String;)Ijava/lang/Class getSimpleNameandroid/os/Build!\^bcdefcghijklmnopqrstuvwxyz{p|p}p~CP*+,Y K L cfc k** ** *!* **** *"*$*%Y*&'*-*(Y+-*')*, FN/ 0135!6&7+8095:<;CCOOTPeQjR*kkckfcka** ** *!* **** *"*$*%Y*&'**Y++*, BT/ 0135!6&7+8095:<;CCOU[V`W aahafc [*+,-Y, Z[*fcn** ** *!* **** *"*$*%Y*&'**-Y+-*'.*, F]/ 0135!6&7+8095:<;CCO^U_h`ma4nnnfcnnx** ** *!* **** *"*$*%Y*&'/ 0Y12**Y++* *, Nd/ 0135!6&7+8095:<;CCOeWfahmirjwk xxhxgha I [*+,-Y3 op*gh IA** ** *!* **** *"*$*%Y*&'/ 0Y12**-Y+-*'.* *, Rs/ 0135!6&7+8095:<;CCOtWuawgxzyz{4gha Ii?*+* ~ijQ*4Y5*  nn I?* * mno?** op|?** |p}?** }pq?*+* qru?*+* uvJ*+*6* wxs?*+* sty?*#* yz?** {p?*+* ?*+* R **!*  ~ ?*+* N* *7* [***89Y*:;* e  p"* *+<* *=ijlm!o""J* *>rsu )M?Y@M,+AB,CN-&:,,D:* FG-H:,,D:* FGN*IJ-GK:,,D:* FGN*IL-GK:,,D:* FGN*IN-GK:,,D:* FG:,,D:* FG"*-EHPSE"h0BHh0}E"EBHEE"MBHME"BHh} E 5 "&*-/?BHLPSUehiw}  & /UMci444))e'*B BBBB B|,Okk>* QYRSTUVW **,,n,n !mn0 AM?Y@M,+AB,CN,C:-&:,,D:* FG-X6X64Y5:,,D:* FGN*IY-G:,,D:* FGN*IZ-G:,,D:* FGN*I[-G:,,D:* FG: ,,D: * F G /7:EiqtE/0Oi0E/EOiEE/MOiM E/Oi!),E!8 #,/37:<LOU\imqtv  !%),.><vnc#fcU4n\-n11 1. AAe?, B!BBBB B:*+&/*& ;*+Z&;*+Z&/*& /*& /*& :*+&e:*+&e/*& ;*+Z&j/*& ;*+Z&v/*& /*&   ;*+Z&l  /*&  /*& ;*#Z&z/*& ;*+Z& &/* & ;*Z &nE* & nn/* &  !/* & "#/*& $#/*& %#/*& &#/*& '(/*& )(/*& *+/*& ,-/*& .! \] (/0a*_\` 9%s` _ PK!!1++Icom/example/mp4composer/composer/Mp4ComposerEngine$ProgressCallback.class3   onProgress(D)V SourceFileMp4ComposerEngine.java Ccom/example/mp4composer/composer/Mp4ComposerEngine$ProgressCallbackProgressCallback InnerClassesjava/lang/Object2com/example/mp4composer/composer/Mp4ComposerEngine  PK!!U.U.8com/example/mp4composer/composer/Mp4ComposerEngine.class3 ~                ! "#$%&  ' ( ) * +,- $. / 012 (34 567 8:< (=> 2? @ 2A B C?zG?(\) ~DEF =G HI AJ KL M N O 2P KP PQR +S PT PU VW RX YZ Y[ \ R] Y^ Y_ Y` Yab 5D ( (cdfh (ij kl km (nopq s 2t Kt 2u Ku 2v wx Kv@ yz{|}ProgressCallback InnerClassesTAGLjava/lang/String; ConstantValue AUDIO_PREFIX VIDEO_PREFIXPROGRESS_UNKNOWNDSLEEP_TO_WAIT_TRACK_TRANSCODERSJPROGRESS_INTERVAL_STEPS videoComposer0Lcom/example/mp4composer/composer/VideoComposer; audioComposer1Lcom/example/mp4composer/composer/IAudioComposer;mediaExtractorLandroid/media/MediaExtractor; mediaMuxerLandroid/media/MediaMuxer;progressCallbackELcom/example/mp4composer/composer/Mp4ComposerEngine$ProgressCallback; durationUsmediaMetadataRetriever&Landroid/media/MediaMetadataRetriever;canceledZlogger'Lcom/example/mp4composer/logger/Logger;*(Lcom/example/mp4composer/logger/Logger;)VCodeLineNumberTableLocalVariableTablethis4Lcom/example/mp4composer/composer/Mp4ComposerEngine;$RuntimeInvisibleParameterAnnotationsLandroidx/annotation/NonNull;setProgressCallbackH(Lcom/example/mp4composer/composer/Mp4ComposerEngine$ProgressCallback;)Vcomposeg(Lcom/example/mp4composer/source/DataSource;Ljava/lang/String;Ljava/io/FileDescriptor;Landroid/util/Size;Lcom/example/mp4composer/filter/GlFilter;IZLcom/example/mp4composer/Rotation;Landroid/util/Size;Lcom/example/mp4composer/FillMode;Lcom/example/mp4composer/FillModeCustomItem;FZZZJJLcom/example/mp4composer/VideoFormatMimeType;Landroid/opengl/EGLContext;)Ve!Ljava/lang/NumberFormatException; mediaFormatLandroid/media/MediaFormat;mimeTypeiIinputMediaFormatoutputMediaFormat muxRender,Lcom/example/mp4composer/composer/MuxRender;videoTrackIndexaudioTrackIndexactualVideoOutputFormatLjava/lang/RuntimeException; srcDataSource+Lcom/example/mp4composer/source/DataSource;destSrcdestFileDescriptorLjava/io/FileDescriptor;outputResolutionLandroid/util/Size;filter)Lcom/example/mp4composer/filter/GlFilter;bitratemuterotation"Lcom/example/mp4composer/Rotation;inputResolutionfillMode"Lcom/example/mp4composer/FillMode;fillModeCustomItem,Lcom/example/mp4composer/FillModeCustomItem; timeScaleFisPitchChanged flipVerticalflipHorizontal trimStartMs trimEndMsvideoFormatMimeType-Lcom/example/mp4composer/VideoFormatMimeType; shareContextLandroid/opengl/EGLContext; StackMapTable#$~-1Q ExceptionsRuntimeInvisibleAnnotations!Landroid/annotation/SuppressLint;valueNewApi!Landroidx/annotation/RequiresApi;apicancel()V isCanceled()Z,createVideoOutputFormatWithAvailableEncoders^(Lcom/example/mp4composer/VideoFormatMimeType;ILandroid/util/Size;)Landroid/media/MediaFormat;mediaCodecListLandroid/media/MediaCodecList;hevcMediaFormatavcMediaFormatmp4vesMediaFormatWcreateAudioOutputFormat8(Landroid/media/MediaFormat;)Landroid/media/MediaFormat; outputFormat inputFormatcreateVideoFormatC(Ljava/lang/String;ILandroid/util/Size;)Landroid/media/MediaFormat; runPipelines videoProgress audioProgressprogressstepped loopCount{runPipelinesNoAudio SourceFileMp4ComposerEngine.java android/media/MediaExtractor ~   android/media/MediaMuxer%android/media/MediaMuxer$OutputFormat OutputFormat  $android/media/MediaMetadataRetriever   java/lang/NumberFormatException2com/example/mp4composer/composer/Mp4ComposerEngineMp4ComposerEnginejava/lang/StringBuilderDuration (us):    *com/example/mp4composer/composer/MuxRender   android/media/MediaFormatmime video/ audio/ android/os/Build$VERSION_CODES VERSION_CODES frame-rate .com/example/mp4composer/composer/VideoComposer    .com/example/mp4composer/composer/AudioComposerjava/util/logging/Logger  3com/example/mp4composer/composer/RemixAudioComposer      java/lang/RuntimeExceptionBCould not shutdown mediaExtractor, codecs and mediaMuxer pipeline. Failed to release mediaMuxer.)Failed to release mediaMetadataRetriever. android/media/MediaCodecList         audio/mp4a-latm  aac-profile.android/media/MediaCodecInfo$CodecProfileLevelCodecProfileLevel sample-rate  channel-count   i-frame-interval color-format.android/media/MediaCodecInfo$CodecCapabilitiesCodecCapabilities      java/lang/InterruptedExceptionjava/lang/ObjectCcom/example/mp4composer/composer/Mp4ComposerEngine$ProgressCallback)com/example/mp4composer/source/DataSourcejava/lang/Stringjava/io/FileDescriptorandroid/util/Size'com/example/mp4composer/filter/GlFilter com/example/mp4composer/Rotation com/example/mp4composer/FillMode*com/example/mp4composer/FillModeCustomItem+com/example/mp4composer/VideoFormatMimeTypeandroid/opengl/EGLContextjava/lang/Throwablejava/io/IOExceptiongetFileDescriptor()Ljava/io/FileDescriptor; setDataSource(Ljava/io/FileDescriptor;)Vandroid/os/Build$VERSIONVERSIONSDK_INT(Ljava/io/FileDescriptor;I)V(Ljava/lang/String;I)VextractMetadata(I)Ljava/lang/String;java/lang/Long parseLong(Ljava/lang/String;)Jappend-(Ljava/lang/String;)Ljava/lang/StringBuilder;(J)Ljava/lang/StringBuilder;toString()Ljava/lang/String;%com/example/mp4composer/logger/Loggerdebug'(Ljava/lang/String;Ljava/lang/String;)VD(Landroid/media/MediaMuxer;Lcom/example/mp4composer/logger/Logger;)V getTrackCount()IgetTrackFormat(I)Landroid/media/MediaFormat; getString&(Ljava/lang/String;)Ljava/lang/String; startsWith(Ljava/lang/String;)Zandroid/os/Build setInteger(Landroid/media/MediaExtractor;ILandroid/media/MediaFormat;Lcom/example/mp4composer/composer/MuxRender;FJJLcom/example/mp4composer/logger/Logger;)VsetUp(Lcom/example/mp4composer/filter/GlFilter;Lcom/example/mp4composer/Rotation;Landroid/util/Size;Landroid/util/Size;Lcom/example/mp4composer/FillMode;Lcom/example/mp4composer/FillModeCustomItem;ZZLandroid/opengl/EGLContext;)V selectTrack(I)Vequals(Ljava/lang/Object;)Zj(Landroid/media/MediaExtractor;ILcom/example/mp4composer/composer/MuxRender;JJLjava/util/logging/Logger;)Vm(Landroid/media/MediaExtractor;ILandroid/media/MediaFormat;Lcom/example/mp4composer/composer/MuxRender;FZJJ)V/com/example/mp4composer/composer/IAudioComposersetupstopreleaseerror<(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)VAUTO getFormatfindEncoderForFormat/(Landroid/media/MediaFormat;)Ljava/lang/String;HEVCAVCMPEG4H263 setStringandroid/media/MediaCodecInfo getInteger(Ljava/lang/String;)IgetWidth getHeight1(Ljava/lang/String;II)Landroid/media/MediaFormat; onProgress(D)V isFinished stepPipelinegetWrittenPresentationTimeUs()Jjava/lang/Mathmin(DD)Djava/lang/Threadsleep(J)V ~-+nuuB F **+56 7 >*+ :; I*Y*+ ,* Y- * Y, *Y*+** i :**Y *!"#$Y* *%:666*&D*':)*:"+, 6-,6.:  01*2Y* *34*4   5*6**':7: 88 :.<$*=Y**>?@ *AY*  B@*@C*6*D*E* F*4*4G*4*@*@H*@**I*:*KL* * M* :*NL**O*:*PL:*4*4G*4*@*@H*@**I*:*KL* * M* :*NL**O*:*PL YmpADJUhkJ|JJ  J14Jz^V WX$Y4[A]L^Y`mcparbydfijklmnopqrkv wy}<~U^t  ).5<ADFU\chkm|  %,146EHj$r0'Myr[XU Fm6IIIIIIIIII I I I I IIIIII1%4 n:' BBBSBBB[sI4*Q  /*Q  F~RYSN*T*U,V:-WXU,V:-WYU,V:-WZU,V:-W[U,V> $'4=@MVYforR ~~~ u4JM1f'I J\*)*]*(Y^L+)\_+`'1+b*bc1+de1+f*fc1+6  (.14<BEH2J 5*,g,hiN-d1  -01-j1-km1-*  $+ 3 *555 ($I @* **np*Q*4q*@r*4s*@t> a@* ruq h*4q*4w*ox9*@r*@y*ox9czo9**pu|:<}R ;IW[n !$&)'+,>CW" @%QSL  I @ @* **np*Qr*4qh*4s> a@* Auq 7*4q*4w*ox9**pu|:}F01 236/778;9N:p;w<?ADBFI*p7Z=QL  I  2 /9; aegler9 PK!!2com/example/mp4composer/composer/MuxRender$1.class3)     -$SwitchMap$com$example$mp4composer$SampleType[I()VCodeLineNumberTableLocalVariableTable StackMapTable SourceFileMuxRender.javaEnclosingMethod ! "# $% &'java/lang/NoSuchFieldError (%,com/example/mp4composer/composer/MuxRender$1 InnerClassesjava/lang/Object*com/example/mp4composer/composer/MuxRender"com/example/mp4composer/SampleTypevalues'()[Lcom/example/mp4composer/SampleType;VIDEO$Lcom/example/mp4composer/SampleType;ordinal()IAUDIO    j( OKOK #&* WM PK!!$;com/example/mp4composer/composer/MuxRender$SampleInfo.class3F 3 4 5 6 7 8 8 9 9 :<= sampleType$Lcom/example/mp4composer/SampleType;sizeIpresentationTimeUsJflags? BufferInfo InnerClassesM(Lcom/example/mp4composer/SampleType;ILandroid/media/MediaCodec$BufferInfo;)VCodeLineNumberTableLocalVariableTablethis SampleInfo7Lcom/example/mp4composer/composer/MuxRender$SampleInfo; bufferInfo%Landroid/media/MediaCodec$BufferInfo;writeToBufferInfo)(Landroid/media/MediaCodec$BufferInfo;I)Voffset access$000`(Lcom/example/mp4composer/composer/MuxRender$SampleInfo;Landroid/media/MediaCodec$BufferInfo;I)Vx0x1x2 access$100](Lcom/example/mp4composer/composer/MuxRender$SampleInfo;)Lcom/example/mp4composer/SampleType; access$200:(Lcom/example/mp4composer/composer/MuxRender$SampleInfo;)I@{(Lcom/example/mp4composer/SampleType;ILandroid/media/MediaCodec$BufferInfo;Lcom/example/mp4composer/composer/MuxRender$1;)Vx3.Lcom/example/mp4composer/composer/MuxRender$1; SourceFileMuxRender.java    !" A   BCD5com/example/mp4composer/composer/MuxRender$SampleInfojava/lang/ObjectE#android/media/MediaCodec$BufferInfo,com/example/mp4composer/composer/MuxRender$1()Vset(IIJI)V*com/example/mp4composer/composer/MuxRenderandroid/media/MediaCodec  {**+**-*- }~ *  !"T+***    #$%E*+w &' ()*/*w &+,/*w &.Z*+-w4&'( /012> ; -PK!!Wf60com/example/mp4composer/composer/MuxRender.class3 ?} ~  }  @   }  }           (}  - -  - ( (  -  InnerClasses SampleInfoTAGLjava/lang/String; ConstantValue BUFFER_SIZEImuxerLandroid/media/MediaMuxer; videoFormatLandroid/media/MediaFormat; audioFormatvideoTrackIndexaudioTrackIndex byteBufferLjava/nio/ByteBuffer;sampleInfoListLjava/util/List; SignatureILjava/util/List;startedZlogger'Lcom/example/mp4composer/logger/Logger;D(Landroid/media/MediaMuxer;Lcom/example/mp4composer/logger/Logger;)VCodeLineNumberTableLocalVariableTablethis,Lcom/example/mp4composer/composer/MuxRender;$RuntimeInvisibleParameterAnnotationsLandroidx/annotation/NonNull;setOutputFormatB(Lcom/example/mp4composer/SampleType;Landroid/media/MediaFormat;)V sampleType$Lcom/example/mp4composer/SampleType;format StackMapTableonSetOutputFormat()V sampleInfo7Lcom/example/mp4composer/composer/MuxRender$SampleInfo; bufferInfo BufferInfo%Landroid/media/MediaCodec$BufferInfo;offsetRuntimeInvisibleAnnotations!Landroidx/annotation/RequiresApi;apiwriteSampleDataa(Lcom/example/mp4composer/SampleType;Ljava/nio/ByteBuffer;Landroid/media/MediaCodec$BufferInfo;)VbyteBufgetTrackIndexForSampleType'(Lcom/example/mp4composer/SampleType;)I SourceFileMuxRender.java Yi HI WXjava/util/ArrayList QR  JK LKjava/lang/AssertionError MG*com/example/mp4composer/composer/MuxRender MuxRenderjava/lang/StringBuilder Added track #  with android/media/MediaFormatmime  to muxer  NG i UV OP "Output format determined, writing   samples /  bytes to muxer.#android/media/MediaCodec$BufferInfo  5com/example/mp4composer/composer/MuxRender$SampleInfo yz v i oG G  Y java/lang/Object,com/example/mp4composer/composer/MuxRender$1java/util/Iterator-$SwitchMap$com$example$mp4composer$SampleType[I"com/example/mp4composer/SampleTypeordinal()Iandroid/media/MediaMuxeraddTrack(Landroid/media/MediaFormat;)Iappend-(Ljava/lang/String;)Ljava/lang/StringBuilder;(I)Ljava/lang/StringBuilder; getString&(Ljava/lang/String;)Ljava/lang/String;toString()Ljava/lang/String;%com/example/mp4composer/logger/Loggerdebug'(Ljava/lang/String;Ljava/lang/String;)Vstartjava/nio/ByteBufferallocate(I)Ljava/nio/ByteBuffer;flip()Ljava/nio/Buffer;java/util/Listsizelimitandroid/media/MediaCodeciterator()Ljava/util/Iterator;hasNext()Znext()Ljava/lang/Object; access$000`(Lcom/example/mp4composer/composer/MuxRender$SampleInfo;Landroid/media/MediaCodec$BufferInfo;I)V access$100](Lcom/example/mp4composer/composer/MuxRender$SampleInfo;)Lcom/example/mp4composer/SampleType;>(ILjava/nio/ByteBuffer;Landroid/media/MediaCodec$BufferInfo;)V access$200:(Lcom/example/mp4composer/composer/MuxRender$SampleInfo;)Iclear(I)Ljava/nio/Buffer;positionallocateDirectjava/nio/ByteOrder nativeOrder()Ljava/nio/ByteOrder;order+(Ljava/nio/ByteOrder;)Ljava/nio/ByteBuffer;put,(Ljava/nio/ByteBuffer;)Ljava/nio/ByteBuffer;{(Lcom/example/mp4composer/SampleType;ILandroid/media/MediaCodec$BufferInfo;Lcom/example/mp4composer/composer/MuxRender$1;)Vadd(Ljava/lang/Object;)Z ? CDEFGE8HIJKLKMGNGOPQRSTUVWXYZ[h**+*,*Y\#$ %&'] ^_HIWX` aabc[=+.,$*, *, Y \*$,)-,/1042<4] =^_=de=fKg$hi[m* * *** *Y** *** *Y** P* I*** *Y** *** *! * "W*Y#*$%* &'(Y)L=**N-+5-,-:+.**/0* +12`=*3* \j9;<T=c>@BCGHJKM N4OBNGPOQQRoSvTUVWX[]*o$jk^_OVlnQToGgLUpq:r stIuvw[e***+0,-1,-4-5`6W,-47W* *89:; * ,W\* _`ac$d-e4fChLidj]*e^_edeexPelng,r stIuyz[6+.&!** Y \m$o)q.s]6^_6deg${|A@-B (mPK!!k9com/example/mp4composer/composer/RemixAudioComposer.class3? R  ) ) ) ) ) ) ) ) ) ) 3   )    ) 3  ) ) # ) ) # ) # ) ) 3    3 3 3 3 )   #  #   ) ) A ) )     )    SAMPLE_TYPE$Lcom/example/mp4composer/SampleType;DRAIN_STATE_NONEI ConstantValue$DRAIN_STATE_SHOULD_RETRY_IMMEDIATELYDRAIN_STATE_CONSUMED extractorLandroid/media/MediaExtractor;muxer,Lcom/example/mp4composer/composer/MuxRender;writtenPresentationTimeUsJ trackIndex outputFormatLandroid/media/MediaFormat; bufferInfo BufferInfo InnerClasses%Landroid/media/MediaCodec$BufferInfo;decoderLandroid/media/MediaCodec;encoderactualOutputFormatisExtractorEOSZ isDecoderEOS isEncoderEOSdecoderStartedencoderStarted audioChannel5Lcom/example/mp4composer/composer/AudioChannelWithSP; timeScaleFisPitchChanged trimStartUs trimEndUs numTracksaddPrimingDelay frameCounter primingDelaym(Landroid/media/MediaExtractor;ILandroid/media/MediaFormat;Lcom/example/mp4composer/composer/MuxRender;FZJJ)VCodeLineNumberTableLocalVariableTablethis5Lcom/example/mp4composer/composer/RemixAudioComposer; trimStartMs trimEndMs StackMapTablesetup()VeLjava/io/IOException; inputFormat stepPipeline()ZstatusbusyRuntimeInvisibleAnnotations!Landroidx/annotation/RequiresApi;apidrainExtractor(J)I timeoutUsresult sampleSize isKeyFrame drainDecoder drainEncodergetWrittenPresentationTimeUs()J isFinishedrelease SourceFileRemixAudioComposer.java #android/media/MediaCodec$BufferInfo gj |W ^_ dW ef `a wx yp   zc {c android/media/MediaFormatmime     mljava/io/IOExceptionjava/lang/IllegalStateException  android/media/MediaCodec   tp   kl sp3com/example/mp4composer/composer/AudioChannelWithSP  uv  3com/example/mp4composer/composer/RemixAudioComposer  op      !android/media/MediaExtractor " # qp $% &' () *W-com/example/mp4composer/composer/AudioChannel +, -W .c rp nfjava/lang/RuntimeException"Audio output format changed twice. /audio/mp4a-latm0 12 }p TU 34)Could not determine actual output format. 56 78 9 :; bc < = >Ujava/lang/Object/com/example/mp4composer/composer/IAudioComposer*com/example/mp4composer/composer/MuxRenderjava/util/concurrent/TimeUnit MILLISECONDSLjava/util/concurrent/TimeUnit;toMicros(J)J selectTrack(I)V getString&(Ljava/lang/String;)Ljava/lang/String;createEncoderByType.(Ljava/lang/String;)Landroid/media/MediaCodec;(Ljava/lang/Throwable;)V configureP(Landroid/media/MediaFormat;Landroid/view/Surface;Landroid/media/MediaCrypto;I)VstartgetTrackFormat(I)Landroid/media/MediaFormat;createDecoderByTypeT(Landroid/media/MediaCodec;Landroid/media/MediaCodec;Landroid/media/MediaFormat;FZ)VisAnyPendingBuffIndex feedEncoder(J)ZgetSampleTrackIndex()IdequeueInputBufferqueueInputBuffer(IIIJI)VgetInputBuffer(I)Ljava/nio/ByteBuffer;readSampleData(Ljava/nio/ByteBuffer;I)IgetSampleFlags getSampleTimeadvancedequeueOutputBuffer)(Landroid/media/MediaCodec$BufferInfo;J)IgetOutputFormat()Landroid/media/MediaFormat;setActualDecodedFormat(Landroid/media/MediaFormat;)VflagsdrainDecoderBufferAndQueue(IJ)VsizepresentationTimeUs(Ljava/lang/String;)Vjava/lang/Stringequals(Ljava/lang/Object;)ZsetOutputFormatB(Lcom/example/mp4composer/SampleType;Landroid/media/MediaFormat;)Vset(IIJI)VreleaseOutputBuffer(IZ)VgetOutputBufferwriteSampleDataa(Lcom/example/mp4composer/SampleType;Ljava/nio/ByteBuffer;Landroid/media/MediaCodec$BufferInfo;)Vstop"com/example/mp4composer/SampleTypeAUDIO )RSTUVWXYZWX[\WX]^_`abcdWefgjklmlnfopqprpsptpuvwxypzc{c|W}p~Wc A \**Y**+**-* * * *  *   2 @&7ABC#D)E/F5GAH[I\ \\^_\dW\ef\`a\wx\yp\c\c 9P  Y**** LY+******L*+ ! MY,*!+*!*"*#Y*!*** * $% N[^JM ORPQ(S6T=UBWNY[\^Z_[h]s^z_ab* _ NQf^ 5 L<* &<*%'* (=<*% *<* +<* gkmnp"q(s-u=vJx " WLJp  I|*,*-> **!.6*,*! /**!016*2~6*!*4/*5W*Y`B} ~)049FH[n>cdW)vW[DWn1p? "@ Iz*6*!*7>+)*%*!89*:~*6*% <*=*%*><2 02@BNS_ix zzcdW  &  I*?**7>[Y*@ AYBC**8@*D*@EF* G*@H*@ AYIC*:~*?* *:J*:~*K* G*L*M**>N*K^ 029CN`npry cW &,! I6 *N* j  /*? C*!*" *!O*!P*!** *O*P*& !(6=B C  QGi hPK!!o+:<<:com/example/mp4composer/composer/SonicAudioProcessor.class3 9/ 0 1 2 3 4 5 6 7 8 9 :;E <= > ? @ A B C D E F G H I J K LF M N O PQ R S? T U V W X Y Z [ \ ]^_ `a b c d :efg hi jk </ l m n o? |Zr?Jw p q r s t u v w x y z { | } ~      SONIC_MIN_PITCHI ConstantValueASONIC_MAX_PITCHSONIC_AMDF_FREQ inputBuffer[S outputBuffer pitchBufferdownSampleBufferspeedFvolumepitchrateoldRatePositionnewRatePosition useChordPitchZquality numChannelsinputBufferSizepitchBufferSizeoutputBufferSizenumInputSamplesnumOutputSamplesnumPitchSamples minPeriod maxPeriod maxRequiredremainingInputToCopy sampleRate prevPeriod prevMinDiffminDiffmaxDiff$assertionsDisabled(II)VCodeLineNumberTableLocalVariableTablethis6Lcom/example/mp4composer/composer/SonicAudioProcessor;resize([SI)[SoldArray newLengthnewArraylength StackMapTabledmove ([SI[SII)VdestdestPossource sourcePos numSamples scaleSamples([SIIF)VvaluexSamplesamplespositionfixedPointVolumestartstop=getSpeed()FsetSpeed(F)VgetPitchsetPitchgetRatesetRate getChordPitch()Z setChordPitch(Z)V getQuality()I setQuality(I)V getVolume setVolumeallocateStreamBuffers getSampleRategetNumChannelsenlargeOutputBufferIfNeededenlargeInputBufferIfNeededaddFloatSamplesToInputBuffer([FI)V[FxBufferaddShortSamplesToInputBuffer([SI)V#addUnsignedByteSamplesToInputBuffer([BI)VsampleS[BaddBytesToInputBufferxByteinBuffernumBytesremoveInputSamplesremainingSamples copyToOutput([SII)VcopyInputToOutput(I)IreadFloatFromStream([FI)I maxSamplesreadShortFromStream([SI)IreadUnsignedByteFromStream([BI)IreadBytesFromStream outBuffermaxBytes flushStream()VsrexpectedOutputSamplessamplesAvailabledownSampleInputjiskipsamplesPerValuefindPitchPeriodInRange([SIII)IsValpValdiffperiod bestPeriod worstPeriodprevPeriodBetter(IIZ)ZpreferNewPeriodfindPitchPeriod([SIZ)IminPmaxP retPeriod overlapAdd(II[SI[SI[SI)Vtoud frameCount channelCountout outPositionrampDownrampDownPositionrampUprampUpPositionoverlapAddWithSeparation(III[SI[SI[SI)V separationoutPos rampDownPos rampUpPosmoveNewSamplesToPitchBufferoriginalNumOutputSamplesremovePitchSamples adjustPitch newPeriodgetSign interpolate([SIII)SininPos oldSampleRate newSampleRateleftright leftPosition rightPositionratiowidth adjustRate(FI)VskipPitchPeriod([SIFI)I newSamplesinsertPitchPeriod changeSpeedprocessStreamInputwriteFloatToStreamwriteShortToStreamwriteUnsignedByteToStreamwriteBytesToStreamchangeFloatSpeed ([FIFFFFZII)IstreamsonicChangeShortSpeed ([SIFFFFZII)I SourceFileSonicAudioProcessor.java hi ki ji li m\ n\ op q\ r\  }\4com/example/mp4composer/composer/SonicAudioProcessor y\ z\ {\ s\ cd u\ ed t\ fd gd ~\ w\ v\ |\  x\ $ \ \ \  audio r adjustPitch:      3Assertion failed: newRatePosition != newSampleRate java/lang/Object  pjava/lang/AssertionError    !   " #  java/lang/System arraycopy*(Ljava/lang/Object;ILjava/lang/Object;II)Vjava/lang/Mathmin(II)Iandroid/util/Log'(Ljava/lang/String;Ljava/lang/String;)ILjava/io/PrintStream;java/io/PrintStreamprintf<(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintStream;java/lang/ClassdesiredAssertionStatus 9 [\]^_\]`a\]bcdedfdgdhijikilim\n\opq\r\s\t\u\v\w\x\y\z\{\|\}\~\\\\p93*** * * * *** * . >? @ABCD#E(F-G2H 33}\3r\$* h= N++6+- -OP QS"T4$$d$\ d \ @z-* h+* h* h  _`>d\d\\1 ] j6* h6* h`669+5h z6   6  6 + VƱ2 ijkm&n2o:pBqJrOtVm\vf 2$\ =\]]d]\]\]jiU\M\B\ " /*{ >*# hi/* >*# ki/* P*#** li/*  >*  op/*  >*  q\/* >*# ji{** *l*Al**h****h ****h ****h ** ***B %-9AMUakpuz {{}\{r\/* /*  x/*`*$*Y*z``**** .//\.x/*`*$*Y*z``**** .//\.E*** h>6* h*+0jV*Y`&  " 4: D 4#\EEE\1\ "$****+ *Y` # $$d$\L*** h66* h&+3~d>*xV*Y`""#$%,&;$A(K)>,.\LLL\<\ -V* hl>*** h66`*+3~+`3x6*V*Y`& 0 345$697E5K9U:H9/\VVV\ M\=\.f*d=*** *@BCD \\s*!***+ *Y`LMNO*d\\l"**"#=**$*Y"d"U WX Y ""\ \U*>6 d6>6* h+*5nQ*** *6 bce fhijl(m7l=oMpSq> \UUU\P\M\ >*>6 d6>*+* *** *. z{} ~&6<4>>d>\9\6\ Y*>6 d6>6* h+*5z`T*** *6  (;AQW>$\YYY\T\Q\ #I* hl>*66 d666* h-*56+x~T+x`zT*** *h* hB #),;DQ_ev|RD/6\\ }\w\t\5K*<**nE**jF*$n*%b%n&b`6**h`6*h* h** h`V*Y*h`*'* ***"*%B0<O^dsy>?%\\ii0h\?$#/* 8 ]*l6* h6* h=6>66+h``5`6l6*V2 !$.?ELV\\ '\$8\B\]]d]\]\U\M\/ 6666* h=6  r6 6   5+ `56 + ` `56      d  d`6  h h  6 6 h h  6 6 *l(*l)Z ",4?X^ kos4$ ? %9\ "f\ v\ d\y\z\\\ \\[  *4 *hh**h*** # $ &')+&-(00124*44\4\4p  ! 6** *l6* *+**+6*+,***l*l+6gh6xd6x`6* *6* *6* *++6*+,**+6**(*)- *66**(**fACDF,G?IGJ`LfMmNvOPQSTVWYZ^_acdep <\vT\K\\d\p`\\\5 N  r e6^h`6 h`6 h`6 6  5,  5 dh 5 h`lV `6  `6  `6 ˄2 t uvw#x,yFzL{R|Xx^td &8\ M\ D\ #;\ a\e\e\ede\ede\ede\9" 7 6  h `6  h `6 h `6 6`z  5dhlV `6 M/  5dh 5dh`lV `6  `6   5dhlV `6  `6  ZJ $/5GPVsy'\\ \ $\ \ \r\\d\d\d\ D#(1  W*d=*%`*$*Y*z``*******%* **Y%`%"%5GLV WW \P\5 q$****%d *Y%d%#$$\ ~ 6**.*%d***/=*n>*!* &* ****`d0/d6123W** ****4*Y``6p*5F  +49Bejr>j'\+y\4p \ \\1 S+I  \@ L+56+* `56*h6*h6*`h6  d6  d6  h  dh` l" +29z LLdL\L\L\G=5\ ,\+!\ 2\ 9\ **#n>*6@ @z>z6*.6*%d*`h*hW*!6* /*** h`*** h`6V*Y`*Y`*Y`*0**789:W; *"*>`>:**/6#**#?``>**#@`>*`*A6 S T VWYZ%\1]8^M`\cfekf41+\llhi[\Y\ '"+*<**nE*F* %*jF$B $D *$F***$** * *G% *%H* ***d*IFklmop"r4s<uIvNxUy^zf|l}r{* \i{i" #Q *+J*K    \$Q *+L*K   d \%Q *+M*K    \&Q *+N*K    \ '( JYO:  $P %Q R S T *U V W< *XW.   '.5:@Hf JJ\JhiJkiJliJjiJopJ}\Jr\ =) *+ KY O:  %P Q R S T +' V W= +YW.  !(/6;AIp KKdK\KhiKkiKliKjiKopK}\Kr\ >) ,4Z; @-.PK!!!!4com/example/mp4composer/composer/VideoComposer.class3 d  : : : : : : : : : $   :     :   : $ $   ) : ) ) ) ) ) ) ) )  : ) : : : : : : )    : $    $ $ $ $ :       ) )  ! :"#$ Y% & '( )* )+, - . )/0TAGLjava/lang/String; ConstantValue1DRAIN_STATE_NONEI$DRAIN_STATE_SHOULD_RETRY_IMMEDIATELYDRAIN_STATE_CONSUMEDmediaExtractorLandroid/media/MediaExtractor; trackIndex outputFormatLandroid/media/MediaFormat; muxRender,Lcom/example/mp4composer/composer/MuxRender; bufferInfo BufferInfo InnerClasses%Landroid/media/MediaCodec$BufferInfo;decoderLandroid/media/MediaCodec;encoderactualOutputFormatdecoderSurface1Lcom/example/mp4composer/composer/DecoderSurface;encoderSurface1Lcom/example/mp4composer/composer/EncoderSurface;isExtractorEOSZ isDecoderEOS isEncoderEOSdecoderStartedencoderStartedwrittenPresentationTimeUsJ timeScaleF trimStartUs trimEndUslogger'Lcom/example/mp4composer/logger/Logger;(Landroid/media/MediaExtractor;ILandroid/media/MediaFormat;Lcom/example/mp4composer/composer/MuxRender;FJJLcom/example/mp4composer/logger/Logger;)VCodeLineNumberTableLocalVariableTablethis0Lcom/example/mp4composer/composer/VideoComposer; trimStartMs trimEndMs StackMapTable23$RuntimeInvisibleParameterAnnotationsLandroidx/annotation/NonNull;setUp(Lcom/example/mp4composer/filter/GlFilter;Lcom/example/mp4composer/Rotation;Landroid/util/Size;Landroid/util/Size;Lcom/example/mp4composer/FillMode;Lcom/example/mp4composer/FillModeCustomItem;ZZLandroid/opengl/EGLContext;)VeLjava/io/IOException;filter)Lcom/example/mp4composer/filter/GlFilter;rotation"Lcom/example/mp4composer/Rotation;outputResolutionLandroid/util/Size;inputResolutionfillMode"Lcom/example/mp4composer/FillMode;fillModeCustomItem,Lcom/example/mp4composer/FillModeCustomItem; flipVerticalflipHorizontal shareContextLandroid/opengl/EGLContext; inputFormatRuntimeInvisibleAnnotations!Landroidx/annotation/RequiresApi;api stepPipeline()ZbusystatusgetWrittenPresentationTimeUs()J isFinishedrelease()VdrainExtractor()IresultsampleSizeCompat isKeyFrame drainDecoderdoRender drainEncoder SourceFileVideoComposer.java #android/media/MediaCodec$BufferInfo wz pq rj st uv 4 56 78 9:android/media/MediaFormatmime ;< => }|java/io/IOExceptionjava/lang/IllegalStateException ?android/media/MediaCodec @A/com/example/mp4composer/composer/EncoderSurface BC D E F GHandroid/media/MediaExtractor IJrotation-degrees KL MN/com/example/mp4composer/composer/DecoderSurface O  PQ RS TS UV WX YZ [Z \ ]> {| ^C .com/example/mp4composer/composer/VideoComposer _ ` ab cd ef gh i j k lm nj o pj q rs t u vw x ~tjava/lang/RuntimeException"Video output format changed twice. y z{| }~2  )Could not determine actual output format.  f java/lang/Object VideoComposer*com/example/mp4composer/composer/MuxRender%com/example/mp4composer/logger/Loggerjava/util/concurrent/TimeUnit MILLISECONDSLjava/util/concurrent/TimeUnit;toMicros(J)J selectTrack(I)V getString&(Ljava/lang/String;)Ljava/lang/String;createEncoderByType.(Ljava/lang/String;)Landroid/media/MediaCodec;(Ljava/lang/Throwable;)V configureP(Landroid/media/MediaFormat;Landroid/view/Surface;Landroid/media/MediaCrypto;I)VcreateInputSurface()Landroid/view/Surface;4(Landroid/view/Surface;Landroid/opengl/EGLContext;)V makeCurrentstartgetTrackFormat(I)Landroid/media/MediaFormat;seekTo(JI)V containsKey(Ljava/lang/String;)Z setInteger(Ljava/lang/String;I)VS(Lcom/example/mp4composer/filter/GlFilter;Lcom/example/mp4composer/logger/Logger;)V setRotation%(Lcom/example/mp4composer/Rotation;)VsetOutputResolution(Landroid/util/Size;)VsetInputResolution setFillMode%(Lcom/example/mp4composer/FillMode;)VsetFillModeCustomItem/(Lcom/example/mp4composer/FillModeCustomItem;)VsetFlipHorizontal(Z)VsetFlipVerticalcompleteParamscreateDecoderByType getSurfacestopgetSampleTrackIndexdequeueInputBuffer(J)IqueueInputBuffer(IIIJI)VgetInputBuffer(I)Ljava/nio/ByteBuffer;readSampleData(Ljava/nio/ByteBuffer;I)IgetSampleFlags getSampleTimeadvancedequeueOutputBuffer)(Landroid/media/MediaCodec$BufferInfo;J)IflagssignalEndOfInputStreamsizepresentationTimeUsreleaseOutputBuffer(IZ)V awaitNewImage drawImagesetPresentationTime(J)V swapBuffers(Ljava/lang/String;)VgetOutputFormat()Landroid/media/MediaFormat;"com/example/mp4composer/SampleTypeVIDEO$Lcom/example/mp4composer/SampleType;setOutputFormatB(Lcom/example/mp4composer/SampleType;Landroid/media/MediaFormat;)VonSetOutputFormatset(IIJI)VgetOutputBufferwriteSampleDataa(Lcom/example/mp4composer/SampleType;Ljava/nio/ByteBuffer;Landroid/media/MediaCodec$BufferInfo;)V :defghijgkljgmnjgopqrjstuvwz{|}|~t < W**Y*+**-** *  *   * . 9&:;<=$>*?6@PAVB\ WWpqWrjWstWuvWWWW =E  !^ ****: Y ***Y* * *!*"**#: ** % &'  &(*)Y+**+*+,,*+--*+.*+/*+0*+1*+2*+3* 45: Y *5 *+6*5!*7 ~N PSQ R*T8ULVSWZX_Zl[x\`bcdefghijmpnoq rst  lt ^ _d I,<*8<*9=<*;<* x{ |%* ,*j   I6 *<* j  /*= i*+*+>*+**?**5*7 *5@*5A*5**" *@*A*>!&-;BGN\ch i  Ib*B*C< **5 D=*B*5 E**5FG>*H~6*5*I* nE*JW> (.27CEVi4rj(mjV?ji,=  @ I*K*5* L<*M~*N*K*O*O0*P* !*P** =*5Q-*+R*+S**PTiV*W*P **P<R 0246BINV jP &2@7 I}*=** L<PN*X YYZ[**\X*]*X^*_*X YY`[*M~*=* *Ma*M~*Q*]*b*c**P<*Q^ 029CN\cegnxj &!! Iy xPK!!dQ  6com/example/mp4composer/filter/GlBilateralFilter.class3:)*+ ,;o - . / 0 123 VERTEX_SHADERLjava/lang/String; ConstantValueFRAGMENT_SHADERtexelWidthOffsetFtexelHeightOffsetblurSize()VCodeLineNumberTableLocalVariableTablethis2Lcom/example/mp4composer/filter/GlBilateralFilter;getTexelWidthOffset()FsetTexelWidthOffset(F)VgetTexelHeightOffsetsetTexelHeightOffset getBlurSize setBlurSizeonDraw SourceFileGlBilateralFilter.java0com/example/mp4composer/filter/GlBilateralFilterattribute vec4 aPosition;attribute vec4 aTextureCoord;const lowp int GAUSSIAN_SAMPLES = 9;uniform highp float texelWidthOffset;uniform highp float texelHeightOffset;uniform highp float blurSize;varying highp vec2 vTextureCoord;varying highp vec2 blurCoordinates[GAUSSIAN_SAMPLES];void main() {gl_Position = aPosition;vTextureCoord = aTextureCoord.xy;int multiplier = 0;highp vec2 blurStep;highp vec2 singleStepOffset = vec2(texelHeightOffset, texelWidthOffset) * blurSize;for (lowp int i = 0; i < GAUSSIAN_SAMPLES; i++) {multiplier = (i - ((GAUSSIAN_SAMPLES - 1) / 2));blurStep = float(multiplier) * singleStepOffset;blurCoordinates[i] = vTextureCoord.xy + blurStep;}} precision mediump float;uniform lowp sampler2D sTexture;const lowp int GAUSSIAN_SAMPLES = 9;varying highp vec2 vTextureCoord;varying highp vec2 blurCoordinates[GAUSSIAN_SAMPLES];const mediump float distanceNormalizationFactor = 1.5;void main() {lowp vec4 centralColor = texture2D(sTexture, blurCoordinates[4]);lowp float gaussianWeightTotal = 0.18;lowp vec4 sum = centralColor * 0.18;lowp vec4 sampleColor = texture2D(sTexture, blurCoordinates[0]);lowp float distanceFromCentralColor;distanceFromCentralColor = min(distance(centralColor, sampleColor) * distanceNormalizationFactor, 1.0);lowp float gaussianWeight = 0.05 * (1.0 - distanceFromCentralColor);gaussianWeightTotal += gaussianWeight;sum += sampleColor * gaussianWeight;sampleColor = texture2D(sTexture, blurCoordinates[1]);distanceFromCentralColor = min(distance(centralColor, sampleColor) * distanceNormalizationFactor, 1.0);gaussianWeight = 0.09 * (1.0 - distanceFromCentralColor);gaussianWeightTotal += gaussianWeight;sum += sampleColor * gaussianWeight;sampleColor = texture2D(sTexture, blurCoordinates[2]);distanceFromCentralColor = min(distance(centralColor, sampleColor) * distanceNormalizationFactor, 1.0);gaussianWeight = 0.12 * (1.0 - distanceFromCentralColor);gaussianWeightTotal += gaussianWeight;sum += sampleColor * gaussianWeight;sampleColor = texture2D(sTexture, blurCoordinates[3]);distanceFromCentralColor = min(distance(centralColor, sampleColor) * distanceNormalizationFactor, 1.0);gaussianWeight = 0.15 * (1.0 - distanceFromCentralColor);gaussianWeightTotal += gaussianWeight;sum += sampleColor * gaussianWeight;sampleColor = texture2D(sTexture, blurCoordinates[5]);distanceFromCentralColor = min(distance(centralColor, sampleColor) * distanceNormalizationFactor, 1.0);gaussianWeight = 0.15 * (1.0 - distanceFromCentralColor);gaussianWeightTotal += gaussianWeight;sum += sampleColor * gaussianWeight;sampleColor = texture2D(sTexture, blurCoordinates[6]);distanceFromCentralColor = min(distance(centralColor, sampleColor) * distanceNormalizationFactor, 1.0);gaussianWeight = 0.12 * (1.0 - distanceFromCentralColor);gaussianWeightTotal += gaussianWeight;sum += sampleColor * gaussianWeight;sampleColor = texture2D(sTexture, blurCoordinates[7]);distanceFromCentralColor = min(distance(centralColor, sampleColor) * distanceNormalizationFactor, 1.0);gaussianWeight = 0.09 * (1.0 - distanceFromCentralColor);gaussianWeightTotal += gaussianWeight;sum += sampleColor * gaussianWeight;sampleColor = texture2D(sTexture, blurCoordinates[8]);distanceFromCentralColor = min(distance(centralColor, sampleColor) * distanceNormalizationFactor, 1.0);gaussianWeight = 0.05 * (1.0 - distanceFromCentralColor);gaussianWeightTotal += gaussianWeight;sum += sampleColor * gaussianWeight;gl_FragColor = sum / gaussianWeightTotal;} 4    567 89'com/example/mp4composer/filter/GlFilter'(Ljava/lang/String;Ljava/lang/String;)V getHandle(Ljava/lang/String;)Iandroid/opengl/GLES20 glUniform1f(IF)V!T**** topqu /*y  !>*# }~"/* #!>*# $/* %!>*# &^(* * * * * *  ' ('(PK!!fMW 4com/example/mp4composer/filter/GlBoxBlurFilter.class3:)*+ ,;D - . / 0 123 VERTEX_SHADERLjava/lang/String; ConstantValueFRAGMENT_SHADERtexelWidthOffsetFtexelHeightOffsetblurSize()VCodeLineNumberTableLocalVariableTablethis0Lcom/example/mp4composer/filter/GlBoxBlurFilter;getTexelWidthOffset()FsetTexelWidthOffset(F)VgetTexelHeightOffsetsetTexelHeightOffset getBlurSize setBlurSizeonDraw SourceFileGlBoxBlurFilter.java.com/example/mp4composer/filter/GlBoxBlurFilterattribute vec4 aPosition;attribute vec4 aTextureCoord;uniform highp float texelWidthOffset;uniform highp float texelHeightOffset;uniform highp float blurSize;varying highp vec2 centerTextureCoordinate;varying highp vec2 oneStepLeftTextureCoordinate;varying highp vec2 twoStepsLeftTextureCoordinate;varying highp vec2 oneStepRightTextureCoordinate;varying highp vec2 twoStepsRightTextureCoordinate;void main() {gl_Position = aPosition;vec2 firstOffset = vec2(1.5 * texelWidthOffset, 1.5 * texelHeightOffset) * blurSize;vec2 secondOffset = vec2(3.5 * texelWidthOffset, 3.5 * texelHeightOffset) * blurSize;centerTextureCoordinate = aTextureCoord.xy;oneStepLeftTextureCoordinate = centerTextureCoordinate - firstOffset;twoStepsLeftTextureCoordinate = centerTextureCoordinate - secondOffset;oneStepRightTextureCoordinate = centerTextureCoordinate + firstOffset;twoStepsRightTextureCoordinate = centerTextureCoordinate + secondOffset;}precision mediump float;uniform lowp sampler2D sTexture;varying highp vec2 centerTextureCoordinate;varying highp vec2 oneStepLeftTextureCoordinate;varying highp vec2 twoStepsLeftTextureCoordinate;varying highp vec2 oneStepRightTextureCoordinate;varying highp vec2 twoStepsRightTextureCoordinate;void main() {lowp vec4 color = texture2D(sTexture, centerTextureCoordinate) * 0.2;color += texture2D(sTexture, oneStepLeftTextureCoordinate) * 0.2;color += texture2D(sTexture, oneStepRightTextureCoordinate) * 0.2;color += texture2D(sTexture, twoStepsLeftTextureCoordinate) * 0.2;color += texture2D(sTexture, twoStepsRightTextureCoordinate) * 0.2;gl_FragColor = color;} 4    567 89'com/example/mp4composer/filter/GlFilter'(Ljava/lang/String;Ljava/lang/String;)V getHandle(Ljava/lang/String;)Iandroid/opengl/GLES20 glUniform1f(IF)V!T**** @:;<A /*D  !>*# HI"/*L #!>*# PQ$/*T %!>*# XY&^(* * * * * * ^ _`'a ('(PK!!UCd!!7com/example/mp4composer/filter/GlBrightnessFilter.class3*    ! "#BRIGHTNESS_FRAGMENT_SHADERLjava/lang/String; ConstantValue brightnessF()VCodeLineNumberTableLocalVariableTablethis3Lcom/example/mp4composer/filter/GlBrightnessFilter; setBrightness(F)VonDraw SourceFileGlBrightnessFilter.java'com/example/mp4composer/filter/GlFilterattribute highp vec4 aPosition; attribute highp vec4 aTextureCoord; varying highp vec2 vTextureCoord; void main() { gl_Position = aPosition; vTextureCoord = aTextureCoord.xy; } 1com/example/mp4composer/filter/GlBrightnessFilter&precision mediump float; varying vec2 vTextureCoord; uniform lowp sampler2D sTexture; uniform lowp float brightness; void main() { lowp vec4 textureColor = texture2D(sTexture, vTextureCoord); gl_FragColor = vec4((textureColor.rgb + vec3(brightness)), textureColor.w); } $  %&' ()'(Ljava/lang/String;Ljava/lang/String;)V getHandle(Ljava/lang/String;)Iandroid/opengl/GLES20 glUniform1f(IF)V!   @**   >*#  <**   ! PK!!> > <com/example/mp4composer/filter/GlBulgeDistortionFilter.class3D./01 2? 3 4> 5 67 8 9: 9;FRAGMENT_SHADERLjava/lang/String; ConstantValuecenterXFcenterYradiusscale()VCodeLineNumberTableLocalVariableTablethis8Lcom/example/mp4composer/filter/GlBulgeDistortionFilter; getCenterX()F setCenterX(F)V getCenterY setCenterY getRadius setRadiusgetScalesetScaleonDraw SourceFileGlBulgeDistortionFilter.java'com/example/mp4composer/filter/GlFilterattribute highp vec4 aPosition; attribute highp vec4 aTextureCoord; varying highp vec2 vTextureCoord; void main() { gl_Position = aPosition; vTextureCoord = aTextureCoord.xy; } 6com/example/mp4composer/filter/GlBulgeDistortionFilterBprecision mediump float;varying highp vec2 vTextureCoord;uniform lowp sampler2D sTexture;uniform highp vec2 center;uniform highp float radius;uniform highp float scale;void main() {highp vec2 textureCoordinateToUse = vTextureCoord;highp float dist = distance(center, vTextureCoord);textureCoordinateToUse -= center;if (dist < radius) {highp float percent = 1.0 - ((radius - dist) / radius) * scale;percent = percent * percent;textureCoordinateToUse = textureCoordinateToUse * percent;}textureCoordinateToUse += center;gl_FragColor = texture2D(sTexture, textureCoordinateToUse);} <    center =>? @A BC'(Ljava/lang/String;Ljava/lang/String;)V getHandle(Ljava/lang/String;)Iandroid/opengl/GLES20 glUniform2f(IFF)V glUniform1f(IF)V! _!**** * )#$%& * ! !"/*-  #$>*# 12 %"/*5  &$>*# 9: '"/* =  ($>*#  AB )"/* E  *$>*#  IJ +b,* *** * * * PQR+S , ,-PK!!f kSS:com/example/mp4composer/filter/GlCGAColorspaceFilter.class3 FRAGMENT_SHADERLjava/lang/String; ConstantValue()VCodeLineNumberTableLocalVariableTablethis6Lcom/example/mp4composer/filter/GlCGAColorspaceFilter; SourceFileGlCGAColorspaceFilter.java'com/example/mp4composer/filter/GlFilterattribute highp vec4 aPosition; attribute highp vec4 aTextureCoord; varying highp vec2 vTextureCoord; void main() { gl_Position = aPosition; vTextureCoord = aTextureCoord.xy; } 4com/example/mp4composer/filter/GlCGAColorspaceFilterprecision mediump float;varying vec2 vTextureCoord;uniform lowp sampler2D sTexture;void main() {highp vec2 sampleDivisor = vec2(1.0 / 200.0, 1.0 / 320.0);highp vec2 samplePos = vTextureCoord - mod(vTextureCoord, sampleDivisor);highp vec4 color = texture2D(sTexture, samplePos);mediump vec4 colorCyan = vec4(85.0 / 255.0, 1.0, 1.0, 1.0);mediump vec4 colorMagenta = vec4(1.0, 85.0 / 255.0, 1.0, 1.0);mediump vec4 colorWhite = vec4(1.0, 1.0, 1.0, 1.0);mediump vec4 colorBlack = vec4(0.0, 0.0, 0.0, 1.0);mediump vec4 endColor;highp float blackDistance = distance(color, colorBlack);highp float whiteDistance = distance(color, colorWhite);highp float magentaDistance = distance(color, colorMagenta);highp float cyanDistance = distance(color, colorCyan);mediump vec4 finalColor;highp float colorDistance = min(magentaDistance, cyanDistance);colorDistance = min(colorDistance, whiteDistance);colorDistance = min(colorDistance, blackDistance);if (colorDistance == blackDistance) {finalColor = colorBlack;} else if (colorDistance == whiteDistance) {finalColor = colorWhite;} else if (colorDistance == cyanDistance) {finalColor = colorCyan;} else {finalColor = colorMagenta;}gl_FragColor = finalColor;} '(Ljava/lang/String;Ljava/lang/String;)V!  7 * 56  PK!!N++5com/example/mp4composer/filter/GlContrastFilter.class3+  ? ! " #$CONTRAST_FRAGMENT_SHADERLjava/lang/String; ConstantValuecontrastF()VCodeLineNumberTableLocalVariableTablethis1Lcom/example/mp4composer/filter/GlContrastFilter; setContrast(F)VonDraw SourceFileGlContrastFilter.java'com/example/mp4composer/filter/GlFilterattribute highp vec4 aPosition; attribute highp vec4 aTextureCoord; varying highp vec2 vTextureCoord; void main() { gl_Position = aPosition; vTextureCoord = aTextureCoord.xy; } /com/example/mp4composer/filter/GlContrastFilter6precision mediump float; varying vec2 vTextureCoord; uniform lowp sampler2D sTexture; uniform lowp float contrast; void main() { lowp vec4 textureColor = texture2D(sTexture, vTextureCoord); gl_FragColor = vec4(((textureColor.rgb - vec3(0.5)) * contrast + vec3(0.5)), textureColor.w); } %  &'( )*'(Ljava/lang/String;Ljava/lang/String;)V getHandle(Ljava/lang/String;)Iandroid/opengl/GLES20 glUniform1f(IF)V!  A** >*# !"<* *  & ' PK!!> 7com/example/mp4composer/filter/GlCrosshatchFilter.class3;*+,- .< /;D 0 1 23 4:CROSSHATCH_FRAGMENT_SHADERLjava/lang/String; ConstantValuecrossHatchSpacingF lineWidth()VCodeLineNumberTableLocalVariableTablethis3Lcom/example/mp4composer/filter/GlCrosshatchFilter;onDrawsetCrossHatchSpacing(F)V setLineWidth setFrameSize(II)VsinglePixelSpacingwidthIheight StackMapTable SourceFileGlCrosshatchFilter.java'com/example/mp4composer/filter/GlFilterattribute highp vec4 aPosition; attribute highp vec4 aTextureCoord; varying highp vec2 vTextureCoord; void main() { gl_Position = aPosition; vTextureCoord = aTextureCoord.xy; } 1com/example/mp4composer/filter/GlCrosshatchFilterprecision mediump float; varying vec2 vTextureCoord; uniform lowp sampler2D sTexture; uniform highp float crossHatchSpacing; uniform highp float lineWidth; const highp vec3 W = vec3(0.2125, 0.7154, 0.0721); void main() { highp float luminance = dot(texture2D(sTexture, vTextureCoord).rgb, W); lowp vec4 colorToDisplay = vec4(1.0, 1.0, 1.0, 1.0); if (luminance < 1.00) { if (mod(vTextureCoord.x + vTextureCoord.y, crossHatchSpacing) <= lineWidth) { colorToDisplay = vec4(0.0, 0.0, 0.0, 1.0); } } if (luminance < 0.75) { if (mod(vTextureCoord.x - vTextureCoord.y, crossHatchSpacing) <= lineWidth) { colorToDisplay = vec4(0.0, 0.0, 0.0, 1.0); } } if (luminance < 0.50) { if (mod(vTextureCoord.x + vTextureCoord.y - (crossHatchSpacing / 2.0), crossHatchSpacing) <= lineWidth) { colorToDisplay = vec4(0.0, 0.0, 0.0, 1.0); } } if (luminance < 0.3) { if (mod(vTextureCoord.x - vTextureCoord.y - (crossHatchSpacing / 2.0), crossHatchSpacing) <= lineWidth) { colorToDisplay = vec4(0.0, 0.0, 0.0, 1.0); } } gl_FragColor = colorToDisplay; } 5   678 9: !"'(Ljava/lang/String;Ljava/lang/String;)V getHandle(Ljava/lang/String;)Iandroid/opengl/GLES20 glUniform1f(IF)V!K*** 2563 M* * * * : ;< >*# ?@ >*#  CD!"$* nFF*%*%HK LNPQ#T4#$$$%$&%#' ()PK!!:&5com/example/mp4composer/filter/GlExposureFilter.class3*    ! "#EXPOSURE_FRAGMENT_SHADERLjava/lang/String; ConstantValueexposureF()VCodeLineNumberTableLocalVariableTablethis1Lcom/example/mp4composer/filter/GlExposureFilter; setExposure(F)VonDraw SourceFileGlExposureFilter.java'com/example/mp4composer/filter/GlFilterattribute highp vec4 aPosition; attribute highp vec4 aTextureCoord; varying highp vec2 vTextureCoord; void main() { gl_Position = aPosition; vTextureCoord = aTextureCoord.xy; } /com/example/mp4composer/filter/GlExposureFilter'precision mediump float; varying vec2 vTextureCoord; uniform lowp sampler2D sTexture; uniform highp float exposure; void main() { highp vec4 textureColor = texture2D(sTexture, vTextureCoord); gl_FragColor = vec4(textureColor.rgb * pow(2.0, exposure), textureColor.w); } $  %&' ()'(Ljava/lang/String;Ljava/lang/String;)V getHandle(Ljava/lang/String;)Iandroid/opengl/GLES20 glUniform1f(IF)V!   @**   >*#   <**  $ % PK!!F-com/example/mp4composer/filter/GlFilter.class3  =      1 0                      /   4 4 4 3 / DEFAULT_UNIFORM_SAMPLERLjava/lang/String; ConstantValueDEFAULT_VERTEX_SHADERDEFAULT_FRAGMENT_SHADER VERTICES_DATA[FFLOAT_SIZE_BYTESIVERTICES_DATA_POS_SIZEVERTICES_DATA_UV_SIZEVERTICES_DATA_STRIDE_BYTESVERTICES_DATA_POS_OFFSETVERTICES_DATA_UV_OFFSET vertexShaderSourcefragmentShaderSourceprogram vertexShaderfragmentShadervertexBufferName handleMapLjava/util/HashMap; Signature:Ljava/util/HashMap; clearColor()VCodeLineNumberTableLocalVariableTablethis)Lcom/example/mp4composer/filter/GlFilter;$(Landroid/content/res/Resources;II)VresLandroid/content/res/Resources;vertexShaderSourceResIdfragmentShaderSourceResId'(Ljava/lang/String;Ljava/lang/String;)VsetupsetFragmentShaderSource(Ljava/lang/String;)V setFrameSize(II)Vwidthheightreleasedraw4(ILcom/example/mp4composer/gl/GlFramebufferObject;)VtexNamefbo0Lcom/example/mp4composer/gl/GlFramebufferObject;onDraw useProgramgetVertexBufferName()I getHandle(Ljava/lang/String;)InamevalueLjava/lang/Integer;location StackMapTable getClearColor()[F setClearColor(FFFF)VredFgreenbluealpha SourceFile GlFilter.java'com/example/mp4composer/filter/GlFilterandroid/opengl/GLES20attribute highp vec4 aPosition; attribute highp vec4 aTextureCoord; varying highp vec2 vTextureCoord; void main() { gl_Position = aPosition; vTextureCoord = aTextureCoord.xy; } precision mediump float; varying highp vec2 vTextureCoord; uniform lowp sampler2D sTexture; void main() { gl_FragColor = texture2D(sTexture, vTextureCoord); } ]i ]^java/util/HashMap XY \D R? S? q^ UF VF TF CD WF aPosition {| aTextureCoordsTexture ^ x^ n n n w^ java/lang/Integer z java/lang/IllegalStateExceptionjava/lang/StringBuilder-Could not get attrib or uniform location for ]l java/lang/Objectandroid/content/res/Resources getString(I)Ljava/lang/String;%com/example/mp4composer/utils/EglUtil loadShader(Ljava/lang/String;I)I createProgram(II)I createBuffer([F)IglDeleteProgram(I)VglDeleteShaderglDeleteBuffers(I[II)Vclear glBindBufferglEnableVertexAttribArrayglVertexAttribPointer (IIIZII)VglActiveTexture glBindTexture glUniform1i glDrawArrays(III)VglDisableVertexAttribArray glUseProgramget&(Ljava/lang/Object;)Ljava/lang/Object;intValueglGetAttribLocation(ILjava/lang/String;)IglGetUniformLocationappend-(Ljava/lang/String;)Ljava/lang/StringBuilder;toString()Ljava/lang/String;valueOf(I)Ljava/lang/Integer;put8(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;!=>?@A?@B?@CDEF@GHF@IJF@KLF@MNF@OPF@QR?S?TFUFVFWFXYZ[\D]^_7 *` CDa  bc]d_[*++` GHa*bcefgFhF]i_1**Y *Y QY QY QY Q *+ *, `J@&K+L0Ma 1bc1R?1S?j^_M*** ** *****W*W*W`& PQRS-T7V>WEXLYa Mbckl_>*+ ` \]abcS?mn_?`ba bcoFpFq^_@****** Y*O** `* ef ghij$k3l8n?oa @bcrs_*!"*#*$*%*$* %&' (*)**+*,*, ("#`Bsu vw'x0yB{G|N}X\bkt{a bctFuvw^_+`a bcx^_6*-` a bcyz_/*`a bc{|_[* +./M,,0*+1> *+2>3Y4Y567+789* +:;W`* #,1LYa*[bc[}? O~=F _/* `a bc_o*Y#QY$QY%QYQ ` a4bc^_jY;listLjava/util/ArrayList;Ljava/util/ArrayList;>; prevTexNameI-([Lcom/example/mp4composer/filter/GlFilter;)VCodeLineNumberTableLocalVariableTablethis.Lcom/example/mp4composer/filter/GlFilterGroup; glFilters*[Lcom/example/mp4composer/filter/GlFilter;(Ljava/util/Collection;)VLocalVariableTypeTableD(Ljava/util/Collection;)Vsetup()Vfbo0Lcom/example/mp4composer/gl/GlFramebufferObject;shader)Lcom/example/mp4composer/filter/GlFilter;maxcount StackMapTableucdtreleasepairLandroid/util/Pair;nLandroid/util/Pair;g setFrameSize(II)Vwidthheightdraw4(ILcom/example/mp4composer/gl/GlFramebufferObject;)VtexName SourceFileGlFilterGroup.javaandroid/opengl/GLES20v wx -6 -:java/util/ArrayList () $% 9:y z{ |}u ~ 'com/example/mp4composer/filter/GlFilter.com/example/mp4composer/gl/GlFramebufferObject android/util/Pair F: : KL 9L +, : OP { L,com/example/mp4composer/filter/GlFilterGroupjava/util/Iteratorjava/util/ArraysasList%([Ljava/lang/Object;)Ljava/util/List;java/util/Collectionsize()Iiterator()Ljava/util/Iterator;hasNext()Znext()Ljava/lang/Object;create9(Ljava/lang/Object;Ljava/lang/Object;)Landroid/util/Pair;add(Ljava/lang/Object;)ZfirstLjava/lang/Object;secondclearenableglClear(I)V getTexNameglBindFramebuffer!#$%&'()&*+,-./A *+0 1 23 45-6/g**Y*+01234%7 4'&89:/f* *]* <=* N- >- : `Y::*W06 " #$&5':)A*M,P._/b0e21>J;<P;<5-=>P?,N@,f23A !B+CDEF:/L*L+ 2+ M, ,, ,**0& 67"8,:3;==@>G?K@1"GHL237 "GIAB#JKL/P**N- ;- :±0"DF"G*H7J?KLMON1*"*GHP23PM,PN,7 "*GIAB(JOP/G**N- - :E+@** ,, , !"*,y0>TU!V)W1X<YB[Y]k`oavc|fgjk1*!sGH23Q,;<7 !sGIA BKJ RSPK!!2com/example/mp4composer/filter/GlGammaFilter.class3+  ? ! " #$GAMMA_FRAGMENT_SHADERLjava/lang/String; ConstantValuegammaF()VCodeLineNumberTableLocalVariableTablethis.Lcom/example/mp4composer/filter/GlGammaFilter;setGamma(F)VonDraw SourceFileGlGammaFilter.java'com/example/mp4composer/filter/GlFilterattribute highp vec4 aPosition; attribute highp vec4 aTextureCoord; varying highp vec2 vTextureCoord; void main() { gl_Position = aPosition; vTextureCoord = aTextureCoord.xy; } ,com/example/mp4composer/filter/GlGammaFilterprecision mediump float; varying vec2 vTextureCoord; uniform lowp sampler2D sTexture; uniform lowp float gamma; void main() { lowp vec4 textureColor = texture2D(sTexture, vTextureCoord); gl_FragColor = vec4(pow(textureColor.rgb, vec3(gamma)), textureColor.w); } %  &'( )*'(Ljava/lang/String;Ljava/lang/String;)V getHandle(Ljava/lang/String;)Iandroid/opengl/GLES20 glUniform1f(IF)V!  A** >*# <* *   ! PK!! 6 9com/example/mp4composer/filter/GlGaussianBlurFilter.class3;*+, -<# . />L 0 1 234 VERTEX_SHADERLjava/lang/String; ConstantValueFRAGMENT_SHADERtexelWidthOffsetFtexelHeightOffsetblurSize()VCodeLineNumberTableLocalVariableTablethis5Lcom/example/mp4composer/filter/GlGaussianBlurFilter;getTexelWidthOffset()FsetTexelWidthOffset(F)VgetTexelHeightOffsetsetTexelHeightOffset getBlurSize setBlurSizeonDraw SourceFileGlGaussianBlurFilter.java3com/example/mp4composer/filter/GlGaussianBlurFilterattribute vec4 aPosition;attribute vec4 aTextureCoord;const lowp int GAUSSIAN_SAMPLES = 9;uniform highp float texelWidthOffset;uniform highp float texelHeightOffset;uniform highp float blurSize;varying highp vec2 blurCoordinates[GAUSSIAN_SAMPLES];void main() {gl_Position = aPosition;highp vec2 vTextureCoord = aTextureCoord.xy;int multiplier = 0;highp vec2 blurStep;highp vec2 singleStepOffset = vec2(texelHeightOffset, texelWidthOffset) * blurSize;for (lowp int i = 0; i < GAUSSIAN_SAMPLES; i++) {multiplier = (i - ((GAUSSIAN_SAMPLES - 1) / 2));blurStep = float(multiplier) * singleStepOffset;blurCoordinates[i] = vTextureCoord.xy + blurStep;}}precision mediump float;const lowp int GAUSSIAN_SAMPLES = 9;varying highp vec2 blurCoordinates[GAUSSIAN_SAMPLES];uniform lowp sampler2D sTexture;void main() {lowp vec4 sum = vec4(0.0);sum += texture2D(sTexture, blurCoordinates[0]) * 0.05;sum += texture2D(sTexture, blurCoordinates[1]) * 0.09;sum += texture2D(sTexture, blurCoordinates[2]) * 0.12;sum += texture2D(sTexture, blurCoordinates[3]) * 0.15;sum += texture2D(sTexture, blurCoordinates[4]) * 0.18;sum += texture2D(sTexture, blurCoordinates[5]) * 0.15;sum += texture2D(sTexture, blurCoordinates[6]) * 0.12;sum += texture2D(sTexture, blurCoordinates[7]) * 0.09;sum += texture2D(sTexture, blurCoordinates[8]) * 0.05;gl_FragColor = sum;} 5    678 9:'com/example/mp4composer/filter/GlFilter'(Ljava/lang/String;Ljava/lang/String;)V getHandle(Ljava/lang/String;)Iandroid/opengl/GLES20 glUniform1f(IF)V!U**** E@ABF  /*I !">*# MN# /*Q $">*# UV% /* Y &">*#  ]^'^(* * * * * * c de'f (()PK!!x6com/example/mp4composer/filter/GlGrayScaleFilter.class3 FRAGMENT_SHADERLjava/lang/String; ConstantValue()VCodeLineNumberTableLocalVariableTablethis2Lcom/example/mp4composer/filter/GlGrayScaleFilter; SourceFileGlGrayScaleFilter.java'com/example/mp4composer/filter/GlFilterattribute highp vec4 aPosition; attribute highp vec4 aTextureCoord; varying highp vec2 vTextureCoord; void main() { gl_Position = aPosition; vTextureCoord = aTextureCoord.xy; } 0com/example/mp4composer/filter/GlGrayScaleFilterprecision mediump float;varying vec2 vTextureCoord;uniform lowp sampler2D sTexture;const highp vec3 weight = vec3(0.2125, 0.7154, 0.0721);void main() {float luminance = dot(texture2D(sTexture, vTextureCoord).rgb, weight);gl_FragColor = vec4(vec3(luminance), 1.0);} '(Ljava/lang/String;Ljava/lang/String;)V!  7 *   PK!!^W  5com/example/mp4composer/filter/GlHalftoneFilter.class37&'() *<# + , - . /0HALFTONE_FRAGMENT_SHADERLjava/lang/String; ConstantValuefractionalWidthOfPixelF aspectRatio()VCodeLineNumberTableLocalVariableTablethis1Lcom/example/mp4composer/filter/GlHalftoneFilter;setFractionalWidthOfAPixel(F)VfractionalWidthOfAPixel setFrameSize(II)VwidthIheightonDraw SourceFileGlHalftoneFilter.java'com/example/mp4composer/filter/GlFilterattribute highp vec4 aPosition; attribute highp vec4 aTextureCoord; varying highp vec2 vTextureCoord; void main() { gl_Position = aPosition; vTextureCoord = aTextureCoord.xy; } /com/example/mp4composer/filter/GlHalftoneFilterprecision mediump float; varying vec2 vTextureCoord; uniform lowp sampler2D sTexture; uniform highp float fractionalWidthOfPixel; uniform highp float aspectRatio; const highp vec3 W = vec3(0.2125, 0.7154, 0.0721); void main() { highp vec2 sampleDivisor = vec2(fractionalWidthOfPixel, fractionalWidthOfPixel / aspectRatio); highp vec2 samplePos = vTextureCoord - mod(vTextureCoord, sampleDivisor) + 0.5 * sampleDivisor; highp vec2 textureCoordinateToUse = vec2(vTextureCoord.x, (vTextureCoord.y * aspectRatio + 0.5 - 0.5 * aspectRatio)); highp vec2 adjustedSamplePos = vec2(samplePos.x, (samplePos.y * aspectRatio + 0.5 - 0.5 * aspectRatio)); highp float distanceFromSamplePoint = distance(adjustedSamplePos, textureCoordinateToUse); lowp vec3 sampledColor = texture2D(sTexture, samplePos).rgb; highp float dotScaling = 1.0 - dot(sampledColor, W); lowp float checkForPresenceWithinDot = 1.0 - step(distanceFromSamplePoint, (fractionalWidthOfPixel * 0.5) * dotScaling); gl_FragColor = vec4(vec3(checkForPresenceWithinDot), 1.0); } 1    234 56'(Ljava/lang/String;Ljava/lang/String;)V getHandle(Ljava/lang/String;)Iandroid/opengl/GLES20 glUniform1f(IF)V!J***  #$! >*# '(V* *n,-.  !"!#M* * * * 2 34 $%PK!!]bYY1com/example/mp4composer/filter/GlHazeFilter.class33#$%& '>L ( ) * +,FRAGMENT_SHADERLjava/lang/String; ConstantValuedistanceFslope()VCodeLineNumberTableLocalVariableTablethis-Lcom/example/mp4composer/filter/GlHazeFilter; getDistance()F setDistance(F)VgetSlopesetSlopeonDraw SourceFileGlHazeFilter.java'com/example/mp4composer/filter/GlFilterattribute highp vec4 aPosition; attribute highp vec4 aTextureCoord; varying highp vec2 vTextureCoord; void main() { gl_Position = aPosition; vTextureCoord = aTextureCoord.xy; } +com/example/mp4composer/filter/GlHazeFilterRprecision mediump float;varying highp vec2 vTextureCoord;uniform lowp sampler2D sTexture;uniform lowp float distance;uniform highp float slope;void main() {highp vec4 color = vec4(1.0);highp float d = vTextureCoord.y * slope + distance;highp vec4 c = texture2D(sTexture, vTextureCoord);c = (c - d * color) / (1.0 -d);gl_FragColor = c;} -   ./0 12'(Ljava/lang/String;Ljava/lang/String;)V getHandle(Ljava/lang/String;)Iandroid/opengl/GLES20 glUniform1f(IF)V! J***  ! /*$ >*# ()/*, >*# 01 M* * * * 5 67 !"PK!!<com/example/mp4composer/filter/GlHighlightShadowFilter.class3/ !" # $ % & '( HIGHLIGHT_SHADOW_FRAGMENT_SHADERLjava/lang/String; ConstantValueshadowsF highlights()VCodeLineNumberTableLocalVariableTablethis8Lcom/example/mp4composer/filter/GlHighlightShadowFilter; setShadows(F)V setHighlightsonDraw SourceFileGlHighlightShadowFilter.java'com/example/mp4composer/filter/GlFilterattribute highp vec4 aPosition; attribute highp vec4 aTextureCoord; varying highp vec2 vTextureCoord; void main() { gl_Position = aPosition; vTextureCoord = aTextureCoord.xy; } 6com/example/mp4composer/filter/GlHighlightShadowFilterKprecision mediump float; uniform lowp sampler2D sTexture; varying vec2 vTextureCoord; uniform lowp float shadows; uniform lowp float highlights; const mediump vec3 luminanceWeighting = vec3(0.3, 0.3, 0.3); void main() { lowp vec4 source = texture2D(sTexture, vTextureCoord); mediump float luminance = dot(source.rgb, luminanceWeighting); mediump float shadow = clamp((pow(luminance, 1.0/(shadows+1.0)) + (-0.76)*pow(luminance, 2.0/(shadows+1.0))) - luminance, 0.0, 1.0); mediump float highlight = clamp((1.0 - (pow(1.0-luminance, 1.0/(2.0-highlights)) + (-0.8)*pow(1.0-luminance, 2.0/(2.0-highlights)))) - luminance, -1.0, 0.0); lowp vec3 result = vec3(0.0, 0.0, 0.0) + ((luminance + shadow + highlight) - 0.0) * ((source.rgb - vec3(0.0, 0.0, 0.0))/(luminance - 0.0)); gl_FragColor = vec4(result.rgb, source.a); } )   *+, -.'(Ljava/lang/String;Ljava/lang/String;)V getHandle(Ljava/lang/String;)Iandroid/opengl/GLES20 glUniform1f(IF)V! I** * ! " >*# %&>*# )*M* * * * . /0 PK!!X|R0com/example/mp4composer/filter/GlHueFilter.class3,  B !" # $%HUE_FRAGMENT_SHADERLjava/lang/String; ConstantValuehueF()VCodeLineNumberTableLocalVariableTablethis,Lcom/example/mp4composer/filter/GlHueFilter;setHue(F)VonDraw SourceFileGlHueFilter.java'com/example/mp4composer/filter/GlFilterattribute highp vec4 aPosition; attribute highp vec4 aTextureCoord; varying highp vec2 vTextureCoord; void main() { gl_Position = aPosition; vTextureCoord = aTextureCoord.xy; } *com/example/mp4composer/filter/GlHueFilter precision highp float; varying vec2 vTextureCoord; uniform lowp sampler2D sTexture; uniform mediump float hueAdjust; const highp vec4 kRGBToYPrime = vec4 (0.299, 0.587, 0.114, 0.0); const highp vec4 kRGBToI = vec4 (0.595716, -0.274453, -0.321263, 0.0); const highp vec4 kRGBToQ = vec4 (0.211456, -0.522591, 0.31135, 0.0); const highp vec4 kYIQToR = vec4 (1.0, 0.9563, 0.6210, 0.0); const highp vec4 kYIQToG = vec4 (1.0, -0.2721, -0.6474, 0.0); const highp vec4 kYIQToB = vec4 (1.0, -1.1070, 1.7046, 0.0); void main () { // Sample the input pixel highp vec4 color = texture2D(sTexture, vTextureCoord); // Convert to YIQ highp float YPrime = dot (color, kRGBToYPrime); highp float I = dot (color, kRGBToI); highp float Q = dot (color, kRGBToQ); // Calculate the hue and chroma highp float hue = atan (Q, I); highp float chroma = sqrt (I * I + Q * Q); // Make the user's adjustments hue += (-hueAdjust); //why negative rotation? // Convert back to YIQ Q = chroma * sin (hue); I = chroma * cos (hue); // Convert back to RGB highp vec4 yIQ = vec4 (YPrime, I, Q, 0.0); color.r = dot (yIQ, kYIQToR); color.g = dot (yIQ, kYIQToG); color.b = dot (yIQ, kYIQToB); // Save the result gl_FragColor = color; } &  hueAdjust '() *+'(Ljava/lang/String;Ljava/lang/String;)V getHandle(Ljava/lang/String;)Iandroid/opengl/GLES20 glUniform1f(IF)V!  A**586 >*# ;<<* *  A B PK!!7o\\3com/example/mp4composer/filter/GlInvertFilter.class3 FRAGMENT_SHADERLjava/lang/String; ConstantValue()VCodeLineNumberTableLocalVariableTablethis/Lcom/example/mp4composer/filter/GlInvertFilter; SourceFileGlInvertFilter.java'com/example/mp4composer/filter/GlFilterattribute highp vec4 aPosition; attribute highp vec4 aTextureCoord; varying highp vec2 vTextureCoord; void main() { gl_Position = aPosition; vTextureCoord = aTextureCoord.xy; } -com/example/mp4composer/filter/GlInvertFilterprecision mediump float;varying vec2 vTextureCoord;uniform lowp sampler2D sTexture;void main() {lowp vec4 color = texture2D(sTexture, vTextureCoord);gl_FragColor = vec4((1.0 - color.rgb), color.w);} '(Ljava/lang/String;Ljava/lang/String;)V!  7 *   PK!!OB B 8com/example/mp4composer/filter/GlLookUpTableFilter.class3X3456 7 89 : ;< => ? @ A B C D EF EGFRAGMENT_SHADERLjava/lang/String; ConstantValuehTexI lutTextureLandroid/graphics/Bitmap;(Landroid/graphics/Bitmap;)VCodeLineNumberTableLocalVariableTablethis4Lcom/example/mp4composer/filter/GlLookUpTableFilter;bitmap#(Landroid/content/res/Resources;I)V resourcesLandroid/content/res/Resources;fxIDonDraw()VoffsetDepthMapTextureUniformsetup loadTexture StackMapTablereleaseLutBitmapreset SourceFileGlLookUpTableFilter.java'com/example/mp4composer/filter/GlFilterattribute highp vec4 aPosition; attribute highp vec4 aTextureCoord; varying highp vec2 vTextureCoord; void main() { gl_Position = aPosition; vTextureCoord = aTextureCoord.xy; } 2com/example/mp4composer/filter/GlLookUpTableFilterprecision mediump float;uniform mediump sampler2D lutTexture; uniform lowp sampler2D sTexture; varying highp vec2 vTextureCoord; vec4 sampleAs3DTexture(vec3 uv) { float width = 16.; float sliceSize = 1.0 / width; float slicePixelSize = sliceSize / width; float sliceInnerSize = slicePixelSize * (width - 1.0); float zSlice0 = min(floor(uv.z * width), width - 1.0); float zSlice1 = min(zSlice0 + 1.0, width - 1.0); float xOffset = slicePixelSize * 0.5 + uv.x * sliceInnerSize; float s0 = xOffset + (zSlice0 * sliceSize); float s1 = xOffset + (zSlice1 * sliceSize); vec4 slice0Color = texture2D(lutTexture, vec2(s0, uv.y)); vec4 slice1Color = texture2D(lutTexture, vec2(s1, uv.y)); float zOffset = mod(uv.z * width, 1.0); vec4 result = mix(slice0Color, slice1Color, zOffset); return result; } void main() { vec4 pixel = texture2D(sTexture, vTextureCoord); vec4 gradedPixel = sampleAs3DTexture(pixel.rgb); gradedPixel.a = pixel.a; pixel = gradedPixel; gl_FragColor = pixel; } H %com/example/mp4composer/utils/EglUtil I JK LMandroid/opengl/GLES20 NO PQ RQ ,* -* -ST UV W*'(Ljava/lang/String;Ljava/lang/String;)Vandroid/graphics/BitmapFactorydecodeResource;(Landroid/content/res/Resources;I)Landroid/graphics/Bitmap; getHandle(Ljava/lang/String;)IglActiveTexture(I)V glBindTexture(II)V glUniform1i(Landroid/graphics/Bitmap;IZ)Iandroid/graphics/Bitmap isRecycled()Zrecycle!S**+* /0 12!"#$%a**+ * 6789! "#&'()*`* <  * AB CDE!"#+,*; ** IJK!  "#-*Q*** NOQ! "#./*]**** TUVX! "#.0*E*** [\]! "#12PK!!w:!FF6com/example/mp4composer/filter/GlLuminanceFilter.class3 LUMINANCE_FRAGMENT_SHADERLjava/lang/String; ConstantValue()VCodeLineNumberTableLocalVariableTablethis2Lcom/example/mp4composer/filter/GlLuminanceFilter; SourceFileGlLuminanceFilter.java'com/example/mp4composer/filter/GlFilterattribute highp vec4 aPosition; attribute highp vec4 aTextureCoord; varying highp vec2 vTextureCoord; void main() { gl_Position = aPosition; vTextureCoord = aTextureCoord.xy; } 0com/example/mp4composer/filter/GlLuminanceFilterprecision mediump float; varying vec2 vTextureCoord; uniform lowp sampler2D sTexture; // Values from "Graphics Shaders: Theory and Practice" by Bailey and Cunningham const highp vec3 W = vec3(0.2125, 0.7154, 0.0721); void main() { lowp vec4 textureColor = texture2D(sTexture, vTextureCoord); float luminance = dot(textureColor.rgb, W); gl_FragColor = vec4(vec3(luminance), textureColor.a); } '(Ljava/lang/String;Ljava/lang/String;)V!  7 *   PK!!?com/example/mp4composer/filter/GlLuminanceThresholdFilter.class3+  ? ! " #$#LUMINANCE_THRESHOLD_FRAGMENT_SHADERLjava/lang/String; ConstantValue thresholdF()VCodeLineNumberTableLocalVariableTablethis;Lcom/example/mp4composer/filter/GlLuminanceThresholdFilter; setThreshold(F)VonDraw SourceFileGlLuminanceThresholdFilter.java'com/example/mp4composer/filter/GlFilterattribute highp vec4 aPosition; attribute highp vec4 aTextureCoord; varying highp vec2 vTextureCoord; void main() { gl_Position = aPosition; vTextureCoord = aTextureCoord.xy; } 9com/example/mp4composer/filter/GlLuminanceThresholdFilterprecision mediump float;varying highp vec2 vTextureCoord; uniform lowp sampler2D sTexture; uniform highp float threshold; const highp vec3 W = vec3(0.2125, 0.7154, 0.0721); void main() { highp vec4 textureColor = texture2D(sTexture, vTextureCoord); highp float luminance = dot(textureColor.rgb, W); highp float thresholdResult = step(threshold, luminance); gl_FragColor = vec4(vec3(thresholdResult), textureColor.w); } %  &'( )*'(Ljava/lang/String;Ljava/lang/String;)V getHandle(Ljava/lang/String;)Iandroid/opengl/GLES20 glUniform1f(IF)V!  A** >*#  !<* *  % & PK!!g9p p 3com/example/mp4composer/filter/GlLut512Filter.class3Q2345 6 7 8 9 :; < => ? @A B C DhTexI NO_TEXTURE ConstantValue lutTextureLandroid/graphics/Bitmap;FRAGMENT_SHADERLjava/lang/String;(Landroid/graphics/Bitmap;)VCodeLineNumberTableLocalVariableTablethis/Lcom/example/mp4composer/filter/GlLut512Filter;bitmap#(Landroid/content/res/Resources;I)V resourcesLandroid/content/res/Resources;fxIDsetup()V loadTexture StackMapTableonDrawoffsetDepthMapTextureUniform SourceFileGlLut512Filter.java'com/example/mp4composer/filter/GlFilterattribute highp vec4 aPosition; attribute highp vec4 aTextureCoord; varying highp vec2 vTextureCoord; void main() { gl_Position = aPosition; vTextureCoord = aTextureCoord.xy; } -com/example/mp4composer/filter/GlLut512Filter=#extension GL_OES_EGL_image_external : require precision mediump float;uniform mediump sampler2D lutTexture; uniform lowp sampler2D sTexture; varying vec2 vTextureCoord; vec4 lookup(in vec4 textureColor, in sampler2D lookupTable); void main() { vec4 color = texture2D(sTexture, vTextureCoord); gl_FragColor = lookup(color, lutTexture); } vec4 lookup(in vec4 textureColor, in sampler2D lookupTable) { textureColor = clamp(textureColor, 0.0, 1.0); mediump float blueColor = textureColor.b * 63.0; mediump vec2 quad1; quad1.y = floor(floor(blueColor) / 8.0); quad1.x = floor(blueColor) - (quad1.y * 8.0); mediump vec2 quad2; quad2.y = floor(ceil(blueColor) / 8.0); quad2.x = ceil(blueColor) - (quad2.y * 8.0); highp vec2 texPos1; texPos1.x = (quad1.x * 0.125) + 0.5/512.0 + ((0.125 - 1.0/512.0) * textureColor.r); texPos1.y = (quad1.y * 0.125) + 0.5/512.0 + ((0.125 - 1.0/512.0) * textureColor.g); highp vec2 texPos2; texPos2.x = (quad2.x * 0.125) + 0.5/512.0 + ((0.125 - 1.0/512.0) * textureColor.r); texPos2.y = (quad2.y * 0.125) + 0.5/512.0 + ((0.125 - 1.0/512.0) * textureColor.g); lowp vec4 newColor1 = texture2D(lookupTable, texPos1); lowp vec4 newColor2 = texture2D(lookupTable, texPos2); lowp vec4 newColor = mix(newColor1, newColor2, fract(blueColor)); return newColor; } E   F GH *+ ,+%com/example/mp4composer/utils/EglUtil ,I JKandroid/opengl/GLES20 LM NO PO'(Ljava/lang/String;Ljava/lang/String;)Vandroid/graphics/BitmapFactorydecodeResource;(Landroid/content/res/Resources;I)Landroid/graphics/Bitmap;(Landroid/graphics/Bitmap;IZ)I getHandle(Ljava/lang/String;)IglActiveTexture(I)V glBindTexture(II)V glUniform1i! \***+*!9 :;<"#$%& j***+ *!? @AB" #$'()*+ ; * * !GHI"  #$,+ Q*** !LMO" #$-.+ `*< *!ST UVW"#$/01PK!!pg* * 0com/example/mp4composer/filter/GlLutFilter.class3X3456 7 89 : ;< => ? @ A B C D EF EGFRAGMENT_SHADERLjava/lang/String; ConstantValuehTexI lutTextureLandroid/graphics/Bitmap;(Landroid/graphics/Bitmap;)VCodeLineNumberTableLocalVariableTablethis,Lcom/example/mp4composer/filter/GlLutFilter;bitmap#(Landroid/content/res/Resources;I)V resourcesLandroid/content/res/Resources;fxIDonDraw()VoffsetDepthMapTextureUniformsetup loadTexture StackMapTablereleaseLutBitmapreset SourceFileGlLutFilter.java'com/example/mp4composer/filter/GlFilterattribute highp vec4 aPosition; attribute highp vec4 aTextureCoord; varying highp vec2 vTextureCoord; void main() { gl_Position = aPosition; vTextureCoord = aTextureCoord.xy; } *com/example/mp4composer/filter/GlLutFilterprecision mediump float;uniform mediump sampler2D lutTexture; uniform lowp sampler2D sTexture; varying highp vec2 vTextureCoord; vec4 sampleAs3DTexture(vec3 uv) { float width = 16.; float sliceSize = 1.0 / width; float slicePixelSize = sliceSize / width; float sliceInnerSize = slicePixelSize * (width - 1.0); float zSlice0 = min(floor(uv.z * width), width - 1.0); float zSlice1 = min(zSlice0 + 1.0, width - 1.0); float xOffset = slicePixelSize * 0.5 + uv.x * sliceInnerSize; float s0 = xOffset + (zSlice0 * sliceSize); float s1 = xOffset + (zSlice1 * sliceSize); vec4 slice0Color = texture2D(lutTexture, vec2(s0, uv.y)); vec4 slice1Color = texture2D(lutTexture, vec2(s1, uv.y)); float zOffset = mod(uv.z * width, 1.0); vec4 result = mix(slice0Color, slice1Color, zOffset); return result; } void main() { vec4 pixel = texture2D(sTexture, vTextureCoord); vec4 gradedPixel = sampleAs3DTexture(pixel.rgb); gradedPixel.a = pixel.a; pixel = gradedPixel; gl_FragColor = pixel; } H %com/example/mp4composer/utils/EglUtil I JK LMandroid/opengl/GLES20 NO PQ RQ ,* -* -ST UV W*'(Ljava/lang/String;Ljava/lang/String;)Vandroid/graphics/BitmapFactorydecodeResource;(Landroid/content/res/Resources;I)Landroid/graphics/Bitmap; getHandle(Ljava/lang/String;)IglActiveTexture(I)V glBindTexture(II)V glUniform1i(Landroid/graphics/Bitmap;IZ)Iandroid/graphics/Bitmap isRecycled()Zrecycle!S**+* /0 12!"#$%a**+ * 6789! "#&'()*`* <  * AB CDE!"#+,*; ** IJK!  "#-*Q*** NOQ! "#./*]**** TUVX! "#.0*E*** [\]! "#12PK!!M##7com/example/mp4composer/filter/GlMonochromeFilter.class3, ! " # $%FRAGMENT_SHADERLjava/lang/String; ConstantValue intensityF()VCodeLineNumberTableLocalVariableTablethis3Lcom/example/mp4composer/filter/GlMonochromeFilter; getIntensity()F setIntensity(F)VonDraw SourceFileGlMonochromeFilter.java'com/example/mp4composer/filter/GlFilterattribute highp vec4 aPosition; attribute highp vec4 aTextureCoord; varying highp vec2 vTextureCoord; void main() { gl_Position = aPosition; vTextureCoord = aTextureCoord.xy; } 1com/example/mp4composer/filter/GlMonochromeFilterprecision lowp float;varying highp vec2 vTextureCoord;uniform lowp sampler2D sTexture;uniform float intensity;const mediump vec3 luminanceWeighting = vec3(0.2125, 0.7154, 0.0721);void main() {lowp vec4 textureColor = texture2D(sTexture, vTextureCoord);float luminance = dot(textureColor.rgb, luminanceWeighting);lowp vec4 desat = vec4(vec3(luminance), 1.0);lowp vec4 outputColor = vec4((desat.r < 0.5 ? (2.0 * desat.r * 0.6) : (1.0 - 2.0 * (1.0 - desat.r) * (1.0 - 0.6))),(desat.g < 0.5 ? (2.0 * desat.g * 0.45) : (1.0 - 2.0 * (1.0 - desat.g) * (1.0 - 0.45))),(desat.b < 0.5 ? (2.0 * desat.b * 0.3) : (1.0 - 2.0 * (1.0 - desat.b) * (1.0 - 0.3))),1.0);gl_FragColor = vec4(mix(textureColor.rgb, outputColor.rgb, intensity), textureColor.a);} &  '() *+'(Ljava/lang/String;Ljava/lang/String;)V getHandle(Ljava/lang/String;)Iandroid/opengl/GLES20 glUniform1f(IF)V!   @** (% ) /*, >*# 01 <**  5 6 PK!!Dz4com/example/mp4composer/filter/GlOpacityFilter.class3*    ! "#OPACITY_FRAGMENT_SHADERLjava/lang/String; ConstantValueopacityF()VCodeLineNumberTableLocalVariableTablethis0Lcom/example/mp4composer/filter/GlOpacityFilter; setOpacity(F)VonDraw SourceFileGlOpacityFilter.java'com/example/mp4composer/filter/GlFilterattribute highp vec4 aPosition; attribute highp vec4 aTextureCoord; varying highp vec2 vTextureCoord; void main() { gl_Position = aPosition; vTextureCoord = aTextureCoord.xy; } .com/example/mp4composer/filter/GlOpacityFilter'precision mediump float; varying highp vec2 vTextureCoord; uniform lowp sampler2D sTexture; uniform lowp float opacity; void main() { lowp vec4 textureColor = texture2D(sTexture, vTextureCoord); gl_FragColor = vec4(textureColor.rgb, textureColor.a * opacity); } $  %&' ()'(Ljava/lang/String;Ljava/lang/String;)V getHandle(Ljava/lang/String;)Iandroid/opengl/GLES20 glUniform1f(IF)V!   @**   >*#  ! <**  % & PK!!j| 4com/example/mp4composer/filter/GlOverlayFilter.class3RSTU V W XY Z [ \ ] ^ _ ` ab cd e fg h i/ j c_ c` kl cmn o _ ` p qr s t cu vw x cytextures[IbitmapLandroid/graphics/Bitmap;inputResolutionLandroid/util/Size;FRAGMENT_SHADERLjava/lang/String; ConstantValue()VCodeLineNumberTableLocalVariableTablethis0Lcom/example/mp4composer/filter/GlOverlayFilter; setResolution(Landroid/util/Size;)V resolution setFrameSize(II)VwidthIheight createBitmapsetuponDraw bitmapCanvasLandroid/graphics/Canvas;offsetDepthMapTextureUniform StackMapTablen drawCanvas(Landroid/graphics/Canvas;)V releaseBitmap(Landroid/graphics/Bitmap;)V SourceFileGlOverlayFilter.java'com/example/mp4composer/filter/GlFilterattribute highp vec4 aPosition; attribute highp vec4 aTextureCoord; varying highp vec2 vTextureCoord; void main() { gl_Position = aPosition; vTextureCoord = aTextureCoord.xy; } .com/example/mp4composer/filter/GlOverlayFilterQprecision mediump float; varying vec2 vTextureCoord; uniform lowp sampler2D sTexture; uniform lowp sampler2D oTexture; void main() { lowp vec4 textureColor = texture2D(sTexture, vTextureCoord); lowp vec4 textureColor2 = texture2D(oTexture, vTextureCoord); gl_FragColor = mix(textureColor, textureColor2, textureColor2.a); } 5z ,- ./android/util/Size 5@ 01 ?@ <= NO {| }|~  D E6 android/opengl/GLES20 @ D6 android/graphics/Canvas 5O LMoTexture  @ 6'(Ljava/lang/String;Ljava/lang/String;)VgetWidth()I getHeightandroid/graphics/Bitmap$ConfigConfig InnerClasses ARGB_8888 Landroid/graphics/Bitmap$Config;android/graphics/Bitmap=(IILandroid/graphics/Bitmap$Config;)Landroid/graphics/Bitmap; glGenTextures(I[II)V glBindTextureglTexParameteri(III)Vandroid/graphics/Colorargb(IIII)I eraseColor(I)Vscale(FFFF)V getHandle(Ljava/lang/String;)IglActiveTexture isRecycled()Zandroid/opengl/GLUtils texImage2D (IIILandroid/graphics/Bitmap;I)V glUniform1irecycle!,-./01234567`&** **Yз 8%9 &:;<=7>*+ 8 '(9:;>1?@7Z* *Y 8,-.9 :;ABCBD67R * ** * 81239  :;E67L** *. (& (& ( (*8& 78 9;%<1=<>G@KA9 L:;F67+**** ** **Y*L+ + l+!l"*+#*$%=&' *.**( *)*8>EF H-I1L?MKN`OeQlSqT}VWZ[9 :;KXGHl7IBJ  !kKLM NO7Q**( *+K8` abd9 ./JPQ ac@PK!!77com/example/mp4composer/filter/GlPixelationFilter.class38&'() * +: a , - . / 01PIXELATION_FRAGMENT_SHADERLjava/lang/String; ConstantValuepixelFimageWidthFactorimageHeightFactor()VCodeLineNumberTableLocalVariableTablethis3Lcom/example/mp4composer/filter/GlPixelationFilter; setFrameSize(II)VwidthIheightonDraw SourceFileGlPixelationFilter.java'com/example/mp4composer/filter/GlFilterattribute highp vec4 aPosition; attribute highp vec4 aTextureCoord; varying highp vec2 vTextureCoord; void main() { gl_Position = aPosition; vTextureCoord = aTextureCoord.xy; } 1com/example/mp4composer/filter/GlPixelationFilterprecision highp float; varying highp vec2 vTextureCoord; uniform float imageWidthFactor; uniform float imageHeightFactor; uniform lowp sampler2D sTexture; uniform float pixel; void main() { vec2 uv = vTextureCoord.xy; float dx = pixel * imageWidthFactor; float dy = pixel * imageHeightFactor; vec2 coord = vec2(dx * floor(uv.x / dx), dy * floor(uv.y / dy)); vec3 tc = texture2D(sTexture, coord).xyz; gl_FragColor = vec4(tc, 1.0); } 2     345 67'(Ljava/lang/String;Ljava/lang/String;)V getHandle(Ljava/lang/String;)Iandroid/opengl/GLES20 glUniform1f(IF)V!T** **  ! a* * n* n %&'(  !"!#^(* * * * * * , -.'/ ($%PK!!aa6com/example/mp4composer/filter/GlPosterizeFilter.class3+  ! " #$POSTERIZE_FRAGMENT_SHADERLjava/lang/String; ConstantValue colorLevelsI()VCodeLineNumberTableLocalVariableTablethis2Lcom/example/mp4composer/filter/GlPosterizeFilter;setColorLevels(I)V StackMapTableonDraw SourceFileGlPosterizeFilter.java'com/example/mp4composer/filter/GlFilterattribute highp vec4 aPosition; attribute highp vec4 aTextureCoord; varying highp vec2 vTextureCoord; void main() { gl_Position = aPosition; vTextureCoord = aTextureCoord.xy; } 0com/example/mp4composer/filter/GlPosterizeFilterprecision mediump float; varying vec2 vTextureCoord; uniform lowp sampler2D sTexture; uniform highp float colorLevels; void main() { highp vec4 textureColor = texture2D(sTexture, vTextureCoord); gl_FragColor = floor((textureColor * colorLevels) + vec4(0.5)) / colorLevels; } %  &'( )*'(Ljava/lang/String;Ljava/lang/String;)V getHandle(Ljava/lang/String;)Iandroid/opengl/GLES20 glUniform1f(IF)V!   A**  v# * ** !"###  =**  '( PK!!Obb0com/example/mp4composer/filter/GlRGBFilter.class34#$%& ' ( ) * + ,-RGB_FRAGMENT_SHADERLjava/lang/String; ConstantValueredFgreenblue()VCodeLineNumberTableLocalVariableTablethis,Lcom/example/mp4composer/filter/GlRGBFilter;setRed(F)VsetGreensetBlueonDraw SourceFileGlRGBFilter.java'com/example/mp4composer/filter/GlFilterattribute highp vec4 aPosition; attribute highp vec4 aTextureCoord; varying highp vec2 vTextureCoord; void main() { gl_Position = aPosition; vTextureCoord = aTextureCoord.xy; } *com/example/mp4composer/filter/GlRGBFilterwprecision mediump float; varying vec2 vTextureCoord; uniform lowp sampler2D sTexture; uniform highp float red; uniform highp float green; uniform highp float blue; void main() { highp vec4 textureColor = texture2D(sTexture, vTextureCoord); gl_FragColor = vec4(textureColor.r * red, textureColor.g * green, textureColor.b * blue, 1.0); } .    /01 23'(Ljava/lang/String;Ljava/lang/String;)V getHandle(Ljava/lang/String;)Iandroid/opengl/GLES20 glUniform1f(IF)V!R** * * ! "# >*# &'>*# *+>*# ./ ^(* * * * * * 3 45'6 (!"PK!!{7com/example/mp4composer/filter/GlSaturationFilter.class3*    ! "#SATURATION_FRAGMENT_SHADERLjava/lang/String; ConstantValue saturationF()VCodeLineNumberTableLocalVariableTablethis3Lcom/example/mp4composer/filter/GlSaturationFilter; setSaturation(F)VonDraw SourceFileGlSaturationFilter.java'com/example/mp4composer/filter/GlFilterattribute highp vec4 aPosition; attribute highp vec4 aTextureCoord; varying highp vec2 vTextureCoord; void main() { gl_Position = aPosition; vTextureCoord = aTextureCoord.xy; } 1com/example/mp4composer/filter/GlSaturationFilterprecision mediump float; varying vec2 vTextureCoord; uniform lowp sampler2D sTexture; uniform lowp float saturation; const mediump vec3 luminanceWeighting = vec3(0.2125, 0.7154, 0.0721); void main() { lowp vec4 textureColor = texture2D(sTexture, vTextureCoord); lowp float luminance = dot(textureColor.rgb, luminanceWeighting); lowp vec3 greyScaleColor = vec3(luminance); gl_FragColor = vec4(mix(greyScaleColor, textureColor.rgb, saturation), textureColor.w); } $  %&' ()'(Ljava/lang/String;Ljava/lang/String;)V getHandle(Ljava/lang/String;)Iandroid/opengl/GLES20 glUniform1f(IF)V!   @**   >*# !" <**  & ' PK!!R##2com/example/mp4composer/filter/GlSepiaFilter.class3 FRAGMENT_SHADERLjava/lang/String; ConstantValue()VCodeLineNumberTableLocalVariableTablethis.Lcom/example/mp4composer/filter/GlSepiaFilter; SourceFileGlSepiaFilter.java'com/example/mp4composer/filter/GlFilterattribute highp vec4 aPosition; attribute highp vec4 aTextureCoord; varying highp vec2 vTextureCoord; void main() { gl_Position = aPosition; vTextureCoord = aTextureCoord.xy; } ,com/example/mp4composer/filter/GlSepiaFilterprecision mediump float;varying vec2 vTextureCoord;uniform lowp sampler2D sTexture;const highp vec3 weight = vec3(0.2125, 0.7154, 0.0721);void main() { vec4 FragColor = texture2D(sTexture, vTextureCoord); gl_FragColor.r = dot(FragColor.rgb, vec3(.393, .769, .189)); gl_FragColor.g = dot(FragColor.rgb, vec3(.349, .686, .168)); gl_FragColor.b = dot(FragColor.rgb, vec3(.272, .534, .131)); } '(Ljava/lang/String;Ljava/lang/String;)V!  7 *   PK!!{U  4com/example/mp4composer/filter/GlSharpenFilter.class3;*+, -;o . / 0 1 234 VERTEX_SHADERLjava/lang/String; ConstantValueFRAGMENT_SHADERimageWidthFactorFimageHeightFactor sharpness()VCodeLineNumberTableLocalVariableTablethis0Lcom/example/mp4composer/filter/GlSharpenFilter; getSharpness()F setSharpness(F)V setFrameSize(II)VwidthIheightonDraw SourceFileGlSharpenFilter.java.com/example/mp4composer/filter/GlSharpenFilterwattribute vec4 aPosition;attribute vec4 aTextureCoord;uniform float imageWidthFactor;uniform float imageHeightFactor;uniform float sharpness;varying highp vec2 textureCoordinate;varying highp vec2 leftTextureCoordinate;varying highp vec2 rightTextureCoordinate;varying highp vec2 topTextureCoordinate;varying highp vec2 bottomTextureCoordinate;varying float centerMultiplier;varying float edgeMultiplier;void main() {gl_Position = aPosition;mediump vec2 widthStep = vec2(imageWidthFactor, 0.0);mediump vec2 heightStep = vec2(0.0, imageHeightFactor);textureCoordinate = aTextureCoord.xy;leftTextureCoordinate = textureCoordinate - widthStep;rightTextureCoordinate = textureCoordinate + widthStep;topTextureCoordinate = textureCoordinate + heightStep;bottomTextureCoordinate = textureCoordinate - heightStep;centerMultiplier = 1.0 + 4.0 * sharpness;edgeMultiplier = sharpness;}precision highp float;uniform lowp sampler2D sTexture;varying highp vec2 textureCoordinate;varying highp vec2 leftTextureCoordinate;varying highp vec2 rightTextureCoordinate;varying highp vec2 topTextureCoordinate;varying highp vec2 bottomTextureCoordinate;varying float centerMultiplier;varying float edgeMultiplier;void main() {mediump vec3 textureColor = texture2D(sTexture, textureCoordinate).rgb;mediump vec3 leftTextureColor = texture2D(sTexture, leftTextureCoordinate).rgb;mediump vec3 rightTextureColor = texture2D(sTexture, rightTextureCoordinate).rgb;mediump vec3 topTextureColor = texture2D(sTexture, topTextureCoordinate).rgb;mediump vec3 bottomTextureColor = texture2D(sTexture, bottomTextureCoordinate).rgb;gl_FragColor = vec4((textureColor * centerMultiplier - (leftTextureColor * edgeMultiplier + rightTextureColor * edgeMultiplier + topTextureColor * edgeMultiplier + bottomTextureColor * edgeMultiplier)), texture2D(sTexture, bottomTextureCoordinate).w);} 5    678 9:'com/example/mp4composer/filter/GlFilter'(Ljava/lang/String;Ljava/lang/String;)V getHandle(Ljava/lang/String;)Iandroid/opengl/GLES20 glUniform1f(IF)V!T**** IDEFJ /*M  !>*# QR"#W* n* nWXY $%&%'^(* * * * * * ] ^_'` (()PK!!-]E5com/example/mp4composer/filter/GlSolarizeFilter.class3+  ? ! " #$SOLATIZE_FRAGMENT_SHADERLjava/lang/String; ConstantValue thresholdF()VCodeLineNumberTableLocalVariableTablethis1Lcom/example/mp4composer/filter/GlSolarizeFilter; setThreshold(F)VonDraw SourceFileGlSolarizeFilter.java'com/example/mp4composer/filter/GlFilterattribute highp vec4 aPosition; attribute highp vec4 aTextureCoord; varying highp vec2 vTextureCoord; void main() { gl_Position = aPosition; vTextureCoord = aTextureCoord.xy; } /com/example/mp4composer/filter/GlSolarizeFilterprecision mediump float; varying vec2 vTextureCoord; uniform lowp sampler2D sTexture; uniform highp float threshold; const highp vec3 W = vec3(0.2125, 0.7154, 0.0721); void main() { highp vec4 textureColor = texture2D(sTexture, vTextureCoord); highp float luminance = dot(textureColor.rgb, W); highp float thresholdResult = step(luminance, threshold); highp vec3 finalColor = abs(thresholdResult - textureColor.rgb); gl_FragColor = vec4(finalColor, textureColor.w); } %  &'( )*'(Ljava/lang/String;Ljava/lang/String;)V getHandle(Ljava/lang/String;)Iandroid/opengl/GLES20 glUniform1f(IF)V!  A** >*# !"<* *  & ' PK!!L =com/example/mp4composer/filter/GlSphereRefractionFilter.class3D-./0 1? 2 3 4 5?5 67 8 9: 9;FRAGMENT_SHADERLjava/lang/String; ConstantValuecenterXFcenterYradius aspectRatiorefractiveIndex()VCodeLineNumberTableLocalVariableTablethis9Lcom/example/mp4composer/filter/GlSphereRefractionFilter; setCenterX(F)V setCenterY setRadiussetAspectRatiosetRefractiveIndexonDraw SourceFileGlSphereRefractionFilter.java'com/example/mp4composer/filter/GlFilterattribute highp vec4 aPosition; attribute highp vec4 aTextureCoord; varying highp vec2 vTextureCoord; void main() { gl_Position = aPosition; vTextureCoord = aTextureCoord.xy; } 7com/example/mp4composer/filter/GlSphereRefractionFilterprecision mediump float;varying vec2 vTextureCoord;uniform lowp sampler2D sTexture;uniform highp vec2 center;uniform highp float radius;uniform highp float aspectRatio;uniform highp float refractiveIndex;void main() {highp vec2 textureCoordinateToUse = vec2(vTextureCoord.x, (vTextureCoord.y * aspectRatio + 0.5 - 0.5 * aspectRatio));highp float distanceFromCenter = distance(center, textureCoordinateToUse);lowp float checkForPresenceWithinSphere = step(distanceFromCenter, radius);distanceFromCenter = distanceFromCenter / radius;highp float normalizedDepth = radius * sqrt(1.0 - distanceFromCenter * distanceFromCenter);highp vec3 sphereNormal = normalize(vec3(textureCoordinateToUse - center, normalizedDepth));highp vec3 refractedVector = refract(vec3(0.0, 0.0, -1.0), sphereNormal, refractiveIndex);gl_FragColor = texture2D(sTexture, (refractedVector.xy + 1.0) * 0.5) * checkForPresenceWithinSphere;} <     center =>? @A BC'(Ljava/lang/String;Ljava/lang/String;)V getHandle(Ljava/lang/String;)Iandroid/opengl/GLES20 glUniform2f(IFF)V glUniform1f(IF)V!h&**** * *  +$%&'(%,! &"#$%>*# /0!"#&%>*# 34!"#'%>*#  78!"#(%>*#  ;<!"#)%>*#  ?@!"#*s9* **** ** **  FGH+I8J! 9"#+,PK!!}2com/example/mp4composer/filter/GlSwirlFilter.class3F+,-. / 0? 12 3 4 5 6 7 89 8:SWIRL_FRAGMENT_SHADERLjava/lang/String; ConstantValueangleFradiuscenterLandroid/graphics/PointF;()VCodeLineNumberTableLocalVariableTablethis.Lcom/example/mp4composer/filter/GlSwirlFilter;setAngle(F)V setRadius setCenter(Landroid/graphics/PointF;)VonDraw SourceFileGlSwirlFilter.java'com/example/mp4composer/filter/GlFilterattribute highp vec4 aPosition; attribute highp vec4 aTextureCoord; varying highp vec2 vTextureCoord; void main() { gl_Position = aPosition; vTextureCoord = aTextureCoord.xy; } ,com/example/mp4composer/filter/GlSwirlFilterprecision mediump float; varying vec2 vTextureCoord; uniform lowp sampler2D sTexture; uniform highp vec2 center; uniform highp float radius; uniform highp float angle; void main() { highp vec2 textureCoordinateToUse = vTextureCoord; highp float dist = distance(center, vTextureCoord); if (dist < radius) { textureCoordinateToUse -= center; highp float percent = (radius - dist) / radius; highp float theta = percent * percent * angle * 8.0; highp float s = sin(theta); highp float c = cos(theta); textureCoordinateToUse = vec2(dot(textureCoordinateToUse, vec2(c, -s)), dot(textureCoordinateToUse, vec2(s, c))); textureCoordinateToUse += center; } gl_FragColor = texture2D(sTexture, textureCoordinateToUse ); } ;  android/graphics/PointF <  => ? @A BC DE'(Ljava/lang/String;Ljava/lang/String;)V(FF)V getHandle(Ljava/lang/String;)Ixyandroid/opengl/GLES20 glUniform2f(IFF)V glUniform1f(IF)V!]#** ** Y &) *+"' #!"#$>*# ./ !"%$>*# 23 !"&'>*+  67 !"(h2* * * * ** *;<$=1> 2!")*PK!!}ʸb b Ccom/example/mp4composer/filter/GlThreex3TextureSamplingFilter.class37() * + , - ./0,THREE_X_THREE_TEXTURE_SAMPLING_VERTEX_SHADERLjava/lang/String; ConstantValue texelWidthF texelHeight(Ljava/lang/String;)VCodeLineNumberTableLocalVariableTablethis?Lcom/example/mp4composer/filter/GlThreex3TextureSamplingFilter;fragmentShaderSource getTexelWidth()F setTexelWidth(F)VgetTexelHeightsetTexelHeight setFrameSize(II)VwidthIheightonDraw()V SourceFile#GlThreex3TextureSamplingFilter.java=com/example/mp4composer/filter/GlThreex3TextureSamplingFilterattribute vec4 aPosition;attribute vec4 aTextureCoord;uniform highp float texelWidth;uniform highp float texelHeight;varying highp vec2 textureCoordinate;varying highp vec2 leftTextureCoordinate;varying highp vec2 rightTextureCoordinate;varying highp vec2 topTextureCoordinate;varying highp vec2 topLeftTextureCoordinate;varying highp vec2 topRightTextureCoordinate;varying highp vec2 bottomTextureCoordinate;varying highp vec2 bottomLeftTextureCoordinate;varying highp vec2 bottomRightTextureCoordinate;void main() {gl_Position = aPosition;vec2 widthStep = vec2(texelWidth, 0.0);vec2 heightStep = vec2(0.0, texelHeight);vec2 widthHeightStep = vec2(texelWidth, texelHeight);vec2 widthNegativeHeightStep = vec2(texelWidth, -texelHeight);textureCoordinate = aTextureCoord.xy;leftTextureCoordinate = textureCoordinate - widthStep;rightTextureCoordinate = textureCoordinate + widthStep;topTextureCoordinate = textureCoordinate - heightStep;topLeftTextureCoordinate = textureCoordinate - widthHeightStep;topRightTextureCoordinate = textureCoordinate + widthNegativeHeightStep;bottomTextureCoordinate = textureCoordinate + heightStep;bottomLeftTextureCoordinate = textureCoordinate - widthNegativeHeightStep;bottomRightTextureCoordinate = textureCoordinate + widthHeightStep;} 1   234 56'com/example/mp4composer/filter/GlFilter'(Ljava/lang/String;Ljava/lang/String;)V getHandle(Ljava/lang/String;)Iandroid/opengl/GLES20 glUniform1f(IF)V!   @*+ 67 /*: >*# >?/*B >*# FG W* n* nKLM !"#"$%M*** *Q RS &'PK!!lG8com/example/mp4composer/filter/GlToneCurveFilter$1.class3i . /0 1 ,2 3 ,4 56 ,7 ,8 ,9 ,: ,; 5<= > ?@C ?A BC DEFGthis$02Lcom/example/mp4composer/filter/GlToneCurveFilter;5(Lcom/example/mp4composer/filter/GlToneCurveFilter;)VCodeLineNumberTableLocalVariableTablethis InnerClasses4Lcom/example/mp4composer/filter/GlToneCurveFilter$1;run()VcurrentCurveIndexI StackMapTable SourceFileGlToneCurveFilter.javaEnclosingMethodH I%  %android/opengl/GLES20 JK LM NO PQR ST UQ VQ WQ XY Z[ \]java/lang/Float ^_` ab cbd ef gh2com/example/mp4composer/filter/GlToneCurveFilter$1java/lang/Objectjava/lang/Runnable0com/example/mp4composer/filter/GlToneCurveFilterupdateToneCurveTextureglActiveTexture(I)V access$0006(Lcom/example/mp4composer/filter/GlToneCurveFilter;)[I glBindTexture(II)V access$100I(Lcom/example/mp4composer/filter/GlToneCurveFilter;)Ljava/util/ArrayList;java/util/ArrayListsize()I access$200 access$300 access$400 access$5028(Lcom/example/mp4composer/filter/GlToneCurveFilter;[B)[B access$5006(Lcom/example/mp4composer/filter/GlToneCurveFilter;)[Bget(I)Ljava/lang/Object; floatValue()Fjava/lang/Mathmax(FF)Fminjava/nio/ByteBufferwrap([B)Ljava/nio/ByteBuffer; glTexImage2D(IIIIIIIILjava/nio/Buffer;)V > *+*  !# $% b *.* @* 0*  * * W<*h`* b* b ~T*h`* b* b ~T*h*b* b ~T*h`T$ *2 Taj.<Ba c&'b!#( c)*+,-" PK!!:8com/example/mp4composer/filter/GlToneCurveFilter$2.class3/ ! " #$ %&'(this$02Lcom/example/mp4composer/filter/GlToneCurveFilter;5(Lcom/example/mp4composer/filter/GlToneCurveFilter;)VCodeLineNumberTableLocalVariableTablethis InnerClasses4Lcom/example/mp4composer/filter/GlToneCurveFilter$2;compare5(Landroid/graphics/PointF;Landroid/graphics/PointF;)Ipoint1Landroid/graphics/PointF;point2 StackMapTable'(Ljava/lang/Object;Ljava/lang/Object;)I SignatureCLjava/lang/Object;Ljava/util/Comparator; SourceFileGlToneCurveFilter.javaEnclosingMethod) *+ , -.android/graphics/PointF 2com/example/mp4composer/filter/GlToneCurveFilter$2java/lang/Objectjava/util/Comparator0com/example/mp4composer/filter/GlToneCurveFiltercreateSplineCurve1([Landroid/graphics/PointF;)Ljava/util/ArrayList;()VxF    > *+*   v+,+,   A 7 *+,    PK!!r''6com/example/mp4composer/filter/GlToneCurveFilter.class3x   ?      /   #         -; -  -d 4     :   !" > #$% &C ' A( ) A* -+ -, -- ./ .0@ 12 A3 14 56 78 T9@@o 1:@ T; InnerClassesFRAGMENT_SHADERLjava/lang/String; ConstantValuergbCompositeControlPoints[Landroid/graphics/PointF;redControlPointsgreenControlPointsblueControlPointsrgbCompositeCurveLjava/util/ArrayList; Signature(Ljava/util/ArrayList;redCurve greenCurve blueCurve runOnDrawLjava/util/LinkedList;,Ljava/util/LinkedList;textures[ItoneCurveByteArray[B(Ljava/io/InputStream;)VCodeLineNumberTableLocalVariableTablethis2Lcom/example/mp4composer/filter/GlToneCurveFilter;inputLjava/io/InputStream;defaultCurvePointssetup()V StackMapTableonDrawoffsetDepthMapTextureUniformIsetFromCurveFileInputStreamySxj pointCountpointsiversion totalCurvescurves pointRateFeLjava/io/IOException;LocalVariableTypeTable1Ljava/util/ArrayList<[Landroid/graphics/PointF;>;< readShort(Ljava/io/InputStream;)S ExceptionssetRgbCompositeControlPoints([Landroid/graphics/PointF;)VsetRedControlPointssetGreenControlPointssetBlueControlPoints(Ljava/lang/Runnable;)VrunnableLjava/lang/Runnable;=>updateToneCurveTexturecreateSplineCurve1([Landroid/graphics/PointF;)Ljava/util/ArrayList;pointLandroid/graphics/PointF; origPointLandroid/graphics/Point;distancenewPoint pointsSortedconvertedPoints[Landroid/graphics/Point; splinePointsfirstSplinePointlastSplinePointpreparedSplinePoints/Ljava/util/ArrayList;%?D([Landroid/graphics/PointF;)Ljava/util/ArrayList;createSplineCurve20([Landroid/graphics/Point;)Ljava/util/ArrayList;tDabhcurnextsdAnsd[Doutput)Ljava/util/ArrayList;J([Landroid/graphics/Point;)Ljava/util/ArrayList;createSecondDerivativeP1P2P3kmatrix[[DresultD([Landroid/graphics/Point;)Ljava/util/ArrayList; access$0006(Lcom/example/mp4composer/filter/GlToneCurveFilter;)[Ix0 access$100I(Lcom/example/mp4composer/filter/GlToneCurveFilter;)Ljava/util/ArrayList; access$200 access$300 access$400 access$5028(Lcom/example/mp4composer/filter/GlToneCurveFilter;[B)[Bx1 access$5006(Lcom/example/mp4composer/filter/GlToneCurveFilter;)[B SourceFileGlToneCurveFilter.java tu hi ni mi li rs'com/example/mp4composer/filter/GlFilterattribute highp vec4 aPosition; attribute highp vec4 aTextureCoord; varying highp vec2 vTextureCoord; void main() { gl_Position = aPosition; vTextureCoord = aTextureCoord.xy; } 0com/example/mp4composer/filter/GlToneCurveFilterLprecision mediump float; varying highp vec2 vTextureCoord; uniform lowp sampler2D sTexture; uniform mediump sampler2D toneCurveTexture; void main() { lowp vec4 textureColor = texture2D(sTexture, vTextureCoord); lowp float redCurveValue = texture2D(toneCurveTexture, vec2(textureColor.r, 0.0)).r; lowp float greenCurveValue = texture2D(toneCurveTexture, vec2(textureColor.g, 0.0)).g; lowp float blueCurveValue = texture2D(toneCurveTexture, vec2(textureColor.b, 0.0)).b; gl_FragColor = vec4(redCurveValue, greenCurveValue, blueCurveValue, textureColor.a); } v@android/graphics/PointF vA cd ed fd gdjava/util/LinkedList v op w BCandroid/opengl/GLES20 DE FG HI JKjava/lang/Runnable LtoneCurveTexture MN OPQ RS TU VE java/util/ArrayList vP WX< Y Z[java/io/IOException \ ]^ _`2com/example/mp4composer/filter/GlToneCurveFilter$1 va od bK2com/example/mp4composer/filter/GlToneCurveFilter$2c deandroid/graphics/Point vE Wf g^ hi? jI Kk lm nop qr java/lang/Double st uv qwjava/io/InputStreamjava/lang/Objectjava/lang/Throwablejava/util/Iterator'(Ljava/lang/String;Ljava/lang/String;)V(FF)V glGenTextures(I[II)V glBindTexture(II)VglTexParameteri(III)VisEmpty()Z removeFirst()Ljava/lang/Object;run getHandle(Ljava/lang/String;)IglActiveTexture(I)Vjava/nio/ByteBufferwrap([B)Ljava/nio/ByteBuffer; glTexImage2D(IIIIIIIILjava/nio/Buffer;)V glUniform1iadd(Ljava/lang/Object;)Zcloseget(I)Ljava/lang/Object;printStackTraceread()IaddLast(Ljava/lang/Object;)V5(Lcom/example/mp4composer/filter/GlToneCurveFilter;)Vclonejava/util/Arrayssort,([Ljava/lang/Object;Ljava/util/Comparator;)V(ILjava/lang/Object;)Vsizeiterator()Ljava/util/Iterator;hasNextjava/lang/Mathpow(DD)Dsqrt(D)Djava/lang/FloatvalueOf(F)Ljava/lang/Float; doubleValue()Dround(D)J(D)Ljava/lang/Double;!  `ab cdedfdgdhijklijkmijknijkopjqrstuvwx* *  Y Y SY Y SY Y SM*,*,*,*,*Y*+********y:718:9?:D;I<N>Y@^BfCnDvE~Gz {|}~:Edxd** *. (& (& (  ( *!*"#$y* KL MO%P1Q<RGTQUcWz d{|Gx :*%&<'( *. *)*+y\^ _a4c9dz:{|3wx +,=+,>-Y.:/86R+,6 :6  -+,6 +,6  Y j j S 0W+1*23*23*23*23M,54y^hi kln!p'r.x8y>zD|\xbjnptz > D 11 'C.<dU i{|}~ 530 : x8*6x*6yz }~4xV*+***7*8yz{|dxV*+***7*8yz{|dxV*+***7*8yz{|dxV*+***7*8yz{|dox*YM*+9,çN,-yz{|x; *:Y*;<y  z  {|x d+++=3M,>Y*?@,AN6+,,2:-AYBCjDCjES-F:2A:G%G6AYEHId2A:G,G`6AYE0W-YI.:J:KmLA: AY G GE:  G GdMO P PdMOcQ8  P P v8  R0Wyv %/5RX^iq}ANS^ a z5(0x H A [ d{|ddQd%?^ii~i^~kZ 3/$e 33j x 3*SL+I=N6-+2TUR-Y`.:6d*2:*`2:G6GGdGGdo9  g9  9 GGd9 Pk PkckVo  k k g-1k  k k g-`1kckc9X X9 9AYZE0WP-I**d20Wyr .4@!K"Q#Y%j&()*,./014 %!9$:0<z s0`QYC3.i )@i.@_  j x/ *<[MN,2R,2R,2R6d*d2:*2:*`2:,2GGdVoR,2GGd\oR,2GGdVoR-PPdGGdoPPdGGdogRf-R-dR,d2R,d2R,d2R6E,21,d21o9,2\1,d21kgR,2R-\1-d1kgRd6E,21,`21o9,2\1,`21kgR,2R-\1-`1kgR-Y.:6-1,21o^0Wy%@AB EFGI!J'L2M:N@OHQ^RtSTLXY[]^abcde.a4h>iOjckjlzhoprz:@Hy*+HO+9G &i &+ [$GF jx/*yz |x/*yz |x/*yz |x/*yz |x/*yz |x;*+Zyz|ux/*yz |_>:PK!!) ) 1com/example/mp4composer/filter/GlToneFilter.class32#$ %>L &A ' ( )*+FRAGMENT_SHADERLjava/lang/String; ConstantValue thresholdFquantizationLevels()VCodeLineNumberTableLocalVariableTablethis-Lcom/example/mp4composer/filter/GlToneFilter; getThreshold()F setThreshold(F)VgetQuantizationLevelssetQuantizationLevelsonDraw SourceFileGlToneFilter.java+com/example/mp4composer/filter/GlToneFilterprecision highp float; uniform lowp sampler2D sTexture; varying vec2 textureCoordinate; varying vec2 leftTextureCoordinate; varying vec2 rightTextureCoordinate; varying vec2 topTextureCoordinate; varying vec2 topLeftTextureCoordinate; varying vec2 topRightTextureCoordinate; varying vec2 bottomTextureCoordinate; varying vec2 bottomLeftTextureCoordinate; varying vec2 bottomRightTextureCoordinate; uniform highp float threshold;uniform highp float quantizationLevels;const highp vec3 W = vec3(0.2125, 0.7154, 0.0721);void main() { vec4 textureColor = texture2D(sTexture, textureCoordinate);float bottomLeftIntensity = texture2D(sTexture, bottomLeftTextureCoordinate).r;float topRightIntensity = texture2D(sTexture, topRightTextureCoordinate).r;float topLeftIntensity = texture2D(sTexture, topLeftTextureCoordinate).r;float bottomRightIntensity = texture2D(sTexture, bottomRightTextureCoordinate).r;float leftIntensity = texture2D(sTexture, leftTextureCoordinate).r;float rightIntensity = texture2D(sTexture, rightTextureCoordinate).r;float bottomIntensity = texture2D(sTexture, bottomTextureCoordinate).r;float topIntensity = texture2D(sTexture, topTextureCoordinate).r;float h = -topLeftIntensity - 2.0 * topIntensity - topRightIntensity + bottomLeftIntensity + 2.0 * bottomIntensity + bottomRightIntensity;float v = -bottomLeftIntensity - 2.0 * leftIntensity - topLeftIntensity + bottomRightIntensity + 2.0 * rightIntensity + topRightIntensity;float mag = length(vec2(h, v));vec3 posterizedImageColor = floor((textureColor.rgb * quantizationLevels) + 0.5) / quantizationLevels;float thresholdTest = 1.0 - step(threshold, mag);gl_FragColor = vec4(posterizedImageColor * thresholdTest, textureColor.a);} ,   -./ 01=com/example/mp4composer/filter/GlThreex3TextureSamplingFilter(Ljava/lang/String;)V getHandle(Ljava/lang/String;)Iandroid/opengl/GLES20 glUniform1f(IF)V!  I***;6 7< /*A >*# EF/*I >*# MN M* * * * T UV !"PK!!]5com/example/mp4composer/filter/GlVibranceFilter.class3*    ! "#VIBRANCE_FRAGMENT_SHADERLjava/lang/String; ConstantValuevibranceF()VCodeLineNumberTableLocalVariableTablethis1Lcom/example/mp4composer/filter/GlVibranceFilter; setVibrance(F)VonDraw SourceFileGlVibranceFilter.java'com/example/mp4composer/filter/GlFilterattribute highp vec4 aPosition; attribute highp vec4 aTextureCoord; varying highp vec2 vTextureCoord; void main() { gl_Position = aPosition; vTextureCoord = aTextureCoord.xy; } /com/example/mp4composer/filter/GlVibranceFilterprecision mediump float; varying vec2 vTextureCoord; uniform lowp sampler2D sTexture; uniform lowp float vibrance; void main() { lowp vec4 color = texture2D(sTexture, vTextureCoord); lowp float average = (color.r + color.g + color.b) / 3.0; lowp float mx = max(color.r, max(color.g, color.b)); lowp float amt = (mx - average) * (-vibrance * 3.0); color.rgb = mix(color.rgb, vec3(mx), amt); gl_FragColor = color; } $  %&' ()'(Ljava/lang/String;Ljava/lang/String;)V getHandle(Ljava/lang/String;)Iandroid/opengl/GLES20 glUniform1f(IF)V!   @**   >*#  <**  # $ PK!!Q5com/example/mp4composer/filter/GlVignetteFilter.class3A+,-. /? 0 1>L 2?Y 34 5 67 68FRAGMENT_SHADERLjava/lang/String; ConstantValuevignetteCenterXFvignetteCenterY vignetteStart vignetteEnd()VCodeLineNumberTableLocalVariableTablethis1Lcom/example/mp4composer/filter/GlVignetteFilter;getVignetteStart()FsetVignetteStart(F)VgetVignetteEndsetVignetteEndonDraw SourceFileGlVignetteFilter.java'com/example/mp4composer/filter/GlFilterattribute highp vec4 aPosition; attribute highp vec4 aTextureCoord; varying highp vec2 vTextureCoord; void main() { gl_Position = aPosition; vTextureCoord = aTextureCoord.xy; } /com/example/mp4composer/filter/GlVignetteFilterprecision mediump float;varying vec2 vTextureCoord;uniform lowp sampler2D sTexture;uniform lowp vec2 vignetteCenter;uniform highp float vignetteStart;uniform highp float vignetteEnd;void main() {lowp vec3 rgb = texture2D(sTexture, vTextureCoord).rgb;lowp float d = distance(vTextureCoord, vec2(vignetteCenter.x, vignetteCenter.y));lowp float percent = smoothstep(vignetteStart, vignetteEnd, d);gl_FragColor = vec4(mix(rgb.x, 0.0, percent), mix(rgb.y, 0.0, percent), mix(rgb.z, 0.0, percent), 1.0);} 9    vignetteCenter :;< => ?@'(Ljava/lang/String;Ljava/lang/String;)V getHandle(Ljava/lang/String;)Iandroid/opengl/GLES20 glUniform2f(IFF)V glUniform1f(IF)V!_!**** * " # ! !"#/* '  !$%>*#  +, !&#/* /  !'%>*#  34 !(b,* **** ** :;<+= , !)*PK!!w8com/example/mp4composer/filter/GlWatermarkFilter$1.class30        !#D$SwitchMap$com$example$mp4composer$filter$GlWatermarkFilter$Position[I()VCodeLineNumberTableLocalVariableTable StackMapTable SourceFileGlWatermarkFilter.javaEnclosingMethod$% '( )* +,java/lang/NoSuchFieldError -* .* /*2com/example/mp4composer/filter/GlWatermarkFilter$1 InnerClassesjava/lang/Object0com/example/mp4composer/filter/GlWatermarkFilter9com/example/mp4composer/filter/GlWatermarkFilter$PositionPositionvalues>()[Lcom/example/mp4composer/filter/GlWatermarkFilter$Position;LEFT_TOP;Lcom/example/mp4composer/filter/GlWatermarkFilter$Position;ordinal()I LEFT_BOTTOM RIGHT_TOP RIGHT_BOTTOM   F OKOKOKOK #&'256ADWMMM" &@PK!!6_kk?com/example/mp4composer/filter/GlWatermarkFilter$Position.class3< , -.0 1 2 2 3 4 5 67LEFT_TOPPosition InnerClasses;Lcom/example/mp4composer/filter/GlWatermarkFilter$Position; LEFT_BOTTOM RIGHT_TOP RIGHT_BOTTOM$VALUES<[Lcom/example/mp4composer/filter/GlWatermarkFilter$Position;values>()[Lcom/example/mp4composer/filter/GlWatermarkFilter$Position;CodeLineNumberTablevalueOfO(Ljava/lang/String;)Lcom/example/mp4composer/filter/GlWatermarkFilter$Position;LocalVariableTablenameLjava/lang/String;(Ljava/lang/String;I)Vthis Signature()VMLjava/lang/Enum; SourceFileGlWatermarkFilter.java  89:9com/example/mp4composer/filter/GlWatermarkFilter$Position ; #$    java/lang/Enumclone()Ljava/lang/Object;0com/example/mp4composer/filter/GlWatermarkFilter5(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Enum;@1@@@@ " - 4 *-  !"#$1*+- %&'('|TY Y  Y  YY SY SY SYS. /0'14-&)*+ /@PK!!a6com/example/mp4composer/filter/GlWatermarkFilter.class3D & ' ( ) *+ , - ./ .0 *0 .1 *1234 InnerClasses5PositionbitmapLandroid/graphics/Bitmap;position;Lcom/example/mp4composer/filter/GlWatermarkFilter$Position;(Landroid/graphics/Bitmap;)VCodeLineNumberTableLocalVariableTablethis2Lcom/example/mp4composer/filter/GlWatermarkFilter;W(Landroid/graphics/Bitmap;Lcom/example/mp4composer/filter/GlWatermarkFilter$Position;)V drawCanvas(Landroid/graphics/Canvas;)VcanvasLandroid/graphics/Canvas; StackMapTable SourceFileGlWatermarkFilter.java 6 7  8 9: ;< =>? @A B> C>0com/example/mp4composer/filter/GlWatermarkFilter.com/example/mp4composer/filter/GlOverlayFilter2com/example/mp4composer/filter/GlWatermarkFilter$19com/example/mp4composer/filter/GlWatermarkFilter$Position()VLEFT_TOPandroid/graphics/Bitmap isRecycled()ZD$SwitchMap$com$example$mp4composer$filter$GlWatermarkFilter$Position[Iordinal()Iandroid/graphics/Canvas drawBitmap6(Landroid/graphics/Bitmap;FFLandroid/graphics/Paint;)V getHeightgetWidth! Q***+ d***+*,   ***. .Hb+* Z+* + * d@+*+ * d &+*+ * d+ * d* <GJ!a"d${%~'+!"#< "$% @PK!!()VCodeLineNumberTableLocalVariableTablethis;Lcom/example/mp4composer/filter/GlWeakPixelInclusionFilter; SourceFileGlWeakPixelInclusionFilter.java9com/example/mp4composer/filter/GlWeakPixelInclusionFilterpprecision lowp float; uniform lowp sampler2D sTexture; varying vec2 textureCoordinate; varying vec2 leftTextureCoordinate; varying vec2 rightTextureCoordinate; varying vec2 topTextureCoordinate; varying vec2 topLeftTextureCoordinate; varying vec2 topRightTextureCoordinate; varying vec2 bottomTextureCoordinate; varying vec2 bottomLeftTextureCoordinate; varying vec2 bottomRightTextureCoordinate; void main() { float bottomLeftIntensity = texture2D(sTexture, bottomLeftTextureCoordinate).r;float topRightIntensity = texture2D(sTexture, topRightTextureCoordinate).r;float topLeftIntensity = texture2D(sTexture, topLeftTextureCoordinate).r;float bottomRightIntensity = texture2D(sTexture, bottomRightTextureCoordinate).r;float leftIntensity = texture2D(sTexture, leftTextureCoordinate).r;float rightIntensity = texture2D(sTexture, rightTextureCoordinate).r;float bottomIntensity = texture2D(sTexture, bottomTextureCoordinate).r;float topIntensity = texture2D(sTexture, topTextureCoordinate).r;float centerIntensity = texture2D(sTexture, textureCoordinate).r;float pixelIntensitySum = bottomLeftIntensity + topRightIntensity + topLeftIntensity + bottomRightIntensity + leftIntensity + rightIntensity + bottomIntensity + topIntensity + centerIntensity;float sumTest = step(1.5, pixelIntensitySum);float pixelTest = step(0.01, centerIntensity);gl_FragColor = vec4(vec3(sumTest * pixelTest), 1.0);} =com/example/mp4composer/filter/GlThreex3TextureSamplingFilter(Ljava/lang/String;)V!  5* -.  PK!!˷B  9com/example/mp4composer/filter/GlWhiteBalanceFilter.class3:*+,- .E@ / 0?:6C-@?uMUi@Y 1 23WHITE_BALANCE_FRAGMENT_SHADERLjava/lang/String; ConstantValue temperatureFtint()VCodeLineNumberTableLocalVariableTablethis5Lcom/example/mp4composer/filter/GlWhiteBalanceFilter;setTemperature(F)V StackMapTable,setTintonDraw SourceFileGlWhiteBalanceFilter.java'com/example/mp4composer/filter/GlFilterattribute highp vec4 aPosition; attribute highp vec4 aTextureCoord; varying highp vec2 vTextureCoord; void main() { gl_Position = aPosition; vTextureCoord = aTextureCoord.xy; } 3com/example/mp4composer/filter/GlWhiteBalanceFilter uniform lowp sampler2D sTexture; varying vec2 vTextureCoord; uniform lowp float temperature; uniform lowp float tint; const lowp vec3 warmFilter = vec3(0.93, 0.54, 0.0); const mediump mat3 RGBtoYIQ = mat3(0.299, 0.587, 0.114, 0.596, -0.274, -0.322, 0.212, -0.523, 0.311); const mediump mat3 YIQtoRGB = mat3(1.0, 0.956, 0.621, 1.0, -0.272, -0.647, 1.0, -1.105, 1.702); void main() { lowp vec4 source = texture2D(sTexture, vTextureCoord); mediump vec3 yiq = RGBtoYIQ * source.rgb; //adjusting tint yiq.b = clamp(yiq.b + tint*0.5226*0.1, -0.5226, 0.5226); lowp vec3 rgb = YIQtoRGB * yiq; lowp vec3 processed = vec3( (rgb.r < 0.5 ? (2.0 * rgb.r * warmFilter.r) : (1.0 - 2.0 * (1.0 - rgb.r) * (1.0 - warmFilter.r))), //adjusting temperature (rgb.g < 0.5 ? (2.0 * rgb.g * warmFilter.g) : (1.0 - 2.0 * (1.0 - rgb.g) * (1.0 - warmFilter.g))), (rgb.b < 0.5 ? (2.0 * rgb.b * warmFilter.b) : (1.0 - 2.0 * (1.0 - rgb.b) * (1.0 - warmFilter.b)))); gl_FragColor = vec4(mix(rgb, processed, temperature), source.a); } 4   567 89'(Ljava/lang/String;Ljava/lang/String;)V getHandle(Ljava/lang/String;)Iandroid/opengl/GLES20 glUniform1f(IF)V!J*** %()&  !"#x%*# # gk # gk ,$-% !%$V% %%&#D *#o 0 1 ! 'M****5 67  !()PK!!MY 5com/example/mp4composer/filter/GlZoomBlurFilter.class3A'()* +,? - . / 0 1 2 34 35ZOOM_BLUR_FRAGMENT_SHADERLjava/lang/String; ConstantValue blurCenterLandroid/graphics/PointF;blurSizeF()VCodeLineNumberTableLocalVariableTablethis1Lcom/example/mp4composer/filter/GlZoomBlurFilter; setBlurCenter(Landroid/graphics/PointF;)V setBlurSize(F)VonDraw SourceFileGlZoomBlurFilter.java'com/example/mp4composer/filter/GlFilterattribute highp vec4 aPosition; attribute highp vec4 aTextureCoord; varying highp vec2 vTextureCoord; void main() { gl_Position = aPosition; vTextureCoord = aTextureCoord.xy; } /com/example/mp4composer/filter/GlZoomBlurFilternprecision mediump float; varying vec2 vTextureCoord; uniform lowp sampler2D sTexture; uniform highp vec2 blurCenter; uniform highp float blurSize; void main() { // TODO: Do a more intelligent scaling based on resolution here highp vec2 samplingOffset = 1.0/100.0 * (blurCenter - vTextureCoord) * blurSize; lowp vec4 fragmentColor = texture2D(sTexture, vTextureCoord) * 0.18; fragmentColor += texture2D(sTexture, vTextureCoord + samplingOffset) * 0.15; fragmentColor += texture2D(sTexture, vTextureCoord + (2.0 * samplingOffset)) * 0.12; fragmentColor += texture2D(sTexture, vTextureCoord + (3.0 * samplingOffset)) * 0.09; fragmentColor += texture2D(sTexture, vTextureCoord + (4.0 * samplingOffset)) * 0.05; fragmentColor += texture2D(sTexture, vTextureCoord - samplingOffset) * 0.15; fragmentColor += texture2D(sTexture, vTextureCoord - (2.0 * samplingOffset)) * 0.12; fragmentColor += texture2D(sTexture, vTextureCoord - (3.0 * samplingOffset)) * 0.09; fragmentColor += texture2D(sTexture, vTextureCoord - (4.0 * samplingOffset)) * 0.05; gl_FragColor = fragmentColor; } 6android/graphics/PointF 7   89 : ;< => ?@'(Ljava/lang/String;Ljava/lang/String;)V(FF)V getHandle(Ljava/lang/String;)Ixyandroid/opengl/GLES20 glUniform2f(IFF)V glUniform1f(IF)V!S**Y * '#$(  !>*+  +,"#>*#  /0$W%* * * * * 45$6 %%&PK!!*1j j 4com/example/mp4composer/gl/GlFramebufferObject.class3S 0T /U /V /W XYZ T[ \ ] ^ _`i /a b /c@ d e /fA g h i j k lm n o pqr )_ s t uvwwidthIheightframebufferNamerenderBufferNametexName()VCodeLineNumberTableLocalVariableTablethis0Lcom/example/mp4composer/gl/GlFramebufferObject;getWidth()I getHeight getTexNamesetup(II)VstatuseLjava/lang/RuntimeException;args[IsaveFramebuffersaveRenderbuffer saveTexName StackMapTableHqreleaseenable SourceFileGlFramebufferObject.javaandroid/opengl/GLES20 78 12 32 62 xy"java/lang/IllegalArgumentExceptionjava/lang/StringBuilderGL_MAX_TEXTURE_SIZE z{ z| }~ 7GL_MAX_RENDERBUFFER_SIZE O8 y 42 C y 52 C y C java/lang/RuntimeException(Failed to initialize framebuffer object y y y.com/example/mp4composer/gl/GlFramebufferObjectjava/lang/Object glGetIntegerv(I[II)Vappend-(Ljava/lang/String;)Ljava/lang/StringBuilder;(I)Ljava/lang/StringBuilder;toString()Ljava/lang/String;(Ljava/lang/String;)VglGenFramebuffersglBindFramebufferglGenRenderbuffersglBindRenderbufferglRenderbufferStorage(IIII)VglFramebufferRenderbuffer glGenTextures glBindTexture%com/example/mp4composer/utils/EglUtil setupSampler(III)V glTexImage2D(IIIIIIIILjava/nio/Buffer;)VglFramebufferTexture2D(IIIII)VglCheckFramebufferStatus(I)IglDeleteTexturesglDeleteRenderbuffersglDeleteFramebuffers!/01232425262789/*:; <=>?9/*:!; <=@?9/*:%; <=A?9/*:); <=BC9 s N 3--. -. YY  -. --. -. YY  -. --.6--.6--.6***--*-.*--*-.** --!*-. *" &&# $% *&'6()YY *  + :* "PS):)-/ 0174>5L6i9p:u;|<=>@CDFGHJKLMNPQRTVW&Y-Z4[P`S]U^Y_\bccjdre;\ -#D2UEFs<=s12s32oGHuI2J2K2LMBNO89> L+*O++,*+*O++-*+*O++.*:. hi jklm%n*o1p8q=r;><=:GHP898 *: u v;  <=QRPK!!y7 *com/example/mp4composer/gl/GlPreview.class3DEF G H IeJ KL MNOPQ RS T UV WXYZ[ \ ] ^ _ ` a b c de f g hGL_TEXTURE_EXTERNAL_OESI ConstantValue VERTEX_SHADERLjava/lang/String; texTarget(I)VCodeLineNumberTableLocalVariableTablethis&Lcom/example/mp4composer/gl/GlPreview;#createFragmentShaderSourceOESIfNeed(I)Ljava/lang/String; StackMapTablesetup()Vdraw (I[F[FF)VtexName mvpMatrix[FstMatrix aspectRatioF SourceFileGlPreview.javaandroid/opengl/GLES20$com/example/mp4composer/gl/GlPreviewIuniform mat4 uMVPMatrix; uniform mat4 uSTMatrix; uniform float uCRatio; attribute vec4 aPosition; attribute vec4 aTextureCoord; varying highp vec2 vTextureCoord; void main() { vec4 scaledPos = aPosition; scaledPos.x = scaledPos.x * uCRatio; gl_Position = uMVPMatrix * scaledPos; vTextureCoord = (uSTMatrix * aTextureCoord).xy; } 56 .i -)java/lang/StringBuilder .9/#extension GL_OES_EGL_image_external : require jk'com/example/mp4composer/filter/GlFilterprecision mediump float; varying highp vec2 vTextureCoord; uniform lowp sampler2D sTexture; void main() { gl_FragColor = texture2D(sTexture, vTextureCoord); }  sampler2DsamplerExternalOESl mn op 89 uMVPMatrix qr uSTMatrixuCRatio aPosition aTextureCoord s9 tu vw xy z{ |/ }~ / {sTexture { /'(Ljava/lang/String;Ljava/lang/String;)Vappend-(Ljava/lang/String;)Ljava/lang/StringBuilder;java/lang/StringreplaceD(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String;toString()Ljava/lang/String; getHandle(Ljava/lang/String;)I useProgramglUniformMatrix4fv (IIZ[FI)V glUniform1f(IF)VgetVertexBufferName()I glBindBuffer(II)VglEnableVertexAttribArrayglVertexAttribPointer (IIIZII)VglActiveTexture glBindTexture glUniform1i glDrawArrays(III)VglDisableVertexAttribArray! ()*+,*-)./0L**1% &'234-) 560p%Y     1*+,-.!+"02 %-)7"890j(**W*W*W*W*W156 789 :';2 (34:;0:**,*-**** ** !"*#*$%&*'*' #1J>@AB)D2E;FLGUHgJlKtL~NPQRST2434<)=>?>@ABCPK!! B B 0com/example/mp4composer/gl/GlPreviewFilter.class3ABC D E FeG HI JKLMN OP Q RS T UVW X Y Z[ \ ]^ _ `a b c dGL_TEXTURE_EXTERNAL_OESI ConstantValue VERTEX_SHADERLjava/lang/String; texTarget(I)VCodeLineNumberTableLocalVariableTablethis,Lcom/example/mp4composer/gl/GlPreviewFilter;#createFragmentShaderSourceOESIfNeed(I)Ljava/lang/String; StackMapTabledraw (I[F[FF)VtexName mvpMatrix[FstMatrix aspectRatioF SourceFileGlPreviewFilter.javaandroid/opengl/GLES20*com/example/mp4composer/gl/GlPreviewFilterIuniform mat4 uMVPMatrix; uniform mat4 uSTMatrix; uniform float uCRatio; attribute vec4 aPosition; attribute vec4 aTextureCoord; varying highp vec2 vTextureCoord; void main() { vec4 scaledPos = aPosition; scaledPos.x = scaledPos.x * uCRatio; gl_Position = uMVPMatrix * scaledPos; vTextureCoord = (uSTMatrix * aTextureCoord).xy; } 45 -e ,(java/lang/StringBuilder -f/#extension GL_OES_EGL_image_external : require gh'com/example/mp4composer/filter/GlFilterprecision mediump float; varying highp vec2 vTextureCoord; uniform lowp sampler2D sTexture; void main() { gl_FragColor = texture2D(sTexture, vTextureCoord); }  sampler2DsamplerExternalOESi jk lm nf uMVPMatrix op qr uSTMatrixuCRatio st uv wx aPosition y. z{ aTextureCoord |. }xsTexture ~x  .'(Ljava/lang/String;Ljava/lang/String;)V()Vappend-(Ljava/lang/String;)Ljava/lang/StringBuilder;java/lang/StringreplaceD(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String;toString()Ljava/lang/String; useProgram getHandle(Ljava/lang/String;)IglUniformMatrix4fv (IIZ[FI)V glUniform1f(IF)VgetVertexBufferName()I glBindBuffer(II)VglEnableVertexAttribArrayglVertexAttribPointer (IIIZII)VglActiveTexture glBindTexture glUniform1i glDrawArrays(III)VglDisableVertexAttribArray! '()*+),(-./L**0% &'123,( 45/p%Y     0*+,-.!+"01 %,(6"78/:**,*-******  !*"*#$%*&*& "0J4678):2;;<L=U>g@lAtB~DFGHIJ14239(:;<;=>?@PK!!P1com/example/mp4composer/gl/GlSurfaceTexture.class3@ 23 4 5 6 78e 9 : ; <=>?surfaceTexture!Landroid/graphics/SurfaceTexture;onFrameAvailableListenerOnFrameAvailableListener InnerClasses:Landroid/graphics/SurfaceTexture$OnFrameAvailableListener;(I)VCodeLineNumberTableLocalVariableTablethis-Lcom/example/mp4composer/gl/GlSurfaceTexture;texNameIsetOnFrameAvailableListener=(Landroid/graphics/SurfaceTexture$OnFrameAvailableListener;)VlgetTextureTarget()IupdateTexImage()VgetTransformMatrix([F)Vmtx[FgetSurfaceTexture#()Landroid/graphics/SurfaceTexture;onFrameAvailable$(Landroid/graphics/SurfaceTexture;)V StackMapTablerelease SourceFileGlSurfaceTexture.java %android/graphics/SurfaceTexture    $com/example/mp4composer/gl/GlPreview $% &' ,- /%+com/example/mp4composer/gl/GlSurfaceTexturejava/lang/Object8android/graphics/SurfaceTexture$OnFrameAvailableListener! Y**Y**     >*+ !"#- $%6*   &'A *+    ()*+/*" ,-Z*** &')./%6*  ,- 01  PK!!S2com/example/mp4composer/logger/AndroidLogger.class3(     !()VCodeLineNumberTableLocalVariableTablethis.Lcom/example/mp4composer/logger/AndroidLogger;debug'(Ljava/lang/String;Ljava/lang/String;)VtagLjava/lang/String;messageerror<(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)VLjava/lang/Throwable;warning SourceFileAndroidLogger.java  " #$ %& '$,com/example/mp4composer/logger/AndroidLoggerjava/lang/Object%com/example/mp4composer/logger/Loggerandroid/util/Logd'(Ljava/lang/String;Ljava/lang/String;)Ie<(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)Iw!  /*    I+,W     T+,-W  *  I+,W   PK!![+com/example/mp4composer/logger/Logger.class3   debug'(Ljava/lang/String;Ljava/lang/String;)Verror<(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)Vwarning SourceFile Logger.java%com/example/mp4composer/logger/Loggerjava/lang/Object PK!!#H8com/example/mp4composer/source/DataSource$Listener.class3  onError(Ljava/lang/Exception;)V SourceFileDataSource.java 2com/example/mp4composer/source/DataSource$ListenerListener InnerClassesjava/lang/Object)com/example/mp4composer/source/DataSource   PK!!<+ii/com/example/mp4composer/source/DataSource.class3  Listener InnerClassesgetFileDescriptor()Ljava/io/FileDescriptor;RuntimeInvisibleAnnotationsLandroidx/annotation/NonNull; SourceFileDataSource.java)com/example/mp4composer/source/DataSourcejava/lang/Object2com/example/mp4composer/source/DataSource$Listener     PK!!!=com/example/mp4composer/source/FileDescriptorDataSource.class3  fileDescriptorLjava/io/FileDescriptor;(Ljava/io/FileDescriptor;)VCodeLineNumberTableLocalVariableTablethis9Lcom/example/mp4composer/source/FileDescriptorDataSource;getFileDescriptor()Ljava/io/FileDescriptor;RuntimeInvisibleAnnotationsLandroidx/annotation/NonNull; SourceFileFileDescriptorDataSource.java  7com/example/mp4composer/source/FileDescriptorDataSourcejava/lang/Object)com/example/mp4composer/source/DataSource()V!  F **+      /*   PK!!cLg337com/example/mp4composer/source/FilePathDataSource.class3` ?@ AB CD EF GH I J KLMN OPQRTAGLjava/lang/String;fileDescriptorLjava/io/FileDescriptor;SListener InnerClassesp(Ljava/lang/String;Lcom/example/mp4composer/logger/Logger;Lcom/example/mp4composer/source/DataSource$Listener;)VCodeLineNumberTableLocalVariableTablefileInputStreamLjava/io/FileInputStream;eLjava/io/FileNotFoundException;Ljava/io/IOException;this3Lcom/example/mp4composer/source/FilePathDataSource;filePathlogger'Lcom/example/mp4composer/logger/Logger;listener4Lcom/example/mp4composer/source/DataSource$Listener;srcFileLjava/io/File; StackMapTableNTUS@DBL$RuntimeInvisibleParameterAnnotationsLandroidx/annotation/NonNull;getFileDescriptor()Ljava/io/FileDescriptor;RuntimeInvisibleAnnotations()V SourceFileFilePathDataSource.java < java/io/File Vjava/io/FileInputStream Wjava/io/FileNotFoundException Unable to find fileU XY Z[ \9 java/io/IOExceptionUnable to read input file1com/example/mp4composer/source/FilePathDataSource] ^_java/lang/Object)com/example/mp4composer/source/DataSource2com/example/mp4composer/source/DataSource$Listenerjava/lang/String%com/example/mp4composer/logger/Logger(Ljava/lang/String;)V(Ljava/io/File;)Verror<(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)VonError(Ljava/lang/Exception;)VgetFDjava/lang/Class getSimpleName()Ljava/lang/String;!BX*Y+:Y::, - * :, - 4=@ :+34 =$@!B"O#W%\  !"B!#X$%X&X'(X)*J+,4$ -&./01234K5677789/* * $%:7;<! =>  PK!!gg2com/example/mp4composer/source/UriDataSource.class3` ; <=> ?@A BC DE F GH IJ KLMNTAGLjava/lang/String;fileDescriptorLjava/io/FileDescriptor;OListener InnerClasses(Landroid/net/Uri;Landroid/content/Context;Lcom/example/mp4composer/logger/Logger;Lcom/example/mp4composer/source/DataSource$Listener;)VCodeLineNumberTableLocalVariableTableeLjava/io/FileNotFoundException;this.Lcom/example/mp4composer/source/UriDataSource;uriLandroid/net/Uri;contextLandroid/content/Context;logger'Lcom/example/mp4composer/logger/Logger;listener4Lcom/example/mp4composer/source/DataSource$Listener;parcelFileDescriptor!Landroid/os/ParcelFileDescriptor; StackMapTableJPQROSA$RuntimeInvisibleParameterAnnotationsLandroidx/annotation/NonNull;getFileDescriptor()Ljava/io/FileDescriptor;RuntimeInvisibleAnnotations()V SourceFileUriDataSource.java 8Q TUrV WXjava/io/FileNotFoundException Unable to find fileR YZ [\S 45 ,com/example/mp4composer/source/UriDataSource] ^_java/lang/Object)com/example/mp4composer/source/DataSource2com/example/mp4composer/source/DataSource$Listenerandroid/net/Uriandroid/content/Context%com/example/mp4composer/logger/Loggerandroid/os/ParcelFileDescriptorgetContentResolver#()Landroid/content/ContentResolver;android/content/ContentResolveropenFileDescriptorF(Landroid/net/Uri;Ljava/lang/String;)Landroid/os/ParcelFileDescriptor;error<(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)VonError(Ljava/lang/Exception;)Vjava/lang/Class getSimpleName()Ljava/lang/String;! 9*:,+::- * * %./8H99 !9"#9$%9&'2()*+,-./012333345/* $ 6378!  9:  PK!!rvZ+com/example/mp4composer/utils/EglUtil.class3p 4q r s t uvw qx y z { |} ~      /  ! !  !      FG/  NO_TEXTUREI ConstantValueFLOAT_SIZE_BYTES()VCodeLineNumberTableLocalVariableTablethis'Lcom/example/mp4composer/utils/EglUtil; loadShader(Ljava/lang/String;I)I strSourceLjava/lang/String;iTypecompiled[IiShader StackMapTableH createProgram(II)I vertexShader pixelShaderprogram linkStatus Exceptions setupSampler(III)Vtargetmagmin createBuffer([F)Idata[F(Ljava/nio/FloatBuffer;)ILjava/nio/FloatBuffer;buffers toFloatBuffer([F)Ljava/nio/FloatBuffer;bufferupdateBufferData(ILjava/nio/FloatBuffer;)V bufferName loadTexture(Landroid/graphics/Bitmap;IZ)IimgLandroid/graphics/Bitmap; usedTexIdrecycleZtextures SourceFile EglUtil.javaandroid/opengl/GLES20 ;< Load Shader Failedjava/lang/StringBuilder Compilation  java/lang/RuntimeExceptionCould not create program ; Could not link program U `a Y] cd%com/example/mp4composer/utils/EglUtil   a   k<java/lang/Objectandroid/opengl/GLExceptionglCreateShader(I)IglShaderSource(ILjava/lang/String;)VglCompileShader(I)V glGetShaderiv(II[II)Vappend-(Ljava/lang/String;)Ljava/lang/StringBuilder;glGetShaderInfoLog(I)Ljava/lang/String;toString()Ljava/lang/String;android/util/Logd'(Ljava/lang/String;Ljava/lang/String;)IglCreateProgram()I(Ljava/lang/String;)VglAttachShader(II)V glLinkProgramglGetProgramivglDeleteProgramglTexParameterf(IIF)VglTexParameteri glGenBuffers(I[II)Vjava/nio/ByteBufferallocateDirect(I)Ljava/nio/ByteBuffer;java/nio/ByteOrder nativeOrder()Ljava/nio/ByteOrder;order+(Ljava/nio/ByteOrder;)Ljava/nio/ByteBuffer; asFloatBuffer()Ljava/nio/FloatBuffer;java/nio/FloatBufferputposition(I)Ljava/nio/Buffer; glBindBuffercapacity glBufferData(IILjava/nio/Buffer;I)V glGenTextures glBindTextureandroid/opengl/GLUtils texImage2D(IILandroid/graphics/Bitmap;I)V texSubImage2D (IIIILandroid/graphics/Bitmap;)Vandroid/graphics/Bitmap!!45678967: ;<=3*> ? @A BC=@ M>*,,.! Y   W>& &' ()*+ ,<->/?*@DE@F6<GH 7I6J >K LM=C= Y N--.Y>2 34589; <$=,>3?7@AB?*CN6CO6?P6$QHJ .KRS TU=s%((((>F GHI$J? %V6%W6%X6 YZ=2*>M? [\ Y]=V L+++.* +.>QR ST?[^_H `a=e*h"#$%L+*&'W+>XYZ [\]?[\ b^ cd=[()(+*h++,()>abcd?e6[^ fg=q NJ-- -.. (/ (/ (0 (0 *1 . *2-O*3-.>>gh ijk#m.o9qDtPvWwaxezi{m}?*qhiqj6qklmmHJ PKnoPK!! 7(com/example/mp4composer/filter/GlCrosshatchFilter.classPK!!w8|com/example/mp4composer/filter/GlWatermarkFilter$1.classPK!!/122CBdcom/example/mp4composer/composer/BaseAudioChannel$AudioBuffer.classPK!!!=com/example/mp4composer/source/FileDescriptorDataSource.classPK!!:85com/example/mp4composer/filter/GlToneCurveFilter$2.classPK!!]hh;com/example/mp4composer/composer/Mp4Composer$Listener.classPK!!w:!FF6com/example/mp4composer/filter/GlLuminanceFilter.classPK!!pg* * 0com/example/mp4composer/filter/GlLutFilter.classPK!!M!Ħ9<com/example/mp4composer/composer/AudioChannelWithSP.classPK!!6_kk?com/example/mp4composer/filter/GlWatermarkFilter$Position.classPK!!> > <com/example/mp4composer/filter/GlBulgeDistortionFilter.classPK!!76com/example/mp4composer/composer/Mp4Composer$2$1.classPK!!N++5#com/example/mp4composer/filter/GlContrastFilter.classPK!!{7Hcom/example/mp4composer/filter/GlSaturationFilter.classPK!!63)com/example/mp4composer/composer/AudioChannel.classPK!!#H8com/example/mp4composer/source/DataSource$Listener.classPK!!+5<com/example/mp4composer/composer/IAudioComposer.classPK!!S2com/example/mp4composer/logger/AndroidLogger.classPK!!,,1#com/example/mp4composer/VideoFormatMimeType.classPK!!dQ  6com/example/mp4composer/filter/GlBilateralFilter.classPK!!P1=com/example/mp4composer/gl/GlSurfaceTexture.classPK!!qy  0com/example/mp4composer/FillModeCustomItem.classPK!!OB B 8^com/example/mp4composer/filter/GlLookUpTableFilter.classPK!!g9p p 3ǫcom/example/mp4composer/filter/GlLut512Filter.classPK!!Dz4xcom/example/mp4composer/filter/GlOpacityFilter.classPK!! p)com/example/mp4composer/BuildConfig.classPK!!j| 4com/example/mp4composer/filter/GlOverlayFilter.classPK!! ,\i2 com/example/mp4composer/FillModeCustomItem$1.classPK!!^W  5ocom/example/mp4composer/filter/GlHalftoneFilter.classPK!!M##7com/example/mp4composer/filter/GlMonochromeFilter.classPK!!-]E5d com/example/mp4composer/filter/GlSolarizeFilter.classPK!!r''6 ;com/example/mp4composer/filter/GlToneCurveFilter.classPK!! 6 9_com/example/mp4composer/filter/GlGaussianBlurFilter.classPK!!!!4com/example/mp4composer/composer/VideoComposer.classPK!!x6kcom/example/mp4composer/filter/GlGrayScaleFilter.classPK!!?com/example/mp4composer/filter/GlLuminanceThresholdFilter.classPK!!7ð4com/example/mp4composer/composer/Mp4Composer$1.classPK!!}ʸb b C"com/example/mp4composer/filter/GlThreex3TextureSamplingFilter.classPK!!MY 5com/example/mp4composer/filter/GlZoomBlurFilter.classPK!!F-8com/example/mp4composer/filter/GlFilter.classPK!!n0(com/example/mp4composer/SampleType.classPK!!Wf60p]com/example/mp4composer/composer/MuxRender.classPK!!UCd!!7_ com/example/mp4composer/filter/GlBrightnessFilter.classPK!!:*??7fscom/example/mp4composer/composer/DecoderSurface$1.classPK!![+Ncom/example/mp4composer/logger/Logger.classPK!!2Rcom/example/mp4composer/composer/MuxRender$1.classPK!!o+:<<:com/example/mp4composer/composer/SonicAudioProcessor.classPK!!77com/example/mp4composer/filter/GlPixelationFilter.classPK!!DBfcom/example/mp4composer/composer/BaseAudioChannel$BufferInfo.classPK!!fMW 4:com/example/mp4composer/filter/GlBoxBlurFilter.classPKZZ"