-
Notifications
You must be signed in to change notification settings - Fork 133
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
[Proposal] Re-export config in v4 and synchronize main thread config and worker config #1510
Conversation
5275acf
to
86fc351
Compare
Based on #1510, the idea behind this proposal is to add to our config properties allowing to force toggles we for now only enable for specific devices. The goal is to simplify the debugging of issues seen on specific devices (which is the huge majority of them), by just having to update the config in the corresponding application (as proposed by #1510). So for example let's say that we encounter a new device where relying on the same `MediaKeys` instance for multiple contents may fail after a time (bug encountered on LG's WebOS, on some Panasonic TVs, and now, in issue #1464, on Philips's TitanOS), we could just initially tell application people to try setting that experimental flag. If it fixes the issue, we will add a supplementary device check inside the corresponding compat function. This seems faster and less bothersome to me than having to create special builds of the RxPlayer, and there our role could just be to redirect the developer seeing the issue to the right config option (as opposed to having to build a player, then link that player to the application, making sure that their CI like us etc.).
Based on #1510, the idea behind this proposal is to add to our config properties allowing to force toggles we for now only enable for specific devices. The goal is to simplify the debugging of issues seen on specific devices (which is the huge majority of them), by just having to update the config in the corresponding application (as proposed by #1510). So for example let's say that we encounter a new device where relying on the same `MediaKeys` instance for multiple contents may fail after a time (bug encountered on LG's WebOS, on some Panasonic TVs, and now, in issue #1464, on Philips's TitanOS), we could just initially tell application people to try setting that experimental flag. If it fixes the issue, we will add a supplementary device check inside the corresponding compat function. This seems faster and less bothersome to me than having to create special builds of the RxPlayer, and there our role could just be to redirect the developer seeing the issue to the right config option (as opposed to having to build a player, then link that player to the application, making sure that their CI like us etc.).
Based on #1510, the idea behind this proposal is to add to our config properties allowing to force toggles we for now only enable for specific devices. The goal is to simplify the debugging of issues seen on specific devices (which is the huge majority of them), by just having to update the config in the corresponding application (as proposed by #1510). So for example let's say that we encounter a new device where relying on the same `MediaKeys` instance for multiple contents may fail after a time (bug encountered on LG's WebOS, on some Panasonic TVs, and now, in issue #1464, on Philips's TitanOS), we could just initially tell application people to try setting that experimental flag. If it fixes the issue, we will add a supplementary device check inside the corresponding compat function. This seems faster and less bothersome to me than having to create special builds of the RxPlayer, and there our role could just be to redirect the developer seeing the issue to the right config option (as opposed to having to build a player, then link that player to the application, making sure that their CI like us etc.).
86fc351
to
34323ec
Compare
Based on #1510, the idea behind this proposal is to add to our config properties allowing to force toggles we for now only enable for specific devices. The goal is to simplify the debugging of issues seen on specific devices (which is the huge majority of them), by just having to update the config in the corresponding application (as proposed by #1510). So for example let's say that we encounter a new device where relying on the same `MediaKeys` instance for multiple contents may fail after a time (bug encountered on LG's WebOS, on some Panasonic TVs, and now, in issue #1464, on Philips's TitanOS), we could just initially tell application people to try setting that experimental flag. If it fixes the issue, we will add a supplementary device check inside the corresponding compat function. This seems faster and less bothersome to me than having to create special builds of the RxPlayer, and there our role could just be to redirect the developer seeing the issue to the right config option (as opposed to having to build a player, then link that player to the application, making sure that their CI like us etc.).
Based on #1510, the idea behind this proposal is to add to our config properties allowing to force toggles we for now only enable for specific devices. The goal is to simplify the debugging of issues seen on specific devices (which is the huge majority of them), by just having to update the config in the corresponding application (as proposed by #1510). So for example let's say that we encounter a new device where relying on the same `MediaKeys` instance for multiple contents may fail after a time (bug encountered on LG's WebOS, on some Panasonic TVs, and now, in issue #1464, on Philips's TitanOS), we could just initially tell application people to try setting that experimental flag. If it fixes the issue, we will add a supplementary device check inside the corresponding compat function. This seems faster and less bothersome to me than having to create special builds of the RxPlayer, and there our role could just be to redirect the developer seeing the issue to the right config option (as opposed to having to build a player, then link that player to the application, making sure that their CI like us etc.).
34323ec
to
eb83db7
Compare
Based on #1510, the idea behind this proposal is to add to our config properties allowing to force toggles we for now only enable for specific devices. The goal is to simplify the debugging of issues seen on specific devices (which is the huge majority of them), by just having to update the config in the corresponding application (as proposed by #1510). So for example let's say that we encounter a new device where relying on the same `MediaKeys` instance for multiple contents may fail after a time (bug encountered on LG's WebOS, on some Panasonic TVs, and now, in issue #1464, on Philips's TitanOS), we could just initially tell application people to try setting that experimental flag. If it fixes the issue, we will add a supplementary device check inside the corresponding compat function. This seems faster and less bothersome to me than having to create special builds of the RxPlayer, and there our role could just be to redirect the developer seeing the issue to the right config option (as opposed to having to build a player, then link that player to the application, making sure that their CI like us etc.).
We've seen multiple occurences lately on several devices where playback failed after playing a few encrypted contents. On those, setting the `closesSessionsOnStop` option (an option and already-existing work-around) had no effect, yet renewing the MediaKeys at each load fixed the issue. It's very probably a device bug. For those, we usually had the strategy of knowing on which devices this problem was encountered, detect it inside the RxPlayer, and choose to always renew the `MediaKeys` on those (without the application even knowing we did that). However, some users suggested to us to add this as an option, because they may have reproduced the issue on other devices. I'm kind of ambivalent toward adding this as an option: - I generally prefer our strategy of fixing it for all devices with the issue, with people reporting issues to us when a new device has the issue. This allows to fix it once and for all for all those devices. - I understand that some applications might prefer to iterate rapidly and be able to have more control over the RxPlayer behavior. Another PR, #1510, would allow doing this by patching our config instead but this would not be doable in production for applications (config properties are not something we guarantee in our API). This PR however, would allow applications to do it when and wherever they please. Thoughts?
We've seen multiple occurences lately on several devices where playback failed after playing a few encrypted contents. On those, setting the `closesSessionsOnStop` option (an option and already-existing work-around) had no effect, yet renewing the MediaKeys at each load fixed the issue. It's very probably a device bug. For those, we usually had the strategy of knowing on which devices this problem was encountered, detect it inside the RxPlayer, and choose to always renew the `MediaKeys` on those (without the application even knowing we did that). However, some users suggested to us to add this as an option, because they may have reproduced the issue on other devices. I'm kind of ambivalent toward adding this as an option: - I generally prefer our strategy of fixing it for all devices with the issue, with people reporting issues to us when a new device has the issue. This allows to fix it once and for all for all those devices. - I understand that some applications might prefer to iterate rapidly and be able to have more control over the RxPlayer behavior. Another PR, #1510, would allow doing this by patching our config instead but this would not be doable in production for applications (config properties are not something we guarantee in our API). This PR however, would allow applications to do it when and wherever they please. Thoughts?
eb83db7
to
65260a2
Compare
Based on #1510, the idea behind this proposal is to add to our config properties allowing to force toggles we for now only enable for specific devices. The goal is to simplify the debugging of issues seen on specific devices (which is the huge majority of them), by just having to update the config in the corresponding application (as proposed by #1510). So for example let's say that we encounter a new device where relying on the same `MediaKeys` instance for multiple contents may fail after a time (bug encountered on LG's WebOS, on some Panasonic TVs, and now, in issue #1464, on Philips's TitanOS), we could just initially tell application people to try setting that experimental flag. If it fixes the issue, we will add a supplementary device check inside the corresponding compat function. This seems faster and less bothersome to me than having to create special builds of the RxPlayer, and there our role could just be to redirect the developer seeing the issue to the right config option (as opposed to having to build a player, then link that player to the application, making sure that their CI like us etc.).
65260a2
to
896f58e
Compare
Based on #1510, the idea behind this proposal is to add to our config properties allowing to force toggles we for now only enable for specific devices. The goal is to simplify the debugging of issues seen on specific devices (which is the huge majority of them), by just having to update the config in the corresponding application (as proposed by #1510). So for example let's say that we encounter a new device where relying on the same `MediaKeys` instance for multiple contents may fail after a time (bug encountered on LG's WebOS, on some Panasonic TVs, and now, in issue #1464, on Philips's TitanOS), we could just initially tell application people to try setting that experimental flag. If it fixes the issue, we will add a supplementary device check inside the corresponding compat function. This seems faster and less bothersome to me than having to create special builds of the RxPlayer, and there our role could just be to redirect the developer seeing the issue to the right config option (as opposed to having to build a player, then link that player to the application, making sure that their CI like us etc.).
We've seen multiple occurences lately on several devices where playback failed after playing a few encrypted contents. On those, setting the `closesSessionsOnStop` option (an option and already-existing work-around) had no effect, yet renewing the MediaKeys at each load fixed the issue. It's very probably a device bug. For those, we usually had the strategy of knowing on which devices this problem was encountered, detect it inside the RxPlayer, and choose to always renew the `MediaKeys` on those (without the application even knowing we did that). However, some users suggested to us to add this as an option, because they may have reproduced the issue on other devices. I'm kind of ambivalent toward adding this as an option: - I generally prefer our strategy of fixing it for all devices with the issue, with people reporting issues to us when a new device has the issue. This allows to fix it once and for all for all those devices. - I understand that some applications might prefer to iterate rapidly and be able to have more control over the RxPlayer behavior. Another PR, #1510, would allow doing this by patching our config instead but this would not be doable in production for applications (config properties are not something we guarantee in our API). This PR however, would allow applications to do it when and wherever they please. Thoughts?
Editing this configuration is only for debugging purposes, right ? So, if there is an option like Apart from that I'm fine with the code |
Yes
I'm not sure I follow. The idea here would be to open the way for config properties which are not intended to be in the API yet would be useful for debugging matters only. If it turns out we have to add this to the API, we would be adding this to the API instead. A third way which I'm experimenting in some PR right now is to have an So:
|
Ok, thanks for the explaination, got it! |
Based on #1510, the idea behind this proposal is to add to our config properties allowing to force toggles we for now only enable for specific devices. The goal is to simplify the debugging of issues seen on specific devices (which is the huge majority of them), by just having to update the config in the corresponding application (as proposed by #1510). So for example let's say that we encounter a new device where relying on the same `MediaKeys` instance for multiple contents may fail after a time (bug encountered on LG's WebOS, on some Panasonic TVs, and now, in issue #1464, on Philips's TitanOS), we could just initially tell application people to try setting that experimental flag. If it fixes the issue, we will add a supplementary device check inside the corresponding compat function. This seems faster and less bothersome to me than having to create special builds of the RxPlayer, and there our role could just be to redirect the developer seeing the issue to the right config option (as opposed to having to build a player, then link that player to the application, making sure that their CI like us etc.).
Based on #1510, the idea behind this proposal is to add to our config properties allowing to force toggles we for now only enable for specific devices. The goal is to simplify the debugging of issues seen on specific devices (which is the huge majority of them), by just having to update the config in the corresponding application (as proposed by #1510). So for example let's say that we encounter a new device where relying on the same `MediaKeys` instance for multiple contents may fail after a time (bug encountered on LG's WebOS, on some Panasonic TVs, and now, in issue #1464, on Philips's TitanOS), we could just initially tell application people to try setting that experimental flag. If it fixes the issue, we will add a supplementary device check inside the corresponding compat function. This seems faster and less bothersome to me than having to create special builds of the RxPlayer, and there our role could just be to redirect the developer seeing the issue to the right config option (as opposed to having to build a player, then link that player to the application, making sure that their CI like us etc.).
Based on #1510, the idea behind this proposal is to add to our config properties allowing to force toggles we for now only enable for specific devices. The goal is to simplify the debugging of issues seen on specific devices (which is the huge majority of them), by just having to update the config in the corresponding application (as proposed by #1510). So for example let's say that we encounter a new device where relying on the same `MediaKeys` instance for multiple contents may fail after a time (bug encountered on LG's WebOS, on some Panasonic TVs, and now, in issue #1464, on Philips's TitanOS), we could just initially tell application people to try setting that experimental flag. If it fixes the issue, we will add a supplementary device check inside the corresponding compat function. This seems faster and less bothersome to me than having to create special builds of the RxPlayer, and there our role could just be to redirect the developer seeing the issue to the right config option (as opposed to having to build a player, then link that player to the application, making sure that their CI like us etc.).
In the RxPlayer team, we very often have to debug devices presenting some type of issue.
What we do usually is to create an RxPlayer branch (through
git
), push that branch to GitHub, then find a way (sometimes it's not so simple though) in the application in question to rely on the branch (we try to avoid pushing builds on GitHub, so we often rely on e.g.postinstall
tricks to build the player in that application when installing / updating its dependencies).Yet, having to dive into the application's CI / dependency system / build system is no fun and often breaks.
Diagnostics often follow similar RxPlayer code modifications, so I'm wondering if we could not bring back an idea we had in the
v3
era:The idea is to expose through an experimental export our global configuration, to allow updates of the RxPlayer config properties inside that application. Then we could add that custom logic inside the RxPlayer code and only enable it when a config property is enabled.
Config properties is not defined in the API, are comparable to globals (they don't need to be communicated at the function-level) and as such adding custom behavior based on config updates is relatively simple to do.
For example, for the now frequent need when debugging new devices of only loading segments once we now they are decipherable, we could just add in the target application (or even ask them to add temporarily):
Because in multithreading mode, we might have to synchronize the main thread's config to the worker's config, I also had to add some synchronization code. It is in essence the exact same problem than for our logger, so I kind of repeated the same logic here.