Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

App crashes (SIGABRT) on fast RTMP stream restart #3156

Closed
needz opened this issue Aug 8, 2017 · 6 comments
Closed

App crashes (SIGABRT) on fast RTMP stream restart #3156

needz opened this issue Aug 8, 2017 · 6 comments

Comments

@needz
Copy link

needz commented Aug 8, 2017

Issue description

App crashes if RTMP streams are changed quickly (release player/initialize player). If I make a delay before initializing a player with RTMP stream (1000ms) it doesn't crash. It has something to do with improper thread handling of RTMP extension. It doesn't happen if non-RTMP streams are used. It also doesn't happen if you switch between non-RTMP and RTMP streams.

Please suggest a workaround, I can modify the library. Thanks.

Reproduction steps

Quickly release/reinitilize player with RTMP streams inside the same activity.

Link to test content

rtmp://live-fs.wmncdn.net/mbctv1/live1.stream
rtmp://studiosystem.co.in:1935/v4news/livestream

Version of ExoPlayer being used

ExoPlayer 2.5.0

Device(s) and version(s) of Android being used

Nexus Player and VM

A full bug report captured from the device

08-09 00:12:46.754 10110 26351 26351 I DefaultRenderersFactory: Loaded FfmpegAudioRenderer.
08-09 00:12:46.754 10110 26351 26351 I ExoPlayerImpl: Init 6f1b5c0 [ExoPlayerLib/2.5.0] [fugu, Nexus Player, Asus, 26]
08-09 00:12:46.764 10025 21289 21289 I Finsky  : [2] com.google.android.finsky.services.e.a(5): Installation state replication succeeded.
08-09 00:12:46.780 10110 26351 26351 I System.out: initializePlayer
08-09 00:12:46.781 10110 26351 26351 D EventLogger: state [0.01, true, I]
08-09 00:12:46.782  1000   313   828 I chatty  : uid=1000(system) Binder:313_8 expire 3 lines
08-09 00:12:46.788 10110 26351 26351 D EventLogger: state [0.01, true, B]
08-09 00:12:46.788 10110 26351 26351 D EventLogger: sourceInfo [periodCount=1, windowCount=1
08-09 00:12:46.788 10110 26351 26351 D EventLogger:   period [?]
08-09 00:12:46.788 10110 26351 26351 D EventLogger:   window [?, false, false]
08-09 00:12:46.788 10110 26351 26351 D EventLogger: ]
08-09 00:12:46.788 10110 26351 26351 I System.out: onLoadingChanged
08-09 00:12:46.788 10110 26351 26351 I System.out: player com.google.android.exoplayer2.SimpleExoPlayer@7d5223e
08-09 00:12:46.788 10110 26351 26351 D EventLogger: loading [true]
08-09 00:12:46.988  root   230   230 W netd    : type=1400 audit(0.0:2909): avc: denied { read write } for path="socket:[3756942]" dev="sockfs" ino=3756942 scontext=u:r:netd:s0 tcontext=u:r:untrusted_app:s0:c512,c768 tclass=unix_stream_socket permissive=0
08-09 00:12:46.990 10110 26351 27063 F libc    : Invalid address 0xd2068400 passed to free: value not allocated
08-09 00:12:46.992 10110 26351 26929 W MessageQueue: Handler (com.google.android.exoplayer2.upstream.Loader$ReleaseTask) {22a89f} sending message to a Handler on a dead thread
08-09 00:12:46.992 10110 26351 26929 W MessageQueue: java.lang.IllegalStateException: Handler (com.google.android.exoplayer2.upstream.Loader$ReleaseTask) {22a89f} sending message to a Handler on a dead thread
08-09 00:12:46.992 10110 26351 26929 W MessageQueue: 	at android.os.MessageQueue.enqueueMessage(MessageQueue.java:545)
08-09 00:12:46.992 10110 26351 26929 W MessageQueue: 	at android.os.Handler.enqueueMessage(Handler.java:661)
08-09 00:12:46.992 10110 26351 26929 W MessageQueue: 	at android.os.Handler.sendMessageAtTime(Handler.java:630)
08-09 00:12:46.992 10110 26351 26929 W MessageQueue: 	at android.os.Handler.sendMessageDelayed(Handler.java:600)
08-09 00:12:46.992 10110 26351 26929 W MessageQueue: 	at android.os.Handler.sendEmptyMessageDelayed(Handler.java:564)
08-09 00:12:46.992 10110 26351 26929 W MessageQueue: 	at android.os.Handler.sendEmptyMessage(Handler.java:549)
08-09 00:12:46.992 10110 26351 26929 W MessageQueue: 	at com.google.android.exoplayer2.upstream.Loader$ReleaseTask.run(Loader.java:423)
08-09 00:12:46.992 10110 26351 26929 W MessageQueue: 	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162)
08-09 00:12:46.992 10110 26351 26929 W MessageQueue: 	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)
08-09 00:12:46.992 10110 26351 26929 W MessageQueue: 	at java.lang.Thread.run(Thread.java:764)
08-09 00:12:46.993 10110 26351 27063 F libc    : Fatal signal 6 (SIGABRT), code -6 in tid 27063 (Loader:Extracto)
08-09 00:12:47.175 10110 27087 27087 I crash_dump32: obtaining output fd from tombstoned
08-09 00:12:47.179  1058   206   206 I /system/bin/tombstoned: received crash request for pid 26351
08-09 00:12:47.181 10110 27087 27087 I crash_dump32: performing dump of process 26351 (target tid = 27063)
08-09 00:12:47.182 10110 27087 27087 F DEBUG   : *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
08-09 00:12:47.182 10110 27087 27087 F DEBUG   : Build fingerprint: 'google/fugu/fugu:8.0.0/OPP4.170623.014/4187591:user/release-keys'
08-09 00:12:47.182 10110 27087 27087 F DEBUG   : Revision: '0'
08-09 00:12:47.182 10110 27087 27087 F DEBUG   : ABI: 'x86'
08-09 00:12:47.182 10110 27087 27087 F DEBUG   : pid: 26351, tid: 27063, name: Loader:Extracto  >>> app.name <<<
08-09 00:12:47.183 10110 27087 27087 F DEBUG   : signal 6 (SIGABRT), code -6 (SI_TKILL), fault addr --------
08-09 00:12:47.189 10110 27087 27087 F DEBUG   : Abort message: 'Invalid address 0xd2068400 passed to free: value not allocated'
08-09 00:12:47.190 10110 27087 27087 F DEBUG   :     eax 00000000  ebx 000066ef  ecx 000069b7  edx 00000006
08-09 00:12:47.190 10110 27087 27087 F DEBUG   :     esi 000069b7  edi d33f9b78
08-09 00:12:47.190 10110 27087 27087 F DEBUG   :     xcs 00000023  xds 0000002b  xes 0000002b  xfs 0000006b  xss 0000002b
08-09 00:12:47.190 10110 27087 27087 F DEBUG   :     eip ffffe430  ebp d33f9b98  esp d33f9b2c  flags 00000296
08-09 00:12:47.235 10110 27087 27087 F DEBUG   : 
08-09 00:12:47.235 10110 27087 27087 F DEBUG   : backtrace:
08-09 00:12:47.235 10110 27087 27087 F DEBUG   :     #00 pc ffffe430  [vdso:ffffe000] (__kernel_vsyscall+16)
08-09 00:12:47.235 10110 27087 27087 F DEBUG   :     #01 pc 0008523c  /system/lib/libc.so (tgkill+28)
08-09 00:12:47.235 10110 27087 27087 F DEBUG   :     #02 pc 0002e3ef  /system/lib/libc.so (abort+111)
08-09 00:12:47.235 10110 27087 27087 F DEBUG   :     #03 pc 0003646e  /system/lib/libc.so (__libc_fatal+46)
08-09 00:12:47.235 10110 27087 27087 F DEBUG   :     #04 pc 000b021b  /system/lib/libc.so (ifree+811)
08-09 00:12:47.235 10110 27087 27087 F DEBUG   :     #05 pc 000b04ca  /system/lib/libc.so (je_free+122)
08-09 00:12:47.236 10110 27087 27087 F DEBUG   :     #06 pc 0001527a  /system/lib/libc.so (free+42)
08-09 00:12:47.236 10110 27087 27087 F DEBUG   :     #07 pc 00007760  /data/app/app.name-n0Q6B-VO-xAqQTQ49v0Opg==/lib/x86/librtmp-jni.so (RTMP_Free+32)
08-09 00:12:47.236 10110 27087 27087 F DEBUG   :     #08 pc 000036eb  /data/app/app.name-n0Q6B-VO-xAqQTQ49v0Opg==/lib/x86/librtmp-jni.so (Java_net_butterflytv_rtmp_1client_RtmpClient_nativeOpen+235)
08-09 00:12:47.236 10110 27087 27087 F DEBUG   :     #09 pc 006454b7  /system/lib/libart.so (art_quick_generic_jni_trampoline+71)
08-09 00:12:47.236 10110 27087 27087 F DEBUG   :     #10 pc 0063f522  /system/lib/libart.so (art_quick_invoke_stub+338)
08-09 00:12:47.236 10110 27087 27087 F DEBUG   :     #11 pc 00112b18  /system/lib/libart.so (_ZN3art9ArtMethod6InvokeEPNS_6ThreadEPjjPNS_6JValueEPKc+232)
08-09 00:12:47.236 10110 27087 27087 F DEBUG   :     #12 pc 00324233  /system/lib/libart.so (_ZN3art11interpreter34ArtInterpreterToCompiledCodeBridgeEPNS_6ThreadEPNS_9ArtMethodEPKNS_7DexFile8CodeItemEPNS_11ShadowFrameEPNS_6JValueE+371)
08-09 00:12:47.236 10110 27087 27087 F DEBUG   :     #13 pc 0031cf09  /system/lib/libart.so (_ZN3art11interpreter6DoCallILb0ELb0EEEbPNS_9ArtMethodEPNS_6ThreadERNS_11ShadowFrameEPKNS_11InstructionEtPNS_6JValueE+809)
08-09 00:12:47.236 10110 27087 27087 F DEBUG   :     #14 pc 006261a6  /system/lib/libart.so (MterpInvokeDirect+534)
08-09 00:12:47.236 10110 27087 27087 F DEBUG   :     #15 pc 006303a1  /system/lib/libart.so (artMterpAsmInstructionStart+14369)
08-09 00:12:47.236 10110 27087 27087 F DEBUG   :     #16 pc 002f6f29  /system/lib/libart.so (_ZN3art11interpreterL7ExecuteEPNS_6ThreadEPKNS_7DexFile8CodeItemERNS_11ShadowFrameENS_6JValueEb+537)
08-09 00:12:47.237 10110 27087 27087 F DEBUG   :     #17 pc 002feeea  /system/lib/libart.so (_ZN3art11interpreter33ArtInterpreterToInterpreterBridgeEPNS_6ThreadEPKNS_7DexFile8CodeItemEPNS_11ShadowFrameEPNS_6JValueE+234)
08-09 00:12:47.237 10110 27087 27087 F DEBUG   :     #18 pc 0031cedd  /system/lib/libart.so (_ZN3art11interpreter6DoCallILb0ELb0EEEbPNS_9ArtMethodEPNS_6ThreadERNS_11ShadowFrameEPKNS_11InstructionEtPNS_6JValueE+765)
08-09 00:12:47.237 10110 27087 27087 F DEBUG   :     #19 pc 00624aed  /system/lib/libart.so (MterpInvokeVirtual+893)
08-09 00:12:47.237 10110 27087 27087 F DEBUG   :     #20 pc 006302a1  /system/lib/libart.so (artMterpAsmInstructionStart+14113)
08-09 00:12:47.237 10110 27087 27087 F DEBUG   :     #21 pc 002f6f29  /system/lib/libart.so (_ZN3art11interpreterL7ExecuteEPNS_6ThreadEPKNS_7DexFile8CodeItemERNS_11ShadowFrameENS_6JValueEb+537)
08-09 00:12:47.237 10110 27087 27087 F DEBUG   :     #22 pc 002feeea  /system/lib/libart.so (_ZN3art11interpreter33ArtInterpreterToInterpreterBridgeEPNS_6ThreadEPKNS_7DexFile8CodeItemEPNS_11ShadowFrameEPNS_6JValueE+234)
08-09 00:12:47.237 10110 27087 27087 F DEBUG   :     #23 pc 0031cedd  /system/lib/libart.so (_ZN3art11interpreter6DoCallILb0ELb0EEEbPNS_9ArtMethodEPNS_6ThreadERNS_11ShadowFrameEPKNS_11InstructionEtPNS_6JValueE+765)
08-09 00:12:47.238 10110 27087 27087 F DEBUG   :     #24 pc 00625d65  /system/lib/libart.so (MterpInvokeInterface+1653)
08-09 00:12:47.238 10110 27087 27087 F DEBUG   :     #25 pc 006304a1  /system/lib/libart.so (artMterpAsmInstructionStart+14625)
08-09 00:12:47.238 10110 27087 27087 F DEBUG   :     #26 pc 002f6f29  /system/lib/libart.so (_ZN3art11interpreterL7ExecuteEPNS_6ThreadEPKNS_7DexFile8CodeItemERNS_11ShadowFrameENS_6JValueEb+537)
08-09 00:12:47.238 10110 27087 27087 F DEBUG   :     #27 pc 002feeea  /system/lib/libart.so (_ZN3art11interpreter33ArtInterpreterToInterpreterBridgeEPNS_6ThreadEPKNS_7DexFile8CodeItemEPNS_11ShadowFrameEPNS_6JValueE+234)
08-09 00:12:47.238 10110 27087 27087 F DEBUG   :     #28 pc 0031cedd  /system/lib/libart.so (_ZN3art11interpreter6DoCallILb0ELb0EEEbPNS_9ArtMethodEPNS_6ThreadERNS_11ShadowFrameEPKNS_11InstructionEtPNS_6JValueE+765)
08-09 00:12:47.238 10110 27087 27087 F DEBUG   :     #29 pc 00625d65  /system/lib/libart.so (MterpInvokeInterface+1653)
08-09 00:12:47.238 10110 27087 27087 F DEBUG   :     #30 pc 006304a1  /system/lib/libart.so (artMterpAsmInstructionStart+14625)
08-09 00:12:47.238 10110 27087 27087 F DEBUG   :     #31 pc 002f6f29  /system/lib/libart.so (_ZN3art11interpreterL7ExecuteEPNS_6ThreadEPKNS_7DexFile8CodeItemERNS_11ShadowFrameENS_6JValueEb+537)
08-09 00:12:47.238 10110 27087 27087 F DEBUG   :     #32 pc 002feeea  /system/lib/libart.so (_ZN3art11interpreter33ArtInterpreterToInterpreterBridgeEPNS_6ThreadEPKNS_7DexFile8CodeItemEPNS_11ShadowFrameEPNS_6JValueE+234)
08-09 00:12:47.238 10110 27087 27087 F DEBUG   :     #33 pc 0031cedd  /system/lib/libart.so (_ZN3art11interpreter6DoCallILb0ELb0EEEbPNS_9ArtMethodEPNS_6ThreadERNS_11ShadowFrameEPKNS_11InstructionEtPNS_6JValueE+765)
08-09 00:12:47.238 10110 27087 27087 F DEBUG   :     #34 pc 00625d65  /system/lib/libart.so (MterpInvokeInterface+1653)
08-09 00:12:47.238 10110 27087 27087 F DEBUG   :     #35 pc 006304a1  /system/lib/libart.so (artMterpAsmInstructionStart+14625)
08-09 00:12:47.238 10110 27087 27087 F DEBUG   :     #36 pc 002f6f29  /system/lib/libart.so (_ZN3art11interpreterL7ExecuteEPNS_6ThreadEPKNS_7DexFile8CodeItemERNS_11ShadowFrameENS_6JValueEb+537)
08-09 00:12:47.238 10110 27087 27087 F DEBUG   :     #37 pc 002feeea  /system/lib/libart.so (_ZN3art11interpreter33ArtInterpreterToInterpreterBridgeEPNS_6ThreadEPKNS_7DexFile8CodeItemEPNS_11ShadowFrameEPNS_6JValueE+234)
08-09 00:12:47.239 10110 27087 27087 F DEBUG   :     #38 pc 0031cedd  /system/lib/libart.so (_ZN3art11interpreter6DoCallILb0ELb0EEEbPNS_9ArtMethodEPNS_6ThreadERNS_11ShadowFrameEPKNS_11InstructionEtPNS_6JValueE+765)
08-09 00:12:47.239 10110 27087 27087 F DEBUG   :     #39 pc 00625d65  /system/lib/libart.so (MterpInvokeInterface+1653)
08-09 00:12:47.239 10110 27087 27087 F DEBUG   :     #40 pc 006304a1  /system/lib/libart.so (artMterpAsmInstructionStart+14625)
08-09 00:12:47.239 10110 27087 27087 F DEBUG   :     #41 pc 002f6f29  /system/lib/libart.so (_ZN3art11interpreterL7ExecuteEPNS_6ThreadEPKNS_7DexFile8CodeItemERNS_11ShadowFrameENS_6JValueEb+537)
08-09 00:12:47.239 10110 27087 27087 F DEBUG   :     #42 pc 002feeea  /system/lib/libart.so (_ZN3art11interpreter33ArtInterpreterToInterpreterBridgeEPNS_6ThreadEPKNS_7DexFile8CodeItemEPNS_11ShadowFrameEPNS_6JValueE+234)
08-09 00:12:47.239 10110 27087 27087 F DEBUG   :     #43 pc 0031cedd  /system/lib/libart.so (_ZN3art11interpreter6DoCallILb0ELb0EEEbPNS_9ArtMethodEPNS_6ThreadERNS_11ShadowFrameEPKNS_11InstructionEtPNS_6JValueE+765)
08-09 00:12:47.239 10110 27087 27087 F DEBUG   :     #44 pc 00624aed  /system/lib/libart.so (MterpInvokeVirtual+893)
08-09 00:12:47.239 10110 27087 27087 F DEBUG   :     #45 pc 006302a1  /system/lib/libart.so (artMterpAsmInstructionStart+14113)
08-09 00:12:47.239 10110 27087 27087 F DEBUG   :     #46 pc 002f6f29  /system/lib/libart.so (_ZN3art11interpreterL7ExecuteEPNS_6ThreadEPKNS_7DexFile8CodeItemERNS_11ShadowFrameENS_6JValueEb+537)
08-09 00:12:47.239 10110 27087 27087 F DEBUG   :     #47 pc 002feeea  /system/lib/libart.so (_ZN3art11interpreter33ArtInterpreterToInterpreterBridgeEPNS_6ThreadEPKNS_7DexFile8CodeItemEPNS_11ShadowFrameEPNS_6JValueE+234)
08-09 00:12:47.239 10110 27087 27087 F DEBUG   :     #48 pc 0031cedd  /system/lib/libart.so (_ZN3art11interpreter6DoCallILb0ELb0EEEbPNS_9ArtMethodEPNS_6ThreadERNS_11ShadowFrameEPKNS_11InstructionEtPNS_6JValueE+765)
08-09 00:12:47.239 10110 27087 27087 F DEBUG   :     #49 pc 00625d65  /system/lib/libart.so (MterpInvokeInterface+1653)
08-09 00:12:47.239 10110 27087 27087 F DEBUG   :     #50 pc 006304a1  /system/lib/libart.so (artMterpAsmInstructionStart+14625)
08-09 00:12:47.239 10110 27087 27087 F DEBUG   :     #51 pc 002f6f29  /system/lib/libart.so (_ZN3art11interpreterL7ExecuteEPNS_6ThreadEPKNS_7DexFile8CodeItemERNS_11ShadowFrameENS_6JValueEb+537)
08-09 00:12:47.239 10110 27087 27087 F DEBUG   :     #52 pc 002fedcd  /system/lib/libart.so (_ZN3art11interpreter30EnterInterpreterFromEntryPointEPNS_6ThreadEPKNS_7DexFile8CodeItemEPNS_11ShadowFrameE+141)
08-09 00:12:47.239 10110 27087 27087 F DEBUG   :     #53 pc 00614ead  /system/lib/libart.so (artQuickToInterpreterBridge+1341)
08-09 00:12:47.239 10110 27087 27087 F DEBUG   :     #54 pc 0064557d  /system/lib/libart.so (art_quick_to_interpreter_bridge+77)
08-09 00:12:47.239 10110 27087 27087 F DEBUG   :     #55 pc 0063f522  /system/lib/libart.so (art_quick_invoke_stub+338)
08-09 00:12:47.239 10110 27087 27087 F DEBUG   :     #56 pc 00112b18  /system/lib/libart.so (_ZN3art9ArtMethod6InvokeEPNS_6ThreadEPjjPNS_6JValueEPKc+232)
08-09 00:12:47.239 10110 27087 27087 F DEBUG   :     #57 pc 00537f9d  /system/lib/libart.so (_ZN3artL18InvokeWithArgArrayERKNS_33ScopedObjectAccessAlreadyRunnableEPNS_9ArtMethodEPNS_8ArgArrayEPNS_6JValueEPKc+109)
08-09 00:12:47.240 10110 27087 27087 F DEBUG   :     #58 pc 00539676  /system/lib/libart.so (_ZN3art35InvokeVirtualOrInterfaceWithJValuesERKNS_33ScopedObjectAccessAlreadyRunnableEP8_jobjectP10_jmethodIDP6jvalue+470)
08-09 00:12:47.240 10110 27087 27087 F DEBUG   :     #59 pc 0056bfb7  /system/lib/libart.so (_ZN3art6Thread14CreateCallbackEPv+1719)
08-09 00:12:47.240 10110 27087 27087 F DEBUG   :     #60 pc 00080087  /system/lib/libc.so (_ZL15__pthread_startPv+55)
08-09 00:12:47.240 10110 27087 27087 F DEBUG   :     #61 pc 0002f8db  /system/lib/libc.so (__start_thread+75)
08-09 00:12:47.240 10110 27087 27087 F DEBUG   :     #62 pc 0001ec26  /system/lib/libc.so (__bionic_clone+70)
@ojw28
Copy link
Contributor

