View Full Version : LAV Filters - DirectShow Media Splitter and Decoders
NikosD
12th December 2013, 20:12
Sure.
http://speedy.sh/J7ByC/halo2-wmp9-WMV3-audio0x162.wmv
nevcairiel
12th December 2013, 20:17
This video doesn't seem to work on any GPU. I think it may use an incompatible coding (very old version of the wmv3 standard, not VC1 compatible), that only works with the software decoder.
Maybe i can detect it and automatically fallback to software, instead of failing decoding.
NikosD
12th December 2013, 20:22
Windows Media Player plays it fine in HW.
Update 1:
The above statement is wrong.
WMP plays it fine is SW
Update 2:
Can you upload your last test build with delay problem fixed ?
nevcairiel
12th December 2013, 22:08
Latest is here:
http://files.1f0.de/lavf/LAVFilters-0.59.1-60-g01a1f7c.zip
NikosD
12th December 2013, 22:22
Sorry but nothing really changed.
It has exactly the same behavior as the previous one.
nevcairiel
12th December 2013, 22:24
I get the delay with 59, and not with 60. There must be something wrong on your end. :)
NikosD
12th December 2013, 22:28
Have you tried any WMV HD ?
In some VC-1 files the stuttering has gone, but for example at the VC-1 1080p60fps hasn't.
The delay still exists at the beginning and at the seeking of many VC-1 files and a little more with WMV HD files.
nevcairiel
12th December 2013, 22:37
It would only fix the new delay introduced by the test build, your VC-1 file that also has the dealy with the release version on nvidia remains unchanged.
I tried the WMV HD files you mentioned, Speed and To The Limit, and both have a significant delay with the 59 build, and open instantly with 60, so i call it fixed.
NikosD
12th December 2013, 23:00
This clip doesn't start decoding:
http://download.microsoft.com/download/1/5/0/15092c6c-5af1-4208-b5e2-54af6f1009a4/T2_1080.exe
This clip has artifacts:
http://speedy.sh/rG92z/FlightSimX-720p60-51-15Mbps.wmv
This clip has green screens at the beginning:
http://www.techpowerup.com/downloads/530/hd-dvd-demo-1080p-vc-1-ddplus-5-1/mirrors
In those two clips "Speed" and "To The Limit", if you seek randomly do they start decoding instantly ?
Are you sure the 60 version is really the one uploaded and not 59 ?
Maybe we are testing different versions.
nevcairiel
13th December 2013, 17:49
Looks like most of these issues are only in native mode, while Copy-Back works fine, and i've been testing with copy-back because thats easier for me (main screen is nvidia, not Intel)
Wonder if i can do something about it, weird that it only happens with one mode.
Edit:
Its because of the Microsoft WM ASF Reader, it causes an additional reconnect at start of decoding. With LAV Splitter handling WMV, it doesn't happen. But I'll see if i can improve something.
Using LAV Splitter also fixes the video delay with the Devil May Cry 1080p60 clip.
Anyhow, I'll check if i can avoid the full decoder re-init in that case, because all it seems to update is the aspect ratio.
NikosD
13th December 2013, 18:05
All of my trials were in native mode.
It's clear now why we had so different results.
Native mode is faster and energy efficient.
I think if someone wants a copy-back method, there is QS decoder.
Anyway, it would be very useful if you can fix native mode.
nevcairiel
13th December 2013, 18:07
You can fix it yourself, and block the WM ASF Reader, and use LAV Splitter instead for wmv/asf. :)
I'll still check if there is something i can do without risking new issues, however.
NikosD
13th December 2013, 18:11
Try to put LAV Splitter as default splitter for WMV/ASF automatically with the installation of LAV Splitter in the next LAV filters version.
nevcairiel
13th December 2013, 18:12
I just did that, actually.
dansrfe
14th December 2013, 02:07
Is there a rough estimate on the decoding speed difference of using CUVID on a GTX 670 and an 3770K @ 3.5Ghz? Also, does overclocking GPU speed considerably increase the decoding speed with respect to overclocking the CPU?
nevcairiel
14th December 2013, 07:25
Overclocking the GPU does not change decoding speed at all.
NVIDIAs decoder is limited to a maximum of 120fps at 1080p, both software decoding and Intels HW decoder are much faster then this (2x-3x at least)
NikosD
14th December 2013, 07:48
Is there a rough estimate on the decoding speed difference of using CUVID on a GTX 670 and an 3770K @ 3.5Ghz?
If you mean comparing a HW decoder VP5 of GTX 670 with a CPU decoder of 3770K you can have a rough estimate of decoding speed difference looking at my signature link (the results are a bit old).
Actually I compared VP5 with SandyBridge Core-i5@3.1GHz (with Turbo goes up to 3.4GHz) with VP5 and other CPU and HW decoders.
Also, does overclocking GPU speed considerably increase the decoding speed with respect to overclocking the CPU?
Overclocking the GPU does not change decoding speed at all.
Overclocking GPU affects the decoding speed a lot
For example, take a look of the results of UVD2.2 with the default speed and then overclocked at my signature link.
There is definitely a significant speed increase.
If you overclock iGPU of modern Intel processors with QuickSync HW (SandyBridge and later), then the decoding performance raises proportionally with the clock.
So a 50% iGPU overclock will lead to a 50% faster QuickSync decoder.
NVIDIAs decoder is limited to a maximum of 120fps at 1080p, both software decoding and Intels HW decoder are much faster then this (2x-3x at least)
I haven't tried to overclock an Nvidia GPU, but I'm sure that if you manage it you will see decoding benefits.
VP5 can go a lot more than 120fps with 1080p clips, as it is without even overclocking.
nevcairiel
14th December 2013, 07:58
At least on NVIDIA the decoding speed is completely independent of the actual GPU speed. I can downlock the GPU and speed doesn't decrease (as long as I don't go too low to limit it somewhere else).
And no, VP5 cannot do much more then 120 fps at 1080p. Maybe 140 if you're lucky, but thats not "much" more. Intel can do over 300, up to 500 on some clips.
You always claim yourself that decoding doesn't use the EUs, so why would overclocking the EUs change decoding speed suddenly?
Wouldn't my HD4600 decode much faster then your Pentium HD then, because its a faster and higher clocked GPU in the first place?
Heck, GPUs dont even run at maximum clock when decoding video. AMD artificially downclocks when DXVA2 decoding is active.
NikosD
14th December 2013, 08:39
And no, VP5 cannot do much more then 120 fps at 1080p. Maybe 140 if you're lucky, but thats not "much" more. Intel can do over 300, up to 500 on some clips.
Download my second signature link, I have an Excel spreadsheet I made recently for myself and decided to give it in public.
For MPEG-2 1080p files, VP5 can go a lot more than 120fps, even the hardest MPEG-2 like the one tested in the Excel.
Also for H.264 1080p low bandwidth files can go more than 120fps.
You always claim yourself that decoding doesn't use the EUs, so why would overclocking the EUs change decoding speed suddenly?
Wouldn't my HD4600 decode much faster then your Pentium HD then, because its a faster and higher clocked GPU in the first place?
You seem to confuse some things.
HW decoding of Intel iGPU is done after SandyBridge by QuickSync ASIC - most of it - with little help of EUs.
So when you overclock the Intel iGPU, the QuickSync ASIC is overclocked too, because it has the same clock as the iGPU.
That's the reason that the iGPU overclocking, helps so much in the decoding speed of QuickSync.
For your HD4600 with a clock of 1.2GHz or 1.25GHz, I'm not sure which one you have, you will be faster than my iGPU GT1 at 1.1GHz only by that margin of the clock.
I have challenged you to publish your DXVA native results for 1080p & 4K H.264 clips in order to compare them with mine.
Heck, GPUs dont even run at maximum clock when decoding video. AMD artificially downclocks when DXVA2 decoding is active.
Intel iGPU and Nvidia GPUs, go in maximum clock when DXVA native is active and the load needs it.
AMD UVD artificially locks UVD decoding to a lower than maximum clock, for reasons that are known only to them.
nevcairiel
14th December 2013, 08:45
For MPEG-2 1080p files, VP5 can go a lot more than 120fps, even the hardest MPEG-2 like the one tested in the Excel.
Also for H.264 1080p low bandwidth files can go more than 120fps
H264 is of much more interest then MPEG2, and what all my performance numbers refer to. Even extremely low-bandwidth clips won't be significantly faster, like i said, maybe ~140.
The main point remains that Intel is 2x-3x as fast as NVIDIA, which was his main question.
Similar, I also only answered his specific question about OC, since NVIDIA does not increase in speed when OCing the GPU, and he asked about a 670 GTX, not every GPU on the planet.
You need to stop thinking in absolutes, and consider the context.
NikosD
14th December 2013, 08:52
Two questions:
1) Can you measure your HD 4600 with some of my 1080p H.264 clips and publicly available 4K clips in DXVA native ?
2) When are you going to release the fixed VC-1/WMV3 decoder ?
If someone has an IvyBridge, I would definitely like to see the comparison with Haswell in DXVA native 1080p and 4K, because I suspect that IvyBridge QS2 is faster than Haswell QS3!
You need to stop thinking in absolutes, and consider the context
I don't think in absolutes, I think in general context.
NikosD
14th December 2013, 15:32
H264 is of much more interest then MPEG2, and what all my performance numbers refer to. Even extremely low-bandwidth clips won't be significantly faster, like i said, maybe ~140.
I take this phrase as an opportunity to explain further something that most CPU developers confuse and to unveil some secrets of HW architecture.
In software decoding where only CPU is involved in decoding various codecs, in various resolutions and bandwidths, all of the previous 3 parameters are significant because:
1)A decoding algorithm can be multi-threaded or not, can be optimized with various SSEx instructions or not etc.
2) Also bandwidth - the Mbps parameter - is significant, because the larger the bandwidth the harder for CPU to decode the clip.
3) Resolution for CPU is the least important factor for decoding performance as you can see in performance Excel table.
On the other hand, HW decoding in special ASICs (called UVD, VPx, QuickSync) is almost exclusively constrained by resolution.
If you see the performance tables for every HW decoder out there, for every codec and bandwidth (from the easier WMV3 or MPEG-2 to the harder H.264) and for every bandwidth (from few Mbps up to 300Mbps) the performance is almost the same, for the same resolution for each HW decoder, unless you hit first a different ceiling.
Take for example QS3.
The decoding performance for H.264 and MPEG-2, for clips between 2Mbps up to 100Mbps in 1080p resolution is almost the same.
Same rule apply for 720p, 2160p etc
If you change the resolution from 1080p to 720p or from 1080p to 2160p for example, the decoding performance changes a whole scale, for every codec and for every bandwidth.
Also you can see the same behavior for QS1, VP5,VP4, UVD but not on the same level, because they hit some performance ceilings (bandwidth limited) earlier than the resolution constrain.
The above explanation doesn't mean that HW decoders are limited to a specific number of fps.
It is just the decoding performance that is limited due to internal hardware architecture reasons for a given resolution.
If you increase the clock of the HW engine, it is obvious that you increase the upper decoding limit for given resolution, although not proportionally for every HW decoder.
So the main performance constrain for HW decoding is resolution and not codec, or bandwidth, but not artificially.
Software decoding is affected by algorithm optimizations and bandwidth a lot more.
I hope it's clear now.
NikosD
15th December 2013, 13:32
Nevcairiel,
I don't know if it's a limitation of Microsoft's DXVA copy-back or LAV Video, but both QS3 and VP5 can't play H.264 in huge resolutions.
DXVA native works fine for both HW decoders.
Sample here:
http://speedy.sh/Tm7BR/4080x4080-VP5.mkv
nevcairiel
15th December 2013, 13:37
speedy share requires a download manager, which is usually adware or at worst spyware, not going to download that.
NikosD
15th December 2013, 13:43
I didn't know.
Tell me a suitable server to upload it.
nevcairiel
15th December 2013, 13:46
http://www.datafilehost.com/ is usually OK.
I should really finish my own sample file uploading page, maybe I'll do that over the holidays.
NikosD
15th December 2013, 13:55
That would help to have every sample available to everyone in an easy way.
datafilehost has no progress bar.
Sample:
http://www.datafilehost.com/d/e8cfcb8c
nevcairiel
15th December 2013, 14:42
DXVA2 Copy back on NVIDIA or Intel works just fine here.
On NVIDIA seems a bit too slow, but i get proper images. On Intel it runs perfectly fluid.
QuickSync decoder has some image corruption, who knows whats up with that.
NikosD
15th December 2013, 16:44
On my system copy-back with Intel falls back to software and of course is with no image corruption.
So the problem with Intel is that is not HW accelerated - it falls back to software.
Maybe you didn't notice.
The problem with Nvidia is that although it gets HW acceleration, the images are green at the beginning and then go normal and then again have artifacts and distortion.
For QS decoder, Eric is looking into it.
nevcairiel
15th December 2013, 16:45
I made sure that Intel actually uses the GPU, and NVIDIA also has no corruption here.
NikosD
15th December 2013, 16:50
What is your method to be sure that Intel QS HW is used ?
nevcairiel
15th December 2013, 16:53
LAV Video tells you which decoder it uses, and that absolutely can't be wrong, also CPU usage.
Or, use GPU-Z, while it doesn't have a GPU Video Load, i can see the power usage go up 2W and the temperature increase by ~6°C. If i use software decoding, that doesn't happen.
NikosD
15th December 2013, 17:33
Maybe another way is to push it to the limit by benchmarking it with DXVA Checker in both modes - Software and DXVA-CB.
From the framerate and CPU usage we could have a clear sign.
With my system using both modes (software decoding and DXVA-CB) I get the same CPU utilization and same performance.
Also with VP5 I tried to take a screenshot of the green screen image, but I only got a black screen.
I tried it with DXVA Checker and standalone LAV Filters 0.59.1.
Using MPC-HC with built-in LAV Video 0.59.1.35 everything is fine with VP5.
Maybe you are using a newer version of stand-alone filters than the one posted at the first page ?
Xaurus
15th December 2013, 18:06
nev,
It's been a long while since I played any interlaced material, but I am watching some old stuff now. I am using CUVID and adaptive deinterlacing (50/60), but from what I read from Ctrl+J in madvr the frame rate is the same as the video itself (25 fps).
I thought I remembered that the frame rate would be doubled with this type of deinterlacing, but maybe I am remembering it wrong?
nevcairiel
15th December 2013, 18:08
That depends on the DVD, and madVRs frame rate display also doesn't update in realtime, it only shows the info it got during start of playback, not what actually happens.
v0lt
15th December 2013, 18:13
http://media.xiph.org/video/derf/y4m/akiyo_cif.y4m - normally
http://media.xiph.org/video/derf/y4m/akiyo_qcif.y4m - crash
DragonQ
15th December 2013, 20:45
nev,
It's been a long while since I played any interlaced material, but I am watching some old stuff now. I am using CUVID and adaptive deinterlacing (50/60), but from what I read from Ctrl+J in madvr the frame rate is the same as the video itself (25 fps).
I thought I remembered that the frame rate would be doubled with this type of deinterlacing, but maybe I am remembering it wrong?
MadVR's frame rate indicator doesn't reflect playback after deinterlacing is done. In fairness, a 1080i/25 clip is "25 frames per second", it's just that the frames are split into interlaced fields. Once deinterlacing is done you get 50 frames per second but that doesn't make the source video 50 fps. I honestly don't know which way of indicating it would be best.
Also, it should be painfully obvious if deinterlacing is being done correctly. Not only do you lose any combing artefacts but the frame rate doubles, resulting in much smoother motion. This assumes the video is actually interlaced to start with and not just progressive video labelled as interlaced (common with TV recordings).
vivan
15th December 2013, 21:18
http://i.imgur.com/fukpIBk.png
http://i.imgur.com/S0ev5Q8.png
Same with CUVID
DragonQ
15th December 2013, 22:40
http://i.imgur.com/fukpIBk.png
http://i.imgur.com/S0ev5Q8.png
Same with CUVID
CUVID/QS are different because the deinterlacing is done by LAV Video Decoder, whereas with other decoders MadVR has to sort it out (although in the end it's always hardware deinterlacing). In the latter case, you should find it says "25 fps".
Mangix
16th December 2013, 03:04
Ignore this post
nevcairiel
16th December 2013, 14:16
Just as a general information, as of today, compiling LAV Filters requires Visual Studio 2013, as I've started to use C++11 features which are not available in VS2012.
Please don't even bother complaining, I have thought about this decision for a while now, and I'll stick with it. As the only developer its my decision and mine alone.
While its only in one function as of today, and could be written differently to avoid this requirement, I do not want to have to think about this, and instead write code easier and more productively.
nautilus7
16th December 2013, 15:31
Hi, I am not an experienced programmer, but I would like to know (just out of curiosity) which C++11 features do you use now. Thanks.
nevcairiel
16th December 2013, 15:54
Initialization Lists, for-each loops, the improved "auto" keyword, and a few smaller things here and there. A couple more things that i would like to use, and will probably move to in the future, like direct class member initialization, more lambda functions.
DragonQ
16th December 2013, 16:47
Just as a general information, as of today, compiling LAV Filters requires Visual Studio 2013, as I've started to use C++11 features which are not available in VS2012.
Please don't even bother complaining, I have thought about this decision for a while now, and I'll stick with it. As the only developer its my decision and mine alone.
While its only in one function as of today, and could be written differently to avoid this requirement, I do not want to have to think about this, and instead write code easier and more productively.
Express editions of Visual Studio have been free for ages anyway so people who want to use your code can upgrade easily.
.NET has had For Each loops for ages, I'm amazed C++ hasn't had them until C++11!
noee
16th December 2013, 19:50
Just as a general information, as of today, compiling LAV Filters requires Visual Studio 2013, as I've started to use C++11 features which are not available in VS2012.
Please don't even bother complaining.....
Does Build.bat need to change to reflect the new requirement?{fake patch}
-call "%VS110COMNTOOLS%vsvars32.bat"
+call "%VS130COMNTOOLS%vsvars32.bat"
nevcairiel
16th December 2013, 20:48
Its 120, because 2013 is version 12.0, but otherwise yes. I'll push that change shortly.
Mercury_22
16th December 2013, 20:50
Does Build.bat need to change to reflect the new requirement?{fake patch}
-call "%VS110COMNTOOLS%vsvars32.bat"
+call "%VS130COMNTOOLS%vsvars32.bat"
Except it's %VS120COMNTOOLS%vsvars32.bat :)
EDIT: Nev beat me to it :)
nevcairiel
16th December 2013, 22:51
http://media.xiph.org/video/derf/y4m/akiyo_cif.y4m - normally
http://media.xiph.org/video/derf/y4m/akiyo_qcif.y4m - crash
Fixed, thanks.
roytam1
17th December 2013, 01:48
Express editions of Visual Studio have been free for ages anyway so people who want to use your code can upgrade easily.
.NET has had For Each loops for ages, I'm amazed C++ hasn't had them until C++11!
XP host can't compile LAV now, since newer versions of VS won't install on XP.
roytam1
17th December 2013, 01:55
Just as a general information, as of today, compiling LAV Filters requires Visual Studio 2013, as I've started to use C++11 features which are not available in VS2012.
Please don't even bother complaining, I have thought about this decision for a while now, and I'll stick with it. As the only developer its my decision and mine alone.
While its only in one function as of today, and could be written differently to avoid this requirement, I do not want to have to think about this, and instead write code easier and more productively.
yeah, trying to compile with VS2010 gets many of errors:
4>d:\lavfsplitter\common\dsutillite\BaseDSPropPage.h(40): error C2864: 'CBaseDSPropPage::m_hHint' : only static const integral data members can be initialized within a class
4>d:\lavfsplitter\common\dsutillite\PopupMenu.h(34): error C2864: 'CPopupMenu::m_hMenu' : only static const integral data members can be initialized within a class
4>d:\lavfsplitter\common\dsutillite\PopupMenu.h(35): error C2864: 'CPopupMenu::order' : only static const integral data members can be initialized within a class
4>CueSheet.cpp(29): error C2332: 'enum' : missing tag name
4>CueSheet.cpp(29): error C2236: unexpected 'class' 'ParserState'. Did you forget a ';'?
4>CueSheet.cpp(29): error C3381: 'ParserState' : assembly access specifiers are only available in code compiled with a /clr option
4>CueSheet.cpp(30): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
4>CueSheet.cpp(30): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
4>CueSheet.cpp(31): error C2143: syntax error : missing ';' before '}'
4>CueSheet.cpp(31): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
4>CueSheet.cpp(100): error C2039: 'GLOBAL' : is not a member of 'ParserState'
4> CueSheet.cpp(29) : see declaration of 'ParserState'
4>CueSheet.cpp(100): error C2065: 'GLOBAL' : undeclared identifier
4>CueSheet.cpp(107): error C2450: switch expression of type 'ParserState' is illegal
4> No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called
4>CueSheet.cpp(108): error C2039: 'GLOBAL' : is not a member of 'ParserState'
4> CueSheet.cpp(29) : see declaration of 'ParserState'
4>CueSheet.cpp(108): error C2065: 'GLOBAL' : undeclared identifier
4>CueSheet.cpp(108): error C2051: case expression not constant
4>CueSheet.cpp(114): error C2039: 'FILE' : is not a member of 'ParserState'
4> CueSheet.cpp(29) : see declaration of 'ParserState'
4>CueSheet.cpp(114): error C2275: 'FILE' : illegal use of this type as an expression
4> d:\Microsoft Visual Studio 10.0\VC\include\wchar.h(65) : see declaration of 'FILE'
4>CueSheet.cpp(117): error C2039: 'FILE' : is not a member of 'ParserState'
4> CueSheet.cpp(29) : see declaration of 'ParserState'
4>CueSheet.cpp(117): error C2275: 'FILE' : illegal use of this type as an expression
4> d:\Microsoft Visual Studio 10.0\VC\include\wchar.h(65) : see declaration of 'FILE'
4>CueSheet.cpp(117): error C2051: case expression not constant
4>CueSheet.cpp(118): error C2039: 'TRACK' : is not a member of 'ParserState'
4> CueSheet.cpp(29) : see declaration of 'ParserState'
4>CueSheet.cpp(118): error C2065: 'TRACK' : undeclared identifier
4>CueSheet.cpp(118): error C2051: case expression not constant
4>CueSheet.cpp(120): error C2039: 'TRACK' : is not a member of 'ParserState'
4> CueSheet.cpp(29) : see declaration of 'ParserState'
4>CueSheet.cpp(120): error C2065: 'TRACK' : undeclared identifier
4>CueSheet.cpp(122): error C2601: 'track' : local function definitions are illegal
4> CueSheet.cpp(119): this line contains a '{' which has not yet been matched
4>CueSheet.cpp(122): error C2668: 'std::to_string' : ambiguous call to overloaded function
4> d:\Microsoft Visual Studio 10.0\VC\include\string(688): could be 'std::string std::to_string(long double)'
4> d:\Microsoft Visual Studio 10.0\VC\include\string(680): or 'std::string std::to_string(_ULonglong)'
4> d:\Microsoft Visual Studio 10.0\VC\include\string(672): or 'std::string std::to_string(_Longlong)'
4> while trying to match the argument list '(int)'
4>CueSheet.cpp(122): error C2143: syntax error : missing ';' before '}'
4>CueSheet.cpp(123): error C2065: 'm_Tracks' : undeclared identifier
4>CueSheet.cpp(123): error C2228: left of '.push_back' must have class/struct/union
4> type is ''unknown-type''
4>CueSheet.cpp(123): error C2065: 'track' : undeclared identifier
4>CueSheet.cpp(124): error C2065: 'state' : undeclared identifier
4>CueSheet.cpp(124): error C2039: 'TRACK' : is not a member of 'ParserState'
4> CueSheet.cpp(29) : see declaration of 'ParserState'
4>CueSheet.cpp(124): error C2065: 'TRACK' : undeclared identifier
4>CueSheet.cpp(125): error C2065: 'word' : undeclared identifier
4>CueSheet.cpp(126): error C2065: 'm_Tracks' : undeclared identifier
4>CueSheet.cpp(126): error C2228: left of '.back' must have class/struct/union
4> type is ''unknown-type''
4>CueSheet.cpp(126): error C2228: left of '.Title' must have class/struct/union
4>CueSheet.cpp(126): error C2065: 'line' : undeclared identifier
4>CueSheet.cpp(127): error C2065: 'word' : undeclared identifier
4>CueSheet.cpp(128): error C2065: 'm_Tracks' : undeclared identifier
4>CueSheet.cpp(128): error C2228: left of '.back' must have class/struct/union
4> type is ''unknown-type''
4>CueSheet.cpp(128): error C2228: left of '.Time' must have class/struct/union
4>CueSheet.cpp(128): error C2065: 'line' : undeclared identifier
4>CueSheet.cpp(130): error C2065: 'word' : undeclared identifier
4>CueSheet.cpp(134): fatal error C1903: unable to recover from previous error(s); stopping compilation
4> ByteParser.cpp
4>d:\lavfsplitter\common\dsutillite\BaseTrayIcon.h(54): error C2473: 'm_evSetupFinished' : looks like a function definition, but there is no parameter list.
4>d:\lavfsplitter\common\dsutillite\BaseTrayIcon.h(54): error C2059: syntax error : 'constant'
4>d:\lavfsplitter\common\dsutillite\BaseTrayIcon.h(54): error C2143: syntax error : missing ';' before '}'
4>d:\lavfsplitter\common\dsutillite\BaseTrayIcon.h(54): error C2238: unexpected token(s) preceding ';'
4>d:\lavfsplitter\common\dsutillite\BaseTrayIcon.h(65): error C2059: syntax error : '}'
4>d:\lavfsplitter\common\dsutillite\BaseTrayIcon.h(65): error C2143: syntax error : missing ';' before '}'
4>d:\lavfsplitter\common\dsutillite\BaseTrayIcon.h(65): error C2059: syntax error : '}'
4>d:\lavfsplitter\common\dsutillite\BaseDSPropPage.h(40): error C2864: 'CBaseDSPropPage::m_hHint' : only static const integral data members can be initialized within a class
4>d:\lavfsplitter\common\dsutillite\ByteParser.h(63): error C2864: 'CByteParser::m_gbCtx' : only static const integral data members can be initialized within a class
4>d:\lavfsplitter\common\dsutillite\ByteParser.h(65): error C2864: 'CByteParser::m_pData' : only static const integral data members can be initialized within a class
4>d:\lavfsplitter\common\dsutillite\ByteParser.h(66): error C2864: 'CByteParser::m_pEnd' : only static const integral data members can be initialized within a class
4>BaseTrayIcon.cpp(60): error C2614: 'CBaseTrayIcon' : illegal member initialization: 'm_resIcon' is not a base or member
4>BaseTrayIcon.cpp(60): error C2614: 'CBaseTrayIcon' : illegal member initialization: 'm_wszName' is not a base or member
4>BaseTrayIcon.cpp(211): error C2039: 'm_NotifyIconData' : is not a member of 'CBaseTrayIcon'
4> d:\lavfsplitter\common\dsutillite\BaseTrayIcon.h(25) : see declaration of 'CBaseTrayIcon'
4>BaseTrayIcon.cpp(223): error C2039: 'm_bPropPageOpen' : is not a member of 'CBaseTrayIcon'
4> d:\lavfsplitter\common\dsutillite\BaseTrayIcon.h(25) : see declaration of 'CBaseTrayIcon'
4>BaseTrayIcon.cpp(226): error C2039: 'm_hWnd' : is not a member of 'CBaseTrayIcon'
4> d:\lavfsplitter\common\dsutillite\BaseTrayIcon.h(25) : see declaration of 'CBaseTrayIcon'
4>BaseTrayIcon.cpp(231): error C2039: 'm_bPropPageOpen' : is not a member of 'CBaseTrayIcon'
4> d:\lavfsplitter\common\dsutillite\BaseTrayIcon.h(25) : see declaration of 'CBaseTrayIcon'
4>d:\lavfsplitter\common\dsutillite\FontInstaller.h(28): error C2864: 'CFontInstaller::pAddFontMemResourceEx' : only static const integral data members can be initialized within a class
4>d:\lavfsplitter\common\dsutillite\FontInstaller.h(29): error C2864: 'CFontInstaller::pRemoveFontMemResourceEx' : only static const integral data members can be initialized within a class
4>d:\lavfsplitter\common\dsutillite\H264Nalu.h(46): error C2864: 'CH264Nalu::forbidden_bit' : only static const integral data members can be initialized within a class
4>d:\lavfsplitter\common\dsutillite\H264Nalu.h(47): error C2864: 'CH264Nalu::nal_reference_idc' : only static const integral data members can be initialized within a class
4>d:\lavfsplitter\common\dsutillite\H264Nalu.h(48): error C2864: 'CH264Nalu::nal_unit_type' : only static const integral data members can be initialized within a class
4>d:\lavfsplitter\common\dsutillite\H264Nalu.h(50): error C2864: 'CH264Nalu::m_nNALStartPos' : only static const integral data members can be initialized within a class
4>d:\lavfsplitter\common\dsutillite\H264Nalu.h(51): error C2864: 'CH264Nalu::m_nNALDataPos' : only static const integral data members can be initialized within a class
4>d:\lavfsplitter\common\dsutillite\H264Nalu.h(53): error C2864: 'CH264Nalu::m_pBuffer' : only static const integral data members can be initialized within a class
4>d:\lavfsplitter\common\dsutillite\H264Nalu.h(54): error C2864: 'CH264Nalu::m_nCurPos' : only static const integral data members can be initialized within a class
4>d:\lavfsplitter\common\dsutillite\H264Nalu.h(55): error C2864: 'CH264Nalu::m_nNextRTP' : only static const integral data members can be initialized within a class
4>d:\lavfsplitter\common\dsutillite\H264Nalu.h(56): error C2864: 'CH264Nalu::m_nSize' : only static const integral data members can be initialized within a class
4>d:\lavfsplitter\common\dsutillite\H264Nalu.h(57): error C2864: 'CH264Nalu::m_nNALSize' : only static const integral data members can be initialized within a class
4>d:\lavfsplitter\common\dsutillite\registry.h(50): error C2864: 'CRegistry::m_key' : only static const integral data members can be initialized within a class
5>d:\lavfsplitter\demuxer\demuxers\Packet.h(45): error C2864: 'Packet::StreamId' : only static const integral data members can be initialized within a class
5>d:\lavfsplitter\demuxer\demuxers\Packet.h(46): error C2864: 'Packet::bDiscontinuity' : only static const integral data members can be initialized within a class
5>d:\lavfsplitter\demuxer\demuxers\Packet.h(47): error C2864: 'Packet::bSyncPoint' : only static const integral data members can be initialized within a class
5>d:\lavfsplitter\demuxer\demuxers\Packet.h(48): error C2864: 'Packet::bPosition' : only static const integral data members can be initialized within a class
5>d:\lavfsplitter\demuxer\demuxers\Packet.h(50): error C2864: 'Packet::rtStart' : only static const integral data members can be initialized within a class
5>d:\lavfsplitter\demuxer\demuxers\Packet.h(51): error C2864: 'Packet::rtStop' : only static const integral data members can be initialized within a class
5>d:\lavfsplitter\demuxer\demuxers\Packet.h(53): error C2864: 'Packet::pmt' : only static const integral data members can be initialized within a class
5>d:\lavfsplitter\demuxer\demuxers\Packet.h(60): error C2864: 'Packet::dwFlags' : only static const integral data members can be initialized within a class
5>d:\lavfsplitter\demuxer\demuxers\Packet.h(63): error C2864: 'Packet::m_DataSize' : only static const integral data members can be initialized within a class
5>d:\lavfsplitter\demuxer\demuxers\Packet.h(64): error C2864: 'Packet::m_Data' : only static const integral data members can be initialized within a class
5>d:\lavfsplitter\demuxer\demuxers\Packet.h(65): error C2864: 'Packet::m_Buf' : only static const integral data members can be initialized within a class
5>d:\lavfsplitter\demuxer\demuxers\BaseDemuxer.h(141): error C2864: 'CBaseDemuxer::m_pLock' : only static const integral data members can be initialized within a class
5>d:\lavfsplitter\demuxer\demuxers\Packet.h(45): error C2864: 'Packet::StreamId' : only static const integral data members can be initialized within a class
5>d:\lavfsplitter\demuxer\demuxers\Packet.h(46): error C2864: 'Packet::bDiscontinuity' : only static const integral data members can be initialized within a class
5>d:\lavfsplitter\demuxer\demuxers\Packet.h(47): error C2864: 'Packet::bSyncPoint' : only static const integral data members can be initialized within a class
5>d:\lavfsplitter\demuxer\demuxers\Packet.h(48): error C2864: 'Packet::bPosition' : only static const integral data members can be initialized within a class
5>d:\lavfsplitter\demuxer\demuxers\Packet.h(50): error C2864: 'Packet::rtStart' : only static const integral data members can be initialized within a class
5>d:\lavfsplitter\demuxer\demuxers\Packet.h(51): error C2864: 'Packet::rtStop' : only static const integral data members can be initialized within a class
5>d:\lavfsplitter\demuxer\demuxers\Packet.h(53): error C2864: 'Packet::pmt' : only static const integral data members can be initialized within a class
5>d:\lavfsplitter\demuxer\demuxers\Packet.h(60): error C2864: 'Packet::dwFlags' : only static const integral data members can be initialized within a class
5>d:\lavfsplitter\demuxer\demuxers\Packet.h(63): error C2864: 'Packet::m_DataSize' : only static const integral data members can be initialized within a class
5>d:\lavfsplitter\demuxer\demuxers\Packet.h(64): error C2864: 'Packet::m_Data' : only static const integral data members can be initialized within a class
5>d:\lavfsplitter\demuxer\demuxers\Packet.h(65): error C2864: 'Packet::m_Buf' : only static const integral data members can be initialized within a class
5>d:\lavfsplitter\demuxer\demuxers\BaseDemuxer.h(141): error C2864: 'CBaseDemuxer::m_pLock' : only static const integral data members can be initialized within a class
5>D:\lavfsplitter\common\DSUtilLite\FontInstaller.h(28): error C2864: 'CFontInstaller::pAddFontMemResourceEx' : only static const integral data members can be initialized within a class
5>D:\lavfsplitter\common\DSUtilLite\FontInstaller.h(29): error C2864: 'CFontInstaller::pRemoveFontMemResourceEx' : only static const integral data members can be initialized within a class
5>d:\lavfsplitter\demuxer\demuxers\LAVFDemuxer.h(162): error C2864: 'CLAVFDemuxer::m_avFormat' : only static const integral data members can be initialized within a class
5>d:\lavfsplitter\demuxer\demuxers\LAVFDemuxer.h(163): error C2864: 'CLAVFDemuxer::m_pszInputFormat' : only static const integral data members can be initialized within a class
5>d:\lavfsplitter\demuxer\demuxers\LAVFDemuxer.h(165): error C2864: 'CLAVFDemuxer::m_bMatroska' : only static const integral data members can be initialized within a class
5>d:\lavfsplitter\demuxer\demuxers\LAVFDemuxer.h(166): error C2864: 'CLAVFDemuxer::m_bOgg' : only static const integral data members can be initialized within a class
5>d:\lavfsplitter\demuxer\demuxers\LAVFDemuxer.h(167): error C2864: 'CLAVFDemuxer::m_bAVI' : only static const integral data members can be initialized within a class
5>d:\lavfsplitter\demuxer\demuxers\LAVFDemuxer.h(168): error C2864: 'CLAVFDemuxer::m_bMPEGTS' : only static const integral data members can be initialized within a class
...
vBulletin® v3.8.11, Copyright ©2000-2025, vBulletin Solutions Inc.