[Android] Selecting a subtitle track when decoding to surfaceview freezes video
Describe the bug if "decode to surfaceview", and select a subtitle track then video freezes (audio is still running fine)
- No issue with GLSurfaceView
- No issue if using
player::updateNativeSurfaceinstead ofplayer::setProperty
To Reproduce
LibMdkJni.setProperty(handle, "video.decoder", "surface=$value")
//value is env->NewGlobalRef(surface) pointer
...after tracks are decoded from mediaInfo
LibMdkJni.setTracks(handle, 3, intArrayOf(trackIndex), 1)
// 3 = mediatype_subtitles
Expected behavior No freeze
Environment:
- OS: Android
Logs
10:43:18.622 mdk-logs 0.30.1 (git 7556ef4) - Multimedia Development Kit. Copyright (c) 2016-2025 WangBin(QtAV author) <wbsecg1 at gmail.com>
Build for: Android21/31 4KB ARMv8 AArch64; libc++180000; Clang18.0.3 (https://android.googlesource.com/toolchain/llvm-project d8003a456d14a3deb8054cdaa529ffbf02d9b262) NDK27.2.12479018; 07:56:08 Jan 25 2025
10:43:18.622 mdk-logs global option: subtitle.fonts.file = assets://fonts/NotoSans-Regular.ttf
10:43:38.540 mdk-logs default 0x71c40e74f0 new FrameReader...
10:43:38.540 mdk-logs Registered audio backends: OpenSL AudioTrack null
10:43:38.541 mdk-logs OpenSL extensions: ANDROID_SDK_LEVEL_31
10:43:38.541 mdk-logs default 0x71c416c750 new FrameReader...
10:43:38.541 mdk-logs Registered audio backends: OpenSL AudioTrack null
10:43:38.541 mdk-logs OpenSL extensions: ANDROID_SDK_LEVEL_31
10:43:38.541 mdk-logs 0x71a40b26f0 player.Player()
10:43:38.541 mdk-logs 0x71a40b26f0 player.onStateChanged(1)
10:43:38.541 mdk-logs 0x71a40b26f0 player.onMediaStatus(1)
10:43:38.541 mdk-logs 0x71a40b26f0 player.onEvent(1, 0x0)
10:43:38.542 mdk-logs 0x71a40b26f0 player.setAudioBackends([AudioTrack, OpenSL])
10:43:38.543 mdk-logs 0x71a40b26f0 player.setDecoders(audio, [FFmpeg])
10:43:38.543 mdk-logs audio decoders: "FFmpeg"
10:43:38.543 mdk-logs audio decoders: "FFmpeg"
10:43:38.543 mdk-logs 0x71a40b26f0 player.setDecoders(video, [AMediaCodec:java=0:surface=1:image=1:acquire=latest:copy=0:async=1:dv=1, FFmpeg])
10:43:38.543 mdk-logs video decoders: "AMediaCodec:java=0:surface=1:image=1:acquire=latest:copy=0:async=1:dv=1", "FFmpeg"
10:43:38.543 mdk-logs video decoders: "AMediaCodec:java=0:surface=1:image=1:acquire=latest:copy=0:async=1:dv=1", "FFmpeg"
10:43:38.543 mdk-logs 0x71a40b26f0 player property: subtitle.scale = 1.0
10:43:38.543 mdk-logs 0x71a40b26f0 player property: subtitle.color = 0xffffffff
10:43:38.543 mdk-logs 0x71a40b26f0 player property: subtitle.color.background = 0x000000ff
10:43:38.547 mdk-logs 0x71e413fd60 default FrameReader0x71c40e74f0 unloaded media's position 0
10:43:38.629 mdk-logs 0x71a40b26f0 player.setMedia(https://github.com/ietf-wg-cellar/matroska-test-files/raw/master/test_files/test5.mkv)
10:43:38.629 mdk-logs default FrameReader0x71c40e74f0 state: 0=>0=>0, 0
10:43:38.629 mdk-logs default0x71c40e74f0 stop, current state: , drequested: 0
10:43:38.629 mdk-logs AudioTrack play/pause ERROR: Invalid object instance
10:43:38.629 mdk-logs default FrameReader0x71c40e74f0 state: 0=>0=>0, 0
10:43:38.629 mdk-logs default0x71c40e74f0 stop, current state: , drequested: 0
10:43:38.629 mdk-logs 0x71a40b26f0 player.prepare(0, ..., 1282)
10:43:38.629 mdk-logs AudioTrack play/pause ERROR: Invalid object instance
10:43:38.629 mdk-logs 0x71e413fd60 MediaControl.prepare(0, ...) https://github.com/ietf-wg-cellar/matroska-test-files/raw/master/test_files/test5.mkv
10:43:38.629 mdk-logs default 0x71c40e74f0 FrameReader.start(0, ...)
10:43:38.629 mdk-logs default 0x71c40e74f0 FrameReader::update MediaStatus 0=>0X2
10:43:38.631 mdk-logs default FrameReader0x71c40e74f0 state: 0=>0=>1, 0
10:43:38.631 mdk-logs default FrameReader0x71c40e74f0 state: 0=>1=>1, 0
10:43:38.631 mdk-logs default FrameReader0x71c40e74f0 request to pause 1, loaded: 0.
10:43:38.631 mdk-logs default FrameReader0x71c40e74f0 state: 0=>1=>2, 0
10:43:38.631 mdk-logs default FrameReader0x71c40e74f0 state requested: 2, current: 0
10:43:38.631 mdk-logs AudioTrack play/pause ERROR: Invalid object instance
10:43:38.631 mdk-logs 0x71c40e74f0start frame reader thread: 483950861488
10:43:38.633 mdk-logs Selected avformat runtime version: 61.7.100 (build: 61.7.100), license: LGPL version 2.1 or later
10:43:38.633 mdk-logs 0x71a40b26f0 player.set(1)avformat_version
10:43:38.633 mdk-logs 0x71e413fd60 virtual void mdk::MediaControlPush::setState(PlaybackState)@1101 requested state 2=>1, current state 0. status: 0X2
10:43:38.633 mdk-logs AudioTrack play/pause ERROR: Invalid object instance
10:43:38.633 mdk-logs default FrameReader0x71c40e74f0 request to pause 0, loaded: 0.
10:43:38.633 mdk-logs default FrameReader0x71c40e74f0 state: 0=>2=>1, 0
10:43:38.633 mdk-logs default FrameReader0x71c40e74f0 state requested: 1, current: 0
10:43:38.633 mdk-logs 0x703017122c
10:43:38.633 mdk-logs Trying MediaIO FFmpeg
10:43:38.634 mdk-logs 0x71640822f0 open url: https://github.com/ietf-wg-cellar/matroska-test-files/raw/master/test_files/test5.mkv
10:43:38.635 mdk-logs FFmpeg/Libav runtime dc07f98-avbuild
10:43:38.635 mdk-logs Selected avutil runtime version: 59.39.100 (build: 59.39.100), license: LGPL version 2.1 or later
10:43:38.635 mdk-logs global option: ffmpeg.configuration = --extra-version=avbuild --disable-doc --disable-debug --disable-static --enable-shared --enable-runtime-cpudetect --disable-iamf --enable-mediacodec --enable-jni --disable-vulkan --disable-v4l2-m2m --disable-indevs --enable-indev=android_camera --disable-outdevs --disable-postproc --ar=llvm-ar --ranlib=llvm-ranlib --nm=llvm-nm --strip=llvm-strip --target-os=android --arch=arm64 --enable-cross-compile --cross-prefix=aarch64-linux-android- --pkg-config=pkg-config --cc=clang --extra-ldexeflags='-Wl,--gc-sections -Wl,-z,nocopyreloc -pie -fPIE ' --enable-lto --enable-pic --extra-cflags='-Wa,--noexecstack -fdata-sections -ffunction-sections -fstack-protector-strong -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -fPIE -ffast-math -fstrict-aliasing --target=aarch64-none-linux-android21 -D__BIONIC_NO_PAGE_SIZE_MACRO=1' --extra-ldflags='-Wl,--gc-sections -Wl,-z,relro -Wl,-z,now --sysroot /Users/runner/Library/Android/sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/darwin-x86_64//sysroot -fuse-ld=lld -rtlib=compiler-rt --target=aarch64-none-linux-android21 -Wl,-z,max-page-size=16384' --enable-small --disable-outdevs --disable-filters --disable-muxers --disable-encoders --disable-decoders --disable-demuxers --disable-protocols --enable-wolfssl --disable-avdevice --enable-decoder='*sub*,movtext,*web*,aac*,ac3*,eac3*,alac*,ape,ass,av1*,ccaption,cfhd,cook,dca,dnxhd,exr,truehd,*yuv*,flv,flac,gif,h26[3-4]*,hevc*,hap,mp[1-3]*,prores,*[mj]peg*,mlp,mpl2,nellymoser,opus,pcm*,qtrle,*png*,tiff,rawvideo,rv*,sami,srt,ssa,v210*,vc1*,vorbis,vp[6-9]*,wm*,wrapped_avframe' --enable-demuxer='*sub*,*ac3,*ac,*avs*,*[mj]peg*,*vc*,*web*,au,ape,ass,av[1i],concat,dnxhd,dts*,*dash*,*flv,gif,hls,h264,kux,matroska,mov,mp3,mxf,obu,ogg,pcm*,rawvideo,rt*p,spdif,srt,v210*,wav,*pipe,image2' --enable-encoder='*_at,aac,gif,h26[3-4]*,av1*,hevc*,mjpeg*,*png,opus,pcm*,prores*,rawvideo,spdif,speedhq,*jpeg,*png,vp[8-9]*,wrapped_avframe' --enable-muxer='*jpeg,fifo,flv,gif,hls,h264,hevc,image2,mov,mp4,mpegts,matroska,null,pcm*,rawvideo,rt*,spdif,*pipe,*segment,webm,wav' --enable-filter='*null*,afade,*fifo,*format,*resample,aeval,atempo,pan,crop,eq*,framerate,hw*,loudnorm,scale,volume,yadif*' --enable-protocol='cache,concat*,crypto*,data,fd,*file,ftp,h*,i*,pipe,rt*,s*,t*,u*'
10:43:38.636 mdk-logs av_dict_set0x7030226d9c
10:43:38.637 mdk-logs FFmpeg/Libav runtime dc07f98-avbuild
10:43:38.640 mdk-logs 0x71a40b26f0 player property: video.decoder = surface=0
10:43:38.640 mdk-logs 0x71a40b26f0 player property: video.decoder = surface=6738
10:43:38.650 mdk-logs 0x71e413fd60 default FrameReader0x71c40e74f0 unloaded media's position 0
10:43:38.751 mdk-logs 0x71e413fd60 default FrameReader0x71c40e74f0 unloaded media's position 0
10:43:38.756 mdk-logs 0x71640822f0 url opened
10:43:38.759 mdk-logs default 0x71c40e74f0 FrameReader::update MediaStatus 0X2=>0X2
10:43:38.760 mdk-logs 0x7184122f10 avio set class
10:43:38.760 mdk-logs before avformat_open_input. io: 0x71640822f0(FFmpeg)/pb: 0x7184122f10, url: https://github.com/ietf-wg-cellar/matroska-test-files/raw/master/test_files/test5.mkv
10:43:38.853 mdk-logs 0x71e413fd60 default FrameReader0x71c40e74f0 unloaded media's position 0
10:43:38.955 mdk-logs 0x71e413fd60 default FrameReader0x71c40e74f0 unloaded media's position 0
10:43:39.026 mdk-logs after avformat_open_input. pb: 0x7184122f10, iformat: 0x70303089b8, context flags: 2097280, input format flags: 0
10:43:39.057 mdk-logs 0x71e413fd60 default FrameReader0x71c40e74f0 unloaded media's position 0
10:43:39.092 mdk-logs supports 208 ffmpeg sw pixel formats. unsupported: uyyvyy411 rgb8 x2rgb10be x2bgr10be gbrap14be gbrap14le
10:43:39.092 mdk-logs Format: matroska,webm, range: 0 +46665ms, bitrate: 5445236, size: 0
Metadata:
DATE_RELEASED: 2010
creation_time: 2010-08-21T18:06:43.000000Z
COMMENT: Matroska Validation File 8, secondary audio commentary track, misc subtitle tracks
TITLE: Big Buck Bunny - test 8
encoder: libebml v1.0.0 + libmatroska v1.0.0
Streams: 11
Video:
stream#0, range: 0 +0ms, frames: 0
codec: h264 tag: 0 profile: 77 level: 31, yuv420p, bpc:8, bpp:12(8,8,8), channels:(1,1,1), map: 0 1 2 0, bitrate: 0, 1024x576, fps: 24, bframes: 1, primaries: SMPTE170M, trc: BT709, matrix: SMPTE170M, range: Limited
extra data(35): 01 4D 40 1F FF E1 00 14 27 4D 40 1F A9 18 08 00 93 60 0D 41 80 41 AD B0 AD 7B DF 01 01 00 04 28 CE 09 C8
Audio:
stream#1, range: 12 +0ms, frames: 0
codec: aac tag: 0 profile: 1 level: -99, sample size: 0/0, block align: 0, frame_size: 1024, f32p stereo(2) @48000Hz, bitrate: 0
extra data(2): 11 90
stream#8, range: 9 +0ms, frames: 0
codec: aac tag: 0 profile: 1 level: -99, sample size: 0/0, block align: 0, frame_size: 1024, f32p mono(1) @22050Hz, bitrate: 0
extra data(2): 13 88
Metadata:
title: Commentary
language: eng
Subtitle:
stream#2, range: 0 +46665ms codec: subrip
Metadata:
language: eng
stream#3, range: 42 +0ms codec: subrip
Metadata:
language: hun
stream#4, range: 42 +0ms codec: subrip
Metadata:
language: ger
stream#5, range: 42 +0ms codec: subrip
Metadata:
language: fre
stream#6, range: 42 +0ms codec: subrip
Metadata:
language: spa
stream#7, range: 42 +0ms codec: subrip
Metadata:
language: ita
stream#9, range: 42 +0ms codec: subrip
Metadata:
language: jpn
stream#10, range: 42 +0ms codec: subrip
10:43:39.096 mdk-logs Loaded libass runtime: libass.so
10:43:39.096 mdk-logs 483950861488 JMI: JNI Modern Interface. Version 0.1.0
10:43:39.097 mdk-logs [ass] libass API version: 0x1703000
10:43:39.097 mdk-logs [ass] libass source: commit: unknown. 0.17.2
10:43:39.097 mdk-logs [ass] Shaper: FriBidi 1.0.13 (SIMPLE) HarfBuzz-ng 10.2.0 (COMPLEX)
10:43:39.097 mdk-logs CopyToAppFilesDir: assets://fonts/NotoSans-Regular.ttf => /data/user/0/fr.composeplayer.sample/files/mdk/NotoSans-Regular.ttf
10:43:39.097 mdk-logs CopyToAppFilesDir: /data/user/0/fr.composeplayer.sample/files/mdk/NotoSans-Regular.ttf already exists
10:43:39.099 mdk-logs [ass] Loading font file '/data/user/0/fr.composeplayer.sample/files/profileInstalled'
10:43:39.099 mdk-logs [ass] Loading font file '/data/user/0/fr.composeplayer.sample/files/profileinstaller_profileWrittenFor_lastUpdateTime.dat'
10:43:39.099 mdk-logs [ass] Loading font file '/data/user/0/fr.composeplayer.sample/files/mdk'
10:43:39.099 mdk-logs [ass] Error opening memory font 'profileInstalled'
10:43:39.099 mdk-logs [ass] Error opening memory font 'profileinstaller_profileWrittenFor_lastUpdateTime.dat'
10:43:39.105 mdk-logs [ass] Using font provider androidfonts
10:43:39.105 mdk-logs onPropertyChanged color.background = 0x000000ff
10:43:39.105 mdk-logs onPropertyChanged color = 0xffffffff
10:43:39.105 mdk-logs onPropertyChanged scale = 1.0
10:43:39.106 mdk-logs 0x71e413fd60 prepared callback is invoked
10:43:39.106 mdk-logs default 0x71c40e74f0 FrameReader::update MediaStatus 0X2=>0X4
10:43:39.106 mdk-logs 0x71c40e74f0 ***buffering progress 0%***
10:43:39.106 mdk-logs default 0x71c40e74f0 FrameReader::update MediaStatus 0X4=>0X14
10:43:39.106 mdk-logs AudioTrack play/pause ERROR: Invalid object instance
10:43:39.108 mdk-logs ++++++++++++BUFFERING START++++++++++++
10:43:39.108 mdk-logs
10:43:39.108 mdk-logs 0x71a40b26f0 player.set(1)
10:43:39.108 mdk-logs 0x71e413fd60 virtual void mdk::MediaControlPush::setState(PlaybackState)@1101 requested state 1=>1, current state 0. status: 0X14
10:43:39.108 mdk-logs AudioTrack play/pause ERROR: Invalid object instance
10:43:39.108 mdk-logs default FrameReader0x71c40e74f0 request to pause 0, loaded: 4.
10:43:39.108 mdk-logs default FrameReader0x71c40e74f0 state: 0=>1=>1, 0
10:43:39.109 mdk-logs 0x71c40e74f0 start to decode video#0 packet @0.000000/0.000000 pos: 6229
10:43:39.116 mdk-logs default FrameReader0x71c40e74f0 state: 0=>1=>1, 1
10:43:39.116 mdk-logs default FrameReader0x71c40e74f0 update state: 0=>1
10:43:39.116 mdk-logs default FrameReader0x71c40e74f0 state: 1=>1=>2, 1
10:43:39.116 mdk-logs default FrameReader0x71c40e74f0 update state: 1=>2
10:43:39.116 mdk-logs default FrameReader0x71c40e74f0 state: 2=>2=>1, 1
10:43:39.116 mdk-logs default FrameReader0x71c40e74f0 update state: 2=>1
10:43:39.116 mdk-logs 0x71c40e74f0 start to decode audio#1 packet @0.012000/0.012000 pos: 92890
10:43:39.118 mdk-logs 0x71c40e74f0 ***buffering progress 8%***
10:43:39.118 mdk-logs 0x71c40e74f0 ***buffering progress 12%***
10:43:39.118 mdk-logs 0x71c40e74f0 ***buffering progress 14%***
10:43:39.118 mdk-logs 0x71c40e74f0 ***buffering progress 16%***
10:43:39.118 mdk-logs 0x71c40e74f0 ***buffering progress 25%***
10:43:39.118 mdk-logs 0x71c40e74f0 ***buffering progress 29%***
10:43:39.118 mdk-logs 0x71c40e74f0 ***buffering progress 31%***
10:43:39.118 mdk-logs 0x71c40e74f0 ***buffering progress 33%***
10:43:39.124 mdk-logs starting decode loop thread mdk.vdec0@481698266288
10:43:39.124 mdk-logs 0x71c40e74f0 ***buffering progress 41%***
10:43:39.125 mdk-logs starting decode loop thread mdk.adec1@481541209264
10:43:39.125 mdk-logs 0x71c40e74f0 audio stream#1 starting decoding loop from decoder index 0...
10:43:39.125 mdk-logs 0x71c40e74f0 creating audio decoder: FFmpeg...
10:43:39.126 mdk-logs 0x71c40e74f0 opening audio decoder: FFmpeg...
10:43:39.126 mdk-logs opening ffmpeg audio decoder: aac
10:43:39.127 mdk-logs AVCodec.Audio[aac.] decoder: 1 Single threads
10:43:39.127 mdk-logs aac f32p, stereo @48000Hz
10:43:39.127 mdk-logs 0x71c40e74f0 ***buffering progress 46%***
10:43:39.127 mdk-logs 0x71c40e74f0 audio stream#1 sending 1 invalid AOT frame @0.012000s. seeking: 0
10:43:39.127 mdk-logs 0x71e413fd60 1st audio frame @0.012000
10:43:39.128 mdk-logs 0x71e413fd60 seek end audio frame @0.012000 seek_pos_: -1, sync_ao_ 1
10:43:39.128 mdk-logs Selected avfilter runtime version: 10.4.100 (build: 10.4.100), license: LGPL version 2.1 or later
10:43:39.128 mdk-logs 0x71c40e74f0 ***buffering progress 49%***
10:43:39.128 mdk-logs 0x71c40e74f0 ***buffering progress 50%***
10:43:39.132 mdk-logs 0x71c40e74f0 video stream#0 starting decoding loop from decoder index 0...
10:43:39.132 mdk-logs AudioRenderer format: 0x71c40e74f0 ***buffering progress 58%***
10:43:39.132 mdk-logs 0x71c40e74f0 creating video decoder: AMediaCodec:java=0:surface=1:image=1:acquire=latest:copy=0:async=1:dv=1...
10:43:39.133 mdk-logs 0x71c40e74f0 opening video decoder: AMediaCodec...
10:43:39.133 mdk-logs 0x71c40e74f0 ***buffering progress 61%***
10:43:39.133 mdk-logs f32, stereo @0x71c40e74f0 ***buffering progress 63%***
10:43:39.133 mdk-logs 480000x71c40e74f0 ***buffering progress 66%***
10:43:39.134 mdk-logs Hz, requested: f32p, stereo @48000Hz
10:43:39.135 mdk-logs AudioRenderer format changed and reinitialize
10:43:39.135 mdk-logs 0x71c40e74f0 ***buffering progress 75%***481541209264
10:43:39.135 mdk-logs JMI: JNI Modern Interface. Version 0.1.0
10:43:39.136 mdk-logs CodecForMimeType: video/avc, profile: 2, level: -1
10:43:39.137 mdk-logs 0x71c40e74f0 ***buffering progress 78%***
10:43:39.137 mdk-logs 0x71c40e74f0 ***buffering progress 80%***
10:43:39.137 mdk-logs 0x71c40e74f0 ***buffering progress 83%***
10:43:39.137 mdk-logs 481698266288 JMI: JNI Modern Interface. Version 0.1.0
10:43:39.138 mdk-logs 0x71c40e74f0 ***buffering progress 91%***
10:43:39.138 mdk-logs AudioTrack.getMinBufferSize: 32832, AudioOutput: 2048
10:43:39.138 mdk-logs MediaCodecInfo name: c2.sec.amrnb.decoder, mime: audio/3gpp
10:43:39.138 mdk-logs MediaCodecInfo name: c2.sec.amrwb.decoder, mime: audio/amr-wb
10:43:39.138 mdk-logs MediaCodecInfo name: c2.sec.ape.decoder, mime: audio/x-ape
10:43:39.138 mdk-logs MediaCodecInfo name: c2.sec.flac.decoder, mime: audio/flac
10:43:39.138 mdk-logs MediaCodecInfo name: c2.sec.ima.decoder, mime: audio/x-ima
10:43:39.139 mdk-logs MediaCodecInfo name: c2.sec.mp3.decoder, mime: audio/mpeg audio/mpeg-L1 audio/mpeg-L2
10:43:39.139 mdk-logs MediaCodecInfo name: c2.sec.mp43.decoder, mime: video/mp43
10:43:39.139 mdk-logs MediaCodecInfo name: c2.sec.vc1.decoder, mime: video/wvc1 video/x-ms-wmv
10:43:39.139 mdk-logs MediaCodecInfo name: c2.sec.wma.decoder, mime: audio/x-ms-wma
10:43:39.139 mdk-logs MediaCodecInfo name: c2.sec.wmv7.decoder, mime: video/x-ms-wmv7
10:43:39.139 mdk-logs MediaCodecInfo name: c2.sec.wmv8.decoder, mime: video/x-ms-wmv8
10:43:39.139 mdk-logs MediaCodecInfo name: c2.dolby.ac4.decoder, mime: audio/ac4
10:43:39.139 mdk-logs MediaCodecInfo name: OMX.dolby.ac4.decoder, mime: audio/ac4
10:43:39.139 mdk-logs MediaCodecInfo name: c2.dolby.eac3.decoder, mime: audio/ac3 audio/eac3 audio/eac3-joc
10:43:39.139 mdk-logs MediaCodecInfo name: c2.android.aac.decoder, mime: audio/mp4a-latm
10:43:39.139 mdk-logs MediaCodecInfo name: OMX.google.aac.decoder, mime: audio/mp4a-latm
10:43:39.139 mdk-logs MediaCodecInfo name: c2.android.amrnb.decoder, mime: audio/3gpp
10:43:39.139 mdk-logs MediaCodecInfo name: OMX.google.amrnb.decoder, mime: audio/3gpp
10:43:39.139 mdk-logs MediaCodecInfo name: c2.android.amrwb.decoder, mime: audio/amr-wb
10:43:39.139 mdk-logs MediaCodecInfo name: OMX.google.amrwb.decoder, mime: audio/amr-wb
10:43:39.139 mdk-logs MediaCodecInfo name: c2.android.flac.decoder, mime: audio/flac
10:43:39.139 mdk-logs MediaCodecInfo name: OMX.google.flac.decoder, mime: audio/flac
10:43:39.139 mdk-logs MediaCodecInfo name: c2.android.g711.alaw.decoder, mime: audio/g711-alaw
10:43:39.140 mdk-logs MediaCodecInfo name: OMX.google.g711.alaw.decoder, mime: audio/g711-alaw
10:43:39.140 mdk-logs MediaCodecInfo name: c2.android.g711.mlaw.decoder, mime: audio/g711-mlaw
10:43:39.140 mdk-logs MediaCodecInfo name: OMX.google.g711.mlaw.decoder, mime: audio/g711-mlaw
10:43:39.140 mdk-logs MediaCodecInfo name: c2.android.gsm.decoder, mime: audio/gsm
10:43:39.140 mdk-logs MediaCodecInfo name: OMX.google.gsm.decoder, mime: audio/gsm
10:43:39.140 mdk-logs 0x71c40e74f0 ***buffering progress 95%***
10:43:39.140 mdk-logs MediaCodecInfo name: c2.android.mp3.decoder, mime: audio/mpeg
10:43:39.140 mdk-logs MediaCodecInfo name: OMX.google.mp3.decoder, mime: audio/mpeg
10:43:39.140 mdk-logs MediaCodecInfo name: c2.android.opus.decoder, mime: audio/opus
10:43:39.140 mdk-logs MediaCodecInfo name: OMX.google.opus.decoder, mime: audio/opus
10:43:39.140 mdk-logs 0x71c40e74f0 ***buffering progress 100%***
10:43:39.140 mdk-logs default 0x71c40e74f0 FrameReader::update MediaStatus 0X14=>0X124
10:43:39.140 mdk-logs AudioTrack play/pause ERROR: Invalid object instance
10:43:39.141 mdk-logs ++++++++++++BUFFERING END++++++++++++
10:43:39.141 mdk-logs
10:43:39.141 mdk-logs MediaCodecInfo name: c2.android.raw.decoder, mime: audio/raw
10:43:39.141 mdk-logs MediaCodecInfo name: OMX.google.raw.decoder, mime: audio/raw
10:43:39.141 mdk-logs MediaCodecInfo name: c2.android.vorbis.decoder, mime: audio/vorbis
10:43:39.141 mdk-logs MediaCodecInfo name: OMX.google.vorbis.decoder, mime: audio/vorbis
10:43:39.141 mdk-logs MediaCodecInfo name: c2.sec.aac.decoder, mime: audio/mp4a-latm
10:43:39.141 mdk-logs MediaCodecInfo name: OMX.Exynos.avc.dec, mime: video/avc video/avc profile: 2
10:43:39.141 mdk-logs profileLevels count: 5
10:43:39.141 mdk-logs profile: 1 level: 65536
10:43:39.141 mdk-logs profile: 65536 level: 65536
10:43:39.141 mdk-logs profile: 2 level: 65536
10:43:39.141 mdk-logs [Match].
10:43:39.141 mdk-logs MediaCodecInfo name: OMX.Exynos.avc.dec.secure, mime: video/avc video/avc profile: 2
10:43:39.142 mdk-logs profileLevels count: 5
10:43:39.142 mdk-logs profile: 1 level: 65536
10:43:39.142 mdk-logs profile: 65536 level: 65536
10:43:39.142 mdk-logs profile: 2 level: 65536
10:43:39.142 mdk-logs [Match].
10:43:39.142 mdk-logs MediaCodecInfo name: OMX.Exynos.h263.dec, mime: video/3gpp
10:43:39.142 mdk-logs MediaCodecInfo name: OMX.Exynos.hevc.dec, mime: video/hevc
10:43:39.142 mdk-logs MediaCodecInfo name: OMX.Exynos.hevc.dec.secure, mime: video/hevc
10:43:39.142 mdk-logs MediaCodecInfo name: OMX.Exynos.mpeg4.dec, mime: video/mp4v-es
10:43:39.142 mdk-logs MediaCodecInfo name: OMX.Exynos.vp8.dec, mime: video/x-vnd.on2.vp8
10:43:39.142 mdk-logs MediaCodecInfo name: OMX.Exynos.vp9.dec, mime: video/x-vnd.on2.vp9
10:43:39.142 mdk-logs MediaCodecInfo name: OMX.Exynos.vp9.dec.secure, mime: video/x-vnd.on2.vp9
10:43:39.142 mdk-logs MediaCodecInfo name: c2.sec.mpeg4.decoder, mime: video/mp4v-es
10:43:39.142 mdk-logs MediaCodecInfo name: c2.android.av1.decoder, mime: video/av01
10:43:39.142 mdk-logs MediaCodecInfo name: c2.android.avc.decoder, mime: video/avc video/avc profile: 2
10:43:39.142 mdk-logs profileLevels count: 5
10:43:39.142 mdk-logs profile: 65536 level: 65536
10:43:39.143 mdk-logs profile: 1 level: 65536
10:43:39.143 mdk-logs profile: 2 level: 65536
10:43:39.143 mdk-logs [Match].
10:43:39.143 mdk-logs MediaCodecInfo name: OMX.google.h264.decoder, mime: video/avc video/avc profile: 2
10:43:39.143 mdk-logs profileLevels count: 5
10:43:39.143 mdk-logs profile: 65536 level: 65536
10:43:39.143 mdk-logs profile: 1 level: 65536
10:43:39.143 mdk-logs profile: 2 level: 65536
10:43:39.143 mdk-logs [Match].
10:43:39.143 mdk-logs MediaCodecInfo name: c2.android.h263.decoder, mime: video/3gpp
10:43:39.143 mdk-logs MediaCodecInfo name: OMX.google.h263.decoder, mime: video/3gpp
10:43:39.143 mdk-logs MediaCodecInfo name: c2.android.hevc.decoder, mime: video/hevc
10:43:39.143 mdk-logs MediaCodecInfo name: OMX.google.hevc.decoder, mime: video/hevc
10:43:39.143 mdk-logs MediaCodecInfo name: c2.android.mpeg4.decoder, mime: video/mp4v-es
10:43:39.143 mdk-logs MediaCodecInfo name: OMX.google.mpeg4.decoder, mime: video/mp4v-es
10:43:39.143 mdk-logs MediaCodecInfo name: c2.android.vp8.decoder, mime: video/x-vnd.on2.vp8
10:43:39.143 mdk-logs MediaCodecInfo name: OMX.google.vp8.decoder, mime: video/x-vnd.on2.vp8
10:43:39.143 mdk-logs MediaCodecInfo name: c2.android.vp9.decoder, mime: video/x-vnd.on2.vp9
10:43:39.143 mdk-logs MediaCodecInfo name: OMX.google.vp9.decoder, mime: video/x-vnd.on2.vp9
10:43:39.144 mdk-logs found codecs count: 4 | 0
10:43:39.144 mdk-logs video/avc AMediaCodec_createCodecByName: OMX.Exynos.avc.dec
10:43:39.148 mdk-logs AMediaCodec *ndk::AMediaCodec_createCodecByName(const char *) via ndk: true
10:43:39.164 mdk-logs Using audio backend: AudioTrack
10:43:39.170 mdk-logs 0x71e413fd60 ao opened: 1, reopen: 1, bad ao: 0. valid: 0
10:43:39.171 mdk-logs try to convert mp4 extra data to annexb
10:43:39.171 mdk-logs sps count: 1
10:43:39.171 mdk-logs pps count: 1
10:43:39.171 mdk-logs nal length field bytes: 4, annexb extradata size: 32
10:43:39.171 mdk-logs NALU length bytes: 4
10:43:39.171 mdk-logs 0x7154075a10 MediaCodec try to set async mode
10:43:39.172 mdk-logs MediaCodec async mode is ready
10:43:39.172 mdk-logs tunnel: 1, window: 0x0/0, surface: 0x1a52/6738, image: 0
10:43:39.173 mdk-logs 0x71443a35f8 filter graph:
10:43:39.173 mdk-logs +-----------+
| src |default--[48000Hz fltp:stereo]--swr:default
| (abuffer) |
+-----------+
+---------------+
swr:default--[48000Hz flt:stereo]--default| dst |
| (abuffersink) |
+---------------+
+-------------+
src:default--[48000Hz fltp:stereo]--default| swr |default--[48000Hz flt:stereo]--dst:default
| (aresample) |
+-------------+
10:43:39.180 mdk-logs >>>>>>>>1st audio frame (after seek) rendered: 1, ao: 32, a: 12, delta: 20 +0.021333
10:43:39.180 mdk-logs 0x71e413fd60>32 00:00:00.0/00:00:46 cache 0v 2.5s/2594KB 40883KB/s
10:43:39.180 mdk-logs 0x71c40e74f0 audio stream#1 AOT frame is sent
10:43:39.186 mdk-logs AMediaCodec selected video codec name: OMX.Exynos.avc.dec
10:43:39.210 mdk-logs 0x71c40e74f0 start to decode subtitle#2 packet @3.549000/3.549000 pos: 3698241
10:43:39.211 mdk-logs starting decode loop thread mdk.sdec2@480541392048
10:43:39.213 mdk-logs 0x71c40e74f0 subtitle stream#2 starting decoding loop from decoder index 0...
10:43:39.213 mdk-logs 0x71c40e74f0 creating subtitle decoder: auto...
10:43:39.214 mdk-logs 0x71c40e74f0 opening subtitle decoder: FFmpeg...
10:43:39.214 mdk-logs opening ffmpeg subtitle decoder: subrip
10:43:39.214 mdk-logs AVCodec.Subtitle[subrip.] decoder: 1 Single threads
10:43:39.214 mdk-logs subrip
10:43:39.214 mdk-logs 0x71c40e74f0 decode stored recovery packets: 0
10:43:39.215 mdk-logs 0x71c40e74f0 subtitle stream#2 sending 1 invalid AOT frame @3.549000s. seeking: 0
10:43:39.215 mdk-logs 0x71e413fd60 1st subtitle frame @3.549000
10:43:39.220 mdk-logs 0x71e413fd60 seek end subtitle frame @3.549000 seek_pos_: -1
10:43:39.221 mdk-logs 0x71c40e74f0 subtitle stream#2 AOT frame is sent
10:43:39.281 mdk-logs void mdk::on_format(AMediaCodec *, void *, AMediaFormat *) thread: 481114639536
10:43:39.281 mdk-logs MediaFormat: color-range: int32(2), color-standard: int32(4), color-transfer: int32(3), mime: string(video/raw), stride: int32(1024), slice-height: int32(576), color-format: int32(261), crop: Rect(0, 0, 1023, 575), android._dataspace: int32(259), width: int32(1024), height: int32(576), vendor.rtc-ext-dec-caps-vt-driver-version.number: int32(180315), vendor.rtc-ext-dec-low-latency.enable: int32(0), vendor.sec-ext-dec-compressed-color-format: int32(0)}
10:43:39.282 mdk-logs unknown, bpc:0, bpp:0(), channels:(), map: 0 0 0 0
10:43:39.282 mdk-logs size: 1024x576, bytes: 1024x576
10:43:39.282 mdk-logs 0x71c40e74f0 video stream#0 sending 1 invalid AOT frame @0.000000s. seeking: 0
10:43:39.282 mdk-logs 0x71e413fd60 1st video frame to render @0.000000s, sync time: 0.138000
10:43:39.282 mdk-logs 0-track seek end video frame @0.000000 seek_pos_: -1
10:43:39.282 mdk-logs 0x71e413fd60 1st video frame to render @0.000000s, sync time: 0.138000
10:43:39.282 mdk-logs 0x71e413fd60>138 00:00:00.0/00:00:46 cache 0v 3.5s/3597KB 11349KB/s |-138|>4ms update infms
10:43:39.282 mdk-logs 0x71c40e74f0 video stream#0 AOT frame is sent
10:43:39.418 mdk-logs 0x71e413fd60>308 00:00:00.2/00:00:46 cache 0v 3.7s/3801KB 1237KB/s |-16|>4ms update 19.4ms
10:43:39.549 mdk-logs 0x71e413fd60>436 00:00:00.4/00:00:46 cache 0v 3.5s/3605KB 1009KB/s |-19|>4ms update 26.7ms
10:43:39.678 mdk-logs 0x71e413fd60>564 00:00:00.5/00:00:46 cache 0v 3.6s/3762KB 1824KB/s |-21|>4ms update 30.5ms
10:43:39.807 mdk-logs 0x71e413fd60>691 00:00:00.6/00:00:46 cache 0v 3.5s/3582KB 634KB/s |-23|>4ms update 34.9ms
10:43:39.928 mdk-logs 0x71e413fd60>819 00:00:00.7/00:00:46 cache 0v 3.5s/3587KB 623KB/s |-26|>4ms update 42.3ms
10:43:40.055 mdk-logs 0x71e413fd60>917 00:00:00.9/00:00:46 cache 0v 3.4s/3501KB 1386KB/s |+11|>4ms update 42.5ms
10:43:40.188 mdk-logs 0x71e413fd60>1077 00:00:01.0/00:00:46 cache 0v 3.5s/3726KB 1049KB/s |-34|>4ms update 42.5ms
10:43:40.317 mdk-logs 0x71e413fd60>1208 00:00:01.2/00:00:46 cache 0v 3.5s/3599KB 2248KB/s |+4|<4ms update 39.9ms
10:43:40.446 mdk-logs 0x71e413fd60>1333 00:00:01.3/00:00:46 cache 0v 3.4s/3506KB 802KB/s |+0|<4ms update 39.9ms
10:43:40.570 mdk-logs 0x71e413fd60>1461 00:00:01.4/00:00:46 cache 0v 3.4s/3511KB 547KB/s |-3|<4ms update 39.7ms
10:43:40.695 mdk-logs 0x71a40b26f0 player.setActiveTracks(subtitle, {-1})
10:43:40.695 mdk-logs deactivate track 0 of subtitle
10:43:40.695 mdk-logs default 0x71c40e74f0-FrameReader::seek(1546, 0X2)
10:43:40.695 mdk-logs default 0x71c40e74f0 FrameReader::update MediaStatus 0X124=>0X1A4
10:43:40.696 mdk-logs 0x71c40e74f0 default FrameReaderImpl::seekTo(1546, 0X2 #1)
10:43:40.697 mdk-logs 0x71c40e74f0 clear packet queue for stream 2
10:43:40.698 mdk-logs 0x71c40e74f0 subtitle stream#2 EOF/EOS decoded. end: 1
10:43:40.701 mdk-logs 0x71c40e74f0 subtitle stream#2 check loop range for EOS. dec_state.seeking: 0. end: 1, nb_decoded:1
10:43:40.701 mdk-logs default FrameReader0x71c40e74f0 subtitle stream#2 range loop end
10:43:40.702 mdk-logs EOS subtitle frame of track 0
10:43:40.703 mdk-logs 0x71e413fd60>1587 00:00:01.5/00:00:46 cache 0v 0.0s/159KB 752KB/s |-4|<4ms update 39.8ms0x71c40e74f0 subtitle stream#2 decoding loop is finished. packets: 1, pts: [3.549000, 3.549000]
10:43:40.703 mdk-logs
10:43:40.704 mdk-logs virtual int64_t mdk::PacketIOWrapper::seek(int64_t, SeekFlag)@704 seek target(from 0): 1546ms, flags: +FromStart. now: 5.622000
10:43:40.704 mdk-logs default 0x71c40e74f0 FrameReader::update MediaStatus 0X1A4=>0X1A4
10:43:40.704 mdk-logs Seek start. target time: 1546000 avseek flags: 1
10:43:40.705 mdk-logs 0x71a40b26f0 player.setActiveTracks(subtitle, {3})
10:43:40.705 mdk-logs default 0x71c40e74f0-FrameReader::seek(1587, 0X2)
10:43:40.705 mdk-logs default FrameReader 0x71c40e74f0 seek target 1587ms skipped: 1 frequent seek requested
10:43:40.705 mdk-logs [ass] libass API version: 0x1703000
10:43:40.705 mdk-logs [ass] libass source: commit: unknown. 0.17.2
10:43:40.706 mdk-logs [ass] Shaper: FriBidi 1.0.13 (SIMPLE) HarfBuzz-ng 10.2.0 (COMPLEX)
10:43:40.706 mdk-logs CopyToAppFilesDir: assets://fonts/NotoSans-Regular.ttf => /data/user/0/fr.composeplayer.sample/files/mdk/NotoSans-Regular.ttf
10:43:40.706 mdk-logs CopyToAppFilesDir: /data/user/0/fr.composeplayer.sample/files/mdk/NotoSans-Regular.ttf already exists
10:43:40.707 mdk-logs [ass] Loading font file '/data/user/0/fr.composeplayer.sample/files/profileInstalled'
10:43:40.707 mdk-logs [ass] Loading font file '/data/user/0/fr.composeplayer.sample/files/profileinstaller_profileWrittenFor_lastUpdateTime.dat'
10:43:40.707 mdk-logs [ass] Loading font file '/data/user/0/fr.composeplayer.sample/files/mdk'
10:43:40.707 mdk-logs [ass] Error opening memory font 'profileInstalled'
10:43:40.707 mdk-logs [ass] Error opening memory font 'profileinstaller_profileWrittenFor_lastUpdateTime.dat'
10:43:40.717 mdk-logs [ass] Using font provider androidfonts
10:43:40.717 mdk-logs onPropertyChanged color.background = 0x000000ff
10:43:40.717 mdk-logs onPropertyChanged color = 0xffffffff
10:43:40.717 mdk-logs onPropertyChanged scale = 1.0
10:43:40.738 mdk-logs 0x71c40e74f0 audio stream#1 is seeking #1... got flush pkt. flush decoder and drop frames until seek target 1.5420s...
10:43:40.738 mdk-logs invalid audio frame @-1.000000
10:43:40.738 mdk-logs 0x71c40e74f0 ***buffering progress 0%***
10:43:40.738 mdk-logs default 0x71c40e74f0 FrameReader::update MediaStatus 0X1A4=>0X194
10:43:40.739 mdk-logs ++++++++++++BUFFERING START++++++++++++
10:43:40.740 mdk-logs
10:43:40.868 mdk-logs 0x71e413fd60>1625 00:00:01.6/00:00:46 cache 0v 0.0s/0KB 752KB/s |+16|>4ms update 48.9ms
10:43:41.116 mdk-logs 0x71e413fd60>1667 00:00:01.6/00:00:46 cache 0v 0.0s/0KB 752KB/s |+58|>4ms update 61.9ms
10:43:41.133 mdk-logs Seek end
10:43:41.134 mdk-logs 1 packets is read after seek. read more to get target pts
10:43:41.144 mdk-logs 1 packets is read after seek. seek result pts: 0.042000s, requested: 1546ms
10:43:41.144 mdk-logs default 0x71c40e74f0 FrameReader::update MediaStatus 0X194=>0X114
10:43:41.144 mdk-logs seek_drop_non_video_: 1542 ms, seek_wait_frame_: 0...
10:43:41.189 mdk-logs 0x71c40e74f0 #1/1 audio seek_done: 1, seek_wait_frame_: 0/1
10:43:41.189 mdk-logs 0x71c40e74f0 audio stream#1 sending 1 invalid AOT frame @1.526000s. seeking: 0
10:43:41.189 mdk-logs 0x71e413fd60 seek end audio frame @1.526000 seek_pos_: -1, sync_ao_ 1
10:43:41.195 mdk-logs 0x71c40e74f0 ***buffering progress 4%***
10:43:41.199 mdk-logs 0x71c40e74f0 ***buffering progress 12%***
10:43:41.200 mdk-logs 0x71c40e74f0 ***buffering progress 17%***
10:43:41.201 mdk-logs 0x71c40e74f0 ***buffering progress 19%***
10:43:41.201 mdk-logs 0x71c40e74f0 ***buffering progress 20%***
10:43:41.202 mdk-logs 0x71c40e74f0 ***buffering progress 29%***
10:43:41.204 mdk-logs 0x71c40e74f0 ***buffering progress 34%***
10:43:41.204 mdk-logs >>>>>>>>1st audio frame (after seek) rendered: 1, ao: 1546, a: 1526, delta: 20 +0.021333
10:43:41.204 mdk-logs 0x71c40e74f0 audio stream#1 AOT frame is sent
10:43:41.205 mdk-logs 0x71c40e74f0 ***buffering progress 36%***
10:43:41.205 mdk-logs 0x71c40e74f0 ***buffering progress 37%***
10:43:41.212 mdk-logs 0x71c40e74f0 ***buffering progress 41%***
10:43:41.213 mdk-logs 0x71c40e74f0 ***buffering progress 45%***
10:43:41.214 mdk-logs 0x71c40e74f0 ***buffering progress 51%***
10:43:41.214 mdk-logs 0x71c40e74f0 ***buffering progress 53%***
10:43:41.214 mdk-logs 0x71c40e74f0 ***buffering progress 54%***
10:43:41.216 mdk-logs 0x71c40e74f0 ***buffering progress 62%***
10:43:41.217 mdk-logs 0x71c40e74f0 ***buffering progress 68%***
10:43:41.217 mdk-logs 0x71c40e74f0 ***buffering progress 70%***
10:43:41.219 mdk-logs 0x71c40e74f0 ***buffering progress 79%***
10:43:41.221 mdk-logs 0x71c40e74f0 ***buffering progress 85%***
10:43:41.221 mdk-logs 0x71c40e74f0 ***buffering progress 87%***
10:43:41.223 mdk-logs 0x71c40e74f0 ***buffering progress 95%***
10:43:41.224 mdk-logs 0x71c40e74f0 ***buffering progress 100%***
10:43:41.224 mdk-logs default 0x71c40e74f0 FrameReader::update MediaStatus 0X114=>0X124
10:43:41.225 mdk-logs ++++++++++++BUFFERING END++++++++++++
10:43:41.225 mdk-logs
10:43:41.246 mdk-logs 0x71c40e74f0 start to decode subtitle#5 packet @3.625000/3.625000 pos: 3801675
10:43:41.247 mdk-logs starting decode loop thread mdk.sdec5@480493530288
10:43:41.247 mdk-logs 0x71c40e74f0 subtitle stream#5 starting decoding loop from decoder index 0...
10:43:41.248 mdk-logs 0x71c40e74f0 creating subtitle decoder: auto...
10:43:41.248 mdk-logs 0x71c40e74f0 opening subtitle decoder: FFmpeg...
10:43:41.248 mdk-logs opening ffmpeg subtitle decoder: subrip
10:43:41.248 mdk-logs AVCodec.Subtitle[subrip.] decoder: 1 Single threads
10:43:41.248 mdk-logs subrip
10:43:41.249 mdk-logs 0x71c40e74f0 subtitle stream#5 dropFramesUntil: 3.549000. packets: 1 pts: [3.625000, 3.625000]
10:43:41.249 mdk-logs 0x71c40e74f0 subtitle stream#5 sending 1 invalid AOT frame @3.625000s. seeking: 1
10:43:41.249 mdk-logs 0x71e413fd60 seek end subtitle frame @3.625000 seek_pos_: -1
10:43:41.250 mdk-logs subtitle continue without sending frame
10:43:41.393 mdk-logs 0x71e413fd60>1736 00:00:01.7/00:00:46 cache 0v 3.9s/4585KB 61127KB/s |-28|>4ms update 77.9ms
10:43:41.394 mdk-logs video continue without sending frame
10:43:41.394 mdk-logs 0x71c40e74f0 video stream#0 is seeking #1... got flush pkt. flush decoder and drop frames until seek target 1.5420s...
10:43:41.395 mdk-logs invalid video frame @-1.000000
10:43:42.416 mdk-logs 0x71e413fd60>2739 00:00:02.7/00:00:46 cache 0v 3.0s/5452KB 1423KB/s
10:43:42.544 mdk-logs 0x71e413fd60>2868 00:00:02.8/00:00:46 cache 0v 2.8s/5632KB 1423KB/s
10:43:42.672 mdk-logs 0x71e413fd60>2996 00:00:02.9/00:00:46 cache 0v 2.7s/5812KB 1423KB/s
10:43:42.800 mdk-logs 0x71e413fd60>3125 00:00:03.1/00:00:46 cache 0v 2.6s/5978KB 1423KB/s
10:43:42.928 mdk-logs 0x71e413fd60>3251 00:00:03.2/00:00:46 cache 0v 2.5s/6159KB 1423KB/s
10:43:43.056 mdk-logs 0x71e413fd60>3380 00:00:03.3/00:00:46 cache 0v 2.3s/6339KB 1423KB/s
10:43:43.184 mdk-logs 0x71e413fd60>3508 00:00:03.4/00:00:46 cache 0v 2.2s/6505KB 1423KB/s
10:43:43.312 mdk-logs 0x71e413fd60>3637 00:00:03.6/00:00:46 cache 0v 2.1s/6686KB 1423KB/s
10:43:43.441 mdk-logs 0x71e413fd60>3764 00:00:03.7/00:00:46 cache 0v 1.9s/6866KB 1423KB/s
10:43:43.568 mdk-logs 0x71e413fd60>3893 00:00:03.8/00:00:46 cache 0v 1.8s/7032KB 1423KB/s
10:43:43.697 mdk-logs 0x71e413fd60>4019 00:00:04.0/00:00:46 cache 0v 1.7s/7213KB 1423KB/s
10:43:43.824 mdk-logs 0x71e413fd60>4149 00:00:04.1/00:00:46 cache 0v 1.6s/7393KB 1423KB/s
10:43:43.952 mdk-logs 0x71e413fd60>4276 00:00:04.2/00:00:46 cache 0v 1.4s/7559KB 1423KB/s
10:43:44.080 mdk-logs 0x71e413fd60>4403 00:00:04.3/00:00:46 cache 0v 1.3s/7739KB 1423KB/s
10:43:44.208 mdk-logs 0x71e413fd60>4533 00:00:04.5/00:00:46 cache 0v 1.2s/7905KB 1423KB/s
10:43:44.336 mdk-logs 0x71e413fd60>4660 00:00:04.6/00:00:46 cache 0v 1.0s/8086KB 1423KB/s
10:43:44.464 mdk-logs 0x71e413fd60>4789 00:00:04.7/00:00:46 cache 0v 0.9s/8266KB 1423KB/s
10:43:44.592 mdk-logs 0x71e413fd60>4916 00:00:04.8/00:00:46 cache 0v 0.8s/8432KB 1423KB/s
10:43:44.720 mdk-logs 0x71e413fd60>5044 00:00:05.0/00:00:46 cache 0v 0.7s/8613KB 1423KB/s
10:43:44.850 mdk-logs 0x71e413fd60>5172 00:00:05.1/00:00:46 cache 0v 0.5s/8793KB 1423KB/s
10:43:44.976 mdk-logs 0x71e413fd60>5301 00:00:05.2/00:00:46 cache 0v 0.4s/8959KB 1423KB/s
10:43:45.104 mdk-logs 0x71e413fd60>5427 00:00:05.4/00:00:46 cache 0v 0.3s/9139KB 1423KB/s
10:43:45.232 mdk-logs 0x71e413fd60>5557 00:00:05.5/00:00:46 cache 0v 0.1s/9306KB 1423KB/s
10:43:45.360 mdk-logs 0x71e413fd60>5684 00:00:05.6/00:00:46 cache 0v 0.0s/9486KB 1423KB/s
10:43:45.360 mdk-logs 0x71c40e74f0 ***buffering progress 0%***
10:43:45.361 mdk-logs default 0x71c40e74f0 FrameReader::update MediaStatus 0X124=>0X114
10:43:45.362 mdk-logs ++++++++++++BUFFERING START++++++++++++
10:43:45.362 mdk-logs
10:43:45.366 mdk-logs 0x71c40e74f0 ***buffering progress 2%***
10:43:45.366 mdk-logs 0x71c40e74f0 ***buffering progress 4%***
10:43:45.366 mdk-logs 0x71c40e74f0 ***buffering progress 6%***
10:43:45.366 mdk-logs 0x71c40e74f0 ***buffering progress 8%***
10:43:45.367 mdk-logs 0x71c40e74f0 ***buffering progress 10%***
10:43:45.367 mdk-logs 0x71c40e74f0 ***buffering progress 12%***
10:43:45.372 mdk-logs 0x71c40e74f0 ***buffering progress 14%***
10:43:45.372 mdk-logs 0x71c40e74f0 ***buffering progress 16%***
10:43:45.372 mdk-logs 0x71c40e74f0 ***buffering progress 19%***
10:43:45.372 mdk-logs 0x71c40e74f0 ***buffering progress 21%***
10:43:45.372 mdk-logs 0x71c40e74f0 ***buffering progress 23%***
10:43:45.372 mdk-logs 0x71c40e74f0 ***buffering progress 25%***
10:43:45.373 mdk-logs 0x71c40e74f0 ***buffering progress 27%***
10:43:45.373 mdk-logs 0x71c40e74f0 ***buffering progress 29%***
10:43:45.380 mdk-logs 0x71c40e74f0 ***buffering progress 31%***
10:43:45.381 mdk-logs 0x71c40e74f0 ***buffering progress 34%***
10:43:45.381 mdk-logs 0x71c40e74f0 ***buffering progress 36%***
10:43:45.381 mdk-logs 0x71c40e74f0 ***buffering progress 38%***
10:43:45.381 mdk-logs 0x71c40e74f0 ***buffering progress 40%***
10:43:45.381 mdk-logs 0x71c40e74f0 ***buffering progress 42%***
10:43:45.381 mdk-logs 0x71c40e74f0 ***buffering progress 44%***
10:43:45.381 mdk-logs 0x71c40e74f0 ***buffering progress 46%***
10:43:45.383 mdk-logs 0x71c40e74f0 ***buffering progress 48%***
10:43:45.383 mdk-logs 0x71c40e74f0 ***buffering progress 51%***
10:43:45.385 mdk-logs 0x71c40e74f0 ***buffering progress 53%***
10:43:45.385 mdk-logs 0x71c40e74f0 ***buffering progress 55%***
10:43:45.385 mdk-logs 0x71c40e74f0 ***buffering progress 57%***
10:43:45.385 mdk-logs 0x71c40e74f0 ***buffering progress 59%***
10:43:45.385 mdk-logs 0x71c40e74f0 ***buffering progress 61%***
10:43:45.385 mdk-logs 0x71c40e74f0 ***buffering progress 63%***
10:43:45.385 mdk-logs 0x71c40e74f0 ***buffering progress 66%***
10:43:45.385 mdk-logs 0x71c40e74f0 ***buffering progress 68%***
10:43:45.388 mdk-logs 0x71c40e74f0 subtitle stream#5 sending 1 invalid AOT frame @6.375000s. seeking: 1
10:43:45.388 mdk-logs 0x71e413fd60 seek end subtitle frame @6.375000 seek_pos_: -1
10:43:45.389 mdk-logs subtitle continue without sending frame
10:43:45.389 mdk-logs 0x71c40e74f0 ***buffering progress 70%***
10:43:45.389 mdk-logs 0x71c40e74f0 ***buffering progress 72%***
10:43:45.389 mdk-logs 0x71c40e74f0 ***buffering progress 74%***
10:43:45.389 mdk-logs 0x71c40e74f0 ***buffering progress 76%***
10:43:45.389 mdk-logs 0x71c40e74f0 ***buffering progress 78%***
10:43:45.389 mdk-logs 0x71c40e74f0 ***buffering progress 80%***
10:43:45.390 mdk-logs 0x71c40e74f0 ***buffering progress 83%***
10:43:45.390 mdk-logs 0x71c40e74f0 ***buffering progress 85%***
10:43:45.392 mdk-logs 0x71c40e74f0 ***buffering progress 87%***
10:43:45.392 mdk-logs 0x71c40e74f0 ***buffering progress 89%***
10:43:45.393 mdk-logs 0x71c40e74f0 ***buffering progress 91%***
10:43:45.393 mdk-logs 0x71c40e74f0 ***buffering progress 93%***
10:43:45.393 mdk-logs 0x71c40e74f0 ***buffering progress 95%***
10:43:45.393 mdk-logs 0x71c40e74f0 ***buffering progress 98%***
10:43:45.393 mdk-logs 0x71c40e74f0 ***buffering progress 100%***
10:43:45.393 mdk-logs default 0x71c40e74f0 FrameReader::update MediaStatus 0X114=>0X124
10:43:45.394 mdk-logs ++++++++++++BUFFERING END++++++++++++
10:43:45.394 mdk-logs
10:43:45.488 mdk-logs 0x71e413fd60>5813 00:00:05.7/00:00:46 cache 0v 1.0s/10394KB 13179KB/s
10:43:45.616 mdk-logs 0x71e413fd60>5940 00:00:05.9/00:00:46 cache 0v 0.8s/10814KB 13179KB/s
10:43:45.744 mdk-logs 0x71e413fd60>6068 00:00:06.0/00:00:46 cache 0v 0.7s/11269KB 13179KB/s
10:43:45.872 mdk-logs 0x71e413fd60>6196 00:00:06.1/00:00:46 cache 0v 0.6s/11689KB 13179KB/s
10:43:46.000 mdk-logs 0x71e413fd60>6323 00:00:06.3/00:00:46 cache 0v 0.4s/12145KB 13179KB/s
10:43:46.128 mdk-logs 0x71e413fd60>6453 00:00:06.4/00:00:46 cache 0v 0.3s/12600KB 13179KB/s
10:43:46.256 mdk-logs 0x71e413fd60>6580 00:00:06.5/00:00:46 cache 0v 0.2s/13020KB 13179KB/s
10:43:46.384 mdk-logs 0x71e413fd60>6709 00:00:06.6/00:00:46 cache 0v 0.1s/13475KB 13179KB/s
10:43:46.428 mdk-logs 0x71c40e74f0 ***buffering progress 0%***
10:43:46.428 mdk-logs default 0x71c40e74f0 FrameReader::update MediaStatus 0X124=>0X114
10:43:46.429 mdk-logs ++++++++++++BUFFERING START++++++++++++
10:43:46.429 mdk-logs
10:43:46.433 mdk-logs 0x71c40e74f0 ***buffering progress 2%***
10:43:46.433 mdk-logs 0x71c40e74f0 ***buffering progress 4%***
10:43:46.433 mdk-logs 0x71c40e74f0 ***buffering progress 6%***
10:43:46.433 mdk-logs 0x71c40e74f0 ***buffering progress 8%***
10:43:46.433 mdk-logs 0x71c40e74f0 ***buffering progress 10%***
10:43:46.434 mdk-logs 0x71c40e74f0 ***buffering progress 12%***
10:43:46.438 mdk-logs 0x71c40e74f0 ***buffering progress 14%***
10:43:46.438 mdk-logs 0x71c40e74f0 ***buffering progress 17%***
10:43:46.438 mdk-logs 0x71c40e74f0 ***buffering progress 19%***
10:43:46.438 mdk-logs 0x71c40e74f0 ***buffering progress 21%***
10:43:46.439 mdk-logs 0x71c40e74f0 ***buffering progress 23%***
10:43:46.439 mdk-logs 0x71c40e74f0 ***buffering progress 25%***
10:43:46.439 mdk-logs 0x71c40e74f0 ***buffering progress 27%***
10:43:46.439 mdk-logs 0x71c40e74f0 ***buffering progress 29%***
10:43:46.447 mdk-logs 0x71c40e74f0 ***buffering progress 31%***
10:43:46.447 mdk-logs 0x71c40e74f0 ***buffering progress 34%***
10:43:46.447 mdk-logs 0x71c40e74f0 ***buffering progress 36%***
10:43:46.447 mdk-logs 0x71c40e74f0 ***buffering progress 38%***
10:43:46.447 mdk-logs 0x71c40e74f0 ***buffering progress 40%***
10:43:46.447 mdk-logs 0x71c40e74f0 ***buffering progress 42%***
10:43:46.447 mdk-logs 0x71c40e74f0 ***buffering progress 44%***
10:43:46.447 mdk-logs 0x71c40e74f0 ***buffering progress 46%***
10:43:46.450 mdk-logs 0x71c40e74f0 ***buffering progress 49%***
10:43:46.450 mdk-logs 0x71c40e74f0 ***buffering progress 51%***
10:43:46.450 mdk-logs 0x71c40e74f0 ***buffering progress 53%***
10:43:46.450 mdk-logs 0x71c40e74f0 ***buffering progress 55%***
10:43:46.450 mdk-logs 0x71c40e74f0 ***buffering progress 57%***
10:43:46.450 mdk-logs 0x71c40e74f0 ***buffering progress 59%***
10:43:46.450 mdk-logs 0x71c40e74f0 ***buffering progress 61%***
10:43:46.451 mdk-logs 0x71c40e74f0 ***buffering progress 63%***
10:43:46.453 mdk-logs 0x71c40e74f0 subtitle stream#5 sending 1 invalid AOT frame @7.375000s. seeking: 1
10:43:46.453 mdk-logs 0x71e413fd60 seek end subtitle frame @7.375000 seek_pos_: -1
10:43:46.454 mdk-logs subtitle continue without sending frame
10:43:46.454 mdk-logs 0x71c40e74f0 ***buffering progress 66%***
10:43:46.454 mdk-logs 0x71c40e74f0 ***buffering progress 68%***
10:43:46.454 mdk-logs 0x71c40e74f0 ***buffering progress 70%***
10:43:46.455 mdk-logs 0x71c40e74f0 ***buffering progress 72%***
10:43:46.455 mdk-logs 0x71c40e74f0 ***buffering progress 74%***
10:43:46.455 mdk-logs 0x71c40e74f0 ***buffering progress 76%***
10:43:46.455 mdk-logs 0x71c40e74f0 ***buffering progress 78%***
10:43:46.455 mdk-logs 0x71c40e74f0 ***buffering progress 81%***
10:43:46.457 mdk-logs 0x71c40e74f0 ***buffering progress 83%***
10:43:46.458 mdk-logs 0x71c40e74f0 ***buffering progress 85%***
10:43:46.458 mdk-logs 0x71c40e74f0 ***buffering progress 87%***
10:43:46.458 mdk-logs 0x71c40e74f0 ***buffering progress 89%***
10:43:46.458 mdk-logs 0x71c40e74f0 ***buffering progress 91%***
10:43:46.458 mdk-logs 0x71c40e74f0 ***buffering progress 93%***
10:43:46.458 mdk-logs 0x71c40e74f0 ***buffering progress 96%***
10:43:46.458 mdk-logs 0x71c40e74f0 ***buffering progress 98%***
10:43:46.461 mdk-logs 0x71c40e74f0 ***buffering progress 100%***
10:43:46.461 mdk-logs default 0x71c40e74f0 FrameReader::update MediaStatus 0X114=>0X124
10:43:46.463 mdk-logs ++++++++++++BUFFERING END++++++++++++
10:43:46.463 mdk-logs
10:43:46.512 mdk-logs 0x71e413fd60>6836 00:00:06.8/00:00:46 cache 0v 1.1s/14577KB 15050KB/s
10:43:46.640 mdk-logs 0x71e413fd60>6964 00:00:06.9/00:00:46 cache 0v 1.0s/15096KB 15050KB/s
10:43:46.768 mdk-logs 0x71e413fd60>7092 00:00:07.0/00:00:46 cache 0v 0.9s/15574KB 15050KB/s
10:43:46.896 mdk-logs 0x71e413fd60>7221 00:00:07.2/00:00:46 cache 0v 0.7s/16092KB 15050KB/s
10:43:47.025 mdk-logs 0x71e413fd60>7347 00:00:07.3/00:00:46 cache 0v 0.6s/16611KB 15050KB/s
10:43:47.153 mdk-logs 0x71e413fd60>7477 00:00:07.4/00:00:46 cache 0v 0.5s/17090KB 15050KB/s
10:43:47.279 mdk-logs 0x71e413fd60>7604 00:00:07.5/00:00:46 cache 0v 0.4s/17608KB 15050KB/s
10:43:47.408 mdk-logs 0x71e413fd60>7733 00:00:07.7/00:00:46 cache 0v 0.2s/18127KB 15050KB/s
10:43:47.535 mdk-logs 0x71e413fd60>7860 00:00:07.8/00:00:46 cache 0v 0.1s/18605KB 15050KB/s
10:43:47.622 mdk-logs 0x71c40e74f0 ***buffering progress 0%***
10:43:47.622 mdk-logs default 0x71c40e74f0 FrameReader::update MediaStatus 0X124=>0X114
10:43:47.624 mdk-logs ++++++++++++BUFFERING START++++++++++++
10:43:47.624 mdk-logs
10:43:47.635 mdk-logs 0x71c40e74f0 ***buffering progress 2%***
10:43:47.635 mdk-logs 0x71c40e74f0 ***buffering progress 4%***
10:43:47.635 mdk-logs 0x71c40e74f0 ***buffering progress 6%***
10:43:47.635 mdk-logs 0x71c40e74f0 ***buffering progress 8%***
10:43:47.635 mdk-logs 0x71c40e74f0 ***buffering progress 10%***
10:43:47.636 mdk-logs 0x71c40e74f0 ***buffering progress 12%***
10:43:47.641 mdk-logs 0x71c40e74f0 ***buffering progress 14%***
10:43:47.641 mdk-logs 0x71c40e74f0 ***buffering progress 17%***
10:43:47.641 mdk-logs 0x71c40e74f0 ***buffering progress 19%***
10:43:47.641 mdk-logs 0x71c40e74f0 ***buffering progress 21%***
10:43:47.643 mdk-logs 0x71c40e74f0 ***buffering progress 23%***
10:43:47.643 mdk-logs 0x71c40e74f0 ***buffering progress 25%***
10:43:47.643 mdk-logs 0x71c40e74f0 ***buffering progress 27%***
10:43:47.644 mdk-logs 0x71c40e74f0 ***buffering progress 29%***
10:43:47.644 mdk-logs 0x71c40e74f0 ***buffering progress 31%***
10:43:47.644 mdk-logs 0x71c40e74f0 ***buffering progress 34%***
10:43:47.644 mdk-logs 0x71c40e74f0 ***buffering progress 36%***
10:43:47.644 mdk-logs 0x71c40e74f0 ***buffering progress 38%***
10:43:47.647 mdk-logs 0x71c40e74f0 ***buffering progress 40%***
10:43:47.647 mdk-logs 0x71c40e74f0 ***buffering progress 42%***
10:43:47.647 mdk-logs 0x71c40e74f0 ***buffering progress 44%***
10:43:47.647 mdk-logs 0x71c40e74f0 ***buffering progress 46%***
10:43:47.647 mdk-logs 0x71c40e74f0 ***buffering progress 48%***
10:43:47.647 mdk-logs 0x71c40e74f0 ***buffering progress 51%***
10:43:47.647 mdk-logs 0x71c40e74f0 ***buffering progress 53%***
10:43:47.647 mdk-logs 0x71c40e74f0 ***buffering progress 55%***
10:43:47.650 mdk-logs 0x71c40e74f0 ***buffering progress 57%***
10:43:47.650 mdk-logs 0x71c40e74f0 ***buffering progress 59%***
10:43:47.650 mdk-logs 0x71c40e74f0 ***buffering progress 61%***
10:43:47.650 mdk-logs 0x71c40e74f0 ***buffering progress 63%***
10:43:47.650 mdk-logs 0x71c40e74f0 ***buffering progress 65%***
10:43:47.650 mdk-logs 0x71c40e74f0 ***buffering progress 68%***
10:43:47.650 mdk-logs 0x71c40e74f0 ***buffering progress 70%***
10:43:47.650 mdk-logs 0x71c40e74f0 ***buffering progress 72%***
10:43:47.652 mdk-logs 0x71c40e74f0 ***buffering progress 74%***
10:43:47.652 mdk-logs 0x71c40e74f0 ***buffering progress 76%***
10:43:47.652 mdk-logs 0x71c40e74f0 ***buffering progress 78%***
10:43:47.652 mdk-logs 0x71c40e74f0 ***buffering progress 80%***
10:43:47.652 mdk-logs 0x71c40e74f0 ***buffering progress 83%***
10:43:47.652 mdk-logs 0x71c40e74f0 ***buffering progress 85%***
10:43:47.652 mdk-logs 0x71c40e74f0 ***buffering progress 87%***
10:43:47.652 mdk-logs 0x71c40e74f0 ***buffering progress 89%***
10:43:47.655 mdk-logs 0x71c40e74f0 ***buffering progress 91%***
10:43:47.655 mdk-logs 0x71c40e74f0 ***buffering progress 93%***
10:43:47.655 mdk-logs 0x71c40e74f0 ***buffering progress 96%***
10:43:47.656 mdk-logs 0x71c40e74f0 ***buffering progress 98%***
10:43:47.656 mdk-logs 0x71c40e74f0 ***buffering progress 100%***
10:43:47.656 mdk-logs default 0x71c40e74f0 FrameReader::update MediaStatus 0X114=>0X124
10:43:47.658 mdk-logs ++++++++++++BUFFERING END++++++++++++
10:43:47.658 mdk-logs
10:43:47.666 mdk-logs 0x71e413fd60>7988 00:00:07.9/00:00:46 cache 0v 1.1s/19797KB 24657KB/s
10:43:47.793 mdk-logs 0x71e413fd60>8116 00:00:08.0/00:00:46 cache 0v 1.0s/20358KB 24657KB/s
10:43:47.921 mdk-logs 0x71e413fd60>8245 00:00:08.2/00:00:46 cache 0v 0.8s/20966KB 24657KB/s
10:43:48.048 mdk-logs 0x71e413fd60>8372 00:00:08.3/00:00:46 cache 0v 0.7s/21573KB 24657KB/s
10:43:48.176 mdk-logs 0x71e413fd60>8501 00:00:08.4/00:00:46 cache 0v 0.6s/22133KB 24657KB/s
10:43:48.228 mdk-logs 0x71a40b26f0 player.set(2)
10:43:48.228 mdk-logs 0x71e413fd60 virtual void mdk::MediaControlPush::setState(PlaybackState)@1101 requested state 1=>2, current state 1. status: 0X124
10:43:48.229 mdk-logs default FrameReader0x71c40e74f0 request to pause 1, loaded: 4.
10:43:48.229 mdk-logs default FrameReader0x71c40e74f0 state: 1=>1=>2, 0
10:43:48.229 mdk-logs default FrameReader0x71c40e74f0 state requested: 2, current: 1
10:43:48.239 mdk-logs default FrameReader0x71c40e74f0 state: 1=>2=>2, 1
10:43:48.239 mdk-logs default FrameReader0x71c40e74f0 update state: 1=>2
https://github.com/user-attachments/assets/e84d8ac4-4f45-409e-b1a2-0b85cc353dbc
what about not decode to surfaceview? if decode to surfaceview, subtitle will not be rendered, you have to draw subtitle yourself
doc says
jni surface ptr(jobject): decode to provided surface, video tunnel mode. Usually you have to use the return value of NewGlobalRef()
I tried this because I wasn't able to get the HDMI device (television) turn ON dolby vision or HDR mode automatically when playing dovi files or HDR I tought tunnel mode would achieve it
By the way if you know how to achieve it please let me know
decode to surfaceview can support hdr, but not dolby vision. dolby vision requires decoder support, for example using decoder AMediaCodec:dv=1, but not all systems support it(and it seems broken in my latest sdk). mdk's renderers and decoders can support hdr and dolby vision on all platforms. With the latest sdk, disable tunnel mode, call player->set(ColorSpaceUnknown) can enable hdr color space and metadata passthrough. I only tested on my xiaomi phone, tv should be ok too. setting environment var putenv(EGL_HDR_METADATA=0) can disable hdr metadata passthrough, then the result is the same as xiaomi's system player. putenv(EGL_HDR_METADATA=1) (it's the default) will enable metadata passthrough, seems better (brighter) than system player. I also updated android example https://github.com/wang-bin/mdk-android , you can switch HDR to see the effect
Can you share your example so I can test the freeze?
decode to surfaceview can support hdr, but not dolby vision. dolby vision requires decoder support, for example using decoder
AMediaCodec:dv=1, but not all systems support it(and it seems broken in my latest sdk). mdk's renderers and decoders can support hdr and dolby vision on all platforms. With the latest sdk, disable tunnel mode, callplayer->set(ColorSpaceUnknown)can enable hdr color space and metadata passthrough. I only tested on my xiaomi phone, tv should be ok too. setting environment varputenv(EGL_HDR_METADATA=0)can disable hdr metadata passthrough, then the result is the same as xiaomi's system player.putenv(EGL_HDR_METADATA=1)(it's the default) will enable metadata passthrough, seems better (brighter) than system player. I also updated android example https://github.com/wang-bin/mdk-android , you can switch HDR to see the effect
I can confirm decode to surface view is the only way I found to get Dolby Vision to toggle on on TV (I am using a Google Streamer with LG C4 OLED tv, both DV compatible)
without this, the television never toggles Dolby vision. Same thing on MPV (vo:mediacodec_embed,hwdec:mediacodec) and setting "wid" (same behavior as decode to surface)
This is not an issue for me to use decode to surfaceview, but I can't disable subtitles rendering (setting "subtitle" or "cc" to 0 has no effect)
Can you share your example so I can test the freeze?
Do you mean video file or code ?
file is https://github.com/ietf-wg-cellar/matroska-test-files/raw/master/test_files/test5.mkv
I you want code, I need to create a small repro, project is quite large
dolby vision profile 5 or 8? decode to surfaceview can't display dolby vision on my phone. my example can toggle hdr10, and i render dolby vision as hdr10.
i need the code
private val surfaceCallback = object : SurfaceHolder.Callback {
private var currentRef: Long = 0L
set(value) {
field = value
if (mdkConfig.decodeToSurfaceView) {
LibMdkJni.setProperty(handle, "video.decoder", "surface=$value")
}
}
override fun surfaceCreated(holder: SurfaceHolder) {
currentRef = LibJni.deleteGlobalRef(currentRef)
currentRef = LibJni.createGlobalRef(holder.surface)
if (mdkConfig.decodeToSurfaceView) return
LibMdkJni.updateNativeSurface(handle, 0, 0, 0, 0)
LibMdkJni.updateNativeSurface(handle, currentRef, -1, -1, 0)
}
override fun surfaceDestroyed(holder: SurfaceHolder) {
currentRef = LibJni.deleteGlobalRef(currentRef)
if (mdkConfig.decodeToSurfaceView) return
LibMdkJni.updateNativeSurface(handle, 0, 0, 0, 0)
}
override fun surfaceChanged(holder: SurfaceHolder, format: Int, width: Int, height: Int) {
if (mdkConfig.decodeToSurfaceView) return
LibMdkJni.updateNativeSurface(handle, currentRef, width, height, 0)
}
}
dv 5, 8.4, 8.1
They all work with MPV even 5 (it should not work on google streamer O_o) With mdk, 8.4, 8.1 works but not 5 (this is normal, device has a codec issue)
video decoders:
AMediaCodec:java=0:surface=1:image=1:acquire=latest:copy=0:async=1:dv=1, FFmpeg
so when mdkConfig.decodeToSurfaceView == true Tv goes in dolby vision mode, this is perfect else nothing happens (dolby images are still decoded well, but tv won't use its max luminosity and it is like sdr eventualy)
Tried to change colorspace without effect
By the way dolby vision is not an issue anymore, the main issue is subtitle rendering.
I can use new api to get subs as text and display them in an Android view, but calling player->setTracks causes the video freeze
- Tried property "cc": 0
- Tried property "subtitle": 0
No effect, video still freezes after track selection
i don't think dv can be turned on if decode to surfaceview but without additional settings. no effect on my phone. can you show me mpv and mdk log? AMediaVodec:dv=1 will output sdr image iirc. i also need the log with set(colorspaceunknown)
can you modify my android example so i can test the freeze soon. i'm not familiar with ui.
Will fork project tomorrow and update it
Are you using AMediaFormat in your internal mdk code ?
If the TV does not enable DV mode automatically, maybe there is missing info in MediaFormat?
Exoplayer's implementation does this in case of DV video:
MediaCodecUtil.java MediaCodecVideoRenderer.java
MediaFormatUtil.maybeSetColorInfo(mediaFormat, format.colorInfo);
if (MimeTypes.VIDEO_DOLBY_VISION.equals(format.sampleMimeType)) {
// Some phones require the profile to be set on the codec.
// See https://github.com/google/ExoPlayer/pull/5438.
Pair<Integer, Integer> codecProfileAndLevel = MediaCodecUtil.getCodecProfileAndLevel(format);
if (codecProfileAndLevel != null) {
MediaFormatUtil.maybeSetInteger(
mediaFormat, MediaFormat.KEY_PROFILE, codecProfileAndLevel.first);
}
}
@Nullable
public static Pair<Integer, Integer> getCodecProfileAndLevel(Format format) {
if (format.codecs == null) {
return null;
}
String[] parts = format.codecs.split("\\.");
// Dolby Vision can use DV, AVC or HEVC codec IDs, so check the MIME type first.
if (MimeTypes.VIDEO_DOLBY_VISION.equals(format.sampleMimeType)) {
return getDolbyVisionProfileAndLevel(format.codecs, parts);
}
switch (parts[0]) {
case CODEC_ID_AVC1:
case CODEC_ID_AVC2:
return getAvcProfileAndLevel(format.codecs, parts);
case CODEC_ID_VP09:
return getVp9ProfileAndLevel(format.codecs, parts);
case CODEC_ID_HEV1:
case CODEC_ID_HVC1:
return getHevcProfileAndLevel(format.codecs, parts, format.colorInfo);
case CODEC_ID_AV01:
return getAv1ProfileAndLevel(format.codecs, parts, format.colorInfo);
case CODEC_ID_MP4A:
return getAacCodecProfileAndLevel(format.codecs, parts);
default:
return null;
}
}
@Nullable
private static Pair<Integer, Integer> getDolbyVisionProfileAndLevel(
String codec, String[] parts) {
if (parts.length < 3) {
// The codec has fewer parts than required by the Dolby Vision codec string format.
Log.w(TAG, "Ignoring malformed Dolby Vision codec string: " + codec);
return null;
}
// The profile_space gets ignored.
Matcher matcher = PROFILE_PATTERN.matcher(parts[1]);
if (!matcher.matches()) {
Log.w(TAG, "Ignoring malformed Dolby Vision codec string: " + codec);
return null;
}
@Nullable String profileString = matcher.group(1);
@Nullable Integer profile = dolbyVisionStringToProfile(profileString);
if (profile == null) {
Log.w(TAG, "Unknown Dolby Vision profile string: " + profileString);
return null;
}
String levelString = parts[2];
@Nullable Integer level = dolbyVisionStringToLevel(levelString);
if (level == null) {
Log.w(TAG, "Unknown Dolby Vision level string: " + levelString);
return null;
}
return new Pair<>(profile, level);
}
Updated sample to latest android dev practices (UI is pretty similar to flutter)
By the way I find something
- After selecting many subtitle tracks on android, they are all selected Have to call setProperty("subtitle.tracks", "-1) then setProperty("subtitle.tracks", $1)
- If decodeToSurfaceView + AMediaCodec:async=1 -> Video freezes when selecting a track
https://github.com/user-attachments/assets/c2936490-644f-40cb-933f-aeea55ed9574