ojw28 commented Aug 8, 2017

You should report this to the https://github.com/ant-media/LibRtmp-Client-for-Android/ project, since that's where the crash is occurring.

@needz
Copy link
Author

needz commented Aug 8, 2017

@ojw28, maybe you could suggest a way to introduce a delay inside ExoPlayer's extractor if rtmp:// source is detected? I don't think this problem will be solved quickly by LibRtmp client devs.

@ojw28
Copy link
Contributor

ojw28 commented Aug 14, 2017

Seems there's a fix in LibRtmp. We need to update the version we depend on once a non-RC version is provided with the fix.

ojw28 added a commit that referenced this issue Sep 6, 2017
Issue: #3156

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=167718081
@ojw28 ojw28 closed this as completed Sep 6, 2017
ojw28 added a commit that referenced this issue Sep 6, 2017
Issue: #3156

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=167718081
ojw28 added a commit that referenced this issue Sep 9, 2017
Issue: #3156

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=167718081
@mattsff
Copy link

mattsff commented Sep 12, 2017

Could you fix it? I have de same problem. Thanks!

@ojw28
Copy link
Contributor

ojw28 commented Sep 12, 2017

This is fixed already in 2.5.2.

@mattsff
Copy link

mattsff commented Sep 12, 2017

@ojw28 It works like a charm. Thanks!

