├── .gitignore
├── .idea
├── codeStyles
│ └── Project.xml
├── misc.xml
├── modules.xml
├── runConfigurations.xml
└── vcs.xml
├── README.md
├── VideoPalyer_Structure.jpg
├── VideoPlayer.mdj
├── app
├── .gitignore
├── build.gradle
├── proguard-rules.pro
└── src
│ ├── androidTest
│ └── java
│ │ └── com
│ │ └── ybj366533
│ │ └── yy_videoplayer
│ │ └── ExampleInstrumentedTest.kt
│ ├── main
│ ├── AndroidManifest.xml
│ ├── java
│ │ └── com
│ │ │ └── ybj366533
│ │ │ └── yy_videoplayer
│ │ │ ├── AppApplication.java
│ │ │ ├── adapter
│ │ │ ├── RecycleViewAdapter.java
│ │ │ ├── RecyclerBaseAdapter.java
│ │ │ ├── RecyclerNormalAdapter.java
│ │ │ └── VideoPlayerListAdapter.java
│ │ │ ├── anim
│ │ │ ├── AnimListener.kt
│ │ │ ├── AnimSet.kt
│ │ │ └── ValueAnim.kt
│ │ │ ├── effect
│ │ │ ├── BitmapEffect.java
│ │ │ └── BitmapIconEffect.java
│ │ │ ├── holder
│ │ │ ├── RecyclerItemBaseHolder.java
│ │ │ ├── RecyclerItemNormalHolder.java
│ │ │ └── RecyclerItemViewHolder.java
│ │ │ ├── listener
│ │ │ ├── AppBarStateChangeListener.java
│ │ │ └── OnTransitionListener.java
│ │ │ ├── model
│ │ │ ├── PlayerVideoModel.java
│ │ │ ├── SwitchVideoModel.java
│ │ │ └── VideoModel.java
│ │ │ ├── ui
│ │ │ ├── MainActivity.java
│ │ │ ├── ScrollingActivity.java
│ │ │ ├── VideoPlayerListActivity.java
│ │ │ └── ViewPagerActivity.java
│ │ │ ├── utils
│ │ │ ├── ScrollCalculatorHelper.java
│ │ │ ├── SmallVideoHelper.java
│ │ │ ├── ViewPlageCalculatorHelper.java
│ │ │ └── floatUtil
│ │ │ │ ├── FloatActivity.java
│ │ │ │ ├── FloatLifecycle.java
│ │ │ │ ├── FloatPhone.java
│ │ │ │ ├── FloatToast.java
│ │ │ │ ├── FloatView.java
│ │ │ │ ├── FloatWindow.java
│ │ │ │ ├── IFloatWindow.java
│ │ │ │ ├── IFloatWindowImpl.java
│ │ │ │ ├── LifecycleListener.java
│ │ │ │ ├── MoveType.java
│ │ │ │ ├── PermissionListener.java
│ │ │ │ ├── Screen.java
│ │ │ │ └── Util.java
│ │ │ ├── video
│ │ │ ├── CustomRenderVideoPlayer.java
│ │ │ ├── EmptyControlVideo.java
│ │ │ ├── FloatingVideo.java
│ │ │ ├── LandLayoutVideo.java
│ │ │ ├── MListVideoPlayer.java
│ │ │ ├── MultiSampleVideo.java
│ │ │ ├── SampleControlVideo.java
│ │ │ ├── SampleCoverVideo.java
│ │ │ ├── SampleVideo.java
│ │ │ ├── SmartPickVideo.java
│ │ │ ├── listener
│ │ │ │ └── MiGuVideoPlayerListener.java
│ │ │ └── manager
│ │ │ │ └── CustomManager.java
│ │ │ └── view
│ │ │ ├── CustomInputDialog.java
│ │ │ ├── CustomRenderView.java
│ │ │ ├── CustomTextureSurface.java
│ │ │ ├── FloatPlayerView.java
│ │ │ ├── LoadingDialog.java
│ │ │ ├── ScrollWebView.java
│ │ │ ├── SwitchVideoTypeDialog.java
│ │ │ └── VideoSeekBar.java
│ └── res
│ │ ├── drawable-v24
│ │ └── ic_launcher_foreground.xml
│ │ ├── drawable-xhdpi
│ │ ├── custom_enlarge.png
│ │ └── custom_shrink.png
│ │ ├── drawable
│ │ ├── bg_wiht_shadow.xml
│ │ ├── circle_big_red.xml
│ │ ├── dialog_btn_bg.xml
│ │ ├── ic_launcher_background.xml
│ │ ├── play_arrow.xml
│ │ ├── video_new_progress.xml
│ │ ├── video_new_seekbar_progress.xml
│ │ ├── video_new_seekbar_thumb.xml
│ │ ├── video_new_volume_progress_bg.xml
│ │ ├── video_seek_new_thumb_normal.xml
│ │ └── video_seek_new_thumb_press.xml
│ │ ├── layout
│ │ ├── activity_details_player.xml
│ │ ├── activity_pager.xml
│ │ ├── activity_play.xml
│ │ ├── activity_recycler_view.xml
│ │ ├── activity_scrolling.xml
│ │ ├── activity_video_player_list.xml
│ │ ├── activity_view_pager_layout_manager.xml
│ │ ├── content_scrolling.xml
│ │ ├── empty_control_video.xml
│ │ ├── fragment_page.xml
│ │ ├── item_view_pager.xml
│ │ ├── layout_child.xml
│ │ ├── layout_custom_dialog.xml
│ │ ├── layout_floating_play.xml
│ │ ├── layout_floating_video.xml
│ │ ├── layout_loading_dialog.xml
│ │ ├── list_video_item.xml
│ │ ├── list_video_item_ad.xml
│ │ ├── list_video_item_mutli.xml
│ │ ├── list_video_item_normal.xml
│ │ ├── list_video_plsyer_item.xml
│ │ ├── player_activity_main.xml
│ │ ├── sample_control_video.xml
│ │ ├── sample_video.xml
│ │ ├── sample_video_land.xml
│ │ ├── sample_video_normal.xml
│ │ ├── sample_video_pick.xml
│ │ ├── switch_video_dialog.xml
│ │ ├── switch_video_dialog_item.xml
│ │ ├── video_layout_cover.xml
│ │ └── video_layout_preview.xml
│ │ ├── mipmap-anydpi-v26
│ │ ├── ic_launcher.xml
│ │ └── ic_launcher_round.xml
│ │ ├── mipmap-hdpi
│ │ ├── ic_launcher.png
│ │ └── ic_launcher_round.png
│ │ ├── mipmap-mdpi
│ │ ├── ic_launcher.png
│ │ └── ic_launcher_round.png
│ │ ├── mipmap-xhdpi
│ │ ├── add_bg.png
│ │ ├── add_icon.png
│ │ ├── heart_icon.png
│ │ ├── ic_launcher.png
│ │ ├── ic_launcher_round.png
│ │ ├── img_video_1.png
│ │ ├── img_video_2.png
│ │ ├── msg_icon.png
│ │ ├── search_icon.png
│ │ └── share_icon.png
│ │ ├── mipmap-xxhdpi
│ │ └── ic_launcher_round.png
│ │ ├── mipmap-xxxhdpi
│ │ ├── ic_launcher.png
│ │ └── ic_launcher_round.png
│ │ ├── raw
│ │ ├── comments.xml
│ │ ├── video_1.mp4
│ │ └── video_2.mp4
│ │ └── values
│ │ ├── colors.xml
│ │ ├── dimens.xml
│ │ ├── id.xml
│ │ ├── strings.xml
│ │ └── styles.xml
│ └── test
│ └── java
│ └── com
│ └── ybj366533
│ └── yy_videoplayer
│ └── ExampleUnitTest.kt
├── build.gradle
├── config.gradle
├── dependencies.gradle
├── gradle.properties
├── gradle
└── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
├── settings.gradle
├── videoplayer-arm64
├── .gitignore
├── build.gradle
├── gradle.properties
├── proguard-rules.pro
└── src
│ ├── androidTest
│ └── java
│ │ └── tv
│ │ └── danmaku
│ │ └── ijk
│ │ └── media
│ │ └── player_arm64
│ │ └── ApplicationTest.java
│ └── main
│ ├── .classpath
│ ├── .project
│ ├── .settings
│ └── org.eclipse.jdt.core.prefs
│ ├── AndroidManifest.xml
│ ├── java
│ └── tv
│ │ └── danmaku
│ │ └── ijk
│ │ └── media
│ │ └── player_arm64
│ │ └── Pragma.java
│ ├── jni
│ ├── Android.mk
│ ├── Application.mk
│ ├── ffmpeg
│ │ └── Android.mk
│ └── ijkmedia
│ │ ├── Android.mk
│ │ ├── ijkj4a
│ │ ├── .gitignore
│ │ ├── Android.mk
│ │ ├── Makefile
│ │ ├── j4a
│ │ │ ├── class
│ │ │ │ ├── android
│ │ │ │ │ ├── media
│ │ │ │ │ │ ├── AudioTrack.c
│ │ │ │ │ │ ├── AudioTrack.h
│ │ │ │ │ │ ├── AudioTrack.include.j4a
│ │ │ │ │ │ ├── AudioTrack.loader.j4a
│ │ │ │ │ │ ├── MediaCodec.c
│ │ │ │ │ │ ├── MediaCodec.h
│ │ │ │ │ │ ├── MediaCodec.include.j4a
│ │ │ │ │ │ ├── MediaCodec.loader.j4a
│ │ │ │ │ │ ├── MediaFormat.c
│ │ │ │ │ │ ├── MediaFormat.h
│ │ │ │ │ │ ├── MediaFormat.include.j4a
│ │ │ │ │ │ ├── MediaFormat.loader.j4a
│ │ │ │ │ │ ├── PlaybackParams.c
│ │ │ │ │ │ ├── PlaybackParams.h
│ │ │ │ │ │ ├── PlaybackParams.include.j4a
│ │ │ │ │ │ └── PlaybackParams.loader.j4a
│ │ │ │ │ └── os
│ │ │ │ │ │ ├── Build.c
│ │ │ │ │ │ ├── Build.h
│ │ │ │ │ │ ├── Build.include.j4a
│ │ │ │ │ │ ├── Build.loader.j4a
│ │ │ │ │ │ ├── Bundle.c
│ │ │ │ │ │ ├── Bundle.h
│ │ │ │ │ │ ├── Bundle.include.j4a
│ │ │ │ │ │ └── Bundle.loader.j4a
│ │ │ │ ├── java
│ │ │ │ │ ├── nio
│ │ │ │ │ │ ├── Buffer.c
│ │ │ │ │ │ ├── Buffer.h
│ │ │ │ │ │ ├── Buffer.include.j4a
│ │ │ │ │ │ ├── Buffer.loader.j4a
│ │ │ │ │ │ ├── ByteBuffer.c
│ │ │ │ │ │ ├── ByteBuffer.h
│ │ │ │ │ │ ├── ByteBuffer.include.j4a
│ │ │ │ │ │ └── ByteBuffer.loader.j4a
│ │ │ │ │ └── util
│ │ │ │ │ │ ├── ArrayList.c
│ │ │ │ │ │ ├── ArrayList.h
│ │ │ │ │ │ ├── ArrayList.include.j4a
│ │ │ │ │ │ └── ArrayList.loader.j4a
│ │ │ │ └── tv
│ │ │ │ │ └── danmaku
│ │ │ │ │ └── ijk
│ │ │ │ │ └── media
│ │ │ │ │ └── player
│ │ │ │ │ ├── IjkMediaPlayer.c
│ │ │ │ │ ├── IjkMediaPlayer.h
│ │ │ │ │ ├── IjkMediaPlayer.include.j4a
│ │ │ │ │ ├── IjkMediaPlayer.loader.j4a
│ │ │ │ │ └── misc
│ │ │ │ │ ├── IAndroidIO.c
│ │ │ │ │ ├── IAndroidIO.h
│ │ │ │ │ ├── IAndroidIO.include.j4a
│ │ │ │ │ ├── IAndroidIO.loader.j4a
│ │ │ │ │ ├── IMediaDataSource.c
│ │ │ │ │ ├── IMediaDataSource.h
│ │ │ │ │ ├── IMediaDataSource.include.j4a
│ │ │ │ │ └── IMediaDataSource.loader.j4a
│ │ │ ├── j4a_allclasses.c
│ │ │ ├── j4a_allclasses.h
│ │ │ ├── j4a_allclasses.include.h
│ │ │ ├── j4a_allclasses.loader.h
│ │ │ ├── j4a_base.c
│ │ │ └── j4a_base.h
│ │ ├── j4au
│ │ │ └── class
│ │ │ │ ├── android
│ │ │ │ └── media
│ │ │ │ │ ├── AudioTrack.util.c
│ │ │ │ │ └── AudioTrack.util.h
│ │ │ │ └── java
│ │ │ │ └── nio
│ │ │ │ ├── ByteBuffer.util.c
│ │ │ │ └── ByteBuffer.util.h
│ │ └── java
│ │ │ ├── android
│ │ │ ├── media
│ │ │ │ ├── AudioTrack.java
│ │ │ │ ├── MediaCodec.java
│ │ │ │ ├── MediaCrypto.java
│ │ │ │ ├── MediaFormat.java
│ │ │ │ └── PlaybackParams.java
│ │ │ └── os
│ │ │ │ ├── Build.java
│ │ │ │ └── Bundle.java
│ │ │ ├── java
│ │ │ ├── nio
│ │ │ │ ├── Buffer.java
│ │ │ │ └── ByteBuffer.java
│ │ │ └── util
│ │ │ │ └── ArrayList.java
│ │ │ └── tv
│ │ │ └── danmaku
│ │ │ └── ijk
│ │ │ └── media
│ │ │ └── player
│ │ │ ├── IjkMediaPlayer.java
│ │ │ └── misc
│ │ │ ├── IAndroidIO.java
│ │ │ └── IMediaDataSource.java
│ │ ├── ijkplayer
│ │ ├── .gitignore
│ │ ├── Android.mk
│ │ ├── android
│ │ │ ├── ffmpeg_api_jni.c
│ │ │ ├── ffmpeg_api_jni.h
│ │ │ ├── ijkplayer_android.c
│ │ │ ├── ijkplayer_android.h
│ │ │ ├── ijkplayer_android_def.h
│ │ │ ├── ijkplayer_jni.c
│ │ │ └── pipeline
│ │ │ │ ├── ffpipeline_android.c
│ │ │ │ ├── ffpipeline_android.h
│ │ │ │ ├── ffpipenode_android_mediacodec_vdec.c
│ │ │ │ ├── ffpipenode_android_mediacodec_vdec.h
│ │ │ │ ├── h264_nal.h
│ │ │ │ ├── hevc_nal.h
│ │ │ │ └── mpeg4_esds.h
│ │ ├── config.h
│ │ ├── ff_cmdutils.c
│ │ ├── ff_cmdutils.h
│ │ ├── ff_fferror.h
│ │ ├── ff_ffinc.h
│ │ ├── ff_ffmsg.h
│ │ ├── ff_ffmsg_queue.h
│ │ ├── ff_ffpipeline.c
│ │ ├── ff_ffpipeline.h
│ │ ├── ff_ffpipenode.c
│ │ ├── ff_ffpipenode.h
│ │ ├── ff_ffplay.c
│ │ ├── ff_ffplay.h
│ │ ├── ff_ffplay_debug.h
│ │ ├── ff_ffplay_def.h
│ │ ├── ff_ffplay_options.h
│ │ ├── ijkavformat
│ │ │ ├── allformats.c
│ │ │ ├── ijkasync.c
│ │ │ ├── ijkavformat.h
│ │ │ ├── ijkio.c
│ │ │ ├── ijkioandroidio.c
│ │ │ ├── ijkioapplication.c
│ │ │ ├── ijkioapplication.h
│ │ │ ├── ijkiocache.c
│ │ │ ├── ijkioffio.c
│ │ │ ├── ijkiomanager.c
│ │ │ ├── ijkiomanager.h
│ │ │ ├── ijkioprotocol.c
│ │ │ ├── ijkioprotocol.h
│ │ │ ├── ijkiourl.h
│ │ │ ├── ijkiourlhook.c
│ │ │ ├── ijklivehook.c
│ │ │ ├── ijklongurl.c
│ │ │ ├── ijkmediadatasource.c
│ │ │ ├── ijksegment.c
│ │ │ └── ijkurlhook.c
│ │ ├── ijkavutil
│ │ │ ├── ijkdict.c
│ │ │ ├── ijkdict.h
│ │ │ ├── ijkfifo.c
│ │ │ ├── ijkfifo.h
│ │ │ ├── ijkstl.cpp
│ │ │ ├── ijkstl.h
│ │ │ ├── ijkthreadpool.c
│ │ │ ├── ijkthreadpool.h
│ │ │ ├── ijktree.c
│ │ │ ├── ijktree.h
│ │ │ ├── ijkutils.c
│ │ │ ├── ijkutils.h
│ │ │ └── opt.h
│ │ ├── ijkmeta.c
│ │ ├── ijkmeta.h
│ │ ├── ijkplayer.c
│ │ ├── ijkplayer.h
│ │ ├── ijkplayer_internal.h
│ │ ├── pipeline
│ │ │ ├── ffpipeline_ffplay.c
│ │ │ ├── ffpipeline_ffplay.h
│ │ │ ├── ffpipenode_ffplay_vdec.c
│ │ │ └── ffpipenode_ffplay_vdec.h
│ │ └── version.sh
│ │ └── ijksdl
│ │ ├── Android.mk
│ │ ├── android
│ │ ├── android_audiotrack.c
│ │ ├── android_audiotrack.h
│ │ ├── android_nativewindow.c
│ │ ├── android_nativewindow.h
│ │ ├── ijksdl_android.h
│ │ ├── ijksdl_android_jni.c
│ │ ├── ijksdl_android_jni.h
│ │ ├── ijksdl_aout_android_audiotrack.c
│ │ ├── ijksdl_aout_android_audiotrack.h
│ │ ├── ijksdl_aout_android_opensles.c
│ │ ├── ijksdl_aout_android_opensles.h
│ │ ├── ijksdl_codec_android_mediacodec.c
│ │ ├── ijksdl_codec_android_mediacodec.h
│ │ ├── ijksdl_codec_android_mediacodec_dummy.c
│ │ ├── ijksdl_codec_android_mediacodec_dummy.h
│ │ ├── ijksdl_codec_android_mediacodec_internal.c
│ │ ├── ijksdl_codec_android_mediacodec_internal.h
│ │ ├── ijksdl_codec_android_mediacodec_java.c
│ │ ├── ijksdl_codec_android_mediacodec_java.h
│ │ ├── ijksdl_codec_android_mediadef.c
│ │ ├── ijksdl_codec_android_mediadef.h
│ │ ├── ijksdl_codec_android_mediaformat.c
│ │ ├── ijksdl_codec_android_mediaformat.h
│ │ ├── ijksdl_codec_android_mediaformat_internal.h
│ │ ├── ijksdl_codec_android_mediaformat_java.c
│ │ ├── ijksdl_codec_android_mediaformat_java.h
│ │ ├── ijksdl_inc_internal_android.h
│ │ ├── ijksdl_vout_android_nativewindow.c
│ │ ├── ijksdl_vout_android_nativewindow.h
│ │ ├── ijksdl_vout_android_surface.c
│ │ ├── ijksdl_vout_android_surface.h
│ │ ├── ijksdl_vout_overlay_android_mediacodec.c
│ │ └── ijksdl_vout_overlay_android_mediacodec.h
│ │ ├── dummy
│ │ ├── ijksdl_dummy.h
│ │ ├── ijksdl_vout_dummy.c
│ │ └── ijksdl_vout_dummy.h
│ │ ├── ffmpeg
│ │ ├── abi_all
│ │ │ └── image_convert.c
│ │ ├── ijksdl_image_convert.h
│ │ ├── ijksdl_inc_ffmpeg.h
│ │ ├── ijksdl_vout_overlay_ffmpeg.c
│ │ └── ijksdl_vout_overlay_ffmpeg.h
│ │ ├── gles2
│ │ ├── color.c
│ │ ├── common.c
│ │ ├── fsh
│ │ │ ├── rgb.fsh.c
│ │ │ ├── yuv420p.fsh.c
│ │ │ ├── yuv420sp.fsh.c
│ │ │ └── yuv444p10le.fsh.c
│ │ ├── internal.h
│ │ ├── renderer.c
│ │ ├── renderer_rgb.c
│ │ ├── renderer_yuv420p.c
│ │ ├── renderer_yuv420sp.c
│ │ ├── renderer_yuv420sp_vtb.m
│ │ ├── renderer_yuv444p10le.c
│ │ ├── shader.c
│ │ └── vsh
│ │ │ └── mvp.vsh.c
│ │ ├── ijksdl.h
│ │ ├── ijksdl_aout.c
│ │ ├── ijksdl_aout.h
│ │ ├── ijksdl_aout_internal.h
│ │ ├── ijksdl_audio.c
│ │ ├── ijksdl_audio.h
│ │ ├── ijksdl_class.h
│ │ ├── ijksdl_container.h
│ │ ├── ijksdl_egl.c
│ │ ├── ijksdl_egl.h
│ │ ├── ijksdl_endian.h
│ │ ├── ijksdl_error.c
│ │ ├── ijksdl_error.h
│ │ ├── ijksdl_extra_log.c
│ │ ├── ijksdl_extra_log.h
│ │ ├── ijksdl_fourcc.h
│ │ ├── ijksdl_gles2.h
│ │ ├── ijksdl_inc_internal.h
│ │ ├── ijksdl_log.h
│ │ ├── ijksdl_misc.h
│ │ ├── ijksdl_mutex.c
│ │ ├── ijksdl_mutex.h
│ │ ├── ijksdl_stdinc.c
│ │ ├── ijksdl_stdinc.h
│ │ ├── ijksdl_thread.c
│ │ ├── ijksdl_thread.h
│ │ ├── ijksdl_timer.c
│ │ ├── ijksdl_timer.h
│ │ ├── ijksdl_video.h
│ │ ├── ijksdl_vout.c
│ │ ├── ijksdl_vout.h
│ │ └── ijksdl_vout_internal.h
│ ├── project.properties
│ └── res
│ └── values
│ └── strings.xml
├── videoplayer-armv7a
├── .gitignore
├── build.gradle
├── gradle.properties
├── proguard-rules.pro
└── src
│ ├── androidTest
│ └── java
│ │ └── tv
│ │ └── danmaku
│ │ └── ijk
│ │ └── media
│ │ └── player_armv7a
│ │ └── ApplicationTest.java
│ └── main
│ ├── .classpath
│ ├── .project
│ ├── .settings
│ └── org.eclipse.jdt.core.prefs
│ ├── AndroidManifest.xml
│ ├── java
│ └── tv
│ │ └── danmaku
│ │ └── ijk
│ │ └── media
│ │ └── player_armv7a
│ │ └── Pragma.java
│ ├── jni
│ ├── Android.mk
│ ├── Application.mk
│ ├── ffmpeg
│ │ └── Android.mk
│ └── ijkmedia
│ │ ├── Android.mk
│ │ ├── ijkj4a
│ │ ├── .gitignore
│ │ ├── Android.mk
│ │ ├── Makefile
│ │ ├── j4a
│ │ │ ├── class
│ │ │ │ ├── android
│ │ │ │ │ ├── media
│ │ │ │ │ │ ├── AudioTrack.c
│ │ │ │ │ │ ├── AudioTrack.h
│ │ │ │ │ │ ├── AudioTrack.include.j4a
│ │ │ │ │ │ ├── AudioTrack.loader.j4a
│ │ │ │ │ │ ├── MediaCodec.c
│ │ │ │ │ │ ├── MediaCodec.h
│ │ │ │ │ │ ├── MediaCodec.include.j4a
│ │ │ │ │ │ ├── MediaCodec.loader.j4a
│ │ │ │ │ │ ├── MediaFormat.c
│ │ │ │ │ │ ├── MediaFormat.h
│ │ │ │ │ │ ├── MediaFormat.include.j4a
│ │ │ │ │ │ ├── MediaFormat.loader.j4a
│ │ │ │ │ │ ├── PlaybackParams.c
│ │ │ │ │ │ ├── PlaybackParams.h
│ │ │ │ │ │ ├── PlaybackParams.include.j4a
│ │ │ │ │ │ └── PlaybackParams.loader.j4a
│ │ │ │ │ └── os
│ │ │ │ │ │ ├── Build.c
│ │ │ │ │ │ ├── Build.h
│ │ │ │ │ │ ├── Build.include.j4a
│ │ │ │ │ │ ├── Build.loader.j4a
│ │ │ │ │ │ ├── Bundle.c
│ │ │ │ │ │ ├── Bundle.h
│ │ │ │ │ │ ├── Bundle.include.j4a
│ │ │ │ │ │ └── Bundle.loader.j4a
│ │ │ │ ├── java
│ │ │ │ │ ├── nio
│ │ │ │ │ │ ├── Buffer.c
│ │ │ │ │ │ ├── Buffer.h
│ │ │ │ │ │ ├── Buffer.include.j4a
│ │ │ │ │ │ ├── Buffer.loader.j4a
│ │ │ │ │ │ ├── ByteBuffer.c
│ │ │ │ │ │ ├── ByteBuffer.h
│ │ │ │ │ │ ├── ByteBuffer.include.j4a
│ │ │ │ │ │ └── ByteBuffer.loader.j4a
│ │ │ │ │ └── util
│ │ │ │ │ │ ├── ArrayList.c
│ │ │ │ │ │ ├── ArrayList.h
│ │ │ │ │ │ ├── ArrayList.include.j4a
│ │ │ │ │ │ └── ArrayList.loader.j4a
│ │ │ │ └── tv
│ │ │ │ │ └── danmaku
│ │ │ │ │ └── ijk
│ │ │ │ │ └── media
│ │ │ │ │ └── player
│ │ │ │ │ ├── IjkMediaPlayer.c
│ │ │ │ │ ├── IjkMediaPlayer.h
│ │ │ │ │ ├── IjkMediaPlayer.include.j4a
│ │ │ │ │ ├── IjkMediaPlayer.loader.j4a
│ │ │ │ │ └── misc
│ │ │ │ │ ├── IAndroidIO.c
│ │ │ │ │ ├── IAndroidIO.h
│ │ │ │ │ ├── IAndroidIO.include.j4a
│ │ │ │ │ ├── IAndroidIO.loader.j4a
│ │ │ │ │ ├── IMediaDataSource.c
│ │ │ │ │ ├── IMediaDataSource.h
│ │ │ │ │ ├── IMediaDataSource.include.j4a
│ │ │ │ │ └── IMediaDataSource.loader.j4a
│ │ │ ├── j4a_allclasses.c
│ │ │ ├── j4a_allclasses.h
│ │ │ ├── j4a_allclasses.include.h
│ │ │ ├── j4a_allclasses.loader.h
│ │ │ ├── j4a_base.c
│ │ │ └── j4a_base.h
│ │ ├── j4au
│ │ │ └── class
│ │ │ │ ├── android
│ │ │ │ └── media
│ │ │ │ │ ├── AudioTrack.util.c
│ │ │ │ │ └── AudioTrack.util.h
│ │ │ │ └── java
│ │ │ │ └── nio
│ │ │ │ ├── ByteBuffer.util.c
│ │ │ │ └── ByteBuffer.util.h
│ │ └── java
│ │ │ ├── android
│ │ │ ├── media
│ │ │ │ ├── AudioTrack.java
│ │ │ │ ├── MediaCodec.java
│ │ │ │ ├── MediaCrypto.java
│ │ │ │ ├── MediaFormat.java
│ │ │ │ └── PlaybackParams.java
│ │ │ └── os
│ │ │ │ ├── Build.java
│ │ │ │ └── Bundle.java
│ │ │ ├── java
│ │ │ ├── nio
│ │ │ │ ├── Buffer.java
│ │ │ │ └── ByteBuffer.java
│ │ │ └── util
│ │ │ │ └── ArrayList.java
│ │ │ └── tv
│ │ │ └── danmaku
│ │ │ └── ijk
│ │ │ └── media
│ │ │ └── player
│ │ │ ├── IjkMediaPlayer.java
│ │ │ └── misc
│ │ │ ├── IAndroidIO.java
│ │ │ └── IMediaDataSource.java
│ │ ├── ijkplayer
│ │ ├── .gitignore
│ │ ├── Android.mk
│ │ ├── android
│ │ │ ├── ffmpeg_api_jni.c
│ │ │ ├── ffmpeg_api_jni.h
│ │ │ ├── ijkplayer_android.c
│ │ │ ├── ijkplayer_android.h
│ │ │ ├── ijkplayer_android_def.h
│ │ │ ├── ijkplayer_jni.c
│ │ │ └── pipeline
│ │ │ │ ├── ffpipeline_android.c
│ │ │ │ ├── ffpipeline_android.h
│ │ │ │ ├── ffpipenode_android_mediacodec_vdec.c
│ │ │ │ ├── ffpipenode_android_mediacodec_vdec.h
│ │ │ │ ├── h264_nal.h
│ │ │ │ ├── hevc_nal.h
│ │ │ │ └── mpeg4_esds.h
│ │ ├── config.h
│ │ ├── ff_cmdutils.c
│ │ ├── ff_cmdutils.h
│ │ ├── ff_fferror.h
│ │ ├── ff_ffinc.h
│ │ ├── ff_ffmsg.h
│ │ ├── ff_ffmsg_queue.h
│ │ ├── ff_ffpipeline.c
│ │ ├── ff_ffpipeline.h
│ │ ├── ff_ffpipenode.c
│ │ ├── ff_ffpipenode.h
│ │ ├── ff_ffplay.c
│ │ ├── ff_ffplay.h
│ │ ├── ff_ffplay_debug.h
│ │ ├── ff_ffplay_def.h
│ │ ├── ff_ffplay_options.h
│ │ ├── ijkavformat
│ │ │ ├── allformats.c
│ │ │ ├── ijkasync.c
│ │ │ ├── ijkavformat.h
│ │ │ ├── ijkio.c
│ │ │ ├── ijkioandroidio.c
│ │ │ ├── ijkioapplication.c
│ │ │ ├── ijkioapplication.h
│ │ │ ├── ijkiocache.c
│ │ │ ├── ijkioffio.c
│ │ │ ├── ijkiomanager.c
│ │ │ ├── ijkiomanager.h
│ │ │ ├── ijkioprotocol.c
│ │ │ ├── ijkioprotocol.h
│ │ │ ├── ijkiourl.h
│ │ │ ├── ijkiourlhook.c
│ │ │ ├── ijklivehook.c
│ │ │ ├── ijklongurl.c
│ │ │ ├── ijkmediadatasource.c
│ │ │ ├── ijksegment.c
│ │ │ └── ijkurlhook.c
│ │ ├── ijkavutil
│ │ │ ├── ijkdict.c
│ │ │ ├── ijkdict.h
│ │ │ ├── ijkfifo.c
│ │ │ ├── ijkfifo.h
│ │ │ ├── ijkstl.cpp
│ │ │ ├── ijkstl.h
│ │ │ ├── ijkthreadpool.c
│ │ │ ├── ijkthreadpool.h
│ │ │ ├── ijktree.c
│ │ │ ├── ijktree.h
│ │ │ ├── ijkutils.c
│ │ │ ├── ijkutils.h
│ │ │ └── opt.h
│ │ ├── ijkmeta.c
│ │ ├── ijkmeta.h
│ │ ├── ijkplayer.c
│ │ ├── ijkplayer.h
│ │ ├── ijkplayer_internal.h
│ │ ├── pipeline
│ │ │ ├── ffpipeline_ffplay.c
│ │ │ ├── ffpipeline_ffplay.h
│ │ │ ├── ffpipenode_ffplay_vdec.c
│ │ │ └── ffpipenode_ffplay_vdec.h
│ │ └── version.sh
│ │ └── ijksdl
│ │ ├── Android.mk
│ │ ├── android
│ │ ├── android_audiotrack.c
│ │ ├── android_audiotrack.h
│ │ ├── android_nativewindow.c
│ │ ├── android_nativewindow.h
│ │ ├── ijksdl_android.h
│ │ ├── ijksdl_android_jni.c
│ │ ├── ijksdl_android_jni.h
│ │ ├── ijksdl_aout_android_audiotrack.c
│ │ ├── ijksdl_aout_android_audiotrack.h
│ │ ├── ijksdl_aout_android_opensles.c
│ │ ├── ijksdl_aout_android_opensles.h
│ │ ├── ijksdl_codec_android_mediacodec.c
│ │ ├── ijksdl_codec_android_mediacodec.h
│ │ ├── ijksdl_codec_android_mediacodec_dummy.c
│ │ ├── ijksdl_codec_android_mediacodec_dummy.h
│ │ ├── ijksdl_codec_android_mediacodec_internal.c
│ │ ├── ijksdl_codec_android_mediacodec_internal.h
│ │ ├── ijksdl_codec_android_mediacodec_java.c
│ │ ├── ijksdl_codec_android_mediacodec_java.h
│ │ ├── ijksdl_codec_android_mediadef.c
│ │ ├── ijksdl_codec_android_mediadef.h
│ │ ├── ijksdl_codec_android_mediaformat.c
│ │ ├── ijksdl_codec_android_mediaformat.h
│ │ ├── ijksdl_codec_android_mediaformat_internal.h
│ │ ├── ijksdl_codec_android_mediaformat_java.c
│ │ ├── ijksdl_codec_android_mediaformat_java.h
│ │ ├── ijksdl_inc_internal_android.h
│ │ ├── ijksdl_vout_android_nativewindow.c
│ │ ├── ijksdl_vout_android_nativewindow.h
│ │ ├── ijksdl_vout_android_surface.c
│ │ ├── ijksdl_vout_android_surface.h
│ │ ├── ijksdl_vout_overlay_android_mediacodec.c
│ │ └── ijksdl_vout_overlay_android_mediacodec.h
│ │ ├── dummy
│ │ ├── ijksdl_dummy.h
│ │ ├── ijksdl_vout_dummy.c
│ │ └── ijksdl_vout_dummy.h
│ │ ├── ffmpeg
│ │ ├── abi_all
│ │ │ └── image_convert.c
│ │ ├── ijksdl_image_convert.h
│ │ ├── ijksdl_inc_ffmpeg.h
│ │ ├── ijksdl_vout_overlay_ffmpeg.c
│ │ └── ijksdl_vout_overlay_ffmpeg.h
│ │ ├── gles2
│ │ ├── color.c
│ │ ├── common.c
│ │ ├── fsh
│ │ │ ├── rgb.fsh.c
│ │ │ ├── yuv420p.fsh.c
│ │ │ ├── yuv420sp.fsh.c
│ │ │ └── yuv444p10le.fsh.c
│ │ ├── internal.h
│ │ ├── renderer.c
│ │ ├── renderer_rgb.c
│ │ ├── renderer_yuv420p.c
│ │ ├── renderer_yuv420sp.c
│ │ ├── renderer_yuv420sp_vtb.m
│ │ ├── renderer_yuv444p10le.c
│ │ ├── shader.c
│ │ └── vsh
│ │ │ └── mvp.vsh.c
│ │ ├── ijksdl.h
│ │ ├── ijksdl_aout.c
│ │ ├── ijksdl_aout.h
│ │ ├── ijksdl_aout_internal.h
│ │ ├── ijksdl_audio.c
│ │ ├── ijksdl_audio.h
│ │ ├── ijksdl_class.h
│ │ ├── ijksdl_container.h
│ │ ├── ijksdl_egl.c
│ │ ├── ijksdl_egl.h
│ │ ├── ijksdl_endian.h
│ │ ├── ijksdl_error.c
│ │ ├── ijksdl_error.h
│ │ ├── ijksdl_extra_log.c
│ │ ├── ijksdl_extra_log.h
│ │ ├── ijksdl_fourcc.h
│ │ ├── ijksdl_gles2.h
│ │ ├── ijksdl_inc_internal.h
│ │ ├── ijksdl_log.h
│ │ ├── ijksdl_misc.h
│ │ ├── ijksdl_mutex.c
│ │ ├── ijksdl_mutex.h
│ │ ├── ijksdl_stdinc.c
│ │ ├── ijksdl_stdinc.h
│ │ ├── ijksdl_thread.c
│ │ ├── ijksdl_thread.h
│ │ ├── ijksdl_timer.c
│ │ ├── ijksdl_timer.h
│ │ ├── ijksdl_video.h
│ │ ├── ijksdl_vout.c
│ │ ├── ijksdl_vout.h
│ │ └── ijksdl_vout_internal.h
│ ├── project.properties
│ └── res
│ └── values
│ └── strings.xml
├── videoplayer-core
├── .idea
│ ├── codeStyles
│ │ └── Project.xml
│ ├── gradle.xml
│ ├── misc.xml
│ ├── modules.xml
│ ├── runConfigurations.xml
│ ├── vcs.xml
│ └── workspace.xml
├── README.md
├── build.gradle
├── buildout
│ ├── generated
│ │ └── source
│ │ │ └── buildConfig
│ │ │ ├── androidTest
│ │ │ └── debug
│ │ │ │ └── com
│ │ │ │ └── google
│ │ │ │ └── android
│ │ │ │ └── exoplayer2
│ │ │ │ └── core
│ │ │ │ └── test
│ │ │ │ └── BuildConfig.java
│ │ │ └── debug
│ │ │ └── com
│ │ │ └── google
│ │ │ └── android
│ │ │ └── exoplayer2
│ │ │ └── core
│ │ │ └── BuildConfig.java
│ ├── intermediates
│ │ ├── aapt_friendly_merged_manifests
│ │ │ └── debug
│ │ │ │ └── aapt
│ │ │ │ ├── AndroidManifest.xml
│ │ │ │ └── output.json
│ │ ├── library_manifest
│ │ │ └── debug
│ │ │ │ └── AndroidManifest.xml
│ │ └── merged_manifests
│ │ │ ├── debug
│ │ │ └── output.json
│ │ │ └── debugAndroidTest
│ │ │ ├── AndroidManifest.xml
│ │ │ └── output.json
│ └── outputs
│ │ └── logs
│ │ └── manifest-merger-debug-report.txt
├── proguard-rules.txt
└── src
│ ├── androidTest
│ ├── AndroidManifest.xml
│ ├── assets
│ │ ├── binary
│ │ │ └── 1024_incrementing_bytes.mp3
│ │ ├── bitmap
│ │ │ ├── image_256_256.png
│ │ │ └── image_80_60.bmp
│ │ └── mp4
│ │ │ ├── testvid_1022ms.mp4
│ │ │ ├── video000.png
│ │ │ ├── video014.png
│ │ │ ├── video015.png
│ │ │ ├── video016.png
│ │ │ └── video029.png
│ └── java
│ │ └── com
│ │ └── google
│ │ └── android
│ │ └── exoplayer2
│ │ └── upstream
│ │ └── ContentDataSourceTest.java
│ ├── main
│ ├── AndroidManifest.xml
│ ├── java
│ │ └── com
│ │ │ └── google
│ │ │ └── android
│ │ │ └── exoplayer2
│ │ │ ├── BasePlayer.java
│ │ │ ├── BaseRenderer.java
│ │ │ ├── C.java
│ │ │ ├── ControlDispatcher.java
│ │ │ ├── DefaultControlDispatcher.java
│ │ │ ├── DefaultLoadControl.java
│ │ │ ├── DefaultMediaClock.java
│ │ │ ├── DefaultRenderersFactory.java
│ │ │ ├── ExoPlaybackException.java
│ │ │ ├── ExoPlayer.java
│ │ │ ├── ExoPlayerFactory.java
│ │ │ ├── ExoPlayerImpl.java
│ │ │ ├── ExoPlayerImplInternal.java
│ │ │ ├── ExoPlayerLibraryInfo.java
│ │ │ ├── Format.java
│ │ │ ├── FormatHolder.java
│ │ │ ├── IllegalSeekPositionException.java
│ │ │ ├── LoadControl.java
│ │ │ ├── MediaPeriodHolder.java
│ │ │ ├── MediaPeriodInfo.java
│ │ │ ├── MediaPeriodQueue.java
│ │ │ ├── NoSampleRenderer.java
│ │ │ ├── ParserException.java
│ │ │ ├── PlaybackInfo.java
│ │ │ ├── PlaybackParameters.java
│ │ │ ├── PlaybackPreparer.java
│ │ │ ├── Player.java
│ │ │ ├── PlayerMessage.java
│ │ │ ├── Renderer.java
│ │ │ ├── RendererCapabilities.java
│ │ │ ├── RendererConfiguration.java
│ │ │ ├── RenderersFactory.java
│ │ │ ├── SeekParameters.java
│ │ │ ├── SimpleExoPlayer.java
│ │ │ ├── Timeline.java
│ │ │ ├── analytics
│ │ │ ├── AnalyticsCollector.java
│ │ │ ├── AnalyticsListener.java
│ │ │ └── DefaultAnalyticsListener.java
│ │ │ ├── audio
│ │ │ ├── Ac3Util.java
│ │ │ ├── Ac4Util.java
│ │ │ ├── AudioAttributes.java
│ │ │ ├── AudioCapabilities.java
│ │ │ ├── AudioCapabilitiesReceiver.java
│ │ │ ├── AudioDecoderException.java
│ │ │ ├── AudioFocusManager.java
│ │ │ ├── AudioListener.java
│ │ │ ├── AudioProcessor.java
│ │ │ ├── AudioRendererEventListener.java
│ │ │ ├── AudioSink.java
│ │ │ ├── AudioTimestampPoller.java
│ │ │ ├── AudioTrackPositionTracker.java
│ │ │ ├── AuxEffectInfo.java
│ │ │ ├── BaseAudioProcessor.java
│ │ │ ├── ChannelMappingAudioProcessor.java
│ │ │ ├── DefaultAudioSink.java
│ │ │ ├── DtsUtil.java
│ │ │ ├── FloatResamplingAudioProcessor.java
│ │ │ ├── MediaCodecAudioRenderer.java
│ │ │ ├── ResamplingAudioProcessor.java
│ │ │ ├── SilenceSkippingAudioProcessor.java
│ │ │ ├── SimpleDecoderAudioRenderer.java
│ │ │ ├── Sonic.java
│ │ │ ├── SonicAudioProcessor.java
│ │ │ ├── TeeAudioProcessor.java
│ │ │ ├── TrimmingAudioProcessor.java
│ │ │ └── WavUtil.java
│ │ │ ├── database
│ │ │ ├── DatabaseIOException.java
│ │ │ ├── DatabaseProvider.java
│ │ │ ├── DefaultDatabaseProvider.java
│ │ │ ├── ExoDatabaseProvider.java
│ │ │ └── VersionTable.java
│ │ │ ├── decoder
│ │ │ ├── Buffer.java
│ │ │ ├── CryptoInfo.java
│ │ │ ├── Decoder.java
│ │ │ ├── DecoderCounters.java
│ │ │ ├── DecoderInputBuffer.java
│ │ │ ├── OutputBuffer.java
│ │ │ ├── SimpleDecoder.java
│ │ │ └── SimpleOutputBuffer.java
│ │ │ ├── drm
│ │ │ ├── ClearKeyUtil.java
│ │ │ ├── DecryptionException.java
│ │ │ ├── DecryptionResource.java
│ │ │ ├── DefaultDrmSession.java
│ │ │ ├── DefaultDrmSessionEventListener.java
│ │ │ ├── DefaultDrmSessionManager.java
│ │ │ ├── DrmInitData.java
│ │ │ ├── DrmSession.java
│ │ │ ├── DrmSessionManager.java
│ │ │ ├── ErrorStateDrmSession.java
│ │ │ ├── ExoMediaCrypto.java
│ │ │ ├── ExoMediaDrm.java
│ │ │ ├── FrameworkMediaCrypto.java
│ │ │ ├── FrameworkMediaDrm.java
│ │ │ ├── HttpMediaDrmCallback.java
│ │ │ ├── KeysExpiredException.java
│ │ │ ├── LocalMediaDrmCallback.java
│ │ │ ├── MediaDrmCallback.java
│ │ │ ├── OfflineLicenseHelper.java
│ │ │ ├── UnsupportedDrmException.java
│ │ │ └── WidevineUtil.java
│ │ │ ├── extractor
│ │ │ ├── BinarySearchSeeker.java
│ │ │ ├── ChunkIndex.java
│ │ │ ├── ConstantBitrateSeekMap.java
│ │ │ ├── DefaultExtractorInput.java
│ │ │ ├── DefaultExtractorsFactory.java
│ │ │ ├── DummyExtractorOutput.java
│ │ │ ├── DummyTrackOutput.java
│ │ │ ├── Extractor.java
│ │ │ ├── ExtractorInput.java
│ │ │ ├── ExtractorOutput.java
│ │ │ ├── ExtractorsFactory.java
│ │ │ ├── GaplessInfoHolder.java
│ │ │ ├── Id3Peeker.java
│ │ │ ├── MpegAudioHeader.java
│ │ │ ├── PositionHolder.java
│ │ │ ├── SeekMap.java
│ │ │ ├── SeekPoint.java
│ │ │ ├── TrackOutput.java
│ │ │ ├── amr
│ │ │ │ └── AmrExtractor.java
│ │ │ ├── flv
│ │ │ │ ├── AudioTagPayloadReader.java
│ │ │ │ ├── FlvExtractor.java
│ │ │ │ ├── ScriptTagPayloadReader.java
│ │ │ │ ├── TagPayloadReader.java
│ │ │ │ └── VideoTagPayloadReader.java
│ │ │ ├── mkv
│ │ │ │ ├── DefaultEbmlReader.java
│ │ │ │ ├── EbmlProcessor.java
│ │ │ │ ├── EbmlReader.java
│ │ │ │ ├── MatroskaExtractor.java
│ │ │ │ ├── Sniffer.java
│ │ │ │ └── VarintReader.java
│ │ │ ├── mp3
│ │ │ │ ├── ConstantBitrateSeeker.java
│ │ │ │ ├── MlltSeeker.java
│ │ │ │ ├── Mp3Extractor.java
│ │ │ │ ├── VbriSeeker.java
│ │ │ │ └── XingSeeker.java
│ │ │ ├── mp4
│ │ │ │ ├── Atom.java
│ │ │ │ ├── AtomParsers.java
│ │ │ │ ├── DefaultSampleValues.java
│ │ │ │ ├── FixedSampleSizeRechunker.java
│ │ │ │ ├── FragmentedMp4Extractor.java
│ │ │ │ ├── MdtaMetadataEntry.java
│ │ │ │ ├── MetadataUtil.java
│ │ │ │ ├── Mp4Extractor.java
│ │ │ │ ├── PsshAtomUtil.java
│ │ │ │ ├── Sniffer.java
│ │ │ │ ├── Track.java
│ │ │ │ ├── TrackEncryptionBox.java
│ │ │ │ ├── TrackFragment.java
│ │ │ │ └── TrackSampleTable.java
│ │ │ ├── ogg
│ │ │ │ ├── DefaultOggSeeker.java
│ │ │ │ ├── FlacReader.java
│ │ │ │ ├── OggExtractor.java
│ │ │ │ ├── OggPacket.java
│ │ │ │ ├── OggPageHeader.java
│ │ │ │ ├── OggSeeker.java
│ │ │ │ ├── OpusReader.java
│ │ │ │ ├── StreamReader.java
│ │ │ │ ├── VorbisBitArray.java
│ │ │ │ ├── VorbisReader.java
│ │ │ │ └── VorbisUtil.java
│ │ │ ├── rawcc
│ │ │ │ └── RawCcExtractor.java
│ │ │ ├── ts
│ │ │ │ ├── Ac3Extractor.java
│ │ │ │ ├── Ac3Reader.java
│ │ │ │ ├── Ac4Extractor.java
│ │ │ │ ├── Ac4Reader.java
│ │ │ │ ├── AdtsExtractor.java
│ │ │ │ ├── AdtsReader.java
│ │ │ │ ├── DefaultTsPayloadReaderFactory.java
│ │ │ │ ├── DtsReader.java
│ │ │ │ ├── DvbSubtitleReader.java
│ │ │ │ ├── ElementaryStreamReader.java
│ │ │ │ ├── H262Reader.java
│ │ │ │ ├── H264Reader.java
│ │ │ │ ├── H265Reader.java
│ │ │ │ ├── Id3Reader.java
│ │ │ │ ├── LatmReader.java
│ │ │ │ ├── MpegAudioReader.java
│ │ │ │ ├── NalUnitTargetBuffer.java
│ │ │ │ ├── PesReader.java
│ │ │ │ ├── PsBinarySearchSeeker.java
│ │ │ │ ├── PsDurationReader.java
│ │ │ │ ├── PsExtractor.java
│ │ │ │ ├── SectionPayloadReader.java
│ │ │ │ ├── SectionReader.java
│ │ │ │ ├── SeiReader.java
│ │ │ │ ├── SpliceInfoSectionReader.java
│ │ │ │ ├── TsBinarySearchSeeker.java
│ │ │ │ ├── TsDurationReader.java
│ │ │ │ ├── TsExtractor.java
│ │ │ │ ├── TsPayloadReader.java
│ │ │ │ ├── TsUtil.java
│ │ │ │ └── UserDataReader.java
│ │ │ └── wav
│ │ │ │ ├── WavExtractor.java
│ │ │ │ ├── WavHeader.java
│ │ │ │ └── WavHeaderReader.java
│ │ │ ├── mediacodec
│ │ │ ├── MediaCodecInfo.java
│ │ │ ├── MediaCodecRenderer.java
│ │ │ ├── MediaCodecSelector.java
│ │ │ ├── MediaCodecUtil.java
│ │ │ └── MediaFormatUtil.java
│ │ │ ├── metadata
│ │ │ ├── Metadata.java
│ │ │ ├── MetadataDecoder.java
│ │ │ ├── MetadataDecoderFactory.java
│ │ │ ├── MetadataInputBuffer.java
│ │ │ ├── MetadataOutput.java
│ │ │ ├── MetadataRenderer.java
│ │ │ ├── emsg
│ │ │ │ ├── EventMessage.java
│ │ │ │ ├── EventMessageDecoder.java
│ │ │ │ └── EventMessageEncoder.java
│ │ │ ├── icy
│ │ │ │ ├── IcyDecoder.java
│ │ │ │ ├── IcyHeaders.java
│ │ │ │ └── IcyInfo.java
│ │ │ ├── id3
│ │ │ │ ├── ApicFrame.java
│ │ │ │ ├── BinaryFrame.java
│ │ │ │ ├── ChapterFrame.java
│ │ │ │ ├── ChapterTocFrame.java
│ │ │ │ ├── CommentFrame.java
│ │ │ │ ├── GeobFrame.java
│ │ │ │ ├── Id3Decoder.java
│ │ │ │ ├── Id3Frame.java
│ │ │ │ ├── InternalFrame.java
│ │ │ │ ├── MlltFrame.java
│ │ │ │ ├── PrivFrame.java
│ │ │ │ ├── TextInformationFrame.java
│ │ │ │ └── UrlLinkFrame.java
│ │ │ └── scte35
│ │ │ │ ├── PrivateCommand.java
│ │ │ │ ├── SpliceCommand.java
│ │ │ │ ├── SpliceInfoDecoder.java
│ │ │ │ ├── SpliceInsertCommand.java
│ │ │ │ ├── SpliceNullCommand.java
│ │ │ │ ├── SpliceScheduleCommand.java
│ │ │ │ └── TimeSignalCommand.java
│ │ │ ├── offline
│ │ │ ├── ActionFile.java
│ │ │ ├── ActionFileUpgradeUtil.java
│ │ │ ├── DefaultDownloadIndex.java
│ │ │ ├── DefaultDownloaderFactory.java
│ │ │ ├── Download.java
│ │ │ ├── DownloadCursor.java
│ │ │ ├── DownloadException.java
│ │ │ ├── DownloadHelper.java
│ │ │ ├── DownloadIndex.java
│ │ │ ├── DownloadManager.java
│ │ │ ├── DownloadProgress.java
│ │ │ ├── DownloadRequest.java
│ │ │ ├── DownloadService.java
│ │ │ ├── Downloader.java
│ │ │ ├── DownloaderConstructorHelper.java
│ │ │ ├── DownloaderFactory.java
│ │ │ ├── FilterableManifest.java
│ │ │ ├── FilteringManifestParser.java
│ │ │ ├── ProgressiveDownloader.java
│ │ │ ├── SegmentDownloader.java
│ │ │ ├── StreamKey.java
│ │ │ └── WritableDownloadIndex.java
│ │ │ ├── scheduler
│ │ │ ├── PlatformScheduler.java
│ │ │ ├── Requirements.java
│ │ │ ├── RequirementsWatcher.java
│ │ │ └── Scheduler.java
│ │ │ ├── source
│ │ │ ├── AbstractConcatenatedTimeline.java
│ │ │ ├── AdaptiveMediaSourceEventListener.java
│ │ │ ├── BaseMediaSource.java
│ │ │ ├── BehindLiveWindowException.java
│ │ │ ├── ClippingMediaPeriod.java
│ │ │ ├── ClippingMediaSource.java
│ │ │ ├── CompositeMediaSource.java
│ │ │ ├── CompositeSequenceableLoader.java
│ │ │ ├── CompositeSequenceableLoaderFactory.java
│ │ │ ├── ConcatenatingMediaSource.java
│ │ │ ├── DefaultCompositeSequenceableLoaderFactory.java
│ │ │ ├── DefaultMediaSourceEventListener.java
│ │ │ ├── DeferredMediaPeriod.java
│ │ │ ├── DynamicConcatenatingMediaSource.java
│ │ │ ├── EmptySampleStream.java
│ │ │ ├── ExtractorMediaSource.java
│ │ │ ├── ForwardingTimeline.java
│ │ │ ├── IcyDataSource.java
│ │ │ ├── LoopingMediaSource.java
│ │ │ ├── MediaPeriod.java
│ │ │ ├── MediaSource.java
│ │ │ ├── MediaSourceEventListener.java
│ │ │ ├── MergingMediaPeriod.java
│ │ │ ├── MergingMediaSource.java
│ │ │ ├── ProgressiveMediaPeriod.java
│ │ │ ├── ProgressiveMediaSource.java
│ │ │ ├── SampleMetadataQueue.java
│ │ │ ├── SampleQueue.java
│ │ │ ├── SampleStream.java
│ │ │ ├── SequenceableLoader.java
│ │ │ ├── ShuffleOrder.java
│ │ │ ├── SinglePeriodTimeline.java
│ │ │ ├── SingleSampleMediaPeriod.java
│ │ │ ├── SingleSampleMediaSource.java
│ │ │ ├── TrackGroup.java
│ │ │ ├── TrackGroupArray.java
│ │ │ ├── UnrecognizedInputFormatException.java
│ │ │ ├── ads
│ │ │ │ ├── AdPlaybackState.java
│ │ │ │ ├── AdsLoader.java
│ │ │ │ ├── AdsMediaSource.java
│ │ │ │ └── SinglePeriodAdTimeline.java
│ │ │ └── chunk
│ │ │ │ ├── BaseMediaChunk.java
│ │ │ │ ├── BaseMediaChunkIterator.java
│ │ │ │ ├── BaseMediaChunkOutput.java
│ │ │ │ ├── Chunk.java
│ │ │ │ ├── ChunkExtractorWrapper.java
│ │ │ │ ├── ChunkHolder.java
│ │ │ │ ├── ChunkSampleStream.java
│ │ │ │ ├── ChunkSource.java
│ │ │ │ ├── ContainerMediaChunk.java
│ │ │ │ ├── DataChunk.java
│ │ │ │ ├── InitializationChunk.java
│ │ │ │ ├── MediaChunk.java
│ │ │ │ ├── MediaChunkIterator.java
│ │ │ │ ├── MediaChunkListIterator.java
│ │ │ │ └── SingleSampleMediaChunk.java
│ │ │ ├── text
│ │ │ ├── CaptionStyleCompat.java
│ │ │ ├── Cue.java
│ │ │ ├── SimpleSubtitleDecoder.java
│ │ │ ├── SimpleSubtitleOutputBuffer.java
│ │ │ ├── Subtitle.java
│ │ │ ├── SubtitleDecoder.java
│ │ │ ├── SubtitleDecoderException.java
│ │ │ ├── SubtitleDecoderFactory.java
│ │ │ ├── SubtitleInputBuffer.java
│ │ │ ├── SubtitleOutputBuffer.java
│ │ │ ├── TextOutput.java
│ │ │ ├── TextRenderer.java
│ │ │ ├── cea
│ │ │ │ ├── Cea608Decoder.java
│ │ │ │ ├── Cea708Cue.java
│ │ │ │ ├── Cea708Decoder.java
│ │ │ │ ├── Cea708InitializationData.java
│ │ │ │ ├── CeaDecoder.java
│ │ │ │ ├── CeaSubtitle.java
│ │ │ │ └── CeaUtil.java
│ │ │ ├── dvb
│ │ │ │ ├── DvbDecoder.java
│ │ │ │ ├── DvbParser.java
│ │ │ │ └── DvbSubtitle.java
│ │ │ ├── pgs
│ │ │ │ ├── PgsDecoder.java
│ │ │ │ └── PgsSubtitle.java
│ │ │ ├── ssa
│ │ │ │ ├── SsaDecoder.java
│ │ │ │ └── SsaSubtitle.java
│ │ │ ├── subrip
│ │ │ │ ├── SubripDecoder.java
│ │ │ │ └── SubripSubtitle.java
│ │ │ ├── ttml
│ │ │ │ ├── TtmlDecoder.java
│ │ │ │ ├── TtmlNode.java
│ │ │ │ ├── TtmlRegion.java
│ │ │ │ ├── TtmlRenderUtil.java
│ │ │ │ ├── TtmlStyle.java
│ │ │ │ └── TtmlSubtitle.java
│ │ │ ├── tx3g
│ │ │ │ ├── Tx3gDecoder.java
│ │ │ │ └── Tx3gSubtitle.java
│ │ │ └── webvtt
│ │ │ │ ├── CssParser.java
│ │ │ │ ├── Mp4WebvttDecoder.java
│ │ │ │ ├── Mp4WebvttSubtitle.java
│ │ │ │ ├── WebvttCssStyle.java
│ │ │ │ ├── WebvttCue.java
│ │ │ │ ├── WebvttCueParser.java
│ │ │ │ ├── WebvttDecoder.java
│ │ │ │ ├── WebvttParserUtil.java
│ │ │ │ └── WebvttSubtitle.java
│ │ │ ├── trackselection
│ │ │ ├── AdaptiveTrackSelection.java
│ │ │ ├── BaseTrackSelection.java
│ │ │ ├── BufferSizeAdaptationBuilder.java
│ │ │ ├── DefaultTrackSelector.java
│ │ │ ├── FixedTrackSelection.java
│ │ │ ├── MappingTrackSelector.java
│ │ │ ├── RandomTrackSelection.java
│ │ │ ├── TrackBitrateEstimator.java
│ │ │ ├── TrackSelection.java
│ │ │ ├── TrackSelectionArray.java
│ │ │ ├── TrackSelectionParameters.java
│ │ │ ├── TrackSelectionUtil.java
│ │ │ ├── TrackSelector.java
│ │ │ ├── TrackSelectorResult.java
│ │ │ └── WindowedTrackBitrateEstimator.java
│ │ │ ├── upstream
│ │ │ ├── Allocation.java
│ │ │ ├── Allocator.java
│ │ │ ├── AssetDataSource.java
│ │ │ ├── BandwidthMeter.java
│ │ │ ├── BaseDataSource.java
│ │ │ ├── ByteArrayDataSink.java
│ │ │ ├── ByteArrayDataSource.java
│ │ │ ├── ContentDataSource.java
│ │ │ ├── DataSchemeDataSource.java
│ │ │ ├── DataSink.java
│ │ │ ├── DataSource.java
│ │ │ ├── DataSourceException.java
│ │ │ ├── DataSourceInputStream.java
│ │ │ ├── DataSpec.java
│ │ │ ├── DefaultAllocator.java
│ │ │ ├── DefaultBandwidthMeter.java
│ │ │ ├── DefaultDataSource.java
│ │ │ ├── DefaultDataSourceFactory.java
│ │ │ ├── DefaultHttpDataSource.java
│ │ │ ├── DefaultHttpDataSourceFactory.java
│ │ │ ├── DefaultLoadErrorHandlingPolicy.java
│ │ │ ├── DummyDataSource.java
│ │ │ ├── FileDataSource.java
│ │ │ ├── FileDataSourceFactory.java
│ │ │ ├── HttpDataSource.java
│ │ │ ├── LoadErrorHandlingPolicy.java
│ │ │ ├── Loader.java
│ │ │ ├── LoaderErrorThrower.java
│ │ │ ├── ParsingLoadable.java
│ │ │ ├── PriorityDataSource.java
│ │ │ ├── PriorityDataSourceFactory.java
│ │ │ ├── RawResourceDataSource.java
│ │ │ ├── StatsDataSource.java
│ │ │ ├── TeeDataSource.java
│ │ │ ├── TransferListener.java
│ │ │ ├── UdpDataSource.java
│ │ │ ├── cache
│ │ │ │ ├── Cache.java
│ │ │ │ ├── CacheDataSink.java
│ │ │ │ ├── CacheDataSinkFactory.java
│ │ │ │ ├── CacheDataSource.java
│ │ │ │ ├── CacheDataSourceFactory.java
│ │ │ │ ├── CacheEvictor.java
│ │ │ │ ├── CacheFileMetadata.java
│ │ │ │ ├── CacheFileMetadataIndex.java
│ │ │ │ ├── CacheKeyFactory.java
│ │ │ │ ├── CacheSpan.java
│ │ │ │ ├── CacheUtil.java
│ │ │ │ ├── CachedContent.java
│ │ │ │ ├── CachedContentIndex.java
│ │ │ │ ├── CachedRegionTracker.java
│ │ │ │ ├── ContentMetadata.java
│ │ │ │ ├── ContentMetadataMutations.java
│ │ │ │ ├── DefaultContentMetadata.java
│ │ │ │ ├── LeastRecentlyUsedCacheEvictor.java
│ │ │ │ ├── NoOpCacheEvictor.java
│ │ │ │ ├── SimpleCache.java
│ │ │ │ └── SimpleCacheSpan.java
│ │ │ └── crypto
│ │ │ │ ├── AesCipherDataSink.java
│ │ │ │ ├── AesCipherDataSource.java
│ │ │ │ ├── AesFlushingCipher.java
│ │ │ │ └── CryptoUtil.java
│ │ │ ├── util
│ │ │ ├── Assertions.java
│ │ │ ├── AtomicFile.java
│ │ │ ├── Clock.java
│ │ │ ├── CodecSpecificDataUtil.java
│ │ │ ├── ColorParser.java
│ │ │ ├── ConditionVariable.java
│ │ │ ├── EGLSurfaceTexture.java
│ │ │ ├── ErrorMessageProvider.java
│ │ │ ├── EventDispatcher.java
│ │ │ ├── EventLogger.java
│ │ │ ├── FlacStreamInfo.java
│ │ │ ├── GlUtil.java
│ │ │ ├── HandlerWrapper.java
│ │ │ ├── LibraryLoader.java
│ │ │ ├── Log.java
│ │ │ ├── LongArray.java
│ │ │ ├── MediaClock.java
│ │ │ ├── MimeTypes.java
│ │ │ ├── NalUnitUtil.java
│ │ │ ├── NotificationUtil.java
│ │ │ ├── ParsableBitArray.java
│ │ │ ├── ParsableByteArray.java
│ │ │ ├── ParsableNalUnitBitArray.java
│ │ │ ├── Predicate.java
│ │ │ ├── PriorityTaskManager.java
│ │ │ ├── RepeatModeUtil.java
│ │ │ ├── ReusableBufferedOutputStream.java
│ │ │ ├── SlidingPercentile.java
│ │ │ ├── StandaloneMediaClock.java
│ │ │ ├── SystemClock.java
│ │ │ ├── SystemHandlerWrapper.java
│ │ │ ├── TimedValueQueue.java
│ │ │ ├── TimestampAdjuster.java
│ │ │ ├── TraceUtil.java
│ │ │ ├── UriUtil.java
│ │ │ ├── Util.java
│ │ │ └── XmlPullParserUtil.java
│ │ │ └── video
│ │ │ ├── AvcConfig.java
│ │ │ ├── ColorInfo.java
│ │ │ ├── DolbyVisionConfig.java
│ │ │ ├── DummySurface.java
│ │ │ ├── HevcConfig.java
│ │ │ ├── MediaCodecVideoRenderer.java
│ │ │ ├── VideoFrameMetadataListener.java
│ │ │ ├── VideoFrameReleaseTimeHelper.java
│ │ │ ├── VideoListener.java
│ │ │ ├── VideoRendererEventListener.java
│ │ │ └── spherical
│ │ │ ├── CameraMotionListener.java
│ │ │ ├── CameraMotionRenderer.java
│ │ │ ├── FrameRotationQueue.java
│ │ │ ├── Projection.java
│ │ │ └── ProjectionDecoder.java
│ └── javadoc
│ │ └── com
│ │ └── google
│ │ └── android
│ │ └── exoplayer2
│ │ └── doc-files
│ │ ├── exoplayer-threading-model.svg
│ │ ├── renderer-states.svg
│ │ ├── timeline-advanced.svg
│ │ ├── timeline-live-indefinite.svg
│ │ ├── timeline-live-limited.svg
│ │ ├── timeline-live-multi-period.svg
│ │ ├── timeline-period.svg
│ │ ├── timeline-playlist.svg
│ │ ├── timeline-single-file-midrolls.svg
│ │ ├── timeline-single-file.svg
│ │ └── timeline-window.svg
│ └── test
│ ├── AndroidManifest.xml
│ ├── assets
│ ├── amr
│ │ ├── sample_nb.amr
│ │ ├── sample_nb.amr.0.dump
│ │ ├── sample_nb_cbr.amr
│ │ ├── sample_nb_cbr.amr.0.dump
│ │ ├── sample_nb_cbr.amr.1.dump
│ │ ├── sample_nb_cbr.amr.2.dump
│ │ ├── sample_nb_cbr.amr.3.dump
│ │ ├── sample_nb_cbr.amr.unklen.dump
│ │ ├── sample_wb.amr
│ │ ├── sample_wb.amr.0.dump
│ │ ├── sample_wb_cbr.amr
│ │ ├── sample_wb_cbr.amr.0.dump
│ │ ├── sample_wb_cbr.amr.1.dump
│ │ ├── sample_wb_cbr.amr.2.dump
│ │ ├── sample_wb_cbr.amr.3.dump
│ │ └── sample_wb_cbr.amr.unklen.dump
│ ├── binary
│ │ └── 1024_incrementing_bytes.mp3
│ ├── download-actions
│ │ ├── dash-download-v0
│ │ ├── dash-remove-v0
│ │ ├── hls-download-v0
│ │ ├── hls-download-v1
│ │ ├── hls-remove-v0
│ │ ├── hls-remove-v1
│ │ ├── progressive-download-v0
│ │ ├── progressive-remove-v0
│ │ ├── ss-download-v0
│ │ ├── ss-download-v1
│ │ ├── ss-remove-v0
│ │ └── ss-remove-v1
│ ├── flv
│ │ ├── sample.flv
│ │ └── sample.flv.0.dump
│ ├── mkv
│ │ ├── sample.mkv
│ │ ├── sample.mkv.0.dump
│ │ ├── sample.mkv.1.dump
│ │ ├── sample.mkv.2.dump
│ │ ├── sample.mkv.3.dump
│ │ ├── subsample_encrypted_altref.webm
│ │ ├── subsample_encrypted_altref.webm.0.dump
│ │ ├── subsample_encrypted_noaltref.webm
│ │ └── subsample_encrypted_noaltref.webm.0.dump
│ ├── mp3
│ │ ├── bear.mp3
│ │ ├── bear.mp3.0.dump
│ │ ├── bear.mp3.1.dump
│ │ ├── bear.mp3.2.dump
│ │ ├── bear.mp3.3.dump
│ │ ├── play-trimmed.mp3
│ │ ├── play-trimmed.mp3.0.dump
│ │ ├── play-trimmed.mp3.1.dump
│ │ ├── play-trimmed.mp3.2.dump
│ │ ├── play-trimmed.mp3.3.dump
│ │ └── play-trimmed.mp3.unklen.dump
│ ├── mp4
│ │ ├── sample.mp4
│ │ ├── sample.mp4.0.dump
│ │ ├── sample.mp4.1.dump
│ │ ├── sample.mp4.2.dump
│ │ ├── sample.mp4.3.dump
│ │ ├── sample_fragmented.mp4
│ │ ├── sample_fragmented.mp4.0.dump
│ │ ├── sample_fragmented_seekable.mp4
│ │ ├── sample_fragmented_seekable.mp4.0.dump
│ │ ├── sample_fragmented_seekable.mp4.1.dump
│ │ ├── sample_fragmented_seekable.mp4.2.dump
│ │ ├── sample_fragmented_seekable.mp4.3.dump
│ │ ├── sample_fragmented_sei.mp4
│ │ ├── sample_fragmented_sei.mp4.0.dump
│ │ └── testvid_1022ms.mp4
│ ├── offline
│ │ ├── action_file_for_download_index_upgrade.exi
│ │ ├── action_file_incomplete_header.exi
│ │ ├── action_file_no_data.exi
│ │ ├── action_file_one_action.exi
│ │ ├── action_file_two_actions.exi
│ │ ├── action_file_unsupported_version.exi
│ │ └── action_file_zero_actions.exi
│ ├── ogg
│ │ ├── bear.opus
│ │ ├── bear.opus.0.dump
│ │ ├── bear.opus.1.dump
│ │ ├── bear.opus.2.dump
│ │ ├── bear.opus.3.dump
│ │ ├── bear.opus.unklen.dump
│ │ ├── bear_flac.ogg
│ │ ├── bear_flac.ogg.0.dump
│ │ ├── bear_flac.ogg.1.dump
│ │ ├── bear_flac.ogg.2.dump
│ │ ├── bear_flac.ogg.3.dump
│ │ ├── bear_flac.ogg.unklen.dump
│ │ ├── bear_flac_noseektable.ogg
│ │ ├── bear_flac_noseektable.ogg.0.dump
│ │ ├── bear_flac_noseektable.ogg.1.dump
│ │ ├── bear_flac_noseektable.ogg.2.dump
│ │ ├── bear_flac_noseektable.ogg.3.dump
│ │ ├── bear_flac_noseektable.ogg.unklen.dump
│ │ ├── bear_vorbis.ogg
│ │ ├── bear_vorbis.ogg.0.dump
│ │ ├── bear_vorbis.ogg.1.dump
│ │ ├── bear_vorbis.ogg.2.dump
│ │ ├── bear_vorbis.ogg.3.dump
│ │ └── bear_vorbis.ogg.unklen.dump
│ ├── rawcc
│ │ ├── sample.rawcc
│ │ └── sample.rawcc.0.dump
│ ├── ssa
│ │ ├── empty
│ │ ├── invalid_timecodes
│ │ ├── no_end_timecodes
│ │ ├── typical
│ │ ├── typical_dialogue
│ │ ├── typical_format
│ │ └── typical_header
│ ├── subrip
│ │ ├── empty
│ │ ├── no_end_timecodes
│ │ ├── typical
│ │ ├── typical_extra_blank_line
│ │ ├── typical_missing_sequence
│ │ ├── typical_missing_timecode
│ │ ├── typical_negative_timestamps
│ │ ├── typical_unexpected_end
│ │ ├── typical_with_byte_order_mark
│ │ └── typical_with_tags
│ ├── ts
│ │ ├── bbb_2500ms.ts
│ │ ├── elephants_dream.mpg
│ │ ├── sample.ac3
│ │ ├── sample.ac3.0.dump
│ │ ├── sample.ac4
│ │ ├── sample.ac4.0.dump
│ │ ├── sample.adts
│ │ ├── sample.adts.0.dump
│ │ ├── sample.eac3
│ │ ├── sample.eac3.0.dump
│ │ ├── sample.ps
│ │ ├── sample.ps.0.dump
│ │ ├── sample.ps.1.dump
│ │ ├── sample.ps.2.dump
│ │ ├── sample.ps.3.dump
│ │ ├── sample.ps.unklen.dump
│ │ ├── sample.ts
│ │ ├── sample.ts.0.dump
│ │ ├── sample.ts.1.dump
│ │ ├── sample.ts.2.dump
│ │ ├── sample.ts.3.dump
│ │ ├── sample.ts.unklen.dump
│ │ ├── sample_cbs.adts
│ │ ├── sample_cbs.adts.0.dump
│ │ ├── sample_cbs.adts.1.dump
│ │ ├── sample_cbs.adts.2.dump
│ │ ├── sample_cbs.adts.3.dump
│ │ ├── sample_cbs.adts.unklen.dump
│ │ └── sample_with_sdt.ts
│ ├── ttml
│ │ ├── bitmap_percentage_region.xml
│ │ ├── bitmap_pixel_region.xml
│ │ ├── bitmap_unsupported_region.xml
│ │ ├── chain_multiple_styles.xml
│ │ ├── font_size.xml
│ │ ├── font_size_empty.xml
│ │ ├── font_size_invalid.xml
│ │ ├── font_size_no_unit.xml
│ │ ├── frame_rate.xml
│ │ ├── inherit_and_override_style.xml
│ │ ├── inherit_global_and_parent.xml
│ │ ├── inherit_multiple_styles.xml
│ │ ├── inherit_style.xml
│ │ ├── inline_style_attributes.xml
│ │ ├── multiple_regions.xml
│ │ └── no_underline_linethrough.xml
│ ├── tx3g
│ │ ├── initialization
│ │ ├── initialization_all_defaults
│ │ ├── no_subtitle
│ │ ├── sample_just_text
│ │ ├── sample_utf16_be_no_styl
│ │ ├── sample_utf16_le_no_styl
│ │ ├── sample_with_multiple_styl
│ │ ├── sample_with_other_extension
│ │ ├── sample_with_styl
│ │ ├── sample_with_styl_all_defaults
│ │ └── sample_with_tbox
│ ├── wav
│ │ ├── sample.wav
│ │ ├── sample.wav.0.dump
│ │ ├── sample.wav.1.dump
│ │ ├── sample.wav.2.dump
│ │ └── sample.wav.3.dump
│ ├── webm
│ │ └── vorbis_codec_private
│ └── webvtt
│ │ ├── empty
│ │ ├── typical
│ │ ├── typical_with_bad_timestamps
│ │ ├── typical_with_comments
│ │ ├── typical_with_identifiers
│ │ ├── with_bad_cue_header
│ │ ├── with_bom
│ │ ├── with_css_complex_selectors
│ │ ├── with_css_styles
│ │ ├── with_positioning
│ │ └── with_tags
│ └── java
│ └── com
│ └── google
│ └── android
│ └── exoplayer2
│ ├── CTest.java
│ ├── DefaultLoadControlTest.java
│ ├── DefaultMediaClockTest.java
│ ├── ExoPlayerTest.java
│ ├── FormatTest.java
│ ├── MediaPeriodQueueTest.java
│ ├── TimelineTest.java
│ ├── analytics
│ └── AnalyticsCollectorTest.java
│ ├── audio
│ ├── Ac3UtilTest.java
│ ├── AudioFocusManagerTest.java
│ ├── DefaultAudioSinkTest.java
│ ├── SilenceSkippingAudioProcessorTest.java
│ ├── SimpleDecoderAudioRendererTest.java
│ └── SonicAudioProcessorTest.java
│ ├── database
│ └── VersionTableTest.java
│ ├── drm
│ ├── ClearKeyUtilTest.java
│ ├── DrmInitDataTest.java
│ └── OfflineLicenseHelperTest.java
│ ├── extractor
│ ├── ConstantBitrateSeekMapTest.java
│ ├── DefaultExtractorInputTest.java
│ ├── DefaultExtractorsFactoryTest.java
│ ├── ExtractorTest.java
│ ├── Id3PeekerTest.java
│ ├── amr
│ │ ├── AmrExtractorSeekTest.java
│ │ └── AmrExtractorTest.java
│ ├── flv
│ │ └── FlvExtractorTest.java
│ ├── mkv
│ │ ├── DefaultEbmlReaderTest.java
│ │ ├── MatroskaExtractorTest.java
│ │ └── VarintReaderTest.java
│ ├── mp3
│ │ ├── Mp3ExtractorTest.java
│ │ └── XingSeekerTest.java
│ ├── mp4
│ │ ├── AtomParsersTest.java
│ │ ├── FragmentedMp4ExtractorTest.java
│ │ ├── MdtaMetadataEntryTest.java
│ │ ├── Mp4ExtractorTest.java
│ │ └── PsshAtomUtilTest.java
│ ├── ogg
│ │ ├── DefaultOggSeekerTest.java
│ │ ├── DefaultOggSeekerUtilMethodsTest.java
│ │ ├── OggExtractorTest.java
│ │ ├── OggPacketTest.java
│ │ ├── OggPageHeaderTest.java
│ │ ├── OggTestFile.java
│ │ ├── VorbisBitArrayTest.java
│ │ ├── VorbisReaderTest.java
│ │ └── VorbisUtilTest.java
│ ├── rawcc
│ │ └── RawCcExtractorTest.java
│ ├── ts
│ │ ├── Ac3ExtractorTest.java
│ │ ├── Ac4ExtractorTest.java
│ │ ├── AdtsExtractorSeekTest.java
│ │ ├── AdtsExtractorTest.java
│ │ ├── AdtsReaderTest.java
│ │ ├── PsDurationReaderTest.java
│ │ ├── PsExtractorSeekTest.java
│ │ ├── PsExtractorTest.java
│ │ ├── SectionReaderTest.java
│ │ ├── TsDurationReaderTest.java
│ │ ├── TsExtractorSeekTest.java
│ │ └── TsExtractorTest.java
│ └── wav
│ │ └── WavExtractorTest.java
│ ├── metadata
│ ├── emsg
│ │ ├── EventMessageDecoderTest.java
│ │ ├── EventMessageEncoderTest.java
│ │ └── EventMessageTest.java
│ ├── icy
│ │ ├── IcyDecoderTest.java
│ │ ├── IcyHeadersTest.java
│ │ └── IcyStreamInfoTest.java
│ ├── id3
│ │ ├── ChapterFrameTest.java
│ │ ├── ChapterTocFrameTest.java
│ │ ├── Id3DecoderTest.java
│ │ └── MlltFrameTest.java
│ └── scte35
│ │ └── SpliceInfoDecoderTest.java
│ ├── offline
│ ├── ActionFileTest.java
│ ├── ActionFileUpgradeUtilTest.java
│ ├── DefaultDownloadIndexTest.java
│ ├── DefaultDownloaderFactoryTest.java
│ ├── DownloadBuilder.java
│ ├── DownloadHelperTest.java
│ ├── DownloadManagerTest.java
│ ├── DownloadRequestTest.java
│ └── StreamKeyTest.java
│ ├── source
│ ├── ClippingMediaSourceTest.java
│ ├── CompositeSequenceableLoaderTest.java
│ ├── ConcatenatingMediaSourceTest.java
│ ├── LoopingMediaSourceTest.java
│ ├── MergingMediaSourceTest.java
│ ├── SampleQueueTest.java
│ ├── ShuffleOrderTest.java
│ ├── SinglePeriodTimelineTest.java
│ ├── TrackGroupArrayTest.java
│ ├── TrackGroupTest.java
│ ├── ads
│ │ └── AdPlaybackStateTest.java
│ └── chunk
│ │ └── MediaChunkListIteratorTest.java
│ ├── text
│ ├── ssa
│ │ └── SsaDecoderTest.java
│ ├── subrip
│ │ └── SubripDecoderTest.java
│ ├── ttml
│ │ ├── TtmlDecoderTest.java
│ │ ├── TtmlRenderUtilTest.java
│ │ └── TtmlStyleTest.java
│ ├── tx3g
│ │ └── Tx3gDecoderTest.java
│ └── webvtt
│ │ ├── CssParserTest.java
│ │ ├── Mp4WebvttDecoderTest.java
│ │ ├── WebvttCueParserTest.java
│ │ ├── WebvttDecoderTest.java
│ │ └── WebvttSubtitleTest.java
│ ├── trackselection
│ ├── AdaptiveTrackSelectionTest.java
│ ├── BufferSizeAdaptiveTrackSelectionTest.java
│ ├── DefaultTrackSelectorTest.java
│ ├── MappingTrackSelectorTest.java
│ ├── TrackSelectionUtilTest.java
│ ├── TrackSelectorTest.java
│ └── WindowedTrackBitrateEstimatorTest.java
│ ├── upstream
│ ├── AssetDataSourceTest.java
│ ├── BaseDataSourceTest.java
│ ├── ByteArrayDataSourceTest.java
│ ├── DataSchemeDataSourceTest.java
│ ├── DataSourceAsserts.java
│ ├── DataSourceInputStreamTest.java
│ ├── DefaultBandwidthMeterTest.java
│ ├── DefaultLoadErrorHandlingPolicyTest.java
│ ├── cache
│ │ ├── CacheDataSourceTest.java
│ │ ├── CacheDataSourceTest2.java
│ │ ├── CacheUtilTest.java
│ │ ├── CachedContentIndexTest.java
│ │ ├── CachedRegionTrackerTest.java
│ │ ├── DefaultContentMetadataTest.java
│ │ ├── LeastRecentlyUsedCacheEvictorTest.java
│ │ ├── SimpleCacheSpanTest.java
│ │ └── SimpleCacheTest.java
│ └── crypto
│ │ └── AesFlushingCipherTest.java
│ ├── util
│ ├── AtomicFileTest.java
│ ├── ColorParserTest.java
│ ├── MimeTypesTest.java
│ ├── NalUnitUtilTest.java
│ ├── ParsableBitArrayTest.java
│ ├── ParsableByteArrayTest.java
│ ├── ParsableNalUnitBitArrayTest.java
│ ├── ReusableBufferedOutputStreamTest.java
│ ├── TimedValueQueueTest.java
│ ├── UriUtilTest.java
│ └── UtilTest.java
│ └── video
│ └── spherical
│ ├── FrameRotationQueueTest.java
│ ├── ProjectionDecoderTest.java
│ └── ProjectionTest.java
├── videoplayer-exo2
├── build.gradle
├── proguard-rules.pro
└── src
│ ├── androidTest
│ └── java
│ │ └── tv
│ │ └── danmaku
│ │ └── ijk
│ │ └── media
│ │ └── exo2
│ │ └── ExampleInstrumentedTest.java
│ ├── main
│ ├── AndroidManifest.xml
│ ├── java
│ │ └── tv
│ │ │ └── danmaku
│ │ │ └── ijk
│ │ │ └── media
│ │ │ └── exo2
│ │ │ ├── IjkExo2MediaPlayer.java
│ │ │ └── demo
│ │ │ ├── EventLogger.java
│ │ │ └── player
│ │ │ └── SimpleExoPlayer2.java
│ └── res
│ │ └── values
│ │ └── strings.xml
│ └── test
│ └── java
│ └── tv
│ └── danmaku
│ └── ijk
│ └── media
│ └── exo2
│ └── ExampleUnitTest.java
├── videoplayer-java
├── .gitignore
├── build.gradle
├── proguard-rules.pro
└── src
│ ├── androidTest
│ └── java
│ │ └── tv
│ │ └── danmaku
│ │ └── ijk
│ │ └── media
│ │ └── player
│ │ └── ExampleInstrumentedTest.java
│ ├── main
│ ├── AndroidManifest.xml
│ ├── java
│ │ └── tv
│ │ │ └── danmaku
│ │ │ └── ijk
│ │ │ └── media
│ │ │ └── player
│ │ │ ├── AbstractMediaPlayer.java
│ │ │ ├── AndroidMediaPlayer.java
│ │ │ ├── IMediaPlayer.java
│ │ │ ├── ISurfaceTextureHolder.java
│ │ │ ├── ISurfaceTextureHost.java
│ │ │ ├── IjkLibLoader.java
│ │ │ ├── IjkMediaCodecInfo.java
│ │ │ ├── IjkMediaMeta.java
│ │ │ ├── IjkMediaPlayer.java
│ │ │ ├── IjkTimedText.java
│ │ │ ├── MediaInfo.java
│ │ │ ├── MediaPlayerProxy.java
│ │ │ ├── TextureMediaPlayer.java
│ │ │ ├── annotations
│ │ │ ├── AccessedByNative.java
│ │ │ └── CalledByNative.java
│ │ │ ├── exceptions
│ │ │ └── IjkMediaException.java
│ │ │ ├── ffmpeg
│ │ │ └── FFmpegApi.java
│ │ │ ├── misc
│ │ │ ├── AndroidMediaFormat.java
│ │ │ ├── AndroidTrackInfo.java
│ │ │ ├── IAndroidIO.java
│ │ │ ├── IMediaDataSource.java
│ │ │ ├── IMediaFormat.java
│ │ │ ├── ITrackInfo.java
│ │ │ ├── IjkMediaFormat.java
│ │ │ └── IjkTrackInfo.java
│ │ │ └── pragma
│ │ │ ├── DebugLog.java
│ │ │ └── Pragma.java
│ └── res
│ │ └── values
│ │ └── strings.xml
│ └── test
│ └── java
│ └── tv
│ └── danmaku
│ └── ijk
│ └── media
│ └── player
│ └── ExampleUnitTest.java
├── videoplayer-videocache
├── .gitignore
├── build.gradle
├── proguard-rules.pro
└── src
│ ├── androidTest
│ └── java
│ │ └── com
│ │ └── danikula
│ │ └── videocache
│ │ └── ExampleInstrumentedTest.java
│ ├── main
│ ├── AndroidManifest.xml
│ ├── java
│ │ └── com
│ │ │ └── danikula
│ │ │ └── videocache
│ │ │ ├── ByteArrayCache.java
│ │ │ ├── ByteArraySource.java
│ │ │ ├── Cache.java
│ │ │ ├── CacheListener.java
│ │ │ ├── Config.java
│ │ │ ├── GetRequest.java
│ │ │ ├── HttpProxyCache.java
│ │ │ ├── HttpProxyCacheDebuger.java
│ │ │ ├── HttpProxyCacheServer.java
│ │ │ ├── HttpProxyCacheServerClients.java
│ │ │ ├── HttpUrlSource.java
│ │ │ ├── IgnoreHostProxySelector.java
│ │ │ ├── InterruptedProxyCacheException.java
│ │ │ ├── Pinger.java
│ │ │ ├── Preconditions.java
│ │ │ ├── ProxyCache.java
│ │ │ ├── ProxyCacheException.java
│ │ │ ├── ProxyCacheUtils.java
│ │ │ ├── Source.java
│ │ │ ├── SourceInfo.java
│ │ │ ├── StorageUtils.java
│ │ │ ├── file
│ │ │ ├── DiskUsage.java
│ │ │ ├── FileCache.java
│ │ │ ├── FileNameGenerator.java
│ │ │ ├── Files.java
│ │ │ ├── LruDiskUsage.java
│ │ │ ├── Md5FileNameGenerator.java
│ │ │ ├── TotalCountLruDiskUsage.java
│ │ │ ├── TotalSizeLruDiskUsage.java
│ │ │ └── UnlimitedDiskUsage.java
│ │ │ ├── headers
│ │ │ ├── EmptyHeadersInjector.java
│ │ │ └── HeaderInjector.java
│ │ │ └── sourcestorage
│ │ │ ├── DatabaseSourceInfoStorage.java
│ │ │ ├── NoSourceInfoStorage.java
│ │ │ ├── SourceInfoStorage.java
│ │ │ └── SourceInfoStorageFactory.java
│ └── res
│ │ └── values
│ │ └── strings.xml
│ └── test
│ └── java
│ └── com
│ └── danikula
│ └── videocache
│ └── ExampleUnitTest.java
└── videoplayer
├── .gitignore
├── build.gradle
├── proguard-rules.pro
└── src
├── androidTest
└── java
│ └── com
│ └── ybj366533
│ └── videoplayer
│ └── ExampleInstrumentedTest.java
├── main
├── AndroidManifest.xml
├── java
│ └── com
│ │ └── ybj366533
│ │ └── videoplayer
│ │ ├── BaseADActivityDetail.java
│ │ ├── BaseActivityDetail.java
│ │ ├── PreViewManager.java
│ │ ├── VideoADManager.java
│ │ ├── VideoBaseManager.java
│ │ ├── VideoManager.java
│ │ ├── base
│ │ ├── BaseVideoPlayer.java
│ │ ├── BaseVideoView.java
│ │ ├── TextureRenderView.java
│ │ └── VideoViewBridge.java
│ │ ├── builder
│ │ ├── PageOptionBuilder.java
│ │ └── VideoOptionBuilder.java
│ │ ├── listener
│ │ ├── LockClickListener.java
│ │ ├── MediaPlayerListener.java
│ │ ├── SampleCallBack.java
│ │ ├── VideoAllCallBack.java
│ │ ├── VideoGifSaveListener.java
│ │ ├── VideoPlayerListener.java
│ │ ├── VideoProgressListener.java
│ │ ├── VideoShotListener.java
│ │ └── VideoShotSaveListener.java
│ │ ├── model
│ │ ├── TextModel.java
│ │ ├── VideoEntity.java
│ │ ├── VideoModel.java
│ │ └── VideoOptionModel.java
│ │ ├── player
│ │ ├── EXO2PlayerManager.java
│ │ ├── IJKPlayerManager.java
│ │ ├── IPlayerManager.java
│ │ └── SystemPlayerManager.java
│ │ ├── render
│ │ ├── RenderView.java
│ │ ├── effect
│ │ │ ├── AutoFixEffect.java
│ │ │ ├── BarrelBlurEffect.java
│ │ │ ├── BlackAndWhiteEffect.java
│ │ │ ├── BrightnessEffect.java
│ │ │ ├── ContrastEffect.java
│ │ │ ├── CrossProcessEffect.java
│ │ │ ├── DocumentaryEffect.java
│ │ │ ├── DuotoneEffect.java
│ │ │ ├── FillLightEffect.java
│ │ │ ├── GammaEffect.java
│ │ │ ├── GaussianBlurEffect.java
│ │ │ ├── GrainEffect.java
│ │ │ ├── GreyScaleEffect.java
│ │ │ ├── HueEffect.java
│ │ │ ├── InvertColorsEffect.java
│ │ │ ├── LamoishEffect.java
│ │ │ ├── NoEffect.java
│ │ │ ├── OverlayEffect.java
│ │ │ ├── PosterizeEffect.java
│ │ │ ├── SampleBlurEffect.java
│ │ │ ├── SaturationEffect.java
│ │ │ ├── SepiaEffect.java
│ │ │ ├── SharpnessEffect.java
│ │ │ ├── TemperatureEffect.java
│ │ │ ├── TintEffect.java
│ │ │ └── VignetteEffect.java
│ │ ├── glrender
│ │ │ ├── VideoGLViewBaseRender.java
│ │ │ └── VideoGLViewSimpleRender.java
│ │ └── view
│ │ │ ├── IMiGuRenderView.java
│ │ │ ├── MiGuSurfaceView.java
│ │ │ ├── MiGuTextureView.java
│ │ │ ├── MiguVideoGLView.java
│ │ │ └── listener
│ │ │ ├── IMiGuSurfaceListener.java
│ │ │ ├── MiGuGLSurfaceListener.java
│ │ │ └── VideoGLRenderErrorListener.java
│ │ ├── utils
│ │ ├── AnimatedGifEncoder.java
│ │ ├── CommonUtil.java
│ │ ├── Debuger.java
│ │ ├── FileOperation.java
│ │ ├── FileUtils.java
│ │ ├── GifCreateHelper.java
│ │ ├── ListVideoUtil.java
│ │ ├── MeasureHelper.java
│ │ ├── MyFileNameGenerator.java
│ │ ├── NetInfoModule.java
│ │ ├── NetworkUtils.java
│ │ ├── OrientationUtils.java
│ │ ├── RawDataSourceProvider.java
│ │ ├── StorageUtils.java
│ │ ├── VideoHelper.java
│ │ └── VideoType.java
│ │ ├── video
│ │ ├── ADVideoPlayer.java
│ │ ├── FullScreenVideoView.java
│ │ ├── ListVideoPlayer.java
│ │ ├── NormalVideoPlayer.java
│ │ ├── SampleADVideoPlayer.java
│ │ ├── StandardVideoPlayer.java
│ │ └── base
│ │ │ ├── BaseVideoPlayer.java
│ │ │ ├── BaseVideoView.java
│ │ │ ├── MTextureRenderView.java
│ │ │ ├── MVideoControlView.java
│ │ │ ├── MVideoPlayer.java
│ │ │ └── PageVideoControlView.java
│ │ ├── view
│ │ ├── ENDownloadView.java
│ │ ├── ENPlayView.java
│ │ └── SmallVideoTouch.java
│ │ └── widget
│ │ ├── InfoHudViewHolder.java
│ │ ├── TableLayoutBinder.java
│ │ ├── seekbar
│ │ ├── ArrowView.java
│ │ ├── BuilderParams.java
│ │ ├── CircleBubbleView.java
│ │ ├── Indicator.java
│ │ ├── IndicatorSeekBar.java
│ │ ├── IndicatorSeekBarListener.java
│ │ ├── IndicatorSeekBarType.java
│ │ ├── IndicatorType.java
│ │ ├── IndicatorUtils.java
│ │ └── TickType.java
│ │ └── viewpager
│ │ ├── OnViewPagerListener.java
│ │ └── ViewPagerLayoutManager.java
└── res
│ ├── drawable-xxhdpi
│ ├── images_0.jpeg
│ ├── images_1.jpeg
│ ├── images_10.jpeg
│ ├── images_2.jpeg
│ ├── images_3.jpeg
│ ├── images_4.jpeg
│ ├── images_5.jpeg
│ ├── images_6.jpeg
│ ├── images_7.jpeg
│ ├── images_8.jpeg
│ ├── images_9.jpeg
│ ├── isb_indicator_rounded_corners.xml
│ ├── isb_indicator_square_corners.xml
│ ├── loading_progress.gif
│ ├── lock.png
│ ├── message_tip_bg.png
│ ├── migu.png
│ ├── share_normal.png
│ ├── share_pressed.png
│ ├── unlock.png
│ ├── video_back.png
│ ├── video_backward_icon.png
│ ├── video_brightness_6_white_36dp.png
│ ├── video_enlarge.png
│ ├── video_error_normal.png
│ ├── video_error_pressed.png
│ ├── video_forward_icon.png
│ ├── video_loading_bg.png
│ ├── video_pause_normal.png
│ ├── video_pause_pressed.png
│ ├── video_play_normal.png
│ ├── video_play_pressed.png
│ ├── video_shrink.png
│ ├── video_small_close.png
│ └── video_volume_icon.png
│ ├── drawable
│ ├── empty_drawable.xml
│ ├── video_click_error_selector.xml
│ ├── video_click_pause_selector.xml
│ ├── video_click_play_selector.xml
│ ├── video_dialog_progress.xml
│ ├── video_dialog_progress_bg.xml
│ ├── video_jump_btn_bg.xml
│ ├── video_loading.xml
│ ├── video_progress.xml
│ ├── video_seek_progress.xml
│ ├── video_seek_thumb.xml
│ ├── video_seek_thumb_normal.xml
│ ├── video_seek_thumb_pressed.xml
│ ├── video_title_bg.xml
│ └── video_volume_progress_bg.xml
│ ├── layout
│ ├── isb_indicator.xml
│ ├── table_media_info.xml
│ ├── table_media_info_row1.xml
│ ├── table_media_info_row2.xml
│ ├── table_media_info_section.xml
│ ├── video_brightness.xml
│ ├── video_layout_ad.xml
│ ├── video_layout_custom.xml
│ ├── video_layout_normal.xml
│ ├── video_layout_page.xml
│ ├── video_layout_sample_ad.xml
│ ├── video_layout_standard.xml
│ ├── video_progress_dialog.xml
│ └── video_volume_dialog.xml
│ └── values
│ ├── attrs.xml
│ ├── colors.xml
│ ├── dimens.xml
│ ├── id.xml
│ ├── seekbar_attr.xml
│ ├── strings.xml
│ └── style.xml
└── test
└── java
└── com
└── ybj366533
└── videoplayer
└── ExampleUnitTest.java
/.idea/misc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/.idea/runConfigurations.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
11 |
12 |
--------------------------------------------------------------------------------
/.idea/vcs.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/VideoPalyer_Structure.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ybj366533/YY-VideoPlayer/9b203b5128d971f2631d7f97fed87de6af7d8a0c/VideoPalyer_Structure.jpg
--------------------------------------------------------------------------------
/app/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 |
--------------------------------------------------------------------------------
/app/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | # Add project specific ProGuard rules here.
2 | # You can control the set of applied configuration files using the
3 | # proguardFiles setting in build.gradle.
4 | #
5 | # For more details, see
6 | # http://developer.android.com/guide/developing/tools/proguard.html
7 |
8 | # If your project uses WebView with JS, uncomment the following
9 | # and specify the fully qualified class name to the JavaScript interface
10 | # class:
11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
12 | # public *;
13 | #}
14 |
15 | # Uncomment this to preserve the line number information for
16 | # debugging stack traces.
17 | #-keepattributes SourceFile,LineNumberTable
18 |
19 | # If you keep the line number information, uncomment this to
20 | # hide the original source file name.
21 | #-renamesourcefileattribute SourceFile
22 |
--------------------------------------------------------------------------------
/app/src/androidTest/java/com/ybj366533/yy_videoplayer/ExampleInstrumentedTest.kt:
--------------------------------------------------------------------------------
1 | package com.ybj366533.yy_videoplayer
2 |
3 | import android.support.test.InstrumentationRegistry
4 | import android.support.test.runner.AndroidJUnit4
5 |
6 | import org.junit.Test
7 | import org.junit.runner.RunWith
8 |
9 | import org.junit.Assert.*
10 |
11 | /**
12 | * Instrumented test, which will execute on an Android device.
13 | *
14 | * See [testing documentation](http://d.android.com/tools/testing).
15 | */
16 | @RunWith(AndroidJUnit4::class)
17 | class ExampleInstrumentedTest {
18 | @Test
19 | fun useAppContext() {
20 | // Context of the app under test.
21 | val appContext = InstrumentationRegistry.getTargetContext()
22 | assertEquals("com.ybj366533.yy_videoplayer", appContext.packageName)
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/app/src/main/java/com/ybj366533/yy_videoplayer/AppApplication.java:
--------------------------------------------------------------------------------
1 | package com.ybj366533.yy_videoplayer;
2 |
3 | import android.app.Application;
4 |
5 |
6 | public class AppApplication extends Application {
7 |
8 | @Override
9 | public void onCreate() {
10 | super.onCreate();
11 |
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/app/src/main/java/com/ybj366533/yy_videoplayer/anim/AnimListener.kt:
--------------------------------------------------------------------------------
1 | package com.ybj366533.yy_videoplayer.anim
2 |
3 | import android.animation.Animator
4 | import android.animation.ValueAnimator
5 |
6 | /**
7 | * Created by wittyneko on 2017/7/6.
8 | */
9 | interface AnimListener : ValueAnimator.AnimatorUpdateListener, Animator.AnimatorListener {
10 | }
11 |
12 | open class SampleAnimListener : AnimListener {
13 |
14 | override fun onAnimationUpdate(animation: ValueAnimator?) {
15 | }
16 |
17 | override fun onAnimationStart(animation: Animator?) {
18 | }
19 |
20 | override fun onAnimationEnd(animation: Animator?) {
21 | }
22 |
23 | override fun onAnimationCancel(animation: Animator?) {
24 | }
25 |
26 | override fun onAnimationRepeat(animation: Animator?) {
27 | }
28 | }
--------------------------------------------------------------------------------
/app/src/main/java/com/ybj366533/yy_videoplayer/holder/RecyclerItemBaseHolder.java:
--------------------------------------------------------------------------------
1 | package com.ybj366533.yy_videoplayer.holder;
2 |
3 | import android.support.v7.widget.RecyclerView;
4 | import android.view.View;
5 |
6 | /**
7 | */
8 |
9 | public class RecyclerItemBaseHolder extends RecyclerView.ViewHolder {
10 |
11 | RecyclerView.Adapter recyclerBaseAdapter;
12 |
13 | public RecyclerItemBaseHolder(View itemView) {
14 | super(itemView);
15 | }
16 |
17 | public RecyclerView.Adapter getRecyclerBaseAdapter() {
18 | return recyclerBaseAdapter;
19 | }
20 |
21 | public void setRecyclerBaseAdapter(RecyclerView.Adapter recyclerBaseAdapter) {
22 | this.recyclerBaseAdapter = recyclerBaseAdapter;
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/app/src/main/java/com/ybj366533/yy_videoplayer/listener/OnTransitionListener.java:
--------------------------------------------------------------------------------
1 | package com.ybj366533.yy_videoplayer.listener;
2 |
3 | import android.annotation.TargetApi;
4 | import android.os.Build;
5 | import android.transition.Transition;
6 |
7 | /**
8 | * 重载了过渡动画的方法
9 | */
10 |
11 | @TargetApi(Build.VERSION_CODES.KITKAT)
12 | public class OnTransitionListener implements Transition.TransitionListener {
13 |
14 |
15 | @Override
16 | public void onTransitionStart(Transition transition) {
17 |
18 | }
19 |
20 | @Override
21 | public void onTransitionEnd(Transition transition) {
22 |
23 | }
24 |
25 | @Override
26 | public void onTransitionCancel(Transition transition) {
27 |
28 | }
29 |
30 | @Override
31 | public void onTransitionPause(Transition transition) {
32 |
33 | }
34 |
35 | @Override
36 | public void onTransitionResume(Transition transition) {
37 |
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/app/src/main/java/com/ybj366533/yy_videoplayer/model/SwitchVideoModel.java:
--------------------------------------------------------------------------------
1 | package com.ybj366533.yy_videoplayer.model;
2 |
3 | /**
4 | */
5 |
6 | public class SwitchVideoModel {
7 | private String url;
8 | private String name;
9 |
10 | public SwitchVideoModel(String name, String url) {
11 | this.name = name;
12 | this.url = url;
13 | }
14 |
15 | public String getUrl() {
16 | return url;
17 | }
18 |
19 | public void setUrl(String url) {
20 | this.url = url;
21 | }
22 |
23 | public String getName() {
24 | return name;
25 | }
26 |
27 | public void setName(String name) {
28 | this.name = name;
29 | }
30 |
31 | @Override
32 | public String toString() {
33 | return this.name;
34 | }
35 | }
--------------------------------------------------------------------------------
/app/src/main/java/com/ybj366533/yy_videoplayer/utils/floatUtil/FloatView.java:
--------------------------------------------------------------------------------
1 | package com.ybj366533.yy_videoplayer.utils.floatUtil;
2 |
3 | import android.view.View;
4 |
5 | /**
6 | * https://github.com/yhaolpz
7 | */
8 |
9 | abstract class FloatView {
10 |
11 | abstract void setSize(int width, int height);
12 |
13 | abstract void setView(View view);
14 |
15 | abstract void setGravity(int gravity, int xOffset, int yOffset);
16 |
17 | abstract void init();
18 |
19 | abstract void dismiss();
20 |
21 | void updateXY(int x, int y) {
22 | }
23 |
24 | void updateX(int x) {
25 | }
26 |
27 | void updateY(int y) {
28 | }
29 |
30 | int getX() {
31 | return 0;
32 | }
33 |
34 | int getY() {
35 | return 0;
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/app/src/main/java/com/ybj366533/yy_videoplayer/utils/floatUtil/IFloatWindow.java:
--------------------------------------------------------------------------------
1 | package com.ybj366533.yy_videoplayer.utils.floatUtil;
2 |
3 | import android.view.View;
4 |
5 | /**
6 | * https://github.com/yhaolpz
7 | */
8 |
9 | public abstract class IFloatWindow {
10 | public abstract void show();
11 |
12 | public abstract void hide();
13 |
14 | public abstract int getX();
15 |
16 | public abstract int getY();
17 |
18 | public abstract void updateX(int x);
19 |
20 | public abstract void updateX(@Screen.screenType int screenType,float ratio);
21 |
22 | public abstract void updateY(int y);
23 |
24 | public abstract void updateY(@Screen.screenType int screenType,float ratio);
25 |
26 | public abstract View getView();
27 |
28 | abstract void dismiss();
29 | }
30 |
--------------------------------------------------------------------------------
/app/src/main/java/com/ybj366533/yy_videoplayer/utils/floatUtil/LifecycleListener.java:
--------------------------------------------------------------------------------
1 | package com.ybj366533.yy_videoplayer.utils.floatUtil;
2 |
3 | /**
4 | * https://github.com/yhaolpz
5 | */
6 |
7 | interface LifecycleListener {
8 |
9 | void onShow();
10 |
11 | void onHide();
12 |
13 | void onPostHide();
14 | }
15 |
--------------------------------------------------------------------------------
/app/src/main/java/com/ybj366533/yy_videoplayer/utils/floatUtil/MoveType.java:
--------------------------------------------------------------------------------
1 | package com.ybj366533.yy_videoplayer.utils.floatUtil;
2 |
3 | import android.support.annotation.IntDef;
4 |
5 | import java.lang.annotation.Retention;
6 | import java.lang.annotation.RetentionPolicy;
7 |
8 | /**
9 | * https://github.com/yhaolpz
10 | */
11 |
12 | public class MoveType {
13 | static final int fixed = 0;
14 | public static final int free = 1;
15 | public static final int active = 2;
16 | public static final int slide = 3;
17 | public static final int back = 4;
18 |
19 | @IntDef({fixed, free, active, slide, back})
20 | @Retention(RetentionPolicy.SOURCE)
21 | @interface MOVE_TYPE {
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/app/src/main/java/com/ybj366533/yy_videoplayer/utils/floatUtil/PermissionListener.java:
--------------------------------------------------------------------------------
1 | package com.ybj366533.yy_videoplayer.utils.floatUtil;
2 |
3 | /**
4 | * https://github.com/yhaolpz
5 | */
6 | interface PermissionListener {
7 | void onSuccess();
8 |
9 | void onFail();
10 | }
11 |
--------------------------------------------------------------------------------
/app/src/main/java/com/ybj366533/yy_videoplayer/utils/floatUtil/Screen.java:
--------------------------------------------------------------------------------
1 | package com.ybj366533.yy_videoplayer.utils.floatUtil;
2 |
3 | import android.support.annotation.IntDef;
4 |
5 | import java.lang.annotation.Retention;
6 | import java.lang.annotation.RetentionPolicy;
7 |
8 | /**
9 | * https://github.com/yhaolpz
10 | */
11 |
12 | public class Screen {
13 | public static final int width = 0;
14 | public static final int height = 1;
15 |
16 | @IntDef({width, height})
17 | @Retention(RetentionPolicy.SOURCE)
18 | @interface screenType {
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/app/src/main/java/com/ybj366533/yy_videoplayer/video/listener/MiGuVideoPlayerListener.java:
--------------------------------------------------------------------------------
1 | package com.ybj366533.yy_videoplayer.video.listener;
2 |
3 | public class MiGuVideoPlayerListener {
4 | }
5 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/custom_enlarge.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ybj366533/YY-VideoPlayer/9b203b5128d971f2631d7f97fed87de6af7d8a0c/app/src/main/res/drawable-xhdpi/custom_enlarge.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/custom_shrink.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ybj366533/YY-VideoPlayer/9b203b5128d971f2631d7f97fed87de6af7d8a0c/app/src/main/res/drawable-xhdpi/custom_shrink.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/bg_wiht_shadow.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | -
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/circle_big_red.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/dialog_btn_bg.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/play_arrow.xml:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/video_new_seekbar_thumb.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/video_new_volume_progress_bg.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | -
4 |
5 |
6 |
7 |
8 |
9 | -
10 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/video_seek_new_thumb_normal.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
8 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/video_seek_new_thumb_press.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
8 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_details_player.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
13 |
14 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_play.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
9 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_recycler_view.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
11 |
12 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/content_scrolling.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/fragment_page.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/layout_floating_play.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/layout_floating_video.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
12 |
13 |
14 |
15 |
22 |
23 |
24 |
25 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/layout_loading_dialog.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
15 |
16 |
25 |
26 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/list_video_item.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
12 |
13 |
14 |
22 |
23 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/list_video_item_ad.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
10 |
11 |
12 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/list_video_item_mutli.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/list_video_item_normal.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/list_video_plsyer_item.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
13 |
14 |
22 |
23 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/switch_video_dialog.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
17 |
18 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/switch_video_dialog_item.xml:
--------------------------------------------------------------------------------
1 |
2 |
13 |
14 |
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ybj366533/YY-VideoPlayer/9b203b5128d971f2631d7f97fed87de6af7d8a0c/app/src/main/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-hdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ybj366533/YY-VideoPlayer/9b203b5128d971f2631d7f97fed87de6af7d8a0c/app/src/main/res/mipmap-hdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ybj366533/YY-VideoPlayer/9b203b5128d971f2631d7f97fed87de6af7d8a0c/app/src/main/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-mdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ybj366533/YY-VideoPlayer/9b203b5128d971f2631d7f97fed87de6af7d8a0c/app/src/main/res/mipmap-mdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xhdpi/add_bg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ybj366533/YY-VideoPlayer/9b203b5128d971f2631d7f97fed87de6af7d8a0c/app/src/main/res/mipmap-xhdpi/add_bg.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xhdpi/add_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ybj366533/YY-VideoPlayer/9b203b5128d971f2631d7f97fed87de6af7d8a0c/app/src/main/res/mipmap-xhdpi/add_icon.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xhdpi/heart_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ybj366533/YY-VideoPlayer/9b203b5128d971f2631d7f97fed87de6af7d8a0c/app/src/main/res/mipmap-xhdpi/heart_icon.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ybj366533/YY-VideoPlayer/9b203b5128d971f2631d7f97fed87de6af7d8a0c/app/src/main/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ybj366533/YY-VideoPlayer/9b203b5128d971f2631d7f97fed87de6af7d8a0c/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xhdpi/img_video_1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ybj366533/YY-VideoPlayer/9b203b5128d971f2631d7f97fed87de6af7d8a0c/app/src/main/res/mipmap-xhdpi/img_video_1.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xhdpi/img_video_2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ybj366533/YY-VideoPlayer/9b203b5128d971f2631d7f97fed87de6af7d8a0c/app/src/main/res/mipmap-xhdpi/img_video_2.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xhdpi/msg_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ybj366533/YY-VideoPlayer/9b203b5128d971f2631d7f97fed87de6af7d8a0c/app/src/main/res/mipmap-xhdpi/msg_icon.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xhdpi/search_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ybj366533/YY-VideoPlayer/9b203b5128d971f2631d7f97fed87de6af7d8a0c/app/src/main/res/mipmap-xhdpi/search_icon.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xhdpi/share_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ybj366533/YY-VideoPlayer/9b203b5128d971f2631d7f97fed87de6af7d8a0c/app/src/main/res/mipmap-xhdpi/share_icon.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ybj366533/YY-VideoPlayer/9b203b5128d971f2631d7f97fed87de6af7d8a0c/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ybj366533/YY-VideoPlayer/9b203b5128d971f2631d7f97fed87de6af7d8a0c/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ybj366533/YY-VideoPlayer/9b203b5128d971f2631d7f97fed87de6af7d8a0c/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/app/src/main/res/raw/video_1.mp4:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ybj366533/YY-VideoPlayer/9b203b5128d971f2631d7f97fed87de6af7d8a0c/app/src/main/res/raw/video_1.mp4
--------------------------------------------------------------------------------
/app/src/main/res/raw/video_2.mp4:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ybj366533/YY-VideoPlayer/9b203b5128d971f2631d7f97fed87de6af7d8a0c/app/src/main/res/raw/video_2.mp4
--------------------------------------------------------------------------------
/app/src/main/res/values/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #3F51B5
4 | #303F9F
5 | #FF4081
6 | #00000000
7 | #56b3b3b3
8 |
9 |
--------------------------------------------------------------------------------
/app/src/main/res/values/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | 16dp
4 | 16dp
5 |
6 | 200dp
7 |
8 | 150dp
9 | @dimen/post_media_height
10 | 16dp
11 | 16dp
12 |
13 |
--------------------------------------------------------------------------------
/app/src/main/res/values/id.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/app/src/test/java/com/ybj366533/yy_videoplayer/ExampleUnitTest.kt:
--------------------------------------------------------------------------------
1 | package com.ybj366533.yy_videoplayer
2 |
3 | import org.junit.Test
4 |
5 | import org.junit.Assert.*
6 |
7 | /**
8 | * Example local unit test, which will execute on the development machine (host).
9 | *
10 | * See [testing documentation](http://d.android.com/tools/testing).
11 | */
12 | class ExampleUnitTest {
13 | @Test
14 | fun addition_isCorrect() {
15 | assertEquals(4, 2 + 2)
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/build.gradle:
--------------------------------------------------------------------------------
1 | // Top-level build file where you can add configuration options common to all sub-projects/modules.
2 |
3 | buildscript {
4 | apply from: "dependencies.gradle"
5 | ext.kotlin_version = '1.3.50'
6 | repositories {
7 | maven { url rootProject.ext.maven.aliyunMaven }
8 | google()
9 | jcenter()
10 | }
11 | dependencies {
12 | classpath 'com.android.tools.build:gradle:3.5.0'
13 | classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
14 | // NOTE: Do not place your application dependencies here; they belong
15 | // in the individual module build.gradle files
16 | }
17 | }
18 |
19 | allprojects {
20 | repositories {
21 | maven { url rootProject.ext.maven.aliyunMaven }
22 | google()
23 | jcenter()
24 | }
25 | }
26 |
27 | task clean(type: Delete) {
28 | delete rootProject.buildDir
29 | }
30 |
--------------------------------------------------------------------------------
/gradle.properties:
--------------------------------------------------------------------------------
1 | # Project-wide Gradle settings.
2 | # IDE (e.g. Android Studio) users:
3 | # Gradle settings configured through the IDE *will override*
4 | # any settings specified in this file.
5 | # For more details on how to configure your build environment visit
6 | # http://www.gradle.org/docs/current/userguide/build_environment.html
7 | # Specifies the JVM arguments used for the daemon process.
8 | # The setting is particularly useful for tweaking memory settings.
9 | org.gradle.jvmargs=-Xmx1536m
10 | # When configured, Gradle will run in incubating parallel mode.
11 | # This option should only be used with decoupled projects. More details, visit
12 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
13 | # org.gradle.parallel=true
14 |
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ybj366533/YY-VideoPlayer/9b203b5128d971f2631d7f97fed87de6af7d8a0c/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | #Thu May 17 10:44:01 CST 2018
2 | distributionBase=GRADLE_USER_HOME
3 | distributionPath=wrapper/dists
4 | zipStoreBase=GRADLE_USER_HOME
5 | zipStorePath=wrapper/dists
6 | distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-all.zip
7 |
--------------------------------------------------------------------------------
/settings.gradle:
--------------------------------------------------------------------------------
1 | include ':app', ':videoplayer', ':videoplayer-videocache', ':videoplayer-java', ':videoplayer-armv7a', ':videoplayer-arm64'
2 |
--------------------------------------------------------------------------------
/videoplayer-arm64/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 |
--------------------------------------------------------------------------------
/videoplayer-arm64/gradle.properties:
--------------------------------------------------------------------------------
1 | POM_NAME=ijkplayer-arm64
2 | POM_ARTIFACT_ID=ijkplayer-arm64
3 | POM_PACKAGING=aar
--------------------------------------------------------------------------------
/videoplayer-arm64/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | # Add project specific ProGuard rules here.
2 | # By default, the flags in this file are appended to flags specified
3 | # in /opt/android/ADK/tools/proguard/proguard-android.txt
4 | # You can edit the include path and order by changing the proguardFiles
5 | # directive in build.gradle.
6 | #
7 | # For more details, see
8 | # http://developer.android.com/guide/developing/tools/proguard.html
9 |
10 | # Add any project specific keep options here:
11 |
12 | # If your project uses WebView with JS, uncomment the following
13 | # and specify the fully qualified class name to the JavaScript interface
14 | # class:
15 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
16 | # public *;
17 | #}
--------------------------------------------------------------------------------
/videoplayer-arm64/src/androidTest/java/tv/danmaku/ijk/media/player_arm64/ApplicationTest.java:
--------------------------------------------------------------------------------
1 | package tv.danmaku.ijk.media.player_arm64;
2 |
3 | import android.app.Application;
4 | import android.test.ApplicationTestCase;
5 |
6 | /**
7 | * Testing Fundamentals
8 | */
9 | public class ApplicationTest extends ApplicationTestCase {
10 | public ApplicationTest() {
11 | super(Application.class);
12 | }
13 | }
--------------------------------------------------------------------------------
/videoplayer-arm64/src/main/.classpath:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/videoplayer-arm64/src/main/.project:
--------------------------------------------------------------------------------
1 |
2 |
3 | ijkplayer-arm64
4 |
5 |
6 |
7 |
8 |
9 | com.android.ide.eclipse.adt.ResourceManagerBuilder
10 |
11 |
12 |
13 |
14 | com.android.ide.eclipse.adt.PreCompilerBuilder
15 |
16 |
17 |
18 |
19 | org.eclipse.jdt.core.javabuilder
20 |
21 |
22 |
23 |
24 | com.android.ide.eclipse.adt.ApkBuilder
25 |
26 |
27 |
28 |
29 |
30 | com.android.ide.eclipse.adt.AndroidNature
31 | org.eclipse.jdt.core.javanature
32 |
33 |
34 |
--------------------------------------------------------------------------------
/videoplayer-arm64/src/main/.settings/org.eclipse.jdt.core.prefs:
--------------------------------------------------------------------------------
1 | eclipse.preferences.version=1
2 | org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
3 | org.eclipse.jdt.core.compiler.compliance=1.6
4 | org.eclipse.jdt.core.compiler.source=1.6
5 |
--------------------------------------------------------------------------------
/videoplayer-arm64/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/videoplayer-arm64/src/main/java/tv/danmaku/ijk/media/player_arm64/Pragma.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2015 Bilibili
3 | * Copyright (C) 2015 Zhang Rui
4 | *
5 | * Licensed under the Apache License, Version 2.0 (the "License");
6 | * you may not use this file except in compliance with the License.
7 | * You may obtain a copy of the License at
8 | *
9 | * http://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | package tv.danmaku.ijk.media.player_arm64;
19 |
20 | public class Pragma {
21 |
22 | }
23 |
--------------------------------------------------------------------------------
/videoplayer-arm64/src/main/jni/ffmpeg/Android.mk:
--------------------------------------------------------------------------------
1 | LOCAL_PATH := $(call my-dir)
2 |
3 | include $(CLEAR_VARS)
4 | LOCAL_MODULE := ijkffmpeg
5 | LOCAL_SRC_FILES := $(MY_APP_FFMPEG_OUTPUT_PATH)/libijkffmpeg.so
6 | include $(PREBUILT_SHARED_LIBRARY)
--------------------------------------------------------------------------------
/videoplayer-arm64/src/main/jni/ijkmedia/Android.mk:
--------------------------------------------------------------------------------
1 | # Copyright (c) 2013 Bilibili
2 | # copyright (c) 2013 Zhang Rui
3 | #
4 | # This file is part of ijkPlayer.
5 | #
6 | # ijkPlayer is free software; you can redistribute it and/or
7 | # modify it under the terms of the GNU Lesser General Public
8 | # License as published by the Free Software Foundation; either
9 | # version 2.1 of the License, or (at your option) any later version.
10 | #
11 | # ijkPlayer is distributed in the hope that it will be useful,
12 | # but WITHOUT ANY WARRANTY; without even the implied warranty of
13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 | # Lesser General Public License for more details.
15 | #
16 | # You should have received a copy of the GNU Lesser General Public
17 | # License along with ijkPlayer; if not, write to the Free Software
18 | # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
19 |
20 | LOCAL_PATH := $(call my-dir)
21 | include $(call all-subdir-makefiles)
22 |
--------------------------------------------------------------------------------
/videoplayer-arm64/src/main/jni/ijkmedia/ijkj4a/.gitignore:
--------------------------------------------------------------------------------
1 | bin
2 |
--------------------------------------------------------------------------------
/videoplayer-arm64/src/main/jni/ijkmedia/ijkj4a/j4a/class/android/media/AudioTrack.include.j4a:
--------------------------------------------------------------------------------
1 | #include "j4a/class/android/media/AudioTrack.h"
--------------------------------------------------------------------------------
/videoplayer-arm64/src/main/jni/ijkmedia/ijkj4a/j4a/class/android/media/AudioTrack.loader.j4a:
--------------------------------------------------------------------------------
1 | J4A_LOAD_CLASS(android_media_AudioTrack);
--------------------------------------------------------------------------------
/videoplayer-arm64/src/main/jni/ijkmedia/ijkj4a/j4a/class/android/media/MediaCodec.include.j4a:
--------------------------------------------------------------------------------
1 | #include "j4a/class/android/media/MediaCodec.h"
--------------------------------------------------------------------------------
/videoplayer-arm64/src/main/jni/ijkmedia/ijkj4a/j4a/class/android/media/MediaCodec.loader.j4a:
--------------------------------------------------------------------------------
1 | J4A_LOAD_CLASS(android_media_MediaCodec);
--------------------------------------------------------------------------------
/videoplayer-arm64/src/main/jni/ijkmedia/ijkj4a/j4a/class/android/media/MediaFormat.include.j4a:
--------------------------------------------------------------------------------
1 | #include "j4a/class/android/media/MediaFormat.h"
--------------------------------------------------------------------------------
/videoplayer-arm64/src/main/jni/ijkmedia/ijkj4a/j4a/class/android/media/MediaFormat.loader.j4a:
--------------------------------------------------------------------------------
1 | J4A_LOAD_CLASS(android_media_MediaFormat);
--------------------------------------------------------------------------------
/videoplayer-arm64/src/main/jni/ijkmedia/ijkj4a/j4a/class/android/media/PlaybackParams.include.j4a:
--------------------------------------------------------------------------------
1 | #include "j4a/class/android/media/PlaybackParams.h"
--------------------------------------------------------------------------------
/videoplayer-arm64/src/main/jni/ijkmedia/ijkj4a/j4a/class/android/media/PlaybackParams.loader.j4a:
--------------------------------------------------------------------------------
1 | J4A_LOAD_CLASS(android_media_PlaybackParams);
--------------------------------------------------------------------------------
/videoplayer-arm64/src/main/jni/ijkmedia/ijkj4a/j4a/class/android/os/Build.include.j4a:
--------------------------------------------------------------------------------
1 | #include "j4a/class/android/os/Build.h"
--------------------------------------------------------------------------------
/videoplayer-arm64/src/main/jni/ijkmedia/ijkj4a/j4a/class/android/os/Build.loader.j4a:
--------------------------------------------------------------------------------
1 | J4A_LOAD_CLASS(android_os_Build);
--------------------------------------------------------------------------------
/videoplayer-arm64/src/main/jni/ijkmedia/ijkj4a/j4a/class/android/os/Bundle.include.j4a:
--------------------------------------------------------------------------------
1 | #include "j4a/class/android/os/Bundle.h"
--------------------------------------------------------------------------------
/videoplayer-arm64/src/main/jni/ijkmedia/ijkj4a/j4a/class/android/os/Bundle.loader.j4a:
--------------------------------------------------------------------------------
1 | J4A_LOAD_CLASS(android_os_Bundle);
--------------------------------------------------------------------------------
/videoplayer-arm64/src/main/jni/ijkmedia/ijkj4a/j4a/class/java/nio/Buffer.include.j4a:
--------------------------------------------------------------------------------
1 | #include "j4a/class/java/nio/Buffer.h"
--------------------------------------------------------------------------------
/videoplayer-arm64/src/main/jni/ijkmedia/ijkj4a/j4a/class/java/nio/Buffer.loader.j4a:
--------------------------------------------------------------------------------
1 | J4A_LOAD_CLASS(java_nio_Buffer);
--------------------------------------------------------------------------------
/videoplayer-arm64/src/main/jni/ijkmedia/ijkj4a/j4a/class/java/nio/ByteBuffer.include.j4a:
--------------------------------------------------------------------------------
1 | #include "j4a/class/java/nio/ByteBuffer.h"
--------------------------------------------------------------------------------
/videoplayer-arm64/src/main/jni/ijkmedia/ijkj4a/j4a/class/java/nio/ByteBuffer.loader.j4a:
--------------------------------------------------------------------------------
1 | J4A_LOAD_CLASS(java_nio_ByteBuffer);
--------------------------------------------------------------------------------
/videoplayer-arm64/src/main/jni/ijkmedia/ijkj4a/j4a/class/java/util/ArrayList.include.j4a:
--------------------------------------------------------------------------------
1 | #include "j4a/class/java/util/ArrayList.h"
--------------------------------------------------------------------------------
/videoplayer-arm64/src/main/jni/ijkmedia/ijkj4a/j4a/class/java/util/ArrayList.loader.j4a:
--------------------------------------------------------------------------------
1 | J4A_LOAD_CLASS(java_util_ArrayList);
--------------------------------------------------------------------------------
/videoplayer-arm64/src/main/jni/ijkmedia/ijkj4a/j4a/class/tv/danmaku/ijk/media/player/IjkMediaPlayer.include.j4a:
--------------------------------------------------------------------------------
1 | #include "j4a/class/tv/danmaku/ijk/media/player/IjkMediaPlayer.h"
--------------------------------------------------------------------------------
/videoplayer-arm64/src/main/jni/ijkmedia/ijkj4a/j4a/class/tv/danmaku/ijk/media/player/IjkMediaPlayer.loader.j4a:
--------------------------------------------------------------------------------
1 | J4A_LOAD_CLASS(tv_danmaku_ijk_media_player_IjkMediaPlayer);
--------------------------------------------------------------------------------
/videoplayer-arm64/src/main/jni/ijkmedia/ijkj4a/j4a/class/tv/danmaku/ijk/media/player/misc/IAndroidIO.include.j4a:
--------------------------------------------------------------------------------
1 | #include "j4a/class/tv/danmaku/ijk/media/player/misc/IAndroidIO.h"
--------------------------------------------------------------------------------
/videoplayer-arm64/src/main/jni/ijkmedia/ijkj4a/j4a/class/tv/danmaku/ijk/media/player/misc/IAndroidIO.loader.j4a:
--------------------------------------------------------------------------------
1 | J4A_LOAD_CLASS(tv_danmaku_ijk_media_player_misc_IAndroidIO);
--------------------------------------------------------------------------------
/videoplayer-arm64/src/main/jni/ijkmedia/ijkj4a/j4a/class/tv/danmaku/ijk/media/player/misc/IMediaDataSource.include.j4a:
--------------------------------------------------------------------------------
1 | #include "j4a/class/tv/danmaku/ijk/media/player/misc/IMediaDataSource.h"
--------------------------------------------------------------------------------
/videoplayer-arm64/src/main/jni/ijkmedia/ijkj4a/j4a/class/tv/danmaku/ijk/media/player/misc/IMediaDataSource.loader.j4a:
--------------------------------------------------------------------------------
1 | J4A_LOAD_CLASS(tv_danmaku_ijk_media_player_misc_IMediaDataSource);
--------------------------------------------------------------------------------
/videoplayer-arm64/src/main/jni/ijkmedia/ijkj4a/j4a/j4a_allclasses.include.h:
--------------------------------------------------------------------------------
1 | #include "j4a/class/java/nio/Buffer.h"
2 | #include "j4a/class/java/nio/ByteBuffer.h"
3 | #include "j4a/class/java/util/ArrayList.h"
4 | #include "j4a/class/android/media/AudioTrack.h"
5 | #include "j4a/class/android/media/MediaCodec.h"
6 | #include "j4a/class/android/media/MediaFormat.h"
7 | #include "j4a/class/android/media/PlaybackParams.h"
8 | #include "j4a/class/android/os/Build.h"
9 | #include "j4a/class/android/os/Bundle.h"
10 | #include "j4a/class/tv/danmaku/ijk/media/player/misc/IMediaDataSource.h"
11 | #include "j4a/class/tv/danmaku/ijk/media/player/misc/IAndroidIO.h"
12 | #include "j4a/class/tv/danmaku/ijk/media/player/IjkMediaPlayer.h"
13 |
--------------------------------------------------------------------------------
/videoplayer-arm64/src/main/jni/ijkmedia/ijkj4a/j4a/j4a_allclasses.loader.h:
--------------------------------------------------------------------------------
1 | J4A_LOAD_CLASS(java_nio_Buffer);
2 | J4A_LOAD_CLASS(java_nio_ByteBuffer);
3 | J4A_LOAD_CLASS(java_util_ArrayList);
4 | J4A_LOAD_CLASS(android_media_AudioTrack);
5 | J4A_LOAD_CLASS(android_media_MediaCodec);
6 | J4A_LOAD_CLASS(android_media_MediaFormat);
7 | J4A_LOAD_CLASS(android_media_PlaybackParams);
8 | J4A_LOAD_CLASS(android_os_Build);
9 | J4A_LOAD_CLASS(android_os_Bundle);
10 | J4A_LOAD_CLASS(tv_danmaku_ijk_media_player_misc_IMediaDataSource);
11 | J4A_LOAD_CLASS(tv_danmaku_ijk_media_player_misc_IAndroidIO);
12 | J4A_LOAD_CLASS(tv_danmaku_ijk_media_player_IjkMediaPlayer);
13 |
--------------------------------------------------------------------------------
/videoplayer-arm64/src/main/jni/ijkmedia/ijkj4a/java/android/media/MediaCrypto.java:
--------------------------------------------------------------------------------
1 | package android.media;
2 |
3 | @Hide
4 | @MinApi(16)
5 | public class MediaCrypto {
6 | }
7 |
--------------------------------------------------------------------------------
/videoplayer-arm64/src/main/jni/ijkmedia/ijkj4a/java/android/media/MediaFormat.java:
--------------------------------------------------------------------------------
1 | package android.media;
2 |
3 | import java.nio.ByteBuffer;
4 |
5 | @SimpleCClassName
6 | @MinApi(16)
7 | public class MediaFormat {
8 | public MediaFormat();
9 |
10 | public final static MediaFormat createVideoFormat(String mime, int width, int height);
11 |
12 | public final int getInteger(String name);
13 | public final void setInteger(String name, int value);
14 | public final void setByteBuffer(String name, ByteBuffer bytes);
15 | }
16 |
--------------------------------------------------------------------------------
/videoplayer-arm64/src/main/jni/ijkmedia/ijkj4a/java/android/media/PlaybackParams.java:
--------------------------------------------------------------------------------
1 | package android.media;
2 |
3 | @SimpleCClassName
4 | @MinApi(23)
5 | public class PlaybackParams {
6 | public PlaybackParams setSpeed(float speed);
7 | }
8 |
--------------------------------------------------------------------------------
/videoplayer-arm64/src/main/jni/ijkmedia/ijkj4a/java/android/os/Build.java:
--------------------------------------------------------------------------------
1 | package android.os;
2 |
3 | public class Build {
4 | public static class VERSION {
5 | public static final int SDK_INT;
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/videoplayer-arm64/src/main/jni/ijkmedia/ijkj4a/java/android/os/Bundle.java:
--------------------------------------------------------------------------------
1 | package android.os;
2 |
3 | import java.util.ArrayList;
4 |
5 | @SimpleCClassName
6 | public class Bundle {
7 | public Bundle();
8 |
9 | public int getInt(String key, int defaultValue);
10 | public void putInt(String key, int value);
11 |
12 | public String getString(String key);
13 | public void putString(String key, String value);
14 |
15 | public void putParcelableArrayList(String key, ArrayList value);
16 | public long getLong(String key);
17 | public void putLong(String key, long value);
18 | }
19 |
--------------------------------------------------------------------------------
/videoplayer-arm64/src/main/jni/ijkmedia/ijkj4a/java/java/nio/Buffer.java:
--------------------------------------------------------------------------------
1 | package java.nio;
2 |
3 | public class Buffer {
4 | }
5 |
--------------------------------------------------------------------------------
/videoplayer-arm64/src/main/jni/ijkmedia/ijkj4a/java/java/nio/ByteBuffer.java:
--------------------------------------------------------------------------------
1 | package java.nio;
2 |
3 | import android.os.Build;
4 |
5 | @SimpleCClassName
6 | @IncludeUtil
7 | public class ByteBuffer {
8 | public static ByteBuffer allocate(int capacity);
9 | public static ByteBuffer allocateDirect(int capacity);
10 | public final Buffer limit(int newLimit);
11 | }
12 |
--------------------------------------------------------------------------------
/videoplayer-arm64/src/main/jni/ijkmedia/ijkj4a/java/java/util/ArrayList.java:
--------------------------------------------------------------------------------
1 | package java.util;
2 |
3 | @SimpleCClassName
4 | public class ArrayList {
5 | public ArrayList();
6 | boolean add(Object object);
7 | }
8 |
--------------------------------------------------------------------------------
/videoplayer-arm64/src/main/jni/ijkmedia/ijkj4a/java/tv/danmaku/ijk/media/player/IjkMediaPlayer.java:
--------------------------------------------------------------------------------
1 | package tv.danmaku.ijk.media.player;
2 |
3 | import android.os.Bundle;
4 |
5 | @SimpleCClassName
6 | public class IjkMediaPlayer {
7 | private long mNativeMediaPlayer;
8 | private long mNativeMediaDataSource;
9 | private long mNativeAndroidIO;
10 |
11 | private static void postEventFromNative(Object weakThiz, int what, int arg1, int arg2, Object obj);
12 | private static String onSelectCodec(Object weakThiz, String mimeType, int profile, int level);
13 | private static boolean onNativeInvoke(Object weakThiz, int what, Bundle args);
14 | }
15 |
--------------------------------------------------------------------------------
/videoplayer-arm64/src/main/jni/ijkmedia/ijkj4a/java/tv/danmaku/ijk/media/player/misc/IAndroidIO.java:
--------------------------------------------------------------------------------
1 | package tv.danmaku.ijk.media.player.misc;
2 |
3 | @SimpleCClassName
4 | public interface IAndroidIO {
5 | int open(String url);
6 | int read(byte[] buffer, int size);
7 | long seek(long offset, int whence);
8 | int close();
9 | }
10 |
--------------------------------------------------------------------------------
/videoplayer-arm64/src/main/jni/ijkmedia/ijkj4a/java/tv/danmaku/ijk/media/player/misc/IMediaDataSource.java:
--------------------------------------------------------------------------------
1 | package tv.danmaku.ijk.media.player.misc;
2 |
3 | @SimpleCClassName
4 | public interface IMediaDataSource {
5 | int readAt(long position, byte[] buffer, int offset, int size);
6 | long getSize();
7 | void close();
8 | }
9 |
--------------------------------------------------------------------------------
/videoplayer-arm64/src/main/jni/ijkmedia/ijkplayer/.gitignore:
--------------------------------------------------------------------------------
1 | ijkversion.h
2 |
--------------------------------------------------------------------------------
/videoplayer-arm64/src/main/jni/ijkmedia/ijkplayer/ijkavutil/ijkutils.c:
--------------------------------------------------------------------------------
1 |
2 | #include "ijkutils.h"
3 |
4 | #include
5 | #include
6 | #include
7 | #include
8 | #include
9 |
10 | void ijk_av_freep(void *arg)
11 | {
12 | void *val;
13 |
14 | memcpy(&val, arg, sizeof(val));
15 | memcpy(arg, &(void *){ NULL }, sizeof(val));
16 | free(val);
17 | }
18 |
19 | int ijk_av_strstart(const char *str, const char *pfx, const char **ptr)
20 | {
21 | while (*pfx && *pfx == *str) {
22 | pfx++;
23 | str++;
24 | }
25 | if (!*pfx && ptr)
26 | *ptr = str;
27 | return !*pfx;
28 | }
29 |
--------------------------------------------------------------------------------
/videoplayer-arm64/src/main/project.properties:
--------------------------------------------------------------------------------
1 | # This file is automatically generated by Android Tools.
2 | # Do not modify this file -- YOUR CHANGES WILL BE ERASED!
3 | #
4 | # This file must be checked in Version Control Systems.
5 | #
6 | # To customize properties used by the Ant build system edit
7 | # "ant.properties", and override values to adapt the script to your
8 | # project structure.
9 | #
10 | # To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home):
11 | #proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt
12 |
13 | # Project target.
14 | target=android-22
15 | android.library=true
16 |
--------------------------------------------------------------------------------
/videoplayer-arm64/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/videoplayer-armv7a/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 |
--------------------------------------------------------------------------------
/videoplayer-armv7a/gradle.properties:
--------------------------------------------------------------------------------
1 | POM_NAME=ijkplayer-armv7a
2 | POM_ARTIFACT_ID=ijkplayer-armv7a
3 | POM_PACKAGING=aar
--------------------------------------------------------------------------------
/videoplayer-armv7a/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | # Add project specific ProGuard rules here.
2 | # By default, the flags in this file are appended to flags specified
3 | # in /opt/android/ADK/tools/proguard/proguard-android.txt
4 | # You can edit the include path and order by changing the proguardFiles
5 | # directive in build.gradle.
6 | #
7 | # For more details, see
8 | # http://developer.android.com/guide/developing/tools/proguard.html
9 |
10 | # Add any project specific keep options here:
11 |
12 | # If your project uses WebView with JS, uncomment the following
13 | # and specify the fully qualified class name to the JavaScript interface
14 | # class:
15 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
16 | # public *;
17 | #}
18 |
--------------------------------------------------------------------------------
/videoplayer-armv7a/src/androidTest/java/tv/danmaku/ijk/media/player_armv7a/ApplicationTest.java:
--------------------------------------------------------------------------------
1 | package tv.danmaku.ijk.media.player_armv7a;
2 |
3 | import android.app.Application;
4 | import android.test.ApplicationTestCase;
5 |
6 | /**
7 | * Testing Fundamentals
8 | */
9 | public class ApplicationTest extends ApplicationTestCase {
10 | public ApplicationTest() {
11 | super(Application.class);
12 | }
13 | }
--------------------------------------------------------------------------------
/videoplayer-armv7a/src/main/.classpath:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/videoplayer-armv7a/src/main/.project:
--------------------------------------------------------------------------------
1 |
2 |
3 | ijkplayer-armv7a
4 |
5 |
6 |
7 |
8 |
9 | com.android.ide.eclipse.adt.ResourceManagerBuilder
10 |
11 |
12 |
13 |
14 | com.android.ide.eclipse.adt.PreCompilerBuilder
15 |
16 |
17 |
18 |
19 | org.eclipse.jdt.core.javabuilder
20 |
21 |
22 |
23 |
24 | com.android.ide.eclipse.adt.ApkBuilder
25 |
26 |
27 |
28 |
29 |
30 | com.android.ide.eclipse.adt.AndroidNature
31 | org.eclipse.jdt.core.javanature
32 |
33 |
34 |
--------------------------------------------------------------------------------
/videoplayer-armv7a/src/main/.settings/org.eclipse.jdt.core.prefs:
--------------------------------------------------------------------------------
1 | eclipse.preferences.version=1
2 | org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
3 | org.eclipse.jdt.core.compiler.compliance=1.6
4 | org.eclipse.jdt.core.compiler.source=1.6
5 |
--------------------------------------------------------------------------------
/videoplayer-armv7a/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
3 |
4 |
--------------------------------------------------------------------------------
/videoplayer-armv7a/src/main/java/tv/danmaku/ijk/media/player_armv7a/Pragma.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2015 Bilibili
3 | * Copyright (C) 2015 Zhang Rui
4 | *
5 | * Licensed under the Apache License, Version 2.0 (the "License");
6 | * you may not use this file except in compliance with the License.
7 | * You may obtain a copy of the License at
8 | *
9 | * http://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | package tv.danmaku.ijk.media.player_armv7a;
19 |
20 | public class Pragma {
21 |
22 | }
23 |
--------------------------------------------------------------------------------
/videoplayer-armv7a/src/main/jni/ffmpeg/Android.mk:
--------------------------------------------------------------------------------
1 | LOCAL_PATH := $(call my-dir)
2 |
3 | include $(CLEAR_VARS)
4 | LOCAL_MODULE := ijkffmpeg
5 | LOCAL_SRC_FILES := $(MY_APP_FFMPEG_OUTPUT_PATH)/libijkffmpeg.so
6 | include $(PREBUILT_SHARED_LIBRARY)
--------------------------------------------------------------------------------
/videoplayer-armv7a/src/main/jni/ijkmedia/Android.mk:
--------------------------------------------------------------------------------
1 | # Copyright (c) 2013 Bilibili
2 | # copyright (c) 2013 Zhang Rui
3 | #
4 | # This file is part of ijkPlayer.
5 | #
6 | # ijkPlayer is free software; you can redistribute it and/or
7 | # modify it under the terms of the GNU Lesser General Public
8 | # License as published by the Free Software Foundation; either
9 | # version 2.1 of the License, or (at your option) any later version.
10 | #
11 | # ijkPlayer is distributed in the hope that it will be useful,
12 | # but WITHOUT ANY WARRANTY; without even the implied warranty of
13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 | # Lesser General Public License for more details.
15 | #
16 | # You should have received a copy of the GNU Lesser General Public
17 | # License along with ijkPlayer; if not, write to the Free Software
18 | # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
19 |
20 | LOCAL_PATH := $(call my-dir)
21 | include $(call all-subdir-makefiles)
22 |
--------------------------------------------------------------------------------
/videoplayer-armv7a/src/main/jni/ijkmedia/ijkj4a/.gitignore:
--------------------------------------------------------------------------------
1 | bin
2 |
--------------------------------------------------------------------------------
/videoplayer-armv7a/src/main/jni/ijkmedia/ijkj4a/j4a/class/android/media/AudioTrack.include.j4a:
--------------------------------------------------------------------------------
1 | #include "j4a/class/android/media/AudioTrack.h"
--------------------------------------------------------------------------------
/videoplayer-armv7a/src/main/jni/ijkmedia/ijkj4a/j4a/class/android/media/AudioTrack.loader.j4a:
--------------------------------------------------------------------------------
1 | J4A_LOAD_CLASS(android_media_AudioTrack);
--------------------------------------------------------------------------------
/videoplayer-armv7a/src/main/jni/ijkmedia/ijkj4a/j4a/class/android/media/MediaCodec.include.j4a:
--------------------------------------------------------------------------------
1 | #include "j4a/class/android/media/MediaCodec.h"
--------------------------------------------------------------------------------
/videoplayer-armv7a/src/main/jni/ijkmedia/ijkj4a/j4a/class/android/media/MediaCodec.loader.j4a:
--------------------------------------------------------------------------------
1 | J4A_LOAD_CLASS(android_media_MediaCodec);
--------------------------------------------------------------------------------
/videoplayer-armv7a/src/main/jni/ijkmedia/ijkj4a/j4a/class/android/media/MediaFormat.include.j4a:
--------------------------------------------------------------------------------
1 | #include "j4a/class/android/media/MediaFormat.h"
--------------------------------------------------------------------------------
/videoplayer-armv7a/src/main/jni/ijkmedia/ijkj4a/j4a/class/android/media/MediaFormat.loader.j4a:
--------------------------------------------------------------------------------
1 | J4A_LOAD_CLASS(android_media_MediaFormat);
--------------------------------------------------------------------------------
/videoplayer-armv7a/src/main/jni/ijkmedia/ijkj4a/j4a/class/android/media/PlaybackParams.include.j4a:
--------------------------------------------------------------------------------
1 | #include "j4a/class/android/media/PlaybackParams.h"
--------------------------------------------------------------------------------
/videoplayer-armv7a/src/main/jni/ijkmedia/ijkj4a/j4a/class/android/media/PlaybackParams.loader.j4a:
--------------------------------------------------------------------------------
1 | J4A_LOAD_CLASS(android_media_PlaybackParams);
--------------------------------------------------------------------------------
/videoplayer-armv7a/src/main/jni/ijkmedia/ijkj4a/j4a/class/android/os/Build.include.j4a:
--------------------------------------------------------------------------------
1 | #include "j4a/class/android/os/Build.h"
--------------------------------------------------------------------------------
/videoplayer-armv7a/src/main/jni/ijkmedia/ijkj4a/j4a/class/android/os/Build.loader.j4a:
--------------------------------------------------------------------------------
1 | J4A_LOAD_CLASS(android_os_Build);
--------------------------------------------------------------------------------
/videoplayer-armv7a/src/main/jni/ijkmedia/ijkj4a/j4a/class/android/os/Bundle.include.j4a:
--------------------------------------------------------------------------------
1 | #include "j4a/class/android/os/Bundle.h"
--------------------------------------------------------------------------------
/videoplayer-armv7a/src/main/jni/ijkmedia/ijkj4a/j4a/class/android/os/Bundle.loader.j4a:
--------------------------------------------------------------------------------
1 | J4A_LOAD_CLASS(android_os_Bundle);
--------------------------------------------------------------------------------
/videoplayer-armv7a/src/main/jni/ijkmedia/ijkj4a/j4a/class/java/nio/Buffer.include.j4a:
--------------------------------------------------------------------------------
1 | #include "j4a/class/java/nio/Buffer.h"
--------------------------------------------------------------------------------
/videoplayer-armv7a/src/main/jni/ijkmedia/ijkj4a/j4a/class/java/nio/Buffer.loader.j4a:
--------------------------------------------------------------------------------
1 | J4A_LOAD_CLASS(java_nio_Buffer);
--------------------------------------------------------------------------------
/videoplayer-armv7a/src/main/jni/ijkmedia/ijkj4a/j4a/class/java/nio/ByteBuffer.include.j4a:
--------------------------------------------------------------------------------
1 | #include "j4a/class/java/nio/ByteBuffer.h"
--------------------------------------------------------------------------------
/videoplayer-armv7a/src/main/jni/ijkmedia/ijkj4a/j4a/class/java/nio/ByteBuffer.loader.j4a:
--------------------------------------------------------------------------------
1 | J4A_LOAD_CLASS(java_nio_ByteBuffer);
--------------------------------------------------------------------------------
/videoplayer-armv7a/src/main/jni/ijkmedia/ijkj4a/j4a/class/java/util/ArrayList.include.j4a:
--------------------------------------------------------------------------------
1 | #include "j4a/class/java/util/ArrayList.h"
--------------------------------------------------------------------------------
/videoplayer-armv7a/src/main/jni/ijkmedia/ijkj4a/j4a/class/java/util/ArrayList.loader.j4a:
--------------------------------------------------------------------------------
1 | J4A_LOAD_CLASS(java_util_ArrayList);
--------------------------------------------------------------------------------
/videoplayer-armv7a/src/main/jni/ijkmedia/ijkj4a/j4a/class/tv/danmaku/ijk/media/player/IjkMediaPlayer.include.j4a:
--------------------------------------------------------------------------------
1 | #include "j4a/class/tv/danmaku/ijk/media/player/IjkMediaPlayer.h"
--------------------------------------------------------------------------------
/videoplayer-armv7a/src/main/jni/ijkmedia/ijkj4a/j4a/class/tv/danmaku/ijk/media/player/IjkMediaPlayer.loader.j4a:
--------------------------------------------------------------------------------
1 | J4A_LOAD_CLASS(tv_danmaku_ijk_media_player_IjkMediaPlayer);
--------------------------------------------------------------------------------
/videoplayer-armv7a/src/main/jni/ijkmedia/ijkj4a/j4a/class/tv/danmaku/ijk/media/player/misc/IAndroidIO.include.j4a:
--------------------------------------------------------------------------------
1 | #include "j4a/class/tv/danmaku/ijk/media/player/misc/IAndroidIO.h"
--------------------------------------------------------------------------------
/videoplayer-armv7a/src/main/jni/ijkmedia/ijkj4a/j4a/class/tv/danmaku/ijk/media/player/misc/IAndroidIO.loader.j4a:
--------------------------------------------------------------------------------
1 | J4A_LOAD_CLASS(tv_danmaku_ijk_media_player_misc_IAndroidIO);
--------------------------------------------------------------------------------
/videoplayer-armv7a/src/main/jni/ijkmedia/ijkj4a/j4a/class/tv/danmaku/ijk/media/player/misc/IMediaDataSource.include.j4a:
--------------------------------------------------------------------------------
1 | #include "j4a/class/tv/danmaku/ijk/media/player/misc/IMediaDataSource.h"
--------------------------------------------------------------------------------
/videoplayer-armv7a/src/main/jni/ijkmedia/ijkj4a/j4a/class/tv/danmaku/ijk/media/player/misc/IMediaDataSource.loader.j4a:
--------------------------------------------------------------------------------
1 | J4A_LOAD_CLASS(tv_danmaku_ijk_media_player_misc_IMediaDataSource);
--------------------------------------------------------------------------------
/videoplayer-armv7a/src/main/jni/ijkmedia/ijkj4a/j4a/j4a_allclasses.include.h:
--------------------------------------------------------------------------------
1 | #include "j4a/class/java/nio/Buffer.h"
2 | #include "j4a/class/java/nio/ByteBuffer.h"
3 | #include "j4a/class/java/util/ArrayList.h"
4 | #include "j4a/class/android/media/AudioTrack.h"
5 | #include "j4a/class/android/media/MediaCodec.h"
6 | #include "j4a/class/android/media/MediaFormat.h"
7 | #include "j4a/class/android/media/PlaybackParams.h"
8 | #include "j4a/class/android/os/Build.h"
9 | #include "j4a/class/android/os/Bundle.h"
10 | #include "j4a/class/tv/danmaku/ijk/media/player/misc/IMediaDataSource.h"
11 | #include "j4a/class/tv/danmaku/ijk/media/player/misc/IAndroidIO.h"
12 | #include "j4a/class/tv/danmaku/ijk/media/player/IjkMediaPlayer.h"
13 |
--------------------------------------------------------------------------------
/videoplayer-armv7a/src/main/jni/ijkmedia/ijkj4a/j4a/j4a_allclasses.loader.h:
--------------------------------------------------------------------------------
1 | J4A_LOAD_CLASS(java_nio_Buffer);
2 | J4A_LOAD_CLASS(java_nio_ByteBuffer);
3 | J4A_LOAD_CLASS(java_util_ArrayList);
4 | J4A_LOAD_CLASS(android_media_AudioTrack);
5 | J4A_LOAD_CLASS(android_media_MediaCodec);
6 | J4A_LOAD_CLASS(android_media_MediaFormat);
7 | J4A_LOAD_CLASS(android_media_PlaybackParams);
8 | J4A_LOAD_CLASS(android_os_Build);
9 | J4A_LOAD_CLASS(android_os_Bundle);
10 | J4A_LOAD_CLASS(tv_danmaku_ijk_media_player_misc_IMediaDataSource);
11 | J4A_LOAD_CLASS(tv_danmaku_ijk_media_player_misc_IAndroidIO);
12 | J4A_LOAD_CLASS(tv_danmaku_ijk_media_player_IjkMediaPlayer);
13 |
--------------------------------------------------------------------------------
/videoplayer-armv7a/src/main/jni/ijkmedia/ijkj4a/java/android/media/MediaCrypto.java:
--------------------------------------------------------------------------------
1 | package android.media;
2 |
3 | @Hide
4 | @MinApi(16)
5 | public class MediaCrypto {
6 | }
7 |
--------------------------------------------------------------------------------
/videoplayer-armv7a/src/main/jni/ijkmedia/ijkj4a/java/android/media/MediaFormat.java:
--------------------------------------------------------------------------------
1 | package android.media;
2 |
3 | import java.nio.ByteBuffer;
4 |
5 | @SimpleCClassName
6 | @MinApi(16)
7 | public class MediaFormat {
8 | public MediaFormat();
9 |
10 | public final static MediaFormat createVideoFormat(String mime, int width, int height);
11 |
12 | public final int getInteger(String name);
13 | public final void setInteger(String name, int value);
14 | public final void setByteBuffer(String name, ByteBuffer bytes);
15 | }
16 |
--------------------------------------------------------------------------------
/videoplayer-armv7a/src/main/jni/ijkmedia/ijkj4a/java/android/media/PlaybackParams.java:
--------------------------------------------------------------------------------
1 | package android.media;
2 |
3 | @SimpleCClassName
4 | @MinApi(23)
5 | public class PlaybackParams {
6 | public PlaybackParams setSpeed(float speed);
7 | }
8 |
--------------------------------------------------------------------------------
/videoplayer-armv7a/src/main/jni/ijkmedia/ijkj4a/java/android/os/Build.java:
--------------------------------------------------------------------------------
1 | package android.os;
2 |
3 | public class Build {
4 | public static class VERSION {
5 | public static final int SDK_INT;
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/videoplayer-armv7a/src/main/jni/ijkmedia/ijkj4a/java/android/os/Bundle.java:
--------------------------------------------------------------------------------
1 | package android.os;
2 |
3 | import java.util.ArrayList;
4 |
5 | @SimpleCClassName
6 | public class Bundle {
7 | public Bundle();
8 |
9 | public int getInt(String key, int defaultValue);
10 | public void putInt(String key, int value);
11 |
12 | public String getString(String key);
13 | public void putString(String key, String value);
14 |
15 | public void putParcelableArrayList(String key, ArrayList value);
16 | public long getLong(String key);
17 | public void putLong(String key, long value);
18 | }
19 |
--------------------------------------------------------------------------------
/videoplayer-armv7a/src/main/jni/ijkmedia/ijkj4a/java/java/nio/Buffer.java:
--------------------------------------------------------------------------------
1 | package java.nio;
2 |
3 | public class Buffer {
4 | }
5 |
--------------------------------------------------------------------------------
/videoplayer-armv7a/src/main/jni/ijkmedia/ijkj4a/java/java/nio/ByteBuffer.java:
--------------------------------------------------------------------------------
1 | package java.nio;
2 |
3 | import android.os.Build;
4 |
5 | @SimpleCClassName
6 | @IncludeUtil
7 | public class ByteBuffer {
8 | public static ByteBuffer allocate(int capacity);
9 | public static ByteBuffer allocateDirect(int capacity);
10 | public final Buffer limit(int newLimit);
11 | }
12 |
--------------------------------------------------------------------------------
/videoplayer-armv7a/src/main/jni/ijkmedia/ijkj4a/java/java/util/ArrayList.java:
--------------------------------------------------------------------------------
1 | package java.util;
2 |
3 | @SimpleCClassName
4 | public class ArrayList {
5 | public ArrayList();
6 | boolean add(Object object);
7 | }
8 |
--------------------------------------------------------------------------------
/videoplayer-armv7a/src/main/jni/ijkmedia/ijkj4a/java/tv/danmaku/ijk/media/player/IjkMediaPlayer.java:
--------------------------------------------------------------------------------
1 | package tv.danmaku.ijk.media.player;
2 |
3 | import android.os.Bundle;
4 |
5 | @SimpleCClassName
6 | public class IjkMediaPlayer {
7 | private long mNativeMediaPlayer;
8 | private long mNativeMediaDataSource;
9 | private long mNativeAndroidIO;
10 |
11 | private static void postEventFromNative(Object weakThiz, int what, int arg1, int arg2, Object obj);
12 | private static String onSelectCodec(Object weakThiz, String mimeType, int profile, int level);
13 | private static boolean onNativeInvoke(Object weakThiz, int what, Bundle args);
14 | }
15 |
--------------------------------------------------------------------------------
/videoplayer-armv7a/src/main/jni/ijkmedia/ijkj4a/java/tv/danmaku/ijk/media/player/misc/IAndroidIO.java:
--------------------------------------------------------------------------------
1 | package tv.danmaku.ijk.media.player.misc;
2 |
3 | @SimpleCClassName
4 | public interface IAndroidIO {
5 | int open(String url);
6 | int read(byte[] buffer, int size);
7 | long seek(long offset, int whence);
8 | int close();
9 | }
10 |
--------------------------------------------------------------------------------
/videoplayer-armv7a/src/main/jni/ijkmedia/ijkj4a/java/tv/danmaku/ijk/media/player/misc/IMediaDataSource.java:
--------------------------------------------------------------------------------
1 | package tv.danmaku.ijk.media.player.misc;
2 |
3 | @SimpleCClassName
4 | public interface IMediaDataSource {
5 | int readAt(long position, byte[] buffer, int offset, int size);
6 | long getSize();
7 | void close();
8 | }
9 |
--------------------------------------------------------------------------------
/videoplayer-armv7a/src/main/jni/ijkmedia/ijkplayer/.gitignore:
--------------------------------------------------------------------------------
1 | ijkversion.h
2 |
--------------------------------------------------------------------------------
/videoplayer-armv7a/src/main/jni/ijkmedia/ijkplayer/ijkavutil/ijkutils.c:
--------------------------------------------------------------------------------
1 |
2 | #include "ijkutils.h"
3 |
4 | #include
5 | #include
6 | #include
7 | #include
8 | #include
9 |
10 | void ijk_av_freep(void *arg)
11 | {
12 | void *val;
13 |
14 | memcpy(&val, arg, sizeof(val));
15 | memcpy(arg, &(void *){ NULL }, sizeof(val));
16 | free(val);
17 | }
18 |
19 | int ijk_av_strstart(const char *str, const char *pfx, const char **ptr)
20 | {
21 | while (*pfx && *pfx == *str) {
22 | pfx++;
23 | str++;
24 | }
25 | if (!*pfx && ptr)
26 | *ptr = str;
27 | return !*pfx;
28 | }
29 |
--------------------------------------------------------------------------------
/videoplayer-armv7a/src/main/project.properties:
--------------------------------------------------------------------------------
1 | # This file is automatically generated by Android Tools.
2 | # Do not modify this file -- YOUR CHANGES WILL BE ERASED!
3 | #
4 | # This file must be checked in Version Control Systems.
5 | #
6 | # To customize properties used by the Ant build system edit
7 | # "ant.properties", and override values to adapt the script to your
8 | # project structure.
9 | #
10 | # To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home):
11 | #proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt
12 |
13 | # Project target.
14 | target=android-22
15 | android.library=true
16 |
--------------------------------------------------------------------------------
/videoplayer-armv7a/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/videoplayer-core/.idea/gradle.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/videoplayer-core/.idea/misc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/videoplayer-core/.idea/modules.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/videoplayer-core/.idea/runConfigurations.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/videoplayer-core/.idea/vcs.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/videoplayer-core/README.md:
--------------------------------------------------------------------------------
1 | # ExoPlayer core library module #
2 |
3 | The core of the ExoPlayer library.
4 |
5 | ## Links ##
6 |
7 | * [Javadoc][]: Note that this Javadoc is combined with that of other modules.
8 |
9 | [Javadoc]: https://exoplayer.dev/doc/reference/index.html
10 |
--------------------------------------------------------------------------------
/videoplayer-core/buildout/generated/source/buildConfig/androidTest/debug/com/google/android/exoplayer2/core/test/BuildConfig.java:
--------------------------------------------------------------------------------
1 | /**
2 | * Automatically generated file. DO NOT MODIFY
3 | */
4 | package com.google.android.exoplayer2.core.test;
5 |
6 | public final class BuildConfig {
7 | public static final boolean DEBUG = Boolean.parseBoolean("true");
8 | public static final String APPLICATION_ID = "com.google.android.exoplayer2.core.test";
9 | public static final String BUILD_TYPE = "debug";
10 | public static final String FLAVOR = "";
11 | public static final int VERSION_CODE = -1;
12 | public static final String VERSION_NAME = "";
13 | }
14 |
--------------------------------------------------------------------------------
/videoplayer-core/buildout/generated/source/buildConfig/debug/com/google/android/exoplayer2/core/BuildConfig.java:
--------------------------------------------------------------------------------
1 | /**
2 | * Automatically generated file. DO NOT MODIFY
3 | */
4 | package com.google.android.exoplayer2.core;
5 |
6 | public final class BuildConfig {
7 | public static final boolean DEBUG = Boolean.parseBoolean("true");
8 | public static final String APPLICATION_ID = "com.google.android.exoplayer2.core";
9 | public static final String BUILD_TYPE = "debug";
10 | public static final String FLAVOR = "";
11 | public static final int VERSION_CODE = -1;
12 | public static final String VERSION_NAME = "";
13 | }
14 |
--------------------------------------------------------------------------------
/videoplayer-core/buildout/intermediates/aapt_friendly_merged_manifests/debug/aapt/output.json:
--------------------------------------------------------------------------------
1 | [{"outputType":{"type":"AAPT_FRIENDLY_MERGED_MANIFESTS"},"apkData":{"type":"MAIN","splits":[],"versionCode":-1,"enabled":true,"outputFile":"library-core-debug.aar","fullName":"debug","baseName":"debug"},"path":"AndroidManifest.xml","properties":{"packageId":"com.google.android.exoplayer2.core","split":""}}]
--------------------------------------------------------------------------------
/videoplayer-core/buildout/intermediates/merged_manifests/debug/output.json:
--------------------------------------------------------------------------------
1 | [{"outputType":{"type":"MERGED_MANIFESTS"},"apkData":{"type":"MAIN","splits":[],"versionCode":-1,"enabled":true,"outputFile":"library-core-debug.aar","fullName":"debug","baseName":"debug"},"path":"../../library_manifest/debug/AndroidManifest.xml","properties":{"packageId":"com.google.android.exoplayer2.core","split":""}}]
--------------------------------------------------------------------------------
/videoplayer-core/buildout/intermediates/merged_manifests/debugAndroidTest/output.json:
--------------------------------------------------------------------------------
1 | [{"outputType":{"type":"MERGED_MANIFESTS"},"apkData":{"type":"MAIN","splits":[],"versionCode":-1,"enabled":true,"outputFile":"library-core-debug-androidTest.apk","fullName":"debugAndroidTest","baseName":"debug-androidTest"},"path":"AndroidManifest.xml","properties":{}}]
--------------------------------------------------------------------------------
/videoplayer-core/src/androidTest/assets/binary/1024_incrementing_bytes.mp3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ybj366533/YY-VideoPlayer/9b203b5128d971f2631d7f97fed87de6af7d8a0c/videoplayer-core/src/androidTest/assets/binary/1024_incrementing_bytes.mp3
--------------------------------------------------------------------------------
/videoplayer-core/src/androidTest/assets/bitmap/image_256_256.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ybj366533/YY-VideoPlayer/9b203b5128d971f2631d7f97fed87de6af7d8a0c/videoplayer-core/src/androidTest/assets/bitmap/image_256_256.png
--------------------------------------------------------------------------------
/videoplayer-core/src/androidTest/assets/bitmap/image_80_60.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ybj366533/YY-VideoPlayer/9b203b5128d971f2631d7f97fed87de6af7d8a0c/videoplayer-core/src/androidTest/assets/bitmap/image_80_60.bmp
--------------------------------------------------------------------------------
/videoplayer-core/src/androidTest/assets/mp4/testvid_1022ms.mp4:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ybj366533/YY-VideoPlayer/9b203b5128d971f2631d7f97fed87de6af7d8a0c/videoplayer-core/src/androidTest/assets/mp4/testvid_1022ms.mp4
--------------------------------------------------------------------------------
/videoplayer-core/src/androidTest/assets/mp4/video000.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ybj366533/YY-VideoPlayer/9b203b5128d971f2631d7f97fed87de6af7d8a0c/videoplayer-core/src/androidTest/assets/mp4/video000.png
--------------------------------------------------------------------------------
/videoplayer-core/src/androidTest/assets/mp4/video014.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ybj366533/YY-VideoPlayer/9b203b5128d971f2631d7f97fed87de6af7d8a0c/videoplayer-core/src/androidTest/assets/mp4/video014.png
--------------------------------------------------------------------------------
/videoplayer-core/src/androidTest/assets/mp4/video015.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ybj366533/YY-VideoPlayer/9b203b5128d971f2631d7f97fed87de6af7d8a0c/videoplayer-core/src/androidTest/assets/mp4/video015.png
--------------------------------------------------------------------------------
/videoplayer-core/src/androidTest/assets/mp4/video016.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ybj366533/YY-VideoPlayer/9b203b5128d971f2631d7f97fed87de6af7d8a0c/videoplayer-core/src/androidTest/assets/mp4/video016.png
--------------------------------------------------------------------------------
/videoplayer-core/src/androidTest/assets/mp4/video029.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ybj366533/YY-VideoPlayer/9b203b5128d971f2631d7f97fed87de6af7d8a0c/videoplayer-core/src/androidTest/assets/mp4/video029.png
--------------------------------------------------------------------------------
/videoplayer-core/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
16 |
17 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/videoplayer-core/src/main/java/com/google/android/exoplayer2/PlaybackPreparer.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2018 The Android Open Source Project
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 | package com.google.android.exoplayer2;
17 |
18 | /** Called to prepare a playback. */
19 | public interface PlaybackPreparer {
20 |
21 | /** Called to prepare a playback. */
22 | void preparePlayback();
23 | }
24 |
--------------------------------------------------------------------------------
/videoplayer-core/src/main/java/com/google/android/exoplayer2/drm/ExoMediaCrypto.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2016 The Android Open Source Project
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 | package com.google.android.exoplayer2.drm;
17 |
18 | /** An opaque {@link android.media.MediaCrypto} equivalent. */
19 | public interface ExoMediaCrypto {}
20 |
--------------------------------------------------------------------------------
/videoplayer-core/src/main/java/com/google/android/exoplayer2/drm/KeysExpiredException.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2016 The Android Open Source Project
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 | package com.google.android.exoplayer2.drm;
17 |
18 | /**
19 | * Thrown when the drm keys loaded into an open session expire.
20 | */
21 | public final class KeysExpiredException extends Exception {
22 | }
23 |
--------------------------------------------------------------------------------
/videoplayer-core/src/main/java/com/google/android/exoplayer2/extractor/ExtractorsFactory.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2016 The Android Open Source Project
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 | package com.google.android.exoplayer2.extractor;
17 |
18 | /** Factory for arrays of {@link Extractor} instances. */
19 | public interface ExtractorsFactory {
20 |
21 | /** Returns an array of new {@link Extractor} instances. */
22 | Extractor[] createExtractors();
23 | }
24 |
--------------------------------------------------------------------------------
/videoplayer-core/src/main/java/com/google/android/exoplayer2/extractor/PositionHolder.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2016 The Android Open Source Project
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 | package com.google.android.exoplayer2.extractor;
17 |
18 | /**
19 | * Holds a position in the stream.
20 | */
21 | public final class PositionHolder {
22 |
23 | /**
24 | * The held position.
25 | */
26 | public long position;
27 |
28 | }
29 |
--------------------------------------------------------------------------------
/videoplayer-core/src/test/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/videoplayer-core/src/test/assets/amr/sample_nb.amr:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ybj366533/YY-VideoPlayer/9b203b5128d971f2631d7f97fed87de6af7d8a0c/videoplayer-core/src/test/assets/amr/sample_nb.amr
--------------------------------------------------------------------------------
/videoplayer-core/src/test/assets/amr/sample_nb_cbr.amr:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ybj366533/YY-VideoPlayer/9b203b5128d971f2631d7f97fed87de6af7d8a0c/videoplayer-core/src/test/assets/amr/sample_nb_cbr.amr
--------------------------------------------------------------------------------
/videoplayer-core/src/test/assets/amr/sample_nb_cbr.amr.3.dump:
--------------------------------------------------------------------------------
1 | seekMap:
2 | isSeekable = true
3 | duration = 4360000
4 | getPosition(0) = [[timeUs=0, position=6]]
5 | numberOfTracks = 1
6 | track 0:
7 | format:
8 | bitrate = -1
9 | id = null
10 | containerMimeType = null
11 | sampleMimeType = audio/3gpp
12 | maxInputSize = 61
13 | width = -1
14 | height = -1
15 | frameRate = -1.0
16 | rotationDegrees = 0
17 | pixelWidthHeightRatio = 1.0
18 | channelCount = 1
19 | sampleRate = 8000
20 | pcmEncoding = -1
21 | encoderDelay = 0
22 | encoderPadding = 0
23 | subsampleOffsetUs = 9223372036854775807
24 | selectionFlags = 0
25 | language = null
26 | drmInitData = -
27 | initializationData:
28 | total output bytes = 13
29 | sample count = 1
30 | sample 0:
31 | time = 4340000
32 | flags = 1
33 | data = length 13, hash AC59BA7C
34 | tracksEnded = true
35 |
--------------------------------------------------------------------------------
/videoplayer-core/src/test/assets/amr/sample_wb.amr:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ybj366533/YY-VideoPlayer/9b203b5128d971f2631d7f97fed87de6af7d8a0c/videoplayer-core/src/test/assets/amr/sample_wb.amr
--------------------------------------------------------------------------------
/videoplayer-core/src/test/assets/amr/sample_wb_cbr.amr:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ybj366533/YY-VideoPlayer/9b203b5128d971f2631d7f97fed87de6af7d8a0c/videoplayer-core/src/test/assets/amr/sample_wb_cbr.amr
--------------------------------------------------------------------------------
/videoplayer-core/src/test/assets/amr/sample_wb_cbr.amr.3.dump:
--------------------------------------------------------------------------------
1 | seekMap:
2 | isSeekable = true
3 | duration = 3380000
4 | getPosition(0) = [[timeUs=0, position=9]]
5 | numberOfTracks = 1
6 | track 0:
7 | format:
8 | bitrate = -1
9 | id = null
10 | containerMimeType = null
11 | sampleMimeType = audio/amr-wb
12 | maxInputSize = 61
13 | width = -1
14 | height = -1
15 | frameRate = -1.0
16 | rotationDegrees = 0
17 | pixelWidthHeightRatio = 1.0
18 | channelCount = 1
19 | sampleRate = 16000
20 | pcmEncoding = -1
21 | encoderDelay = 0
22 | encoderPadding = 0
23 | subsampleOffsetUs = 9223372036854775807
24 | selectionFlags = 0
25 | language = null
26 | drmInitData = -
27 | initializationData:
28 | total output bytes = 24
29 | sample count = 1
30 | sample 0:
31 | time = 3360000
32 | flags = 1
33 | data = length 24, hash 772665A0
34 | tracksEnded = true
35 |
--------------------------------------------------------------------------------
/videoplayer-core/src/test/assets/binary/1024_incrementing_bytes.mp3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ybj366533/YY-VideoPlayer/9b203b5128d971f2631d7f97fed87de6af7d8a0c/videoplayer-core/src/test/assets/binary/1024_incrementing_bytes.mp3
--------------------------------------------------------------------------------
/videoplayer-core/src/test/assets/download-actions/dash-download-v0:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ybj366533/YY-VideoPlayer/9b203b5128d971f2631d7f97fed87de6af7d8a0c/videoplayer-core/src/test/assets/download-actions/dash-download-v0
--------------------------------------------------------------------------------
/videoplayer-core/src/test/assets/download-actions/dash-remove-v0:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ybj366533/YY-VideoPlayer/9b203b5128d971f2631d7f97fed87de6af7d8a0c/videoplayer-core/src/test/assets/download-actions/dash-remove-v0
--------------------------------------------------------------------------------
/videoplayer-core/src/test/assets/download-actions/hls-download-v0:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ybj366533/YY-VideoPlayer/9b203b5128d971f2631d7f97fed87de6af7d8a0c/videoplayer-core/src/test/assets/download-actions/hls-download-v0
--------------------------------------------------------------------------------
/videoplayer-core/src/test/assets/download-actions/hls-download-v1:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ybj366533/YY-VideoPlayer/9b203b5128d971f2631d7f97fed87de6af7d8a0c/videoplayer-core/src/test/assets/download-actions/hls-download-v1
--------------------------------------------------------------------------------
/videoplayer-core/src/test/assets/download-actions/hls-remove-v0:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ybj366533/YY-VideoPlayer/9b203b5128d971f2631d7f97fed87de6af7d8a0c/videoplayer-core/src/test/assets/download-actions/hls-remove-v0
--------------------------------------------------------------------------------
/videoplayer-core/src/test/assets/download-actions/hls-remove-v1:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ybj366533/YY-VideoPlayer/9b203b5128d971f2631d7f97fed87de6af7d8a0c/videoplayer-core/src/test/assets/download-actions/hls-remove-v1
--------------------------------------------------------------------------------
/videoplayer-core/src/test/assets/download-actions/progressive-download-v0:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ybj366533/YY-VideoPlayer/9b203b5128d971f2631d7f97fed87de6af7d8a0c/videoplayer-core/src/test/assets/download-actions/progressive-download-v0
--------------------------------------------------------------------------------
/videoplayer-core/src/test/assets/download-actions/progressive-remove-v0:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ybj366533/YY-VideoPlayer/9b203b5128d971f2631d7f97fed87de6af7d8a0c/videoplayer-core/src/test/assets/download-actions/progressive-remove-v0
--------------------------------------------------------------------------------
/videoplayer-core/src/test/assets/download-actions/ss-download-v0:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ybj366533/YY-VideoPlayer/9b203b5128d971f2631d7f97fed87de6af7d8a0c/videoplayer-core/src/test/assets/download-actions/ss-download-v0
--------------------------------------------------------------------------------
/videoplayer-core/src/test/assets/download-actions/ss-download-v1:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ybj366533/YY-VideoPlayer/9b203b5128d971f2631d7f97fed87de6af7d8a0c/videoplayer-core/src/test/assets/download-actions/ss-download-v1
--------------------------------------------------------------------------------
/videoplayer-core/src/test/assets/download-actions/ss-remove-v0:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ybj366533/YY-VideoPlayer/9b203b5128d971f2631d7f97fed87de6af7d8a0c/videoplayer-core/src/test/assets/download-actions/ss-remove-v0
--------------------------------------------------------------------------------
/videoplayer-core/src/test/assets/download-actions/ss-remove-v1:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ybj366533/YY-VideoPlayer/9b203b5128d971f2631d7f97fed87de6af7d8a0c/videoplayer-core/src/test/assets/download-actions/ss-remove-v1
--------------------------------------------------------------------------------
/videoplayer-core/src/test/assets/flv/sample.flv:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ybj366533/YY-VideoPlayer/9b203b5128d971f2631d7f97fed87de6af7d8a0c/videoplayer-core/src/test/assets/flv/sample.flv
--------------------------------------------------------------------------------
/videoplayer-core/src/test/assets/mkv/sample.mkv:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ybj366533/YY-VideoPlayer/9b203b5128d971f2631d7f97fed87de6af7d8a0c/videoplayer-core/src/test/assets/mkv/sample.mkv
--------------------------------------------------------------------------------
/videoplayer-core/src/test/assets/mkv/subsample_encrypted_altref.webm:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ybj366533/YY-VideoPlayer/9b203b5128d971f2631d7f97fed87de6af7d8a0c/videoplayer-core/src/test/assets/mkv/subsample_encrypted_altref.webm
--------------------------------------------------------------------------------
/videoplayer-core/src/test/assets/mkv/subsample_encrypted_noaltref.webm:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ybj366533/YY-VideoPlayer/9b203b5128d971f2631d7f97fed87de6af7d8a0c/videoplayer-core/src/test/assets/mkv/subsample_encrypted_noaltref.webm
--------------------------------------------------------------------------------
/videoplayer-core/src/test/assets/mp3/bear.mp3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ybj366533/YY-VideoPlayer/9b203b5128d971f2631d7f97fed87de6af7d8a0c/videoplayer-core/src/test/assets/mp3/bear.mp3
--------------------------------------------------------------------------------
/videoplayer-core/src/test/assets/mp3/bear.mp3.3.dump:
--------------------------------------------------------------------------------
1 | seekMap:
2 | isSeekable = true
3 | duration = 2784000
4 | getPosition(0) = [[timeUs=0, position=201]]
5 | numberOfTracks = 1
6 | track 0:
7 | format:
8 | bitrate = -1
9 | id = null
10 | containerMimeType = null
11 | sampleMimeType = audio/mpeg
12 | maxInputSize = 4096
13 | width = -1
14 | height = -1
15 | frameRate = -1.0
16 | rotationDegrees = 0
17 | pixelWidthHeightRatio = 1.0
18 | channelCount = 2
19 | sampleRate = 48000
20 | pcmEncoding = -1
21 | encoderDelay = 956
22 | encoderPadding = 3352
23 | subsampleOffsetUs = 9223372036854775807
24 | selectionFlags = 0
25 | language = null
26 | drmInitData = -
27 | initializationData:
28 | total output bytes = 0
29 | sample count = 0
30 | tracksEnded = true
31 |
--------------------------------------------------------------------------------
/videoplayer-core/src/test/assets/mp3/play-trimmed.mp3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ybj366533/YY-VideoPlayer/9b203b5128d971f2631d7f97fed87de6af7d8a0c/videoplayer-core/src/test/assets/mp3/play-trimmed.mp3
--------------------------------------------------------------------------------
/videoplayer-core/src/test/assets/mp3/play-trimmed.mp3.0.dump:
--------------------------------------------------------------------------------
1 | seekMap:
2 | isSeekable = true
3 | duration = 26122
4 | getPosition(0) = [[timeUs=0, position=0]]
5 | numberOfTracks = 1
6 | track 0:
7 | format:
8 | bitrate = -1
9 | id = null
10 | containerMimeType = null
11 | sampleMimeType = audio/mpeg
12 | maxInputSize = 4096
13 | width = -1
14 | height = -1
15 | frameRate = -1.0
16 | rotationDegrees = 0
17 | pixelWidthHeightRatio = 1.0
18 | channelCount = 2
19 | sampleRate = 44100
20 | pcmEncoding = -1
21 | encoderDelay = 0
22 | encoderPadding = 0
23 | subsampleOffsetUs = 9223372036854775807
24 | selectionFlags = 0
25 | language = null
26 | drmInitData = -
27 | initializationData:
28 | total output bytes = 418
29 | sample count = 1
30 | sample 0:
31 | time = 0
32 | flags = 1
33 | data = length 418, hash B819987
34 | tracksEnded = true
35 |
--------------------------------------------------------------------------------
/videoplayer-core/src/test/assets/mp3/play-trimmed.mp3.1.dump:
--------------------------------------------------------------------------------
1 | seekMap:
2 | isSeekable = true
3 | duration = 26122
4 | getPosition(0) = [[timeUs=0, position=0]]
5 | numberOfTracks = 1
6 | track 0:
7 | format:
8 | bitrate = -1
9 | id = null
10 | containerMimeType = null
11 | sampleMimeType = audio/mpeg
12 | maxInputSize = 4096
13 | width = -1
14 | height = -1
15 | frameRate = -1.0
16 | rotationDegrees = 0
17 | pixelWidthHeightRatio = 1.0
18 | channelCount = 2
19 | sampleRate = 44100
20 | pcmEncoding = -1
21 | encoderDelay = 0
22 | encoderPadding = 0
23 | subsampleOffsetUs = 9223372036854775807
24 | selectionFlags = 0
25 | language = null
26 | drmInitData = -
27 | initializationData:
28 | total output bytes = 418
29 | sample count = 1
30 | sample 0:
31 | time = 0
32 | flags = 1
33 | data = length 418, hash B819987
34 | tracksEnded = true
35 |
--------------------------------------------------------------------------------
/videoplayer-core/src/test/assets/mp3/play-trimmed.mp3.2.dump:
--------------------------------------------------------------------------------
1 | seekMap:
2 | isSeekable = true
3 | duration = 26122
4 | getPosition(0) = [[timeUs=0, position=0]]
5 | numberOfTracks = 1
6 | track 0:
7 | format:
8 | bitrate = -1
9 | id = null
10 | containerMimeType = null
11 | sampleMimeType = audio/mpeg
12 | maxInputSize = 4096
13 | width = -1
14 | height = -1
15 | frameRate = -1.0
16 | rotationDegrees = 0
17 | pixelWidthHeightRatio = 1.0
18 | channelCount = 2
19 | sampleRate = 44100
20 | pcmEncoding = -1
21 | encoderDelay = 0
22 | encoderPadding = 0
23 | subsampleOffsetUs = 9223372036854775807
24 | selectionFlags = 0
25 | language = null
26 | drmInitData = -
27 | initializationData:
28 | total output bytes = 418
29 | sample count = 1
30 | sample 0:
31 | time = 0
32 | flags = 1
33 | data = length 418, hash B819987
34 | tracksEnded = true
35 |
--------------------------------------------------------------------------------
/videoplayer-core/src/test/assets/mp3/play-trimmed.mp3.3.dump:
--------------------------------------------------------------------------------
1 | seekMap:
2 | isSeekable = true
3 | duration = 26122
4 | getPosition(0) = [[timeUs=0, position=0]]
5 | numberOfTracks = 1
6 | track 0:
7 | format:
8 | bitrate = -1
9 | id = null
10 | containerMimeType = null
11 | sampleMimeType = audio/mpeg
12 | maxInputSize = 4096
13 | width = -1
14 | height = -1
15 | frameRate = -1.0
16 | rotationDegrees = 0
17 | pixelWidthHeightRatio = 1.0
18 | channelCount = 2
19 | sampleRate = 44100
20 | pcmEncoding = -1
21 | encoderDelay = 0
22 | encoderPadding = 0
23 | subsampleOffsetUs = 9223372036854775807
24 | selectionFlags = 0
25 | language = null
26 | drmInitData = -
27 | initializationData:
28 | total output bytes = 418
29 | sample count = 1
30 | sample 0:
31 | time = 0
32 | flags = 1
33 | data = length 418, hash B819987
34 | tracksEnded = true
35 |
--------------------------------------------------------------------------------
/videoplayer-core/src/test/assets/mp3/play-trimmed.mp3.unklen.dump:
--------------------------------------------------------------------------------
1 | seekMap:
2 | isSeekable = false
3 | duration = UNSET TIME
4 | getPosition(0) = [[timeUs=0, position=0]]
5 | numberOfTracks = 1
6 | track 0:
7 | format:
8 | bitrate = -1
9 | id = null
10 | containerMimeType = null
11 | sampleMimeType = audio/mpeg
12 | maxInputSize = 4096
13 | width = -1
14 | height = -1
15 | frameRate = -1.0
16 | rotationDegrees = 0
17 | pixelWidthHeightRatio = 1.0
18 | channelCount = 2
19 | sampleRate = 44100
20 | pcmEncoding = -1
21 | encoderDelay = 0
22 | encoderPadding = 0
23 | subsampleOffsetUs = 9223372036854775807
24 | selectionFlags = 0
25 | language = null
26 | drmInitData = -
27 | initializationData:
28 | total output bytes = 418
29 | sample count = 1
30 | sample 0:
31 | time = 0
32 | flags = 1
33 | data = length 418, hash B819987
34 | tracksEnded = true
35 |
--------------------------------------------------------------------------------
/videoplayer-core/src/test/assets/mp4/sample.mp4:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ybj366533/YY-VideoPlayer/9b203b5128d971f2631d7f97fed87de6af7d8a0c/videoplayer-core/src/test/assets/mp4/sample.mp4
--------------------------------------------------------------------------------
/videoplayer-core/src/test/assets/mp4/sample_fragmented.mp4:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ybj366533/YY-VideoPlayer/9b203b5128d971f2631d7f97fed87de6af7d8a0c/videoplayer-core/src/test/assets/mp4/sample_fragmented.mp4
--------------------------------------------------------------------------------
/videoplayer-core/src/test/assets/mp4/sample_fragmented_seekable.mp4:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ybj366533/YY-VideoPlayer/9b203b5128d971f2631d7f97fed87de6af7d8a0c/videoplayer-core/src/test/assets/mp4/sample_fragmented_seekable.mp4
--------------------------------------------------------------------------------
/videoplayer-core/src/test/assets/mp4/sample_fragmented_sei.mp4:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ybj366533/YY-VideoPlayer/9b203b5128d971f2631d7f97fed87de6af7d8a0c/videoplayer-core/src/test/assets/mp4/sample_fragmented_sei.mp4
--------------------------------------------------------------------------------
/videoplayer-core/src/test/assets/mp4/testvid_1022ms.mp4:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ybj366533/YY-VideoPlayer/9b203b5128d971f2631d7f97fed87de6af7d8a0c/videoplayer-core/src/test/assets/mp4/testvid_1022ms.mp4
--------------------------------------------------------------------------------
/videoplayer-core/src/test/assets/offline/action_file_for_download_index_upgrade.exi:
--------------------------------------------------------------------------------
1 | test https://www.test.com/download1 key123 test https://www.test.com/download2 key234
--------------------------------------------------------------------------------
/videoplayer-core/src/test/assets/offline/action_file_incomplete_header.exi:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/videoplayer-core/src/test/assets/offline/action_file_no_data.exi:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ybj366533/YY-VideoPlayer/9b203b5128d971f2631d7f97fed87de6af7d8a0c/videoplayer-core/src/test/assets/offline/action_file_no_data.exi
--------------------------------------------------------------------------------
/videoplayer-core/src/test/assets/offline/action_file_one_action.exi:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ybj366533/YY-VideoPlayer/9b203b5128d971f2631d7f97fed87de6af7d8a0c/videoplayer-core/src/test/assets/offline/action_file_one_action.exi
--------------------------------------------------------------------------------
/videoplayer-core/src/test/assets/offline/action_file_two_actions.exi:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ybj366533/YY-VideoPlayer/9b203b5128d971f2631d7f97fed87de6af7d8a0c/videoplayer-core/src/test/assets/offline/action_file_two_actions.exi
--------------------------------------------------------------------------------
/videoplayer-core/src/test/assets/offline/action_file_unsupported_version.exi:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ybj366533/YY-VideoPlayer/9b203b5128d971f2631d7f97fed87de6af7d8a0c/videoplayer-core/src/test/assets/offline/action_file_unsupported_version.exi
--------------------------------------------------------------------------------
/videoplayer-core/src/test/assets/offline/action_file_zero_actions.exi:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/videoplayer-core/src/test/assets/ogg/bear.opus:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ybj366533/YY-VideoPlayer/9b203b5128d971f2631d7f97fed87de6af7d8a0c/videoplayer-core/src/test/assets/ogg/bear.opus
--------------------------------------------------------------------------------
/videoplayer-core/src/test/assets/ogg/bear_flac.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ybj366533/YY-VideoPlayer/9b203b5128d971f2631d7f97fed87de6af7d8a0c/videoplayer-core/src/test/assets/ogg/bear_flac.ogg
--------------------------------------------------------------------------------
/videoplayer-core/src/test/assets/ogg/bear_flac.ogg.3.dump:
--------------------------------------------------------------------------------
1 | seekMap:
2 | isSeekable = true
3 | duration = 2741000
4 | getPosition(0) = [[timeUs=0, position=8457]]
5 | numberOfTracks = 1
6 | track 0:
7 | format:
8 | bitrate = -1
9 | id = null
10 | containerMimeType = null
11 | sampleMimeType = audio/flac
12 | maxInputSize = 768000
13 | width = -1
14 | height = -1
15 | frameRate = -1.0
16 | rotationDegrees = 0
17 | pixelWidthHeightRatio = 1.0
18 | channelCount = 2
19 | sampleRate = 48000
20 | pcmEncoding = -1
21 | encoderDelay = 0
22 | encoderPadding = 0
23 | subsampleOffsetUs = 9223372036854775807
24 | selectionFlags = 0
25 | language = null
26 | drmInitData = -
27 | initializationData:
28 | data = length 42, hash 83F6895
29 | total output bytes = 445
30 | sample count = 1
31 | sample 0:
32 | time = 2730666
33 | flags = 1
34 | data = length 445, hash A388E3D6
35 | tracksEnded = true
36 |
--------------------------------------------------------------------------------
/videoplayer-core/src/test/assets/ogg/bear_flac_noseektable.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ybj366533/YY-VideoPlayer/9b203b5128d971f2631d7f97fed87de6af7d8a0c/videoplayer-core/src/test/assets/ogg/bear_flac_noseektable.ogg
--------------------------------------------------------------------------------
/videoplayer-core/src/test/assets/ogg/bear_flac_noseektable.ogg.3.dump:
--------------------------------------------------------------------------------
1 | seekMap:
2 | isSeekable = true
3 | duration = 2741000
4 | getPosition(0) = [[timeUs=0, position=8407]]
5 | numberOfTracks = 1
6 | track 0:
7 | format:
8 | bitrate = -1
9 | id = null
10 | containerMimeType = null
11 | sampleMimeType = audio/flac
12 | maxInputSize = 768000
13 | width = -1
14 | height = -1
15 | frameRate = -1.0
16 | rotationDegrees = 0
17 | pixelWidthHeightRatio = 1.0
18 | channelCount = 2
19 | sampleRate = 48000
20 | pcmEncoding = -1
21 | encoderDelay = 0
22 | encoderPadding = 0
23 | subsampleOffsetUs = 9223372036854775807
24 | selectionFlags = 0
25 | language = null
26 | drmInitData = -
27 | initializationData:
28 | data = length 42, hash 83F6895
29 | total output bytes = 445
30 | sample count = 1
31 | sample 0:
32 | time = 2730666
33 | flags = 1
34 | data = length 445, hash A388E3D6
35 | tracksEnded = true
36 |
--------------------------------------------------------------------------------
/videoplayer-core/src/test/assets/ogg/bear_vorbis.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ybj366533/YY-VideoPlayer/9b203b5128d971f2631d7f97fed87de6af7d8a0c/videoplayer-core/src/test/assets/ogg/bear_vorbis.ogg
--------------------------------------------------------------------------------
/videoplayer-core/src/test/assets/ogg/bear_vorbis.ogg.3.dump:
--------------------------------------------------------------------------------
1 | seekMap:
2 | isSeekable = true
3 | duration = 2741000
4 | getPosition(0) = [[timeUs=0, position=3995]]
5 | numberOfTracks = 1
6 | track 0:
7 | format:
8 | bitrate = 112000
9 | id = null
10 | containerMimeType = null
11 | sampleMimeType = audio/vorbis
12 | maxInputSize = -1
13 | width = -1
14 | height = -1
15 | frameRate = -1.0
16 | rotationDegrees = 0
17 | pixelWidthHeightRatio = 1.0
18 | channelCount = 2
19 | sampleRate = 48000
20 | pcmEncoding = -1
21 | encoderDelay = 0
22 | encoderPadding = 0
23 | subsampleOffsetUs = 9223372036854775807
24 | selectionFlags = 0
25 | language = null
26 | drmInitData = -
27 | initializationData:
28 | data = length 30, hash 9A8FF207
29 | data = length 3832, hash 8A406249
30 | total output bytes = 0
31 | sample count = 0
32 | tracksEnded = true
33 |
--------------------------------------------------------------------------------
/videoplayer-core/src/test/assets/rawcc/sample.rawcc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ybj366533/YY-VideoPlayer/9b203b5128d971f2631d7f97fed87de6af7d8a0c/videoplayer-core/src/test/assets/rawcc/sample.rawcc
--------------------------------------------------------------------------------
/videoplayer-core/src/test/assets/ssa/empty:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ybj366533/YY-VideoPlayer/9b203b5128d971f2631d7f97fed87de6af7d8a0c/videoplayer-core/src/test/assets/ssa/empty
--------------------------------------------------------------------------------
/videoplayer-core/src/test/assets/ssa/invalid_timecodes:
--------------------------------------------------------------------------------
1 | [Script Info]
2 | Title: SomeTitle
3 |
4 | [V4+ Styles]
5 | Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
6 | Style: Default,Open Sans Semibold,36,&H00FFFFFF,&H000000FF,&H00020713,&H00000000,-1,0,0,0,100,100,0,0,1,1.7,0,2,0,0,28,1
7 |
8 | [Events]
9 | Format: Layer, Start, End, Style, Name, Text
10 | Dialogue: 0,Invalid,0:00:01.23,Default,Olly,This is the first subtitle{ignored}.
11 | Dialogue: 0,0:00:02.34,Invalid,Default,Olly,This is the second subtitle \nwith a newline \Nand another.
12 | Dialogue: 0,0:00:04:56,0:00:08:90,Default,Olly,This is the third subtitle, with a comma.
13 |
--------------------------------------------------------------------------------
/videoplayer-core/src/test/assets/ssa/no_end_timecodes:
--------------------------------------------------------------------------------
1 | [Script Info]
2 | Title: SomeTitle
3 |
4 | [V4+ Styles]
5 | Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
6 | Style: Default,Open Sans Semibold,36,&H00FFFFFF,&H000000FF,&H00020713,&H00000000,-1,0,0,0,100,100,0,0,1,1.7,0,2,0,0,28,1
7 |
8 | [Events]
9 | Format: Layer, Start, End, Style, Name, Text
10 | Dialogue: 0,0:00:00.00, ,Default,Olly,This is the first subtitle.
11 | Dialogue: 0,0:00:02.34, ,Default,Olly,This is the second subtitle \nwith a newline \Nand another.
12 | Dialogue: 0,0:00:04.56, ,Default,Olly,This is the third subtitle, with a comma.
13 |
--------------------------------------------------------------------------------
/videoplayer-core/src/test/assets/ssa/typical:
--------------------------------------------------------------------------------
1 | [Script Info]
2 | Title: SomeTitle
3 |
4 | [V4+ Styles]
5 | Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
6 | Style: Default,Open Sans Semibold,36,&H00FFFFFF,&H000000FF,&H00020713,&H00000000,-1,0,0,0,100,100,0,0,1,1.7,0,2,0,0,28,1
7 |
8 | [Events]
9 | Format: Layer, Start, End, Style, Name, Text
10 | Dialogue: 0,0:00:00.00,0:00:01.23,Default,Olly,This is the first subtitle{ignored}.
11 | Dialogue: 0,0:00:02.34,0:00:03.45,Default,Olly,This is the second subtitle \nwith a newline \Nand another.
12 | Dialogue: 0,0:00:04:56,0:00:08:90,Default,Olly,This is the third subtitle, with a comma.
13 |
--------------------------------------------------------------------------------
/videoplayer-core/src/test/assets/ssa/typical_dialogue:
--------------------------------------------------------------------------------
1 | Dialogue: 0,0:00:00.00,0:00:01.23,Default,Olly,This is the first subtitle{ignored}.
2 | Dialogue: 0,0:00:02.34,0:00:03.45,Default,Olly,This is the second subtitle \nwith a newline \Nand another.
3 | Dialogue: 0,0:00:04:56,0:00:08:90,Default,Olly,This is the third subtitle, with a comma.
4 |
--------------------------------------------------------------------------------
/videoplayer-core/src/test/assets/ssa/typical_format:
--------------------------------------------------------------------------------
1 | Format: Layer, Start, End, Style, Name, Text
2 |
--------------------------------------------------------------------------------
/videoplayer-core/src/test/assets/ssa/typical_header:
--------------------------------------------------------------------------------
1 | [Script Info]
2 | Title: SomeTitle
3 |
4 | [V4+ Styles]
5 | Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
6 | Style: Default,Open Sans Semibold,36,&H00FFFFFF,&H000000FF,&H00020713,&H00000000,-1,0,0,0,100,100,0,0,1,1.7,0,2,0,0,28,1
7 |
--------------------------------------------------------------------------------
/videoplayer-core/src/test/assets/subrip/empty:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ybj366533/YY-VideoPlayer/9b203b5128d971f2631d7f97fed87de6af7d8a0c/videoplayer-core/src/test/assets/subrip/empty
--------------------------------------------------------------------------------
/videoplayer-core/src/test/assets/subrip/no_end_timecodes:
--------------------------------------------------------------------------------
1 | 1
2 | 00:00:00,000 -->
3 | SubRip doesn't technically allow missing end timecodes.
4 |
5 | 2
6 | 00:00:02,345 -->
7 | We interpret it to mean that a subtitle extends to the start of the next one.
8 |
9 | 3
10 | 00:00:03,456 -->
11 | Or to the end of the media.
12 |
--------------------------------------------------------------------------------
/videoplayer-core/src/test/assets/subrip/typical:
--------------------------------------------------------------------------------
1 | 1
2 | 00:00:00,000 --> 00:00:01,234
3 | This is the first subtitle.
4 |
5 | 2
6 | 00:00:02,345 --> 00:00:03,456
7 | This is the second subtitle.
8 | Second subtitle with second line.
9 |
10 | 3
11 | 00:00:04,567 --> 00:00:08,901
12 | This is the third subtitle.
13 |
--------------------------------------------------------------------------------
/videoplayer-core/src/test/assets/subrip/typical_extra_blank_line:
--------------------------------------------------------------------------------
1 | 1
2 | 00:00:00,000 --> 00:00:01,234
3 | This is the first subtitle.
4 |
5 |
6 | 2
7 | 00:00:02,345 --> 00:00:03,456
8 | This is the second subtitle.
9 | Second subtitle with second line.
10 |
11 | 3
12 | 00:00:04,567 --> 00:00:08,901
13 | This is the third subtitle.
14 |
--------------------------------------------------------------------------------
/videoplayer-core/src/test/assets/subrip/typical_missing_sequence:
--------------------------------------------------------------------------------
1 | 1
2 | 00:00:00,000 --> 00:00:01,234
3 | This is the first subtitle.
4 |
5 | 00:00:02,345 --> 00:00:03,456
6 | This is the second subtitle.
7 | Second subtitle with second line.
8 |
9 | 3
10 | 00:00:04,567 --> 00:00:08,901
11 | This is the third subtitle.
12 |
--------------------------------------------------------------------------------
/videoplayer-core/src/test/assets/subrip/typical_missing_timecode:
--------------------------------------------------------------------------------
1 | 1
2 | 00:00:00,000 --> 00:00:01,234
3 | This is the first subtitle.
4 |
5 | 2
6 | This is the second subtitle.
7 | Second subtitle with second line.
8 |
9 | 3
10 | 00:00:04,567 --> 00:00:08,901
11 | This is the third subtitle.
12 |
--------------------------------------------------------------------------------
/videoplayer-core/src/test/assets/subrip/typical_negative_timestamps:
--------------------------------------------------------------------------------
1 | 1
2 | -0:00:04,567 --> -0:00:03,456
3 | This is the first subtitle.
4 |
5 | 2
6 | -00:00:02,345 --> 00:00:01,234
7 | This is the second subtitle.
8 | Second subtitle with second line.
9 |
10 | 3
11 | 00:00:04,567 --> 00:00:08,901
12 | This is the third subtitle.
13 |
--------------------------------------------------------------------------------
/videoplayer-core/src/test/assets/subrip/typical_unexpected_end:
--------------------------------------------------------------------------------
1 | 1
2 | 00:00:00,000 --> 00:00:01,234
3 | This is the first subtitle.
4 |
5 | 2
6 | 00:00:02,345 --> 00:00:03,456
7 | This is the second subtitle.
8 | Second subtitle with second line.
9 |
10 | 3
11 |
--------------------------------------------------------------------------------
/videoplayer-core/src/test/assets/subrip/typical_with_byte_order_mark:
--------------------------------------------------------------------------------
1 | 1
2 | 00:00:00,000 --> 00:00:01,234
3 | This is the first subtitle.
4 |
5 | 2
6 | 00:00:02,345 --> 00:00:03,456
7 | This is the second subtitle.
8 | Second subtitle with second line.
9 |
10 | 3
11 | 00:00:04,567 --> 00:00:08,901
12 | This is the third subtitle.
13 |
--------------------------------------------------------------------------------
/videoplayer-core/src/test/assets/ts/bbb_2500ms.ts:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ybj366533/YY-VideoPlayer/9b203b5128d971f2631d7f97fed87de6af7d8a0c/videoplayer-core/src/test/assets/ts/bbb_2500ms.ts
--------------------------------------------------------------------------------
/videoplayer-core/src/test/assets/ts/elephants_dream.mpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ybj366533/YY-VideoPlayer/9b203b5128d971f2631d7f97fed87de6af7d8a0c/videoplayer-core/src/test/assets/ts/elephants_dream.mpg
--------------------------------------------------------------------------------
/videoplayer-core/src/test/assets/ts/sample.ac3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ybj366533/YY-VideoPlayer/9b203b5128d971f2631d7f97fed87de6af7d8a0c/videoplayer-core/src/test/assets/ts/sample.ac3
--------------------------------------------------------------------------------
/videoplayer-core/src/test/assets/ts/sample.ac4:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ybj366533/YY-VideoPlayer/9b203b5128d971f2631d7f97fed87de6af7d8a0c/videoplayer-core/src/test/assets/ts/sample.ac4
--------------------------------------------------------------------------------
/videoplayer-core/src/test/assets/ts/sample.adts:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ybj366533/YY-VideoPlayer/9b203b5128d971f2631d7f97fed87de6af7d8a0c/videoplayer-core/src/test/assets/ts/sample.adts
--------------------------------------------------------------------------------
/videoplayer-core/src/test/assets/ts/sample.eac3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ybj366533/YY-VideoPlayer/9b203b5128d971f2631d7f97fed87de6af7d8a0c/videoplayer-core/src/test/assets/ts/sample.eac3
--------------------------------------------------------------------------------
/videoplayer-core/src/test/assets/ts/sample.ps:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ybj366533/YY-VideoPlayer/9b203b5128d971f2631d7f97fed87de6af7d8a0c/videoplayer-core/src/test/assets/ts/sample.ps
--------------------------------------------------------------------------------
/videoplayer-core/src/test/assets/ts/sample.ts:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ybj366533/YY-VideoPlayer/9b203b5128d971f2631d7f97fed87de6af7d8a0c/videoplayer-core/src/test/assets/ts/sample.ts
--------------------------------------------------------------------------------
/videoplayer-core/src/test/assets/ts/sample_cbs.adts:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ybj366533/YY-VideoPlayer/9b203b5128d971f2631d7f97fed87de6af7d8a0c/videoplayer-core/src/test/assets/ts/sample_cbs.adts
--------------------------------------------------------------------------------
/videoplayer-core/src/test/assets/ts/sample_with_sdt.ts:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ybj366533/YY-VideoPlayer/9b203b5128d971f2631d7f97fed87de6af7d8a0c/videoplayer-core/src/test/assets/ts/sample_with_sdt.ts
--------------------------------------------------------------------------------
/videoplayer-core/src/test/assets/ttml/font_size_empty.xml:
--------------------------------------------------------------------------------
1 |
5 |
6 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/videoplayer-core/src/test/assets/ttml/font_size_invalid.xml:
--------------------------------------------------------------------------------
1 |
5 |
6 |
9 |
12 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/videoplayer-core/src/test/assets/ttml/font_size_no_unit.xml:
--------------------------------------------------------------------------------
1 |
5 |
6 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/videoplayer-core/src/test/assets/ttml/frame_rate.xml:
--------------------------------------------------------------------------------
1 |
6 |
7 |
8 |
9 |
10 |
11 |
14 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/videoplayer-core/src/test/assets/ttml/inherit_style.xml:
--------------------------------------------------------------------------------
1 |
6 |
7 |
8 |
15 |
16 |
17 |
18 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/videoplayer-core/src/test/assets/ttml/no_underline_linethrough.xml:
--------------------------------------------------------------------------------
1 |
5 |
6 |
7 |
9 |
11 |
12 |
13 |
14 |
17 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/videoplayer-core/src/test/assets/tx3g/initialization:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ybj366533/YY-VideoPlayer/9b203b5128d971f2631d7f97fed87de6af7d8a0c/videoplayer-core/src/test/assets/tx3g/initialization
--------------------------------------------------------------------------------
/videoplayer-core/src/test/assets/tx3g/initialization_all_defaults:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ybj366533/YY-VideoPlayer/9b203b5128d971f2631d7f97fed87de6af7d8a0c/videoplayer-core/src/test/assets/tx3g/initialization_all_defaults
--------------------------------------------------------------------------------
/videoplayer-core/src/test/assets/tx3g/no_subtitle:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/videoplayer-core/src/test/assets/tx3g/sample_just_text:
--------------------------------------------------------------------------------
1 | CC Test
--------------------------------------------------------------------------------
/videoplayer-core/src/test/assets/tx3g/sample_utf16_be_no_styl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ybj366533/YY-VideoPlayer/9b203b5128d971f2631d7f97fed87de6af7d8a0c/videoplayer-core/src/test/assets/tx3g/sample_utf16_be_no_styl
--------------------------------------------------------------------------------
/videoplayer-core/src/test/assets/tx3g/sample_utf16_le_no_styl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ybj366533/YY-VideoPlayer/9b203b5128d971f2631d7f97fed87de6af7d8a0c/videoplayer-core/src/test/assets/tx3g/sample_utf16_le_no_styl
--------------------------------------------------------------------------------
/videoplayer-core/src/test/assets/tx3g/sample_with_multiple_styl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ybj366533/YY-VideoPlayer/9b203b5128d971f2631d7f97fed87de6af7d8a0c/videoplayer-core/src/test/assets/tx3g/sample_with_multiple_styl
--------------------------------------------------------------------------------
/videoplayer-core/src/test/assets/tx3g/sample_with_other_extension:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ybj366533/YY-VideoPlayer/9b203b5128d971f2631d7f97fed87de6af7d8a0c/videoplayer-core/src/test/assets/tx3g/sample_with_other_extension
--------------------------------------------------------------------------------
/videoplayer-core/src/test/assets/tx3g/sample_with_styl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ybj366533/YY-VideoPlayer/9b203b5128d971f2631d7f97fed87de6af7d8a0c/videoplayer-core/src/test/assets/tx3g/sample_with_styl
--------------------------------------------------------------------------------
/videoplayer-core/src/test/assets/tx3g/sample_with_styl_all_defaults:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ybj366533/YY-VideoPlayer/9b203b5128d971f2631d7f97fed87de6af7d8a0c/videoplayer-core/src/test/assets/tx3g/sample_with_styl_all_defaults
--------------------------------------------------------------------------------
/videoplayer-core/src/test/assets/tx3g/sample_with_tbox:
--------------------------------------------------------------------------------
1 | CC Test tbox Z <
--------------------------------------------------------------------------------
/videoplayer-core/src/test/assets/wav/sample.wav:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ybj366533/YY-VideoPlayer/9b203b5128d971f2631d7f97fed87de6af7d8a0c/videoplayer-core/src/test/assets/wav/sample.wav
--------------------------------------------------------------------------------
/videoplayer-core/src/test/assets/wav/sample.wav.2.dump:
--------------------------------------------------------------------------------
1 | seekMap:
2 | isSeekable = true
3 | duration = 1000000
4 | getPosition(0) = [[timeUs=0, position=78]]
5 | numberOfTracks = 1
6 | track 0:
7 | format:
8 | bitrate = 705600
9 | id = null
10 | containerMimeType = null
11 | sampleMimeType = audio/raw
12 | maxInputSize = 32768
13 | width = -1
14 | height = -1
15 | frameRate = -1.0
16 | rotationDegrees = 0
17 | pixelWidthHeightRatio = 1.0
18 | channelCount = 1
19 | sampleRate = 44100
20 | pcmEncoding = 2
21 | encoderDelay = 0
22 | encoderPadding = 0
23 | subsampleOffsetUs = 9223372036854775807
24 | selectionFlags = 0
25 | language = null
26 | drmInitData = -
27 | initializationData:
28 | total output bytes = 29402
29 | sample count = 1
30 | sample 0:
31 | time = 666643
32 | flags = 1
33 | data = length 29402, hash 4241604E
34 | tracksEnded = true
35 |
--------------------------------------------------------------------------------
/videoplayer-core/src/test/assets/wav/sample.wav.3.dump:
--------------------------------------------------------------------------------
1 | seekMap:
2 | isSeekable = true
3 | duration = 1000000
4 | getPosition(0) = [[timeUs=0, position=78]]
5 | numberOfTracks = 1
6 | track 0:
7 | format:
8 | bitrate = 705600
9 | id = null
10 | containerMimeType = null
11 | sampleMimeType = audio/raw
12 | maxInputSize = 32768
13 | width = -1
14 | height = -1
15 | frameRate = -1.0
16 | rotationDegrees = 0
17 | pixelWidthHeightRatio = 1.0
18 | channelCount = 1
19 | sampleRate = 44100
20 | pcmEncoding = 2
21 | encoderDelay = 0
22 | encoderPadding = 0
23 | subsampleOffsetUs = 9223372036854775807
24 | selectionFlags = 0
25 | language = null
26 | drmInitData = -
27 | initializationData:
28 | total output bytes = 2
29 | sample count = 1
30 | sample 0:
31 | time = 999977
32 | flags = 1
33 | data = length 2, hash 116
34 | tracksEnded = true
35 |
--------------------------------------------------------------------------------
/videoplayer-core/src/test/assets/webm/vorbis_codec_private:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ybj366533/YY-VideoPlayer/9b203b5128d971f2631d7f97fed87de6af7d8a0c/videoplayer-core/src/test/assets/webm/vorbis_codec_private
--------------------------------------------------------------------------------
/videoplayer-core/src/test/assets/webvtt/empty:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/videoplayer-core/src/test/assets/webvtt/typical:
--------------------------------------------------------------------------------
1 | WEBVTT # This comment is allowed
2 |
3 | 00:00.000 --> 00:01.234
4 | This is the first subtitle.
5 |
6 | 00:02.345 --> 00:03.456
7 | This is the second subtitle.
8 |
--------------------------------------------------------------------------------
/videoplayer-core/src/test/assets/webvtt/typical_with_bad_timestamps:
--------------------------------------------------------------------------------
1 | WEBVTT # This comment is allowed
2 |
3 | # First timestamp is missing the 1/1000ths component, but parse anyway.
4 | 00:00 --> 00:01.234
5 | This is the first subtitle.
6 |
7 | 02.345 --> 00:03.456
8 | This is the second subtitle.
9 |
10 | 0.0.0 --> 00:05.678
11 | This should be discarded (too many dots).
12 |
13 | 00:06.789 --> not-a-timestamp
14 | This should be discarded (not a timestamp).
15 |
--------------------------------------------------------------------------------
/videoplayer-core/src/test/assets/webvtt/typical_with_comments:
--------------------------------------------------------------------------------
1 | WEBVTT
2 |
3 | NOTE
4 | This is a comment block
5 | with multiple lines
6 |
7 | 1
8 | 00:00.000 --> 00:01.234
9 | This is the first subtitle.
10 |
11 | NOTE Single line comment with a space
12 |
13 | NOTE Single line comment with a tab
14 |
15 | 2
16 | 00:02.345 --> 00:03.456
17 | This is the second subtitle.
18 |
19 | NOTE
20 | File ending with a comment
21 |
--------------------------------------------------------------------------------
/videoplayer-core/src/test/assets/webvtt/typical_with_identifiers:
--------------------------------------------------------------------------------
1 | WEBVTT
2 |
3 | 1
4 | 00:00.000 --> 00:01.234
5 | This is the first subtitle.
6 |
7 | 2
8 | 00:02.345 --> 00:03.456
9 | This is the second subtitle.
10 |
--------------------------------------------------------------------------------
/videoplayer-core/src/test/assets/webvtt/with_bad_cue_header:
--------------------------------------------------------------------------------
1 | WEBVTT # This comment is allowed
2 |
3 | 00:00.000 --> 00:01.234
4 | This is the first subtitle.
5 |
6 | 00:02.badbadbadbadbadbad --> 00:03.456
7 | This is the second subtitle.
8 |
9 | 00:04.000 --> 00:05.000
10 | This is the third subtitle.
11 |
--------------------------------------------------------------------------------
/videoplayer-core/src/test/assets/webvtt/with_bom:
--------------------------------------------------------------------------------
1 | WEBVTT # This comment is allowed
2 |
3 | 00:00.000 --> 00:01.234
4 | This is the first subtitle.
5 |
6 | 00:02.345 --> 00:03.456
7 | This is the second subtitle.
8 |
--------------------------------------------------------------------------------
/videoplayer-core/src/test/assets/webvtt/with_css_styles:
--------------------------------------------------------------------------------
1 | WEBVTT
2 |
3 | STYLE
4 | ::cue {
5 | background-color: green;
6 | color: papayawhip;
7 | }
8 | /* Style blocks cannot use blank lines nor "dash dash greater than" */
9 |
10 | NOTE comment blocks can be used between style blocks.
11 |
12 | STYLE
13 | ::cue(#id2) {
14 | color: peachpuff;
15 | }
16 |
17 | STYLE
18 | ::cue(v[voice="LaGord"]) { background-color: lime }
19 |
20 | STYLE
21 | ::cue(v[voice="The Frog"]) { font-weight: bold }
22 |
23 | STYLE
24 | ::cue(v){text-decoration:underline}
25 |
26 | id1
27 | 00:00.000 --> 00:01.234
28 | This is the first subtitle.
29 |
30 | id2
31 | 00:02.345 --> 00:03.456
32 | This is the second subtitle.
33 |
34 | 00:20.000 --> 00:21.000
35 | This is a reference by element
36 |
37 | 00:25.000 --> 00:28.000
38 | You are an idiot
39 | You don't have the guts
40 |
--------------------------------------------------------------------------------
/videoplayer-core/src/test/assets/webvtt/with_tags:
--------------------------------------------------------------------------------
1 | WEBVTT
2 |
3 | 00:00.000 --> 00:01.234
4 | This is the first subtitle.
5 |
6 | 00:02.345 --> 00:03.456
7 | This is the second subtitle.
8 |
9 | 00:04.000 --> 00:05.000
10 | This is the third subtitle.
11 |
12 | 00:06.000 --> 00:07.000
13 | This is the <fourth> &subtitle.
14 |
--------------------------------------------------------------------------------
/videoplayer-exo2/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | # Add project specific ProGuard rules here.
2 | # You can control the set of applied configuration files using the
3 | # proguardFiles setting in build.gradle.
4 | #
5 | # For more details, see
6 | # http://developer.android.com/guide/developing/tools/proguard.html
7 |
8 | # If your project uses WebView with JS, uncomment the following
9 | # and specify the fully qualified class name to the JavaScript interface
10 | # class:
11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
12 | # public *;
13 | #}
14 |
15 | # Uncomment this to preserve the line number information for
16 | # debugging stack traces.
17 | #-keepattributes SourceFile,LineNumberTable
18 |
19 | # If you keep the line number information, uncomment this to
20 | # hide the original source file name.
21 | #-renamesourcefileattribute SourceFile
22 |
--------------------------------------------------------------------------------
/videoplayer-exo2/src/androidTest/java/tv/danmaku/ijk/media/exo2/ExampleInstrumentedTest.java:
--------------------------------------------------------------------------------
1 | package tv.danmaku.ijk.media.exo2;
2 |
3 | import android.content.Context;/*
4 | import android.support.test.InstrumentationRegistry;
5 | import android.support.test.runner.AndroidJUnit4;
6 |
7 | import org.junit.Test;
8 | import org.junit.runner.RunWith;
9 |
10 | import static org.junit.Assert.*;*/
11 |
12 | /**
13 | * Instrumented test, which will execute on an Android device.
14 | *
15 | * @see Testing documentation
16 | */
17 | //@RunWith(AndroidJUnit4.class)
18 | public class ExampleInstrumentedTest {
19 | // @Test
20 | public void useAppContext() throws Exception {
21 | // Context of the app under test.
22 | // Context appContext = InstrumentationRegistry.getTargetContext();
23 |
24 | // assertEquals("tv.danmaku.ijk.media.exo2.test", appContext.getPackageName());
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/videoplayer-exo2/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
3 |
--------------------------------------------------------------------------------
/videoplayer-exo2/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | videoplayer-exo2
3 |
4 |
--------------------------------------------------------------------------------
/videoplayer-exo2/src/test/java/tv/danmaku/ijk/media/exo2/ExampleUnitTest.java:
--------------------------------------------------------------------------------
1 | package tv.danmaku.ijk.media.exo2;
2 |
3 | //import org.junit.Test;
4 |
5 | //import static org.junit.Assert.*;
6 |
7 | /**
8 | * Example local unit test, which will execute on the development machine (host).
9 | *
10 | * @see Testing documentation
11 | */
12 | public class ExampleUnitTest {
13 | // @Test
14 | public void addition_isCorrect() throws Exception {
15 | // assertEquals(4, 2 + 2);
16 | }
17 | }
--------------------------------------------------------------------------------
/videoplayer-java/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 |
--------------------------------------------------------------------------------
/videoplayer-java/build.gradle:
--------------------------------------------------------------------------------
1 | apply plugin: 'com.android.library'
2 |
3 | android {
4 | compileSdkVersion rootProject.ext.android.compileSdkVersion
5 |
6 | defaultConfig {
7 | minSdkVersion rootProject.ext.android.minSdkVersion
8 | targetSdkVersion rootProject.ext.android.targetSdkVersion
9 | versionCode 1
10 | versionName "1.0"
11 |
12 | }
13 |
14 | buildTypes {
15 | release {
16 | minifyEnabled false
17 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
18 | }
19 | }
20 | sourceSets {
21 | main {
22 | jniLibs.srcDirs = ['libs']
23 | }
24 | }
25 |
26 | }
27 |
28 | dependencies {
29 | implementation fileTree(dir: 'libs', include: ['*.jar'])
30 | testImplementation 'junit:junit:4.12'
31 | }
32 |
--------------------------------------------------------------------------------
/videoplayer-java/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | # Add project specific ProGuard rules here.
2 | # You can control the set of applied configuration files using the
3 | # proguardFiles setting in build.gradle.
4 | #
5 | # For more details, see
6 | # http://developer.android.com/guide/developing/tools/proguard.html
7 |
8 | # If your project uses WebView with JS, uncomment the following
9 | # and specify the fully qualified class name to the JavaScript interface
10 | # class:
11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
12 | # public *;
13 | #}
14 |
15 | # Uncomment this to preserve the line number information for
16 | # debugging stack traces.
17 | #-keepattributes SourceFile,LineNumberTable
18 |
19 | # If you keep the line number information, uncomment this to
20 | # hide the original source file name.
21 | #-renamesourcefileattribute SourceFile
22 |
--------------------------------------------------------------------------------
/videoplayer-java/src/androidTest/java/tv/danmaku/ijk/media/player/ExampleInstrumentedTest.java:
--------------------------------------------------------------------------------
1 | package tv.danmaku.ijk.media.player;
2 |
3 | import android.content.Context;
4 | import android.support.test.InstrumentationRegistry;
5 | import android.support.test.runner.AndroidJUnit4;
6 |
7 | import org.junit.Test;
8 | import org.junit.runner.RunWith;
9 |
10 | import static org.junit.Assert.*;
11 |
12 | /**
13 | * Instrumented test, which will execute on an Android device.
14 | *
15 | * @see Testing documentation
16 | */
17 | @RunWith(AndroidJUnit4.class)
18 | public class ExampleInstrumentedTest {
19 | @Test
20 | public void useAppContext() {
21 | // Context of the app under test.
22 | Context appContext = InstrumentationRegistry.getTargetContext();
23 |
24 | assertEquals("tv.danmaku.ijk.media.player.test", appContext.getPackageName());
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/videoplayer-java/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
3 |
--------------------------------------------------------------------------------
/videoplayer-java/src/main/java/tv/danmaku/ijk/media/player/ISurfaceTextureHost.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2015 Bilibili
3 | * Copyright (C) 2015 Zhang Rui
4 | *
5 | * Licensed under the Apache License, Version 2.0 (the "License");
6 | * you may not use this file except in compliance with the License.
7 | * You may obtain a copy of the License at
8 | *
9 | * http://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | package tv.danmaku.ijk.media.player;
19 |
20 | import android.graphics.SurfaceTexture;
21 |
22 | public interface ISurfaceTextureHost {
23 | void releaseSurfaceTexture(SurfaceTexture surfaceTexture);
24 | }
25 |
--------------------------------------------------------------------------------
/videoplayer-java/src/main/java/tv/danmaku/ijk/media/player/IjkLibLoader.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2013-2014 Bilibili
3 | * Copyright (C) 2013-2014 Zhang Rui
4 | *
5 | * Licensed under the Apache License, Version 2.0 (the "License");
6 | * you may not use this file except in compliance with the License.
7 | * You may obtain a copy of the License at
8 | *
9 | * http://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | package tv.danmaku.ijk.media.player;
19 |
20 | public interface IjkLibLoader {
21 | void loadLibrary(String libName) throws UnsatisfiedLinkError,
22 | SecurityException;
23 | }
24 |
--------------------------------------------------------------------------------
/videoplayer-java/src/main/java/tv/danmaku/ijk/media/player/exceptions/IjkMediaException.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2013-2014 Bilibili
3 | * Copyright (C) 2013-2014 Zhang Rui
4 | *
5 | * Licensed under the Apache License, Version 2.0 (the "License");
6 | * you may not use this file except in compliance with the License.
7 | * You may obtain a copy of the License at
8 | *
9 | * http://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | package tv.danmaku.ijk.media.player.exceptions;
19 |
20 | public class IjkMediaException extends Exception {
21 | private static final long serialVersionUID = 7234796519009099506L;
22 | }
23 |
--------------------------------------------------------------------------------
/videoplayer-java/src/main/java/tv/danmaku/ijk/media/player/ffmpeg/FFmpegApi.java:
--------------------------------------------------------------------------------
1 | package tv.danmaku.ijk.media.player.ffmpeg;
2 |
3 | public class FFmpegApi {
4 | public static native String av_base64_encode(byte in[]);
5 | }
6 |
--------------------------------------------------------------------------------
/videoplayer-java/src/main/java/tv/danmaku/ijk/media/player/pragma/Pragma.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2013 Bilibili
3 | * Copyright (C) 2013 Zhang Rui
4 | *
5 | * Licensed under the Apache License, Version 2.0 (the "License");
6 | * you may not use this file except in compliance with the License.
7 | * You may obtain a copy of the License at
8 | *
9 | * http://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 | package tv.danmaku.ijk.media.player.pragma;
18 |
19 | /*-
20 | * configurated by app project
21 | */
22 | public class Pragma {
23 | public static final boolean ENABLE_VERBOSE = true;
24 | }
25 |
--------------------------------------------------------------------------------
/videoplayer-java/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | videoplayer-java
3 |
4 |
--------------------------------------------------------------------------------
/videoplayer-java/src/test/java/tv/danmaku/ijk/media/player/ExampleUnitTest.java:
--------------------------------------------------------------------------------
1 | package tv.danmaku.ijk.media.player;
2 |
3 | import org.junit.Test;
4 |
5 | import static org.junit.Assert.*;
6 |
7 | /**
8 | * Example local unit test, which will execute on the development machine (host).
9 | *
10 | * @see Testing documentation
11 | */
12 | public class ExampleUnitTest {
13 | @Test
14 | public void addition_isCorrect() {
15 | assertEquals(4, 2 + 2);
16 | }
17 | }
--------------------------------------------------------------------------------
/videoplayer-videocache/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 |
--------------------------------------------------------------------------------
/videoplayer-videocache/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | # Add project specific ProGuard rules here.
2 | # You can control the set of applied configuration files using the
3 | # proguardFiles setting in build.gradle.
4 | #
5 | # For more details, see
6 | # http://developer.android.com/guide/developing/tools/proguard.html
7 |
8 | # If your project uses WebView with JS, uncomment the following
9 | # and specify the fully qualified class name to the JavaScript interface
10 | # class:
11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
12 | # public *;
13 | #}
14 |
15 | # Uncomment this to preserve the line number information for
16 | # debugging stack traces.
17 | #-keepattributes SourceFile,LineNumberTable
18 |
19 | # If you keep the line number information, uncomment this to
20 | # hide the original source file name.
21 | #-renamesourcefileattribute SourceFile
22 |
--------------------------------------------------------------------------------
/videoplayer-videocache/src/androidTest/java/com/danikula/videocache/ExampleInstrumentedTest.java:
--------------------------------------------------------------------------------
1 | package com.danikula.videocache;/*
2 |
3 | import android.content.Context;
4 | import android.support.test.InstrumentationRegistry;
5 | import android.support.test.runner.AndroidJUnit4;
6 |
7 | import org.junit.Test;
8 | import org.junit.runner.RunWith;
9 |
10 | import static org.junit.Assert.*;*/
11 |
12 | /**
13 | * Instrumented test, which will execute on an Android device.
14 | *
15 | * @see Testing documentation
16 | */
17 | //@RunWith(AndroidJUnit4.class)
18 | public class ExampleInstrumentedTest {
19 | /* @Test
20 | public void useAppContext() throws Exception {
21 | // Context of the app under test.
22 | Context appContext = InstrumentationRegistry.getTargetContext();
23 |
24 | assertEquals("com.danikula.videocache.test", appContext.getPackageName());
25 | }*/
26 | }
27 |
--------------------------------------------------------------------------------
/videoplayer-videocache/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
3 |
--------------------------------------------------------------------------------
/videoplayer-videocache/src/main/java/com/danikula/videocache/Cache.java:
--------------------------------------------------------------------------------
1 | package com.danikula.videocache;
2 |
3 | /**
4 | * Cache for proxy.
5 | */
6 | public interface Cache {
7 |
8 | long available() throws ProxyCacheException;
9 |
10 | int read(byte[] buffer, long offset, int length) throws ProxyCacheException;
11 |
12 | void append(byte[] data, int length) throws ProxyCacheException;
13 |
14 | void close() throws ProxyCacheException;
15 |
16 | void complete() throws ProxyCacheException;
17 |
18 | boolean isCompleted();
19 | }
20 |
--------------------------------------------------------------------------------
/videoplayer-videocache/src/main/java/com/danikula/videocache/CacheListener.java:
--------------------------------------------------------------------------------
1 | package com.danikula.videocache;
2 |
3 | import java.io.File;
4 |
5 | /**
6 | * Listener for cache availability.
7 | *
8 | */
9 | public interface CacheListener {
10 |
11 | void onCacheAvailable(File cacheFile, String url, int percentsAvailable);
12 | }
13 |
--------------------------------------------------------------------------------
/videoplayer-videocache/src/main/java/com/danikula/videocache/InterruptedProxyCacheException.java:
--------------------------------------------------------------------------------
1 | package com.danikula.videocache;
2 |
3 | /**
4 | * Indicates interruption error in work of {@link ProxyCache} fired by user.
5 | */
6 | public class InterruptedProxyCacheException extends ProxyCacheException {
7 |
8 | public InterruptedProxyCacheException(String message) {
9 | super(message);
10 | }
11 |
12 | public InterruptedProxyCacheException(String message, Throwable cause) {
13 | super(message, cause);
14 | }
15 |
16 | public InterruptedProxyCacheException(Throwable cause) {
17 | super(cause);
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/videoplayer-videocache/src/main/java/com/danikula/videocache/ProxyCacheException.java:
--------------------------------------------------------------------------------
1 | package com.danikula.videocache;
2 |
3 | import com.danikula.videocache.BuildConfig;
4 |
5 | /**
6 | * Indicates any error in work of {@link ProxyCache}.
7 | *
8 | */
9 | public class ProxyCacheException extends Exception {
10 |
11 | private static final String LIBRARY_VERSION = ". Version: " + BuildConfig.VERSION_NAME;
12 |
13 | public ProxyCacheException(String message) {
14 | super(message + LIBRARY_VERSION);
15 | }
16 |
17 | public ProxyCacheException(String message, Throwable cause) {
18 | super(message + LIBRARY_VERSION, cause);
19 | }
20 |
21 | public ProxyCacheException(Throwable cause) {
22 | super("No explanation error" + LIBRARY_VERSION, cause);
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/videoplayer-videocache/src/main/java/com/danikula/videocache/SourceInfo.java:
--------------------------------------------------------------------------------
1 | package com.danikula.videocache;
2 |
3 | /**
4 | * Stores source's info.
5 | */
6 | public class SourceInfo {
7 |
8 | public final String url;
9 | public final long length;
10 | public final String mime;
11 |
12 | public SourceInfo(String url, long length, String mime) {
13 | this.url = url;
14 | this.length = length;
15 | this.mime = mime;
16 | }
17 |
18 | @Override
19 | public String toString() {
20 | return "SourceInfo{" +
21 | "url='" + url + '\'' +
22 | ", length=" + length +
23 | ", mime='" + mime + '\'' +
24 | '}';
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/videoplayer-videocache/src/main/java/com/danikula/videocache/file/DiskUsage.java:
--------------------------------------------------------------------------------
1 | package com.danikula.videocache.file;
2 |
3 | import java.io.File;
4 | import java.io.IOException;
5 |
6 | /**
7 | * Declares how {@link FileCache} will use disc space.
8 | *
9 | * @author Alexey Danilov (danikula@gmail.com).
10 | */
11 | public interface DiskUsage {
12 |
13 | void touch(File file) throws IOException;
14 |
15 | }
16 |
--------------------------------------------------------------------------------
/videoplayer-videocache/src/main/java/com/danikula/videocache/file/FileNameGenerator.java:
--------------------------------------------------------------------------------
1 | package com.danikula.videocache.file;
2 |
3 | /**
4 | * Generator for files to be used for caching.
5 | *
6 | * @author Alexey Danilov (danikula@gmail.com).
7 | */
8 | public interface FileNameGenerator {
9 |
10 | String generate(String url);
11 |
12 | }
13 |
--------------------------------------------------------------------------------
/videoplayer-videocache/src/main/java/com/danikula/videocache/file/TotalCountLruDiskUsage.java:
--------------------------------------------------------------------------------
1 | package com.danikula.videocache.file;
2 |
3 | import java.io.File;
4 |
5 | /**
6 | * {@link DiskUsage} that uses LRU (Least Recently Used) strategy and trims cache size to max files count if needed.
7 | *
8 | * @author Alexey Danilov (danikula@gmail.com).
9 | */
10 | public class TotalCountLruDiskUsage extends LruDiskUsage {
11 |
12 | private final int maxCount;
13 |
14 | public TotalCountLruDiskUsage(int maxCount) {
15 | if (maxCount <= 0) {
16 | throw new IllegalArgumentException("Max count must be positive number!");
17 | }
18 | this.maxCount = maxCount;
19 | }
20 |
21 | @Override
22 | protected boolean accept(File file, long totalSize, int totalCount) {
23 | return totalCount <= maxCount;
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/videoplayer-videocache/src/main/java/com/danikula/videocache/file/TotalSizeLruDiskUsage.java:
--------------------------------------------------------------------------------
1 | package com.danikula.videocache.file;
2 |
3 | import java.io.File;
4 |
5 | /**
6 | * {@link DiskUsage} that uses LRU (Least Recently Used) strategy and trims cache size to max size if needed.
7 | *
8 | * @author Alexey Danilov (danikula@gmail.com).
9 | */
10 | public class TotalSizeLruDiskUsage extends LruDiskUsage {
11 |
12 | private final long maxSize;
13 |
14 | public TotalSizeLruDiskUsage(long maxSize) {
15 | if (maxSize <= 0) {
16 | throw new IllegalArgumentException("Max size must be positive number!");
17 | }
18 | this.maxSize = maxSize;
19 | }
20 |
21 | @Override
22 | protected boolean accept(File file, long totalSize, int totalCount) {
23 | return totalSize <= maxSize;
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/videoplayer-videocache/src/main/java/com/danikula/videocache/file/UnlimitedDiskUsage.java:
--------------------------------------------------------------------------------
1 | package com.danikula.videocache.file;
2 |
3 | import java.io.File;
4 | import java.io.IOException;
5 |
6 | /**
7 | * Unlimited version of {@link DiskUsage}.
8 | *
9 | * @author Alexey Danilov (danikula@gmail.com).
10 | */
11 | public class UnlimitedDiskUsage implements DiskUsage {
12 |
13 | @Override
14 | public void touch(File file) throws IOException {
15 | // do nothing
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/videoplayer-videocache/src/main/java/com/danikula/videocache/headers/EmptyHeadersInjector.java:
--------------------------------------------------------------------------------
1 | package com.danikula.videocache.headers;
2 |
3 | import java.util.HashMap;
4 | import java.util.Map;
5 |
6 | /**
7 | * Empty {@link HeaderInjector} implementation.
8 | *
9 | * @author Lucas Nelaupe (https://github.com/lucas34).
10 | */
11 | public class EmptyHeadersInjector implements HeaderInjector {
12 |
13 | @Override
14 | public Map addHeaders(String url) {
15 | return new HashMap<>();
16 | }
17 |
18 | }
19 |
--------------------------------------------------------------------------------
/videoplayer-videocache/src/main/java/com/danikula/videocache/headers/HeaderInjector.java:
--------------------------------------------------------------------------------
1 | package com.danikula.videocache.headers;
2 |
3 | import java.util.Map;
4 |
5 | /**
6 | * Allows to add custom headers to server's requests.
7 | *
8 | * @author Lucas Nelaupe (https://github.com/lucas34).
9 | */
10 | public interface HeaderInjector {
11 |
12 | /**
13 | * Adds headers to server's requests for corresponding url.
14 | *
15 | * @param url an url headers will be added for
16 | * @return a map with headers, where keys are header's names, and values are header's values. {@code null} is not acceptable!
17 | */
18 | Map addHeaders(String url);
19 |
20 | }
21 |
--------------------------------------------------------------------------------
/videoplayer-videocache/src/main/java/com/danikula/videocache/sourcestorage/NoSourceInfoStorage.java:
--------------------------------------------------------------------------------
1 | package com.danikula.videocache.sourcestorage;
2 |
3 | import com.danikula.videocache.SourceInfo;
4 |
5 | /**
6 | * {@link SourceInfoStorage} that does nothing.
7 | *
8 | * @author Alexey Danilov (danikula@gmail.com).
9 | */
10 | public class NoSourceInfoStorage implements SourceInfoStorage {
11 |
12 | @Override
13 | public SourceInfo get(String url) {
14 | return null;
15 | }
16 |
17 | @Override
18 | public void put(String url, SourceInfo sourceInfo) {
19 | }
20 |
21 | @Override
22 | public void release() {
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/videoplayer-videocache/src/main/java/com/danikula/videocache/sourcestorage/SourceInfoStorage.java:
--------------------------------------------------------------------------------
1 | package com.danikula.videocache.sourcestorage;
2 |
3 | import com.danikula.videocache.SourceInfo;
4 |
5 | /**
6 | * Storage for {@link SourceInfo}.
7 | *
8 | * @author Alexey Danilov (danikula@gmail.com).
9 | */
10 | public interface SourceInfoStorage {
11 |
12 | SourceInfo get(String url);
13 |
14 | void put(String url, SourceInfo sourceInfo);
15 |
16 | void release();
17 | }
18 |
--------------------------------------------------------------------------------
/videoplayer-videocache/src/main/java/com/danikula/videocache/sourcestorage/SourceInfoStorageFactory.java:
--------------------------------------------------------------------------------
1 | package com.danikula.videocache.sourcestorage;
2 |
3 | import android.content.Context;
4 |
5 | /**
6 | * Simple factory for {@link SourceInfoStorage}.
7 | *
8 | * @author Alexey Danilov (danikula@gmail.com).
9 | */
10 | public class SourceInfoStorageFactory {
11 |
12 | public static SourceInfoStorage newSourceInfoStorage(Context context) {
13 | return new DatabaseSourceInfoStorage(context);
14 | }
15 |
16 | public static SourceInfoStorage newEmptySourceInfoStorage() {
17 | return new NoSourceInfoStorage();
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/videoplayer-videocache/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | videoplayer-androidvideocache
3 |
4 |
--------------------------------------------------------------------------------
/videoplayer-videocache/src/test/java/com/danikula/videocache/ExampleUnitTest.java:
--------------------------------------------------------------------------------
1 | package com.danikula.videocache;
2 |
3 | /*import org.junit.Test;
4 |
5 | import static org.junit.Assert.*;*/
6 |
7 | /**
8 | * Example local unit test, which will execute on the development machine (host).
9 | *
10 | * @see Testing documentation
11 | */
12 | public class ExampleUnitTest {/*
13 | @Test
14 | public void addition_isCorrect() throws Exception {
15 | assertEquals(4, 2 + 2);
16 | }*/
17 | }
--------------------------------------------------------------------------------
/videoplayer/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 |
--------------------------------------------------------------------------------
/videoplayer/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | # Add project specific ProGuard rules here.
2 | # You can control the set of applied configuration files using the
3 | # proguardFiles setting in build.gradle.
4 | #
5 | # For more details, see
6 | # http://developer.android.com/guide/developing/tools/proguard.html
7 |
8 | # If your project uses WebView with JS, uncomment the following
9 | # and specify the fully qualified class name to the JavaScript interface
10 | # class:
11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
12 | # public *;
13 | #}
14 |
15 | # Uncomment this to preserve the line number information for
16 | # debugging stack traces.
17 | #-keepattributes SourceFile,LineNumberTable
18 |
19 | # If you keep the line number information, uncomment this to
20 | # hide the original source file name.
21 | #-renamesourcefileattribute SourceFile
22 |
--------------------------------------------------------------------------------
/videoplayer/src/androidTest/java/com/ybj366533/videoplayer/ExampleInstrumentedTest.java:
--------------------------------------------------------------------------------
1 | package com.ybj366533.videoplayer;
2 | /*
3 | import android.content.Context;
4 | import android.support.test.InstrumentationRegistry;
5 | import android.support.test.runner.AndroidJUnit4;
6 |
7 | import org.junit.Test;
8 | import org.junit.runner.RunWith;
9 |
10 | import static org.junit.Assert.*;*/
11 |
12 | /**
13 | * Instrumented test, which will execute on an Android device.
14 | *
15 | * @see Testing documentation
16 | */
17 | //@RunWith(AndroidJUnit4.class)
18 | public class ExampleInstrumentedTest {
19 | /* @Test
20 | public void useAppContext() throws Exception {
21 | // Context of the app under test.
22 | Context appContext = InstrumentationRegistry.getTargetContext();
23 |
24 | assertEquals("com.ybj366533.videoplayer.test", appContext.getPackageName());
25 | }*/
26 | }
27 |
--------------------------------------------------------------------------------
/videoplayer/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/videoplayer/src/main/java/com/ybj366533/videoplayer/listener/LockClickListener.java:
--------------------------------------------------------------------------------
1 | package com.ybj366533.videoplayer.listener;
2 |
3 | import android.view.View;
4 |
5 | /**
6 | */
7 |
8 | public interface LockClickListener {
9 | void onClick(View view, boolean lock);
10 | }
11 |
--------------------------------------------------------------------------------
/videoplayer/src/main/java/com/ybj366533/videoplayer/listener/MediaPlayerListener.java:
--------------------------------------------------------------------------------
1 | package com.ybj366533.videoplayer.listener;
2 |
3 | public interface MediaPlayerListener {
4 | void onPrepared();
5 |
6 | void onAutoCompletion();
7 |
8 | void onCompletion();
9 |
10 | void onBufferingUpdate(int percent);
11 |
12 | void onSeekComplete();
13 |
14 | void onError(int what, int extra);
15 |
16 | void onInfo(int what, int extra);
17 |
18 | void onVideoSizeChanged();
19 |
20 | void onBackFullscreen();
21 |
22 | void onVideoPause();
23 |
24 | void onVideoResume();
25 |
26 | void onVideoResume(boolean seek);
27 | }
28 |
--------------------------------------------------------------------------------
/videoplayer/src/main/java/com/ybj366533/videoplayer/listener/VideoGifSaveListener.java:
--------------------------------------------------------------------------------
1 | package com.ybj366533.videoplayer.listener;
2 |
3 | import java.io.File;
4 |
5 | /**
6 | * Gif图创建的监听
7 | */
8 |
9 | public interface VideoGifSaveListener {
10 |
11 | void process(int curPosition, int total);
12 |
13 | void result(boolean success, File file);
14 | }
15 |
--------------------------------------------------------------------------------
/videoplayer/src/main/java/com/ybj366533/videoplayer/listener/VideoProgressListener.java:
--------------------------------------------------------------------------------
1 | package com.ybj366533.videoplayer.listener;
2 |
3 | /**
4 | * 进度回调
5 | */
6 | public interface VideoProgressListener {
7 | /**
8 | * @param progress 当前播放进度(暂停后再播放可能会有跳动)
9 | * @param secProgress 当前内存缓冲进度(可能会有0值)
10 | * @param currentPosition 当前播放位置(暂停后再播放可能会有跳动)
11 | * @param duration 总时长
12 | */
13 | void onProgress(int progress, int secProgress, int currentPosition, int duration);
14 | }
15 |
--------------------------------------------------------------------------------
/videoplayer/src/main/java/com/ybj366533/videoplayer/listener/VideoShotListener.java:
--------------------------------------------------------------------------------
1 | package com.ybj366533.videoplayer.listener;
2 |
3 | import android.graphics.Bitmap;
4 |
5 | /**
6 | * 截屏bitmap返回
7 | */
8 |
9 | public interface VideoShotListener {
10 | void getBitmap(Bitmap bitmap);
11 | }
12 |
--------------------------------------------------------------------------------
/videoplayer/src/main/java/com/ybj366533/videoplayer/listener/VideoShotSaveListener.java:
--------------------------------------------------------------------------------
1 | package com.ybj366533.videoplayer.listener;
2 |
3 |
4 | import java.io.File;
5 |
6 | /**
7 | * 截屏保存结果
8 | */
9 |
10 | public interface VideoShotSaveListener {
11 | void result(boolean success, File file);
12 | }
13 |
--------------------------------------------------------------------------------
/videoplayer/src/main/java/com/ybj366533/videoplayer/model/VideoEntity.java:
--------------------------------------------------------------------------------
1 | package com.ybj366533.videoplayer.model;
2 |
3 | /**
4 | *
5 | */
6 |
7 | public class VideoEntity {
8 |
9 | private String mUrl;
10 | private String mTitle;
11 |
12 | public VideoEntity(String url, String title) {
13 | mUrl = url;
14 | mTitle = title;
15 | }
16 |
17 | public String getUrl() {
18 | return mUrl;
19 | }
20 |
21 | public void setUrl(String url) {
22 | this.mUrl = url;
23 | }
24 |
25 | public String getTitle() {
26 | return mTitle;
27 | }
28 |
29 | public void setTitle(String title) {
30 | this.mTitle = title;
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/videoplayer/src/main/java/com/ybj366533/videoplayer/player/IPlayerManager.java:
--------------------------------------------------------------------------------
1 | package com.ybj366533.videoplayer.player;
2 |
3 | import android.content.Context;
4 | import android.os.Message;
5 |
6 | import com.ybj366533.videoplayer.model.VideoOptionModel;
7 |
8 | import java.util.List;
9 |
10 | import tv.danmaku.ijk.media.player.IMediaPlayer;
11 |
12 | /**
13 | * 播放器差异管理接口
14 | */
15 |
16 | public interface IPlayerManager {
17 |
18 | IMediaPlayer getMediaPlayer();
19 |
20 | void initVideoPlayer(Context context, Message message, List optionModelList);
21 |
22 | void showDisplay(Message msg);
23 |
24 | void setSpeed(float speed, boolean soundTouch);
25 |
26 | void setNeedMute(boolean needMute);
27 |
28 | void releaseSurface();
29 |
30 | void release();
31 |
32 | }
33 |
--------------------------------------------------------------------------------
/videoplayer/src/main/java/com/ybj366533/videoplayer/render/effect/NoEffect.java:
--------------------------------------------------------------------------------
1 | package com.ybj366533.videoplayer.render.effect;
2 |
3 | import android.opengl.GLSurfaceView;
4 |
5 | import com.ybj366533.videoplayer.render.view.MiguVideoGLView;
6 |
7 |
8 | /**
9 | * Displays the normal video without any effect.
10 | *
11 | */
12 | public class NoEffect implements MiguVideoGLView.ShaderInterface {
13 | /**
14 | * Initialize
15 | */
16 | public NoEffect() {
17 | }
18 |
19 | @Override
20 | public String getShader(GLSurfaceView mGlSurfaceView) {
21 |
22 | String shader = "#extension GL_OES_EGL_image_external : require\n"
23 | + "precision mediump float;\n"
24 | + "varying vec2 vTextureCoord;\n"
25 | + "uniform samplerExternalOES sTexture;\n" + "void main() {\n"
26 | + " gl_FragColor = texture2D(sTexture, vTextureCoord);\n"
27 | + "}\n";
28 |
29 | return shader;
30 |
31 | }
32 | }
--------------------------------------------------------------------------------
/videoplayer/src/main/java/com/ybj366533/videoplayer/render/view/listener/IMiGuSurfaceListener.java:
--------------------------------------------------------------------------------
1 | package com.ybj366533.videoplayer.render.view.listener;
2 |
3 | import android.view.Surface;
4 |
5 | /**
6 | * Surface 状态变化回调
7 | * Created by guoshuyu on 2018/1/29.
8 | */
9 |
10 | public interface IMiGuSurfaceListener {
11 | void onSurfaceAvailable(Surface surface);
12 |
13 | void onSurfaceSizeChanged(Surface surface, int width, int height);
14 |
15 | boolean onSurfaceDestroyed(Surface surface);
16 |
17 | void onSurfaceUpdated(Surface surface);
18 | }
19 |
--------------------------------------------------------------------------------
/videoplayer/src/main/java/com/ybj366533/videoplayer/render/view/listener/MiGuGLSurfaceListener.java:
--------------------------------------------------------------------------------
1 | package com.ybj366533.videoplayer.render.view.listener;
2 |
3 | import android.view.Surface;
4 |
5 | /**
6 | * GLSurfaceView surface 状态变化回调
7 | * Created by guoshuyu on 2018/1/29.
8 | */
9 | public interface MiGuGLSurfaceListener {
10 | void onSurfaceAvailable(Surface surface);
11 | }
--------------------------------------------------------------------------------
/videoplayer/src/main/java/com/ybj366533/videoplayer/render/view/listener/VideoGLRenderErrorListener.java:
--------------------------------------------------------------------------------
1 | package com.ybj366533.videoplayer.render.view.listener;
2 |
3 | import com.ybj366533.videoplayer.render.glrender.VideoGLViewBaseRender;
4 |
5 | /**
6 | * GL渲染错误
7 | * Created by guoshuyu on 2018/1/14.
8 | */
9 | public interface VideoGLRenderErrorListener {
10 | /**
11 | *
12 | * @param render
13 | * @param Error 错误文本
14 | * @param code 错误代码
15 | * @param byChangedRenderError 错误是因为切换effect导致的
16 | */
17 | void onError(VideoGLViewBaseRender render, String Error, int code, boolean byChangedRenderError);
18 | }
19 |
--------------------------------------------------------------------------------
/videoplayer/src/main/java/com/ybj366533/videoplayer/utils/MyFileNameGenerator.java:
--------------------------------------------------------------------------------
1 | package com.ybj366533.videoplayer.utils;
2 |
3 | import android.net.Uri;
4 |
5 | import com.danikula.videocache.file.FileNameGenerator;
6 |
7 | public class MyFileNameGenerator implements FileNameGenerator {
8 |
9 | // Urls contain mutable parts (parameter 'sessionToken') and stable video's id (parameter 'videoId').
10 | // e. g. http://example.com?videoId=abcqaz&sessionToken=xyz987
11 | public String generate(String url) {
12 | Uri uri = Uri.parse(url);
13 | String videoId = uri.getQueryParameter("st");
14 | return videoId;
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/videoplayer/src/main/java/com/ybj366533/videoplayer/widget/seekbar/IndicatorSeekBarListener.java:
--------------------------------------------------------------------------------
1 | package com.ybj366533.videoplayer.widget.seekbar;
2 |
3 |
4 | /**
5 | * 进度条监听回调
6 | */
7 |
8 | public interface IndicatorSeekBarListener {
9 | // void onSeekBarClick();
10 | //
11 | // void onSeekBarStart();
12 | //
13 | // void onSeekBarStop();
14 |
15 | void onSeekTo(float progress);
16 |
17 | void onProgressChanged(float progress);
18 | }
19 |
--------------------------------------------------------------------------------
/videoplayer/src/main/java/com/ybj366533/videoplayer/widget/seekbar/IndicatorSeekBarType.java:
--------------------------------------------------------------------------------
1 | package com.ybj366533.videoplayer.widget.seekbar;
2 |
3 |
4 | /**
5 | * created by Summer on 2017/9/11
6 | */
7 | public interface IndicatorSeekBarType {
8 | /**
9 | * seek bar slides smoothly.
10 | */
11 | int CONTINUOUS = 0;
12 | /**
13 | * seek bar with end side text slides smoothly.
14 | */
15 | int CONTINUOUS_TEXTS_ENDS = 1;
16 | /**
17 | * seek bar with tick marks will slide with a block length.
18 | */
19 | int DISCRETE_TICKS = 2;
20 | /**
21 | * seek bar with tick marks and texts below marks will slide with a block length.
22 | */
23 | int DISCRETE_TICKS_TEXTS = 3;
24 | /**
25 | * seek bar with tick marks and texts below marks of both end sides will slide with a block length.
26 | */
27 | int DISCRETE_TICKS_TEXTS_ENDS = 4;
28 | }
--------------------------------------------------------------------------------
/videoplayer/src/main/java/com/ybj366533/videoplayer/widget/seekbar/IndicatorType.java:
--------------------------------------------------------------------------------
1 | package com.ybj366533.videoplayer.widget.seekbar;
2 |
3 | /**
4 | * created by Summer on 2017/9/9
5 | */
6 |
7 | public interface IndicatorType {
8 | /**
9 | * the indicator corners is square shape
10 | */
11 | int RECTANGLE = 0;
12 | /**
13 | * the indicator corners is rounded shape
14 | */
15 | int RECTANGLE_ROUNDED_CORNER = 1;
16 | /**
17 | * the indicator shape like water-drop
18 | */
19 | int CIRCULAR_BUBBLE = 2;
20 | /**
21 | * set custom indicator you want.
22 | */
23 | int CUSTOM = 3;
24 |
25 | }
--------------------------------------------------------------------------------
/videoplayer/src/main/java/com/ybj366533/videoplayer/widget/seekbar/TickType.java:
--------------------------------------------------------------------------------
1 | package com.ybj366533.videoplayer.widget.seekbar;
2 |
3 | /**
4 | * created by Summer on 2017/9/11
5 | */
6 |
7 | public interface TickType {
8 | /**
9 | * not show tickMarks
10 | */
11 | int NONE = 0;
12 | /**
13 | * show tickMarks shape as regular rectangle
14 | */
15 | int REC = 1;
16 | /**
17 | * show tickMarks shape as regular oval
18 | */
19 | int OVAL = 2;
20 | }
--------------------------------------------------------------------------------
/videoplayer/src/main/java/com/ybj366533/videoplayer/widget/viewpager/OnViewPagerListener.java:
--------------------------------------------------------------------------------
1 | package com.ybj366533.videoplayer.widget.viewpager;
2 |
3 | /**
4 | * Created by Summer
5 | * 用于ViewPagerLayoutManager的监听
6 | */
7 |
8 | public interface OnViewPagerListener {
9 |
10 | /*释放的监听*/
11 | void onPageRelease(boolean isNext,int position);
12 |
13 | /*选中的监听以及判断是否滑动到底部*/
14 | void onPageSelected(int position,boolean isBottom);
15 |
16 | /*布局完成的监听*/
17 | void onLayoutComplete();
18 |
19 | }
20 |
--------------------------------------------------------------------------------
/videoplayer/src/main/res/drawable-xxhdpi/images_0.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ybj366533/YY-VideoPlayer/9b203b5128d971f2631d7f97fed87de6af7d8a0c/videoplayer/src/main/res/drawable-xxhdpi/images_0.jpeg
--------------------------------------------------------------------------------
/videoplayer/src/main/res/drawable-xxhdpi/images_1.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ybj366533/YY-VideoPlayer/9b203b5128d971f2631d7f97fed87de6af7d8a0c/videoplayer/src/main/res/drawable-xxhdpi/images_1.jpeg
--------------------------------------------------------------------------------
/videoplayer/src/main/res/drawable-xxhdpi/images_10.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ybj366533/YY-VideoPlayer/9b203b5128d971f2631d7f97fed87de6af7d8a0c/videoplayer/src/main/res/drawable-xxhdpi/images_10.jpeg
--------------------------------------------------------------------------------
/videoplayer/src/main/res/drawable-xxhdpi/images_2.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ybj366533/YY-VideoPlayer/9b203b5128d971f2631d7f97fed87de6af7d8a0c/videoplayer/src/main/res/drawable-xxhdpi/images_2.jpeg
--------------------------------------------------------------------------------
/videoplayer/src/main/res/drawable-xxhdpi/images_3.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ybj366533/YY-VideoPlayer/9b203b5128d971f2631d7f97fed87de6af7d8a0c/videoplayer/src/main/res/drawable-xxhdpi/images_3.jpeg
--------------------------------------------------------------------------------
/videoplayer/src/main/res/drawable-xxhdpi/images_4.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ybj366533/YY-VideoPlayer/9b203b5128d971f2631d7f97fed87de6af7d8a0c/videoplayer/src/main/res/drawable-xxhdpi/images_4.jpeg
--------------------------------------------------------------------------------
/videoplayer/src/main/res/drawable-xxhdpi/images_5.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ybj366533/YY-VideoPlayer/9b203b5128d971f2631d7f97fed87de6af7d8a0c/videoplayer/src/main/res/drawable-xxhdpi/images_5.jpeg
--------------------------------------------------------------------------------
/videoplayer/src/main/res/drawable-xxhdpi/images_6.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ybj366533/YY-VideoPlayer/9b203b5128d971f2631d7f97fed87de6af7d8a0c/videoplayer/src/main/res/drawable-xxhdpi/images_6.jpeg
--------------------------------------------------------------------------------
/videoplayer/src/main/res/drawable-xxhdpi/images_7.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ybj366533/YY-VideoPlayer/9b203b5128d971f2631d7f97fed87de6af7d8a0c/videoplayer/src/main/res/drawable-xxhdpi/images_7.jpeg
--------------------------------------------------------------------------------
/videoplayer/src/main/res/drawable-xxhdpi/images_8.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ybj366533/YY-VideoPlayer/9b203b5128d971f2631d7f97fed87de6af7d8a0c/videoplayer/src/main/res/drawable-xxhdpi/images_8.jpeg
--------------------------------------------------------------------------------
/videoplayer/src/main/res/drawable-xxhdpi/images_9.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ybj366533/YY-VideoPlayer/9b203b5128d971f2631d7f97fed87de6af7d8a0c/videoplayer/src/main/res/drawable-xxhdpi/images_9.jpeg
--------------------------------------------------------------------------------
/videoplayer/src/main/res/drawable-xxhdpi/isb_indicator_rounded_corners.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/videoplayer/src/main/res/drawable-xxhdpi/isb_indicator_square_corners.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/videoplayer/src/main/res/drawable-xxhdpi/loading_progress.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ybj366533/YY-VideoPlayer/9b203b5128d971f2631d7f97fed87de6af7d8a0c/videoplayer/src/main/res/drawable-xxhdpi/loading_progress.gif
--------------------------------------------------------------------------------
/videoplayer/src/main/res/drawable-xxhdpi/lock.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ybj366533/YY-VideoPlayer/9b203b5128d971f2631d7f97fed87de6af7d8a0c/videoplayer/src/main/res/drawable-xxhdpi/lock.png
--------------------------------------------------------------------------------
/videoplayer/src/main/res/drawable-xxhdpi/message_tip_bg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ybj366533/YY-VideoPlayer/9b203b5128d971f2631d7f97fed87de6af7d8a0c/videoplayer/src/main/res/drawable-xxhdpi/message_tip_bg.png
--------------------------------------------------------------------------------
/videoplayer/src/main/res/drawable-xxhdpi/migu.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ybj366533/YY-VideoPlayer/9b203b5128d971f2631d7f97fed87de6af7d8a0c/videoplayer/src/main/res/drawable-xxhdpi/migu.png
--------------------------------------------------------------------------------
/videoplayer/src/main/res/drawable-xxhdpi/share_normal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ybj366533/YY-VideoPlayer/9b203b5128d971f2631d7f97fed87de6af7d8a0c/videoplayer/src/main/res/drawable-xxhdpi/share_normal.png
--------------------------------------------------------------------------------
/videoplayer/src/main/res/drawable-xxhdpi/share_pressed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ybj366533/YY-VideoPlayer/9b203b5128d971f2631d7f97fed87de6af7d8a0c/videoplayer/src/main/res/drawable-xxhdpi/share_pressed.png
--------------------------------------------------------------------------------
/videoplayer/src/main/res/drawable-xxhdpi/unlock.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ybj366533/YY-VideoPlayer/9b203b5128d971f2631d7f97fed87de6af7d8a0c/videoplayer/src/main/res/drawable-xxhdpi/unlock.png
--------------------------------------------------------------------------------
/videoplayer/src/main/res/drawable-xxhdpi/video_back.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ybj366533/YY-VideoPlayer/9b203b5128d971f2631d7f97fed87de6af7d8a0c/videoplayer/src/main/res/drawable-xxhdpi/video_back.png
--------------------------------------------------------------------------------
/videoplayer/src/main/res/drawable-xxhdpi/video_backward_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ybj366533/YY-VideoPlayer/9b203b5128d971f2631d7f97fed87de6af7d8a0c/videoplayer/src/main/res/drawable-xxhdpi/video_backward_icon.png
--------------------------------------------------------------------------------
/videoplayer/src/main/res/drawable-xxhdpi/video_brightness_6_white_36dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ybj366533/YY-VideoPlayer/9b203b5128d971f2631d7f97fed87de6af7d8a0c/videoplayer/src/main/res/drawable-xxhdpi/video_brightness_6_white_36dp.png
--------------------------------------------------------------------------------
/videoplayer/src/main/res/drawable-xxhdpi/video_enlarge.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ybj366533/YY-VideoPlayer/9b203b5128d971f2631d7f97fed87de6af7d8a0c/videoplayer/src/main/res/drawable-xxhdpi/video_enlarge.png
--------------------------------------------------------------------------------
/videoplayer/src/main/res/drawable-xxhdpi/video_error_normal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ybj366533/YY-VideoPlayer/9b203b5128d971f2631d7f97fed87de6af7d8a0c/videoplayer/src/main/res/drawable-xxhdpi/video_error_normal.png
--------------------------------------------------------------------------------
/videoplayer/src/main/res/drawable-xxhdpi/video_error_pressed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ybj366533/YY-VideoPlayer/9b203b5128d971f2631d7f97fed87de6af7d8a0c/videoplayer/src/main/res/drawable-xxhdpi/video_error_pressed.png
--------------------------------------------------------------------------------
/videoplayer/src/main/res/drawable-xxhdpi/video_forward_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ybj366533/YY-VideoPlayer/9b203b5128d971f2631d7f97fed87de6af7d8a0c/videoplayer/src/main/res/drawable-xxhdpi/video_forward_icon.png
--------------------------------------------------------------------------------
/videoplayer/src/main/res/drawable-xxhdpi/video_loading_bg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ybj366533/YY-VideoPlayer/9b203b5128d971f2631d7f97fed87de6af7d8a0c/videoplayer/src/main/res/drawable-xxhdpi/video_loading_bg.png
--------------------------------------------------------------------------------
/videoplayer/src/main/res/drawable-xxhdpi/video_pause_normal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ybj366533/YY-VideoPlayer/9b203b5128d971f2631d7f97fed87de6af7d8a0c/videoplayer/src/main/res/drawable-xxhdpi/video_pause_normal.png
--------------------------------------------------------------------------------
/videoplayer/src/main/res/drawable-xxhdpi/video_pause_pressed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ybj366533/YY-VideoPlayer/9b203b5128d971f2631d7f97fed87de6af7d8a0c/videoplayer/src/main/res/drawable-xxhdpi/video_pause_pressed.png
--------------------------------------------------------------------------------
/videoplayer/src/main/res/drawable-xxhdpi/video_play_normal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ybj366533/YY-VideoPlayer/9b203b5128d971f2631d7f97fed87de6af7d8a0c/videoplayer/src/main/res/drawable-xxhdpi/video_play_normal.png
--------------------------------------------------------------------------------
/videoplayer/src/main/res/drawable-xxhdpi/video_play_pressed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ybj366533/YY-VideoPlayer/9b203b5128d971f2631d7f97fed87de6af7d8a0c/videoplayer/src/main/res/drawable-xxhdpi/video_play_pressed.png
--------------------------------------------------------------------------------
/videoplayer/src/main/res/drawable-xxhdpi/video_shrink.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ybj366533/YY-VideoPlayer/9b203b5128d971f2631d7f97fed87de6af7d8a0c/videoplayer/src/main/res/drawable-xxhdpi/video_shrink.png
--------------------------------------------------------------------------------
/videoplayer/src/main/res/drawable-xxhdpi/video_small_close.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ybj366533/YY-VideoPlayer/9b203b5128d971f2631d7f97fed87de6af7d8a0c/videoplayer/src/main/res/drawable-xxhdpi/video_small_close.png
--------------------------------------------------------------------------------
/videoplayer/src/main/res/drawable-xxhdpi/video_volume_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ybj366533/YY-VideoPlayer/9b203b5128d971f2631d7f97fed87de6af7d8a0c/videoplayer/src/main/res/drawable-xxhdpi/video_volume_icon.png
--------------------------------------------------------------------------------
/videoplayer/src/main/res/drawable/empty_drawable.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 |
--------------------------------------------------------------------------------
/videoplayer/src/main/res/drawable/video_click_error_selector.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/videoplayer/src/main/res/drawable/video_click_pause_selector.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/videoplayer/src/main/res/drawable/video_click_play_selector.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/videoplayer/src/main/res/drawable/video_dialog_progress.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | -
4 |
5 |
6 |
7 |
8 |
9 | -
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/videoplayer/src/main/res/drawable/video_dialog_progress_bg.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
9 |
10 |
--------------------------------------------------------------------------------
/videoplayer/src/main/res/drawable/video_jump_btn_bg.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/videoplayer/src/main/res/drawable/video_loading.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
--------------------------------------------------------------------------------
/videoplayer/src/main/res/drawable/video_seek_thumb.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/videoplayer/src/main/res/drawable/video_seek_thumb_normal.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
8 |
9 |
--------------------------------------------------------------------------------
/videoplayer/src/main/res/drawable/video_seek_thumb_pressed.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
8 |
9 |
--------------------------------------------------------------------------------
/videoplayer/src/main/res/drawable/video_title_bg.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 |
8 |
--------------------------------------------------------------------------------
/videoplayer/src/main/res/drawable/video_volume_progress_bg.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | -
4 |
5 |
6 |
7 |
8 |
9 | -
10 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/videoplayer/src/main/res/layout/table_media_info.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/videoplayer/src/main/res/layout/table_media_info_row1.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
12 |
13 |
20 |
21 |
--------------------------------------------------------------------------------
/videoplayer/src/main/res/layout/table_media_info_row2.xml:
--------------------------------------------------------------------------------
1 |
2 |
9 |
10 |
15 |
16 |
23 |
24 |
--------------------------------------------------------------------------------
/videoplayer/src/main/res/layout/table_media_info_section.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
14 |
15 |
--------------------------------------------------------------------------------
/videoplayer/src/main/res/layout/video_layout_page.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
13 |
14 |
15 |
23 |
24 |
25 |
--------------------------------------------------------------------------------
/videoplayer/src/main/res/values/attrs.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/videoplayer/src/main/res/values/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | 80dp
5 | 24dp
6 |
7 |
8 | 150dp
9 | 40dp
10 |
--------------------------------------------------------------------------------
/videoplayer/src/main/res/values/id.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/videoplayer/src/test/java/com/ybj366533/videoplayer/ExampleUnitTest.java:
--------------------------------------------------------------------------------
1 | package com.ybj366533.videoplayer;
2 |
3 | /*import org.junit.Test;
4 |
5 | import static org.junit.Assert.*;*/
6 |
7 | /**
8 | * Example local unit test, which will execute on the development machine (host).
9 | *
10 | * @see Testing documentation
11 | */
12 | public class ExampleUnitTest {/*
13 | @Test
14 | public void addition_isCorrect() throws Exception {
15 | assertEquals(4, 2 + 2);
16 | }*/
17 | }
--------------------------------------------------------------------------------