I didn't try to reencode with handbrake yet, but I'm afraid that xbmc's version of ffmpeg seems to be broken somehow. I tested that problematic file using stock ffplay from deb multimedia and it plays very well with multicore support on my cpu. But, as I said above, xbmc stucks on only one core and after a few seconds, the sound starts to shutter. It's a bit shame, even if that file was encoded by some strabge way, official ffmpeg still doesn't have any problems with it. It's not possible get good result with one core cpu decoding for h264 and 4k dci, shame,
So official ffmpeg - good, xbmc's ffmpeg - bad, single core only for h.264 in some cases. I suspect it will be ok on xbmc after re encoding to h264 using ffmpeg or handbrake. But, to be honest, xbmc's ffmpeg seems to be a bit broken in compare to official in this case and I think you should look at this?
Let me know if you are interesting in movie sample, I can upload it for any further testing (1 minute sample, about 500 MB).
Fot hevc, it's not bad so far (the same as ffmpeg official) but h264 seems to be a bit broken when we are talking about software decoding.
Debug Log we use latest ffmpeg 2.x but parameters could be wrong as xbmc does use an own player.
Edit: You cannot say something about ffmpeg when using different players.
Edit2: please post the sample. I suspect a player issue.
Here:
http://xbmclogs.com/show.php?id=288270
XBMC cpu load is constantly 104% but it's definitely wrong. One core 100%, 7 cores remaining - only 4% and movie are not playing smoothly. CPU computing power is not used, only one thread. Official ffmpeg has not this problem with the same file.
I think it's most important info:
Code:
21:42:46 T:139884165576448 DEBUG: CDVDPlayerVideo - CDVDMsg::GENERAL_RESYNC(41422.222222, 0)
21:42:46 T:139884165576448 INFO: ffmpeg[51FFB700]: [h264] Cannot parallelize slice decoding with deblocking filter type 1, decoding such frames in sequential order
21:42:46 T:139884165576448 INFO: ffmpeg[51FFB700]: [h264] To parallelize slice decoding you need video encoded with disable_deblocking_filter_idc set to 2 (deblock only edges that do not cross slices).
But official ffplay app can parallelize decoding of the same file, because cpu load is about 20% on all cores. So something is wrong here. Or possibly ffmpeg from deb multimedia is already patched somehow and it's not the official one.
H264 is only multithreaded when you set Video decoding to Software.
System Settings Acceleration Decoding Methode: Software
That gt630 seems odd. It's limited to 2048x2048. My gt610 can play 4k very well.
Can you retry with OpenELEC? (Just a sidenote next to the SW decoding test)
(2014-09-07, 21:52)fritsch Wrote: [ -> ]H264 is only multithreaded when you set Video decoding to Software.
Why am I forced to manually disable hardware decoding? I thought that when my gpu is unable to perform hardware decoding, it will be software decoded. It works that way with hevc. So I can't really understand your point of view? Why disable hardware decoding?
We are not talking about hardware decoding, because CPU do all job here. But not multicore, why? Offcial ffmpe decodes the same file very smoothly wit multicore support on my cpu. I don't really need hardware decoding, since cpu is powerfull enouth to decode this.
[edit]
So, I tested again. Disabled hardware acceleration in xbmc settings. Enabled software decoding and checked option "allow multicore decoding". Now everything is fine. But it seems to me to be bad idea how it works now. When my gpu is unable to decode movie, xbmc should start software decoding with multicore support but it won't happen for h264, and it will happen for hevc. I can't even see any reason for option for single core software decoding, it should be always multithreaded.
HW decoding fails. SW Decoder is opened but only! Single threaded. Hevc and hi10p are on a whitelist and multithreaded by default.
If a hw Decoder gets opened with framethreading it will crash right away. Therefore wie have that explicit setting for hw Decoder codecs which h264 is.
Bzw your nvidia should decode h264 4k fine:
http://www.nvidia.com/object/linux-displ....23-driver
Quote:HW decoding fails. SW Decoder is opened but only! Single threaded.
That's the point. Can't understand from what purpose it's opened as single threated....Now I need to go to settings and disable hardware decoding everytime when I want to watch 4k? XBMC should open software decoder as multithreaded in this case. How do you think? I can't even see any reason why single threated software decoder exists, in any case - it should not be used by default. Because it will always cause lack of performance
Quiet easy. You spotted a design flaw in xbmc - threading is setup prior(!) to opening the decoder and cannot easily be changed afterwards.
That's why I implemented the whitelist for vp9, hevc and hi10p ... patch is welcome :-)
Btw. Does it work on all cores now?
I'm not able to prepare patch, unfortunately... but I hope you can agree, that this bahaviour for h264 should be changed.
(2014-09-07, 22:23)fritsch Wrote: [ -> ]Btw. Does it work on all cores now?
Yes it works on all cores. But only if I disable hardware acceleration. Not nice though. So simplest workaround is to use hevc for 4k, hope you don't plan to disable multi threated software decoding for hevc as well
It's not that easy. We currently only can do that for Codecs that cannot be opened by a hw Decoder at all cause of the said issues.
So. Does that file play now?
When it's explicitly set in options to "software" and "multi threated" - yes, no problems. When gpu decoding is enabled - no, it's not played correctly.
Quote:It's not that easy. We currently only can do that for Codecs that cannot be opened by a hw Decoder at all cause of the said issues.
OK I understand what you mean. Bad news but I hope it will be fixed some day. I was confused because it was not what I expected.
Please also check your GPU. Something is wrong with your driver. Try the Version I linked. 4k on that nvidia must work.
My vdpauinfo:
Code:
display: :0 screen: 0
API version: 1
Information string: NVIDIA VDPAU Driver Shared Library 340.32 Tue Aug 5 20:35:32 PDT 2014
Video surface:
name width height types
-------------------------------------------
420 4096 4096 NV12 YV12
422 4096 4096 UYVY YUYV
Decoder capabilities:
name level macbs width height
-------------------------------------------
MPEG1 0 8192 2048 2048
MPEG2_SIMPLE 3 8192 2048 2048
MPEG2_MAIN 3 8192 2048 2048
H264_MAIN 41 8192 2048 2048
H264_HIGH 41 8192 2048 2048
VC1_SIMPLE 1 8190 2048 2048
VC1_MAIN 2 8190 2048 2048
VC1_ADVANCED 4 8190 2048 2048
MPEG4_PART2_SP 3 8192 2048 2048
MPEG4_PART2_ASP 5 8192 2048 2048
DIVX4_QMOBILE 0 8192 2048 2048
DIVX4_MOBILE 0 8192 2048 2048
DIVX4_HOME_THEATER 0 8192 2048 2048
DIVX4_HD_1080P 0 8192 2048 2048
DIVX5_QMOBILE 0 8192 2048 2048
DIVX5_MOBILE 0 8192 2048 2048
DIVX5_HOME_THEATER 0 8192 2048 2048
DIVX5_HD_1080P 0 8192 2048 2048
Output surface:
name width height nat types
----------------------------------------------------
B8G8R8A8 16384 16384 y Y8U8V8A8 V8U8Y8A8
R10G10B10A2 16384 16384 y Y8U8V8A8 V8U8Y8A8
Bitmap surface:
name width height
------------------------------
B8G8R8A8 16384 16384
R8G8B8A8 16384 16384
R10G10B10A2 16384 16384
B10G10R10A2 16384 16384
A8 16384 16384
Video mixer:
feature name sup
------------------------------------
DEINTERLACE_TEMPORAL y
DEINTERLACE_TEMPORAL_SPATIAL y
INVERSE_TELECINE y
NOISE_REDUCTION y
SHARPNESS y
LUMA_KEY y
HIGH QUALITY SCALING - L1 y
HIGH QUALITY SCALING - L2 -
HIGH QUALITY SCALING - L3 -
HIGH QUALITY SCALING - L4 -
HIGH QUALITY SCALING - L5 -
HIGH QUALITY SCALING - L6 -
HIGH QUALITY SCALING - L7 -
HIGH QUALITY SCALING - L8 -
HIGH QUALITY SCALING - L9 -
parameter name sup min max
-----------------------------------------------------
VIDEO_SURFACE_WIDTH y 1 4096
VIDEO_SURFACE_HEIGHT y 1 4096
CHROMA_TYPE y
LAYERS y 0 4
attribute name sup min max
-----------------------------------------------------
BACKGROUND_COLOR y
CSC_MATRIX y
NOISE_REDUCTION_LEVEL y 0.00 1.00
SHARPNESS_LEVEL y -1.00 1.00
LUMA_KEY_MIN_LUMA y
LUMA_KEY_MAX_LUMA y
I have fresh nvidia driver and it seems to be not supported, I have no idea why. Driver you are linked it's way too old (year ago?), it won't compile no my kernel (3.16), no way.