hishamMuneer added a commit to hishamMuneer/ExoPlayer that referenced this issue Sep 14, 2017
* Minimal change to expose segment indices in DefaultDashChunkSource

Issue: google#3037

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=164614478

* Clean up terminology for MediaSession extension

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=164705750

* Fix minor Javadoc error

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=164706078

* Document usage of the RTMP extension

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=164706135

* set mediaSession flags properly and keep queue in sync when timeline changes

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=164774783

* Support multiple video/text/metadata outputs

We've seen more than one issue filed where a developer has
registered a video listener and been confused by the fact
their SimpleExoPlayerView no longer works properly. There
are also valid use cases for having multiple metadata/text
outputs.

Issue: google#2933
Issue: google#2800
Issue: google#2286
Issue: google#2240

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=164839882

* Fix maskingX variables when timeline becomes empty

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=164840037

* Restrict usage of secure DummySurface for all Samsung devices.

* Support H262 video in MP4

* Fix possible subrip timing line NPE

* Support crop mode for AspectRatioFrameLayout

* Add flag to CachedContentIndex to disable encryption.  This allows the encryption feature
to be disabled gracefully: encrypted index files may be read, but plaintext will be written.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=165196508

* Disable secure dummy surface on all Samsung N devices

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=165291627

* Update instructions to include Google Maven repository

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=165291982

