2015-11-08, 15:28
Hey guys,
To get it out of the way: I'm not a complete noob when it comes to home video and computers/programming. Trust me when I say my playback issues are *not* caused by network issues, video files, or terrible eyes
Video files are stored on a NAS, conntected via an ethernet cable at 1000mbit/s to the router. The router has wireless-AC and that's how the Android boxes are connected, they are right next to the router (literally only 30cm/1ft apart, with only air between them). The files are shared via the NFS protocol.
The issue up until 15.2:
I have the new Fire TV box with Kodi 15.2 installed. It is running with 1080p@60Hz connected via HDMI on a Samsung UE55ES6100 which I have fully calibrated with a X-Rite i1Display Pro colorimeter. For testing purposes Motion Plus (interpolation) has been completely turned off.
When I try playing h264 files (24p and either 720p or 1080p and regardless of bitrate) the video appeared somehow "jerky" (hard to describe). I'm not talking about the 3:2 pulldown. I tried turning off MediaCodec and also libstagefright but the playback still was jerky. Playing the same file in the native photo player, in the VLC for android player, and in the MX player yielded no such issue. The video there was perfectly smooth.
This issue became much more clear when I turned Motion Plus on on my TV (blur reduction 10, judder reduction 6, this produces no "soap opera" effect but does a PERFECT 24p -> 60Hz conversion, usually). With the effect turned on, I could see the jerkyness manifold. It seemed to me like the TV was getting confused about how the frames were coming in. It would perfectly smooth out the scenery pans for 1-3 seconds and then it would get thrown off by something and would jerk really hard for like 0.5-1s and struggle to "stabilize" for the next 1-2s. As if the images it received were not "conventional" or something and it would get confused about weather this is a 24p video or what. This is not a Motion Plus issue, as this is also visible with it turned off but much harder to see because of all the "normal" judder caused by 24p on 60hz.
The weird thing is, during ALL of this testing, the "codecinfo" screen ALWAYS showed "dropped: 0" for the video
And like I said, with all the other players the video was clearly smoother. Turning Motion Plus back on with my settings, it was superb. I have a test scene I use with a loooong scenery camera pan and it is smooth as butter, not a single jerk or anything. I also have a WDTV Live Player running at 60Hz and it also produces a perfectly smooth image.
So, obviously I was suspecting Kodi to be the issue. Not the issue per se, but probably using some "unusual" way of rendering/presenting the frames or something. A way that the Fire TV box/OS is not able to handle for some reason. And like I said, MediaCodec and libstagefright and software decoding didn't change anything. So I bought a Google Nexus Player. Running Marshmallow 6.0 and the latest November updates, I installed Kodi again and tried again. And what do you know, it has the EXACT same issue as the Fire TV player. Regardless of file, regardless of settings, regardless of renderer/decoder. Kodi could not produce smooth frames, but the other software players could unfortunately.
In a last hope I installed Kodi 16a4 on my FireTV:
Using MediaCodec-Surface and the issue is finally gone! Videos play buttery smooth now, it is amazing. I was so happy to being able to keep Kodi and not having to return the Android box (since there's nothing else even coming close to Kodi). Disabling MediaCodec-Surface and using the "old" MediaCodec produced the same jerky results as 15.2 did. Same goes for software decoding. Only MediaCodec-Surface was buttery smooth.
(btw: on 15.2 and 16a4, MediaCodec and MediaCodec-Surface were not able to render *.flv-Videos (VP6) on both the Nexus Player and the Fire TV; it worked with software decoding but I had to go to the menu to change it by hand every time)
So I was thinking of just using 16a4 since MediaCodec-Surface worked so well for me. This is until I tried to play a h264 video that uses BT.709 (shows up as "yuv420(tv, bt709)" in codecinfo). This time, the video was not "jerky" but had judder all over the place. I can't quite put my finger on it, but something is definitely wrong about the video playback, it is juddery all the time, as if the video was filmed with 20 fps or something. It is constant but very small judder, which I suspect not everybody "sees". It also seemed like the video was lagging behind the audio a little bit, but I'm not 100% sure on that. The same happens to 25p videos with BT.709, not only 24p.
However, I have the same judder for these videos in ALL of the software players I tested (VLC, MX, internal). I'm not able to get rid of it for BT.709 videos, regardless of setting. But seeing this is not only in Kodi, I assume Fire TV screws up somehow, which is a shame. Unfortunately I don't have the Nexus Player anymore to test the same videos on it to see if it has the same issue. Unfortunately I have lots of movies in BT.709 and can't use my Fire TV for this Do you guys happen to have any ideas why this is?
Debug kodi.log
This is the log I did for Kodi 16a4 with MediaCodec-Surface for the issue with the BT.709 video ( = small but constant video judder)
Debug kodi.log
This is the log for Kodi 16a4 with MediaCodec for all 24p videos ( = jerky video)
Debug kodi.log
This is the log for Kodi 16a4 with software decoding for all 24p videos ( = same result as MediaCodec)
Debug kodi.log
This is the log for Kodi 16a4 with MediaCodec-Surface for all non-BT.709 videos ( = usually smooth, but not when debug logging is turned on, lol)
Sorry for the long post.
To get it out of the way: I'm not a complete noob when it comes to home video and computers/programming. Trust me when I say my playback issues are *not* caused by network issues, video files, or terrible eyes
Video files are stored on a NAS, conntected via an ethernet cable at 1000mbit/s to the router. The router has wireless-AC and that's how the Android boxes are connected, they are right next to the router (literally only 30cm/1ft apart, with only air between them). The files are shared via the NFS protocol.
The issue up until 15.2:
I have the new Fire TV box with Kodi 15.2 installed. It is running with 1080p@60Hz connected via HDMI on a Samsung UE55ES6100 which I have fully calibrated with a X-Rite i1Display Pro colorimeter. For testing purposes Motion Plus (interpolation) has been completely turned off.
When I try playing h264 files (24p and either 720p or 1080p and regardless of bitrate) the video appeared somehow "jerky" (hard to describe). I'm not talking about the 3:2 pulldown. I tried turning off MediaCodec and also libstagefright but the playback still was jerky. Playing the same file in the native photo player, in the VLC for android player, and in the MX player yielded no such issue. The video there was perfectly smooth.
This issue became much more clear when I turned Motion Plus on on my TV (blur reduction 10, judder reduction 6, this produces no "soap opera" effect but does a PERFECT 24p -> 60Hz conversion, usually). With the effect turned on, I could see the jerkyness manifold. It seemed to me like the TV was getting confused about how the frames were coming in. It would perfectly smooth out the scenery pans for 1-3 seconds and then it would get thrown off by something and would jerk really hard for like 0.5-1s and struggle to "stabilize" for the next 1-2s. As if the images it received were not "conventional" or something and it would get confused about weather this is a 24p video or what. This is not a Motion Plus issue, as this is also visible with it turned off but much harder to see because of all the "normal" judder caused by 24p on 60hz.
The weird thing is, during ALL of this testing, the "codecinfo" screen ALWAYS showed "dropped: 0" for the video
And like I said, with all the other players the video was clearly smoother. Turning Motion Plus back on with my settings, it was superb. I have a test scene I use with a loooong scenery camera pan and it is smooth as butter, not a single jerk or anything. I also have a WDTV Live Player running at 60Hz and it also produces a perfectly smooth image.
So, obviously I was suspecting Kodi to be the issue. Not the issue per se, but probably using some "unusual" way of rendering/presenting the frames or something. A way that the Fire TV box/OS is not able to handle for some reason. And like I said, MediaCodec and libstagefright and software decoding didn't change anything. So I bought a Google Nexus Player. Running Marshmallow 6.0 and the latest November updates, I installed Kodi again and tried again. And what do you know, it has the EXACT same issue as the Fire TV player. Regardless of file, regardless of settings, regardless of renderer/decoder. Kodi could not produce smooth frames, but the other software players could unfortunately.
In a last hope I installed Kodi 16a4 on my FireTV:
Using MediaCodec-Surface and the issue is finally gone! Videos play buttery smooth now, it is amazing. I was so happy to being able to keep Kodi and not having to return the Android box (since there's nothing else even coming close to Kodi). Disabling MediaCodec-Surface and using the "old" MediaCodec produced the same jerky results as 15.2 did. Same goes for software decoding. Only MediaCodec-Surface was buttery smooth.
(btw: on 15.2 and 16a4, MediaCodec and MediaCodec-Surface were not able to render *.flv-Videos (VP6) on both the Nexus Player and the Fire TV; it worked with software decoding but I had to go to the menu to change it by hand every time)
So I was thinking of just using 16a4 since MediaCodec-Surface worked so well for me. This is until I tried to play a h264 video that uses BT.709 (shows up as "yuv420(tv, bt709)" in codecinfo). This time, the video was not "jerky" but had judder all over the place. I can't quite put my finger on it, but something is definitely wrong about the video playback, it is juddery all the time, as if the video was filmed with 20 fps or something. It is constant but very small judder, which I suspect not everybody "sees". It also seemed like the video was lagging behind the audio a little bit, but I'm not 100% sure on that. The same happens to 25p videos with BT.709, not only 24p.
However, I have the same judder for these videos in ALL of the software players I tested (VLC, MX, internal). I'm not able to get rid of it for BT.709 videos, regardless of setting. But seeing this is not only in Kodi, I assume Fire TV screws up somehow, which is a shame. Unfortunately I don't have the Nexus Player anymore to test the same videos on it to see if it has the same issue. Unfortunately I have lots of movies in BT.709 and can't use my Fire TV for this Do you guys happen to have any ideas why this is?
Debug kodi.log
This is the log I did for Kodi 16a4 with MediaCodec-Surface for the issue with the BT.709 video ( = small but constant video judder)
Debug kodi.log
This is the log for Kodi 16a4 with MediaCodec for all 24p videos ( = jerky video)
Debug kodi.log
This is the log for Kodi 16a4 with software decoding for all 24p videos ( = same result as MediaCodec)
Debug kodi.log
This is the log for Kodi 16a4 with MediaCodec-Surface for all non-BT.709 videos ( = usually smooth, but not when debug logging is turned on, lol)
Sorry for the long post.