* Destroy GL context when releasing dummy surface

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=165293386

* Restore the interrupted flag after blocking operations

If the main thread was interrupted during
ExoPlayerImplInternal.blockingSendMessage/release, the interrupted flag was
immediately set but then wait() was called on the next iteration. wait() would
immediately throw InterruptedException, causing the main thread to spin until
the blocking operation completed.

Instead of resetting the flag immediately, reset it after the blocking
operation completes.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=165426493

* Work around issue with Xiaomi JB devices

Issue: google#3171

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=165577562

* Improve FORMAT_UNSUPPORTED_DRM related documentation and logging

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=165580016

* Improve MediaSource/MediaPeriod documentation

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=165628229

* expose setPropertyByteArray, setPropertyString

export setPropertyByteArray, setPropertyString of DefaultDrmSessionManager for easy customization.

* Minor style tweaks

* Allow the app to specify extra ad markers

Issue: google#3184

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=165895259

* Remove isFirstWindow/isLastWindow from Timeline.

These methods are only used in one place, and offer duplicate
functionality to checking getNext(Previous)WindowIndex == C.INDEX_UNSET.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=165910258

* Fix broken link + minor doc tweak

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=165920927

* Handle size==0 in MP4 atoms

Issue: google#3191

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=165925148

* Use flavorDimensions for external demo app

- This is soon becoming mandatory.
- It also looks like future versions of com.android.tools.build
  are being distributed via Google's Maven repository.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=166058299

* Support aspect ratio fill mode for AspectRatioFrameLayout

* Support zoom mode for AspectRatioFrameLayout

* Allow subclasses to customize the MediaFormat

Make getMediaFormat protected so that subclasses can set additional MediaFormat
keys. For example, if the decoder output needs to be read back via an
ImageReader as YUV data it is necessary to set KEY_COLOR_FORMAT to
COLOR_FormatYUV420Flexible.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=166195211

* Use Math.abs in Sonic.java

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=166820970

* Add support for new codecs parameter string

* google#3215 Additional secure DummySurface device exclusions

* Use UTF-8 everywhere

UTF-8 is the default charset on Android so this should be a no-op change, but
makes the code portable (in case it runs on another platform).

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=167011583

* Fix ContentDataSource bytesRemaining calculation

The bytesRemaining didn't always take into account any skipped bytes, which
meant that reaching the end of the file was not correctly detected in read().

Issue: google#3216

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=167016672

* Allow more aggressive switching for HLS with independent segments

We currently switch without downloading overlapping segments, but
we do not actually switch more aggressively. This change fixes
this. Note there's an implicit assumption made that if one media
playlist declares independent segments, the others will too. This
is almost certainly true in practice, and if it's not the penalty
isn't too bad (the player may try and switch to a higher quality
variant one segment's worth of buffer too soon).

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=167120992

* HDR 10 bits: Use a separate sampler for U and V dithering.
Using the same sampler introduced some minor horizontal scratches.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=167347995

* Fix typo

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=167474040

* Minor cleanup to AspectRatioFrameLayout

* Update moe eqiuvalence

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=167488837

* Allow EXIF tracks to be exposed

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=167493800

* Adding missing license header in IMA build.gradle

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=167496569

* Additional secure DummySurface device exclusions

Merge: google#3225

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=167502127

* Be robust against unexpected EOS in WebvttCueParser

Issue: google#3228

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=167504122

* Rewrite logic for enabling secure DummySurface

Issue: google#3215

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=167505797

* Upgrade gradle plugin / wrapper

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=167579719

* Don't use MediaCodec.setOutputSurface on Nexus 7 with qcom decoder

Issue: google#3236

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=167581198

* Fix position reporting during ads when period has non-zero window offset.

Reporting incorrect positions for ad playbacks was causing IMA to
think the ad wasn't playing, when in fact it was.

Issue: google#3180

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=167702032

* Workaround for SurfaceView not being hidden properly

This appears to be fixed in Oreo, but given how harmless
the workaround is we can probably just apply it on all
API levels to be sure.

Issue: google#3160

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=167709070

* DecryptionException cleanup + add missing header

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=167711928

* Pick up rtmpClient fix

Issue: google#3156

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=167718081

* Enable rtmp in external demo app with extensions

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=168007345

* Destroy EGLSurface during DummySurface cleanup

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=168020525

* Fix attr inheritance in SimpleExoPlayerView

When creating PlaybackControlView inside SimpleExoPlayerView,
we want certain attributes to be passed through. This lets you
set control attributes on the SimpleExoPlayerView directly. We
don't want all attributes to be propagated though; only our own
custom ones.

Not sure if there's a cleaner way to do this. Pragmatically this
solution seems ... ok :)?

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=167619801

* Add possibility of forcing a specific license URL in HttpMediaDrmCallback

Resubmit of google#3136

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=164971900

* Fix build for release

* Bump to 2.5.2

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=168155713

* Update extension README with usage instructions

Issue: google#3162

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=165572088

* Tweak and add READMEs + remove refs to V1

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=165578518

* Update README.md
@google google locked and limited conversation to collaborators Jan 5, 2018
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

3 participants