View Full Version : Media Player Classic Home Cinema (MPC-HC) - DXVA!


Pages : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 [21]

ageback
3rd August 2012, 05:03
S.Chinese update
https://dl.dropbox.com/u/132862/mplayerc.sc.rc.txt

LigH
3rd August 2012, 07:50
Congratulations for "The thread of thousand pages" :)

assuming a board default of 20 posts per page

ryrynz
3rd August 2012, 08:30
I was wondering if someone was going to say something.. I thought about posting IT'S OVER 1000!! earlier today but decided against it :D

patch1
3rd August 2012, 13:59
Track it here (https://github.com/mpc-hc/mpc-hc/commits/master) at github. As usual, development builds available at http://xhmikosr.1f0.de/mpc-hc/

Is there a reasonably simple way to correlate build number with commit history entry. I find it useful to see what changes I should watch out for when loading a new version of mpc-hc

ryrynz
3rd August 2012, 14:41
yup the hash is right beside the build number in Help -> About...

For example listed in my MPC-HC copy in Help -> About...

1.6.3.5713 (3a1c0fa)

Matches with build number

3a1c0fad69

v0lt
3rd August 2012, 17:43
Matches with build number

3a1c0fad69
This is a mockery.

Underground78
3rd August 2012, 18:24
See audio decoder settings.
It can probably be useful, I think it makes sense to add it.

yup the hash is right beside the build number in Help -> About...

For example listed in my MPC-HC copy in Help -> About...

1.6.3.5713 (3a1c0fa)

Matches with build number

3a1c0fad69

If you are just interested in seeing the last few changes, http://github.com/mpc-hc/mpc-hc/commit/<shorthashhere> (e.g. http://github.com/mpc-hc/mpc-hc/commit/3a1c0fa) and then click on the parent hash to go to the previous commit.

I'm considering doing a simple log viewer for people that prefer using the old fashioned build number.

v0lt
3rd August 2012, 18:35
It can probably be useful, I think it makes sense to add it.

mpc-hc_audiomixer_3.7z (http://www.mediafire.com/?mn68dsqsfs7dz1l)
Yet another test build. And then see what happens.

Underground78
3rd August 2012, 18:58
mpc-hc_audiomixer_3.7z (http://www.mediafire.com/?mn68dsqsfs7dz1l)
Yet another test build. And then see what happens.
It seems to work fine for me, I tested it with my channel order samples (http://www.mediafire.com/?ilo6w4zotu9ca).

In Options>Subtitles>Delay Interval, I can't enter - (minus sign). mpc-hc64.exe 1.6.3.5696 on Win7 x64.

GL
That's because putting a negative number here doesn't really make sense. If you press F1/F2 (default key bindings but you can change them in Options > Keys), it will subtract/add the value you set in "Delay interval".

Mosley
3rd August 2012, 20:31
See audio decoder settings.

Sorry but.... where? In "MPC Audio Decoder" (during playback) there isn't nothing. And I don't see any menu option related to the audio decoder settings. Not even in the the menu page with the internal filters. What's exactly the path to find it? :confused:

Many thanks...

Underground78
3rd August 2012, 20:33
Sorry but.... where? In "MPC Audio Decoder" (during playback) there isn't nothing. And I don't see any menu option related to the audio decoder settings. Not even in the the menu page with the internal filters. What's exactly the path to find it? :confused:

Many thanks...
In the audio decoder settings you have a combobox that lets you choose the channels configuration (stereo, etc).

ryrynz
4th August 2012, 10:53
I'm considering doing a simple log viewer for people that prefer using the old fashioned build number.

Sounds like a good idea.

betaking
5th August 2012, 02:16
S.Chinese update
http://www.mediafire.com/?udt1imv5mm8bdd5

v0lt
5th August 2012, 06:18
mpc-hc_audiomixer_6.7z (http://www.mediafire.com/?faz867h7iglbkev)
redid the audio decoder settings window

TheCatcher
5th August 2012, 10:42
I modified a recent pull of MPC-HC source code to support SBS 3D on older DLP TVs, that require the right and left screen data to be pixel interleaved.

I did it with a couple of DX9 (ps_2_0) Post-Resize Pixel Shaders (one for right side first, and the other for left side first). And a change to the DX9RenderingEngine.cpp, to add 4 additional parameters to the fConstant array that is passed to the Post-Resize Pixel Shaders.

The 4 additional parameters are the offset and width of the video data relative to the m_TemporaryScreenSpaceTextureSize. And the position of the MPC-HC Window relative to the screen. The offset to the video data was necessary to make sure when I interleaved the pixels, I didn't mix in any surrounding non-video data. The position of the window relative to the screen was necessary so that, in windowed mode, I would know whether to pull the first pixel of each line from the right or left side of the frame.

Since this requires additional parameters to be passed to the Pixel Shaders, I wasn't sure if this is a change that the people responsible for the source repository would be interested in. I plan on keeping it in the versions of MPC-HC that I run. If it is something that someone would like to add to the source repository, here is the source code modification, that I am using...

DX9RenderingEngine.cpp -> Line 451-453
From:
float fConstData[][4] = {
{(float)m_TemporaryScreenSpaceTextureSize.cx, (float)m_TemporaryScreenSpaceTextureSize.cy, (float)(counter++), (float)diff / CLOCKS_PER_SEC},
{1.0f / m_TemporaryScreenSpaceTextureSize.cx, 1.0f / m_TemporaryScreenSpaceTextureSize.cy, 0, 0},
};

To:
CWnd *pMainWnd = AfxGetApp()->m_pMainWnd;
WINDOWPLACEMENT Place;
Place.length = sizeof(WINDOWPLACEMENT);
EXECUTE_ASSERT(GetWindowPlacement(pMainWnd->m_hWnd,&Place));

float fConstData[][4] = {
{(float)m_TemporaryScreenSpaceTextureSize.cx, (float)m_TemporaryScreenSpaceTextureSize.cy, (float)(counter++), (float)diff / CLOCKS_PER_SEC},
{1.0f / m_TemporaryScreenSpaceTextureSize.cx, 1.0f / m_TemporaryScreenSpaceTextureSize.cy, (float)destRect.left, (float)( destRect.right + 1 ) - destRect.left },
{(float)Place.rcNormalPosition.top, (float)Place.rcNormalPosition.left, (float)0, (float)0 },
};

If anyone is interested, let me know, and I will post the code for the Post-Resize Pixel Shaders.

Anarchitektur
5th August 2012, 13:55
mpc-hc_audiomixer_6.7z (http://www.mediafire.com/?faz867h7iglbkev)
redid the audio decoder settings window

"mixer" checkbox does not stay ticked

JanWillem32
5th August 2012, 18:59
@TheCatcher: If it's useful to add the top and left monitor-relative window coordinates as variables for the pixel shaders, I don't mind helping out a bit. Your code needs a lot of refining, though.
The usage of GetWindowPlacement() is wrong for when your window is a layered item: http://msdn.microsoft.com/en-us/library/windows/desktop/ms632611%28v=vs.85%29.aspx .
Use GetWindowRect() to get desktop-relative coordinates (and if more info is required, use GetWindowInfo() to retrieve the full window class info).
Using the coordinates 'raw' is wrong as well. For a multi-monitor setup of 4 1920×1080 monitors in a 2×2 setup with the top left monitor set as main monitor, the desktop interval for the bottom-right monitor will be [(1920, 1080), (3840, 2160)). Use GetMonitorInfo() and offset the desktop-relative coordinates with top-left point of the monitor rectangle to get monitor-relative coordinates.
Using "pMainWnd->m_hWnd" is wrong as well, as that's the main player's window (which can even be on another monitor). We have "m_hWnd" available in the renderer classes themselves for the video window.
For the Post-Resize pass, "(float)destRect.left, (float)( destRect.right + 1 ) - destRect.left" is useless. "destRect.left" is 0, and "destRect.right" is equal to "m_TemporaryScreenSpaceTextureSize.cx", which is already available. (The Post-Resize pass does no re-positioning, that's only done in the resizer pass before it.) For integer coordinates on Windows, it's already custom to have the left and top items inclusive and the right and bottom items exclusive: http://msdn.microsoft.com/en-us/library/windows/desktop/dd162897%28v=vs.85%29.aspx . You simply do right minus left and bottom minus top to get the size of a RECT.
If you need any more info or help, please just ask me.

v0lt
5th August 2012, 20:04
Interesting observation.
If you have a stereo track, in which the left and right channels are identical. Then when mixing 2.0 to 5.1, you will not hear the rear speakers.
With ordinary stereo tracks no such problem.
:)

v0lt
5th August 2012, 20:17
"mixer" checkbox does not stay ticked
It fixed.
r5597+ (http://www.mediafire.com/?xfgh33iws56bhк5597)

JanWillem32
6th August 2012, 00:36
Mixing audio indeed works like that; the simple mono center is a per sample left+right and the simple width is a left-right (actually also mono, the same output is sent to all surround channels). If the data in the left and right is the same, left-right will be zero. Note that the interval of the output samples increases from a base interval of [-1, 1] to [-2, 2] for both equations (there's a clipping risk, just as with other mixing options).
When the phase of left and right are off by even a µs, the samples won't align, and doing a per-sample left+right and left-right won't work. You need to do continuous Fourier transforms on the tracks to correlate them spectrally in such a case. Such filters are much more expensive in processing but benefit greatly from single-precision floating point optimizations in SSE and AVX code. Such filters can also do more advanced extractions of channels, but are prone to artifacts. (For once, Fourier transforms on audio data won't let very low bass sounds through because of a limit in the sampling window. You need to add a low-pass filter to output those to the LFE channel.)
It's been a while since I worked with audio filters, but those are pretty much the basics of what I can remember about channel expansion filters.

TheCatcher
6th August 2012, 03:24
@TheCatcher: If it's useful to add the top and left monitor-relative window coordinates as variables for the pixel shaders, I don't mind helping out a bit. Your code needs a lot of refining, though.

No argument from me on that. I was just using OutputDebugString to find variables that looked like they made sense. I'm glad to make whatever changes seem appropriate to make it work better and more efficiently.

The usage of GetWindowPlacement() is wrong for when your window is a layered item: http://msdn.microsoft.com/en-us/library/windows/desktop/ms632611%28v=vs.85%29.aspx .
Use GetWindowRect() to get desktop-relative coordinates (and if more info is required, use GetWindowInfo() to retrieve the full window class info).
Using the coordinates 'raw' is wrong as well. For a multi-monitor setup of 4 1920×1080 monitors in a 2×2 setup with the top left monitor set as main monitor, the desktop interval for the bottom-right monitor will be [(1920, 1080), (3840, 2160)). Use GetMonitorInfo() and offset the desktop-relative coordinates with top-left point of the monitor rectangle to get monitor-relative coordinates.
Using "pMainWnd->m_hWnd" is wrong as well, as that's the main player's window (which can even be on another monitor). We have "m_hWnd" available in the renderer classes themselves for the video window.

m_hWnd it is, I wasn't real happy about going all the way back to the app class to get a window handle. Having a rendering window handle available makes a lot more sense. I implemented the local m_hWnd and the monitor coordinates that the upper left corner of the window is on, in this version of the code.

For the Post-Resize pass, "(float)destRect.left, (float)( destRect.right + 1 ) - destRect.left" is useless. "destRect.left" is 0, and "destRect.right" is equal to "m_TemporaryScreenSpaceTextureSize.cx", which is already available. (The Post-Resize pass does no re-positioning, that's only done in the resizer pass before it.) For integer coordinates on Windows, it's already custom to have the left and top items inclusive and the right and bottom items exclusive: http://msdn.microsoft.com/en-us/library/windows/desktop/dd162897%28v=vs.85%29.aspx . You simply do right minus left and bottom minus top to get the size of a RECT.
If you need any more info or help, please just ask me.

I was counting on the Post-Resize pass not doing any repositioning (or resizing). If it did, my entire shader idea would fail miserably. But it does appear that the destRect values aren't necessarily unused, 0, and equal to m_TemporaryScreenSpaceTextureSize.cx.

It looks like, if maintaining the aspect ratio, causes the black bars to be inserted on the sides or the top and bottom of the texture, the destRect values are used as offsets to where the source video data ended up, withing the m_TemporaryScreenSpaceTextureSize values. I have some examples of screen shots and OutputDebugStrings near the end of this post, that show the situations that cause the destRect values to become necessary.

Knowing where the source video data ended up is crucial to properly interleaving the pixels.

For SBS 3D images, the destRect.top value doesn't come into play. But the offset to the source video data and the width in destRect.left and destRect.right are needed to keep me from interleaving the valid video source pixels into the black surrounding pixels.

At some point I may end up doing a shader to handle top and bottom split 3D images (I'm pretty sure top and bottom split 3D images are what 3D BlueRay disks use). When I do that, I will probably also have to pass in the destRect.top and (destRect.bottom+1 - destRect.top) values.

This is the code I am currently using. It appears to be working. I can move the window around and resize the and the left and right sides don't transpose themselves.


RECT sWndRect;
GetWindowRect( m_hWnd, &sWndRect );

POINT sWindowOrigin = { sWndRect.left, sWndRect.top };
MONITORINFO sMonitorInfo;
sMonitorInfo.cbSize = sizeof(sMonitorInfo);
GetMonitorInfo(MonitorFromPoint( sWindowOrigin,
MONITOR_DEFAULTTONEAREST), &sMonitorInfo);

POINT sMonitorAdjustedWindOrigin = {
sWndRect.left - sMonitorInfo.rcWork.left,
sWndRect.top - sMonitorInfo.rcWork.top };

float fConstData[][4] = {
{ (float)m_TemporaryScreenSpaceTextureSize.cx,
(float)m_TemporaryScreenSpaceTextureSize.cy,
(float)(counter++),
(float)diff / CLOCKS_PER_SEC},
{ 1.0f / m_TemporaryScreenSpaceTextureSize.cx,
1.0f / m_TemporaryScreenSpaceTextureSize.cy,
(float)destRect.left,
(float)( destRect.right + 1 ) - destRect.left },
{ (float)sMonitorAdjustedWindOrigin.y,
(float)sMonitorAdjustedWindOrigin.x,
(float)0, (float)0 },
};


If I misinterpreted what you meant about the destRect values, or there is another / better way, I'm open to suggestions.

This is an image capture taken when destRect.top was 0, destRect.left was 57, and destRect.right was 526.

http://www.syaeger.com/images/MPC-HC-destrect.top=0,left=57,bottom=254,right=526.jpg

This is an image capture taken when destRect.top was 23, destRect.left was 0, and destRect.right was 380.

http://www.syaeger.com/images/MPC-HC-destrect.top=23,left=0,bottom=228,right=380.jpg

Here is what those images look like when my 3D shader isn't running...

This next image is a good example of why I need the destRect.left and right values. If I pull one of the pixels, just to the right of the center and move it all the way to the left edge, it will be surrounded by black pixels, not the pixels from the other eye's image.

http://www.syaeger.com/images/MPC-HC-destrect.top=0,left=57,bottom=254,right=526-NoShader.jpg

http://www.syaeger.com/images/MPC-HC-destrect.top=23,left=0,bottom=228,right=380-NoShader.jpg

The values I am getting in my OutputDebugString statements seem to be valid. And the 3D output seems to be solid. But I'm definitely open to making changes that would make it more efficient.

Here are some of the values output by the OutputDebugStrings.

The first 4 groups are checking the destRect values for 2 different window sizes on primary and secondary monitors.

Within the groups, the small group containing the sPlace and sWindowInfo values are just there for comparison. The next small group with sWndRect and sMonitorInfo values are there just for information, some of the values are used to calculate the final values that become the parameters to the Pixel Shader.

MPC-HC-destrect.top=23,left=0,bottom=228,right=380.jpg on primary monitor
------------------------------------------------------
sPlace.rcNormalPosition.top=490,left=1038,bottom=872,right=1434
sWindowInfo.cyWindowBorders=0,cxWindowBorders=0

sWndRect.top=540,left=1046,bottom=792,right=1426
sMonitorInfo.rcMonitor.top=0,left=0,bottom=1004,right=1824
sMonitorInfo.rcWork.top=0,left=0,bottom=922,right=1824

sMonitorAdjustedWindOrigin.y=540,x=1046,
m_TemporaryScreenSpaceTextureSize.cx=1824,cy=1038
destrect.top=23,left=0,bottom=228,right=380

MPC-HC-destrect.top=23,left=0,bottom=228,right=380.jpg on secondary 2D monitor, to the right of the primary monitor
------------------------------------------------------
sPlace.rcNormalPosition.top=338,left=2349,bottom=720,right=2745
sWindowInfo.cyWindowBorders=0,cxWindowBorders=0

sWndRect.top=388,left=2357,bottom=640,right=2737
sMonitorInfo.rcMonitor.top=0,left=1824,bottom=1200,right=3744
sMonitorInfo.rcWork.top=0,left=1824,bottom=1200,right=3744

sMonitorAdjustedWindOrigin.y=388,x=533
m_TemporaryScreenSpaceTextureSize.cx=1920,cy=1200
destrect.top=23,left=0,bottom=228,right=380


MPC-HC-destrect.top=0,left=57,bottom=254,right=526.jpg on primary monitor
------------------------------------------------------
sPlace.rcNormalPosition.top=503,left=868,bottom=887,right=1468
sWindowInfo.cyWindowBorders=0,cxWindowBorders=0

sWndRect.top=553,left=876,bottom=807,right=1460
sMonitorInfo.rcMonitor.top=0,left=0,bottom=1004,right=1824
sMonitorInfo.rcWork.top=0,left=0,bottom=922,right=1824

sMonitorAdjustedWindOrigin.y=553,x=876
m_TemporaryScreenSpaceTextureSize.cx=1824,cy=1038
destrect.top=0,left=57,bottom=254,right=526

MPC-HC-destrect.top=0,left=57,bottom=254,right=526.jpg on secondary monitor, to the right of the primary monitor
------------------------------------------------------
sPlace.rcNormalPosition.top=237,left=2027,bottom=621,right=2627
sWindowInfo.cyWindowBorders=0,cxWindowBorders=0

sWndRect.top=287,left=2035,bottom=541,right=2619
sMonitorInfo.rcMonitor.top=0,left=1824,bottom=1200,right=3744
sMonitorInfo.rcWork.top=0,left=1824,bottom=1200,right=3744

sMonitorAdjustedWindOrigin.y=287,x=211
m_TemporaryScreenSpaceTextureSize.cx=1920,cy=1200
destrect.top=0,left=57,bottom=254,right=526

These next 2 groups are testing negative monitor coordinates, by changing the 2D monitor on the right to the primary monitor and the 3D monitor on the left to the secondary monitor.

Full Screen, Video displayed on the Secondary 3D monitor, on the left of the primary 2d monitor
--------------------------------------------
sPlace.rcNormalPosition.top=0,left=-1824,bottom=1004,right=0

WndRect.top=0,left=-1824,bottom=1004,right=0
sMonitorInfo.rcMonitor.top=0,left=-1824,bottom=1004,right=0
sMonitorInfo.rcWork.top=0,left=-1824,bottom=1004,right=0

sMonitorAdjustedWindOrigin.y=0,x=0
m_TemporaryScreenSpaceTextureSize.cx=1824,cy=1038
destrect.top=8,left=0,bottom=994,right=1824


Windowed, displayed on the Secondary 3D monitor, on the left of the primary 2d monitor
--------------------------------------------
sPlace.rcNormalPosition.top=191,left=-1654,bottom=909,right=-591

sWndRect.top=241,left=-1646,bottom=829,right=-599
sMonitorInfo.rcMonitor.top=0,left=-1824,bottom=1004,right=0
sMonitorInfo.rcWork.top=0,left=-1824,bottom=1004,right=0

sMonitorAdjustedWindOrigin.y=241,x=178
m_TemporaryScreenSpaceTextureSize.cx=1824,cy=1038
destrect.top=10,left=0,bottom=576,right=1047

betaking
6th August 2012, 08:00
S.Chinese update
http://www.mediafire.com/?ccx5kgxaugmpj7n

ryrynz
6th August 2012, 10:37
Any major components left for 1.6.3 final?

TheCatcher
6th August 2012, 14:29
After my last post, I decided to add a couple more shaders to support Top and Bottom encoded 3D video streams.

So that I can determine where the lower half of the video data starts, I've changed the parameters I am sending to the Post-Resize Pixel shader to include the destRect.top and ((destRect.bottom+1)-destRect.top) values.

From:

float fConstData[][4] = {
{ (float)m_TemporaryScreenSpaceTextureSize.cx,
(float)m_TemporaryScreenSpaceTextureSize.cy,
(float)(counter++),
(float)diff / CLOCKS_PER_SEC},
{ 1.0f / m_TemporaryScreenSpaceTextureSize.cx,
1.0f / m_TemporaryScreenSpaceTextureSize.cy,
(float)destRect.left,
(float)( destRect.right + 1 ) - destRect.left },
{ (float)sMonitorAdjustedWindOrigin.y,
(float)sMonitorAdjustedWindOrigin.x,
(float)0, (float)0 },
};


To:

float fConstData[][4] = {
{ (float)m_TemporaryScreenSpaceTextureSize.cx,
(float)m_TemporaryScreenSpaceTextureSize.cy,
(float)(counter++),
(float)diff / CLOCKS_PER_SEC},
{ 1.0f / m_TemporaryScreenSpaceTextureSize.cx,
1.0f / m_TemporaryScreenSpaceTextureSize.cy,
(float)sMonitorAdjustedWindOrigin.y,
(float)sMonitorAdjustedWindOrigin.x },
{ (float)destRect.left,
(float)( destRect.right + 1 ) - destRect.left,
(float)destRect.top,
(float)( destRect.bottom + 1 ) - destRect.top },
};


I moved the Monitor Adjusted Window Origin values from the third quad parameter into the second quad. And I put all the destRect values together in the third quad.

JanWillem32
6th August 2012, 16:30
I was counting on the Post-Resize pass not doing any repositioning (or resizing). If it did, my entire shader idea would fail miserably. But it does appear that the destRect values aren't necessarily unused, 0, and equal to m_TemporaryScreenSpaceTextureSize.cx.Ah yes, I remember the window texturing bug in the trunk renderer now. (It's more likely a lazily implemented feature though.) The renderer allocates the post-resize textures and backbuffers at the size of the monitor it starts on and fills them with black at the start of each frame. (And it doesn't adjust them when switching to another monitor of a different resolution.) My version of the renderer allocates at window size and re-adjusts every time the window size changes.I'm pretty sure top and bottom split 3D images are what 3D BlueRay disks use.Blu-Ray uses one main video stream (left or right) and one delta stream to generate the other view. The decoder delivers two separate surfaces after decoding. The transport of 3D mode surfaces over HDMI, DP and SDI are also different.

TheCatcher
6th August 2012, 20:37
My version of the renderer allocates at window size and re-adjusts every time the window size changes.

When I started this, I was expecting the image to be at the upper left corner of the texture. My son is the video expert in our family (he is in charge of the video editing software for Red Cameras), when I told him, in windowed mode, I was pretty sure the video image wasn't in the upper left corner, he said I was crazy...

Blu-Ray uses one main video stream (left or right) and one delta stream to generate the other view. The decoder delivers two separate surfaces after decoding. The transport of 3D mode surfaces over HDMI, DP and SDI are also different.

I decided not to do the Blu-Ray data format, just the the SBS 3D file format, and the Top and Bottom (TAB) 3D file format (a lot of the Passive 3D HDTV owners seem to like the TAB 3D file format). For the TAB format, the top half of the frame is one eye's view and the bottom half is the other eye's view. Almost exactly like the SBS format, except TAB does a horizontal split, instead of a vertical split.

As far as I can see, the geometry for 1080p to 1080p changes from 960*1080 to 1920*540 per frame in this transformation. The down-sizing stage is simple (2-pixel average vertically), but the horizontal doubling is a more involved operation. Did you implement a one- or two-pass filter for the procedure?

The data in the SBS and the TAB data files already contain 2 video frames at half the final frame resolution. All the shader has to do is move the existing pixels around to create the DLP's checkerboard pattern. So I was able implement each of them as one-pass shaders.

I haven't tested the TAB Shaders yet, I will test them, today, after work. There is a possibility the TAB Shaders might end up using more storage variables than DX9 allows. So I might have to make them DX10, ps_3_0 shaders.

When I modified the SBS Shaders, to make sure they pulled the source pixels from dead center of the pixel (so the color wouldn't be muddied by the surrounding pixels), I ended up having to do a lot of optimizing to get the storage variable count back down, to be DX9 compatible.

JanWillem32
6th August 2012, 22:54
When I started this, I was expecting the image to be at the upper left corner of the texture. My son is the video expert in our family (he is in charge of the video editing software for Red Cameras), when I told him, in windowed mode, I was pretty sure the video image wasn't in the upper left corner, he said I was crazy...My predecessors that worked on the renderers were not DirectX specialists, and it shows in cases like this. Oh well, it could have been worse. However, I did import another renderer that had much better organization when I really started working on the project, instead of editing the original one.The data in the SBS and the TAB data files already contain 2 video frames at half the final frame resolution. All the shader has to do is move the existing pixels around to create the DLP's checkerboard pattern. So I was able implement each of them as one-pass shaders.I don't know the organization of the checkerboard pattern, but switching between layouts of 960*1080 and 1920*540 source images does require interpolation, even while the number of pixels remains the same.I haven't tested the TAB Shaders yet, I will test them, today, after work. There is a possibility the TAB Shaders might end up using more storage variables than DX9 allows. So I might have to make them DX10, ps_3_0 shaders.DirectX 10 starts at level 4.0. The shader language for those levels is not compatible with DirectX 9 levels, by the way.When I modified the SBS Shaders, to make sure they pulled the source pixels from dead center of the pixel (so the color wouldn't be muddied by the surrounding pixels), I ended up having to do a lot of optimizing to get the storage variable count back down, to be DX9 compatible.I set the sampler state to nearest neighbor for the renderer in the trunk build. It was one of the last modifications I made to the renderer in the trunk before I imported another and started working on that. Aligning to the pixel centers is still important, of course.

I thought you were trying to transform to a different interleaved format at first... Oh well, it's still a good example:// (C) 2012 Jan-Willem Krans (janwillem32 <at> hotmail.com)
// This file is part of Video pixel shader pack.
// This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
// This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
// You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.

// Prototype
// This shader should be run as a screen space pixel shader.
// This shader requires compiling with ps_2_0, but higher is better, see http://en.wikipedia.org/wiki/Pixel_shader to look up what PS version your video card supports.
// Use this shader to convert a SBS 3D image to interleave per scan line 3D format, while doubling the width of the image by Mitchell-Netravali cubic5 interpolation.
// This shader requires the source image (split halves) to span the full width of the screen space and have the top pixel row aligned to even.

sampler s0;
float2 c0;
float2 c1;
// average two pixels per sample, as the output is half-height
#define sp(a, b) float4 a = tex2D(s0, float2(coord+b*fx*c1.x, tex.y))+tex2D(s0, float2(coord+b*fx*c1.x, tex.y+c1.y));

float4 main(float2 tex : TEXCOORD0) : COLOR
{
float offset = 0;
float n = frac(tex.y*c0.y/2.);
if(n > .5) offset = .5+.5*c1.x;// even y top, odd y bottom

// double the width
float coord = (tex.x/2.+offset)*c0.x;// assign the output position, normalized to texture width in pixels
float t = frac(coord);// calculate the difference between the output pixel and the original surrounding two pixels
// adjust sampling matrix to put the ouput pixel on Q2+.25
float fx;
if(t > .5) {coord = (coord-t+1.5)*c1.x; fx = -1;}
else {coord = (coord-t+.5)*c1.x; fx = 1;}

sp(Q0, -2) sp(Q1, -1) sp(Q2, 0) sp(Q3, 1) sp(Q4, 2)// original pixels
return Q0*25/20736.*.5+Q2*16632/20736.*.5+Q3*5234/20736.*.5-Q1*770/20736.*.5-Q4*385/20736.*.5;// output interpolated value
}

madshi
7th August 2012, 07:18
> I set the sampler state to nearest neighbor

Same here in madVR. It helps finding pixel addressing bugs and makes sure there's no unintentional blurring. Plus, it might be ever so slightly faster.

TheCatcher
7th August 2012, 07:52
I am far from a DirectX or video programming expert. I'm probably not even novice level. Before last week, I'd never seen any shader code. The last time I did any video code was probably close to 25 years ago on the old Amiga computers.

When I started this I was writing the shader code in the shader assembly langauge. My son told me about the C-style shader code that was available for it... Though I tend to prefer assembly languages, the C-style code sure makes the shaders easy.

Here are the shader routines for the SBS file formats. I called the first one "3D-SBS-DLP-CheckerBoard-Normal". It is for the case when the image on the left of the video frame is for the left eye, and the image on the right of the video frame is for the right eye. If the destination pixel calculation is even, we are placing a pixel that will be displayed to the left eye. For this one, if the destination pixel calculation is odd, we pull the source pixel from the right side.



// 3D-SBS-DLP-CheckerBoard-Normal
// Normal - The video image on the left is displayed to the left eye, on even offset pixels
// The video image on the right is displayed to the right eye, on odd offset pixels

// Instructions:
// "View" Menu -> "Shader Editor" Item
// Enter "3D-SBS-DLP-CheckerBoard-Normal" in the top left box, and press the "Enter" key.
// Select "ps_2_0" from the smaller top (on the middle / right)
// Paste in the code for th "3D-SBS-DLP-CheckerBoard-Normal" shader.
// Close the Shaders Editor (x in upper left, next to name)
// "Play" Menu -> "Shaders" Sub-Menu Item -> "Select Shaders..." Item
// Check the "Enable post-resize pixel shaders" checkbox
// Click once in the window under the "Enable post-resize pixel shaders"
// select the "3D-SBS-DLP-CheckerBoard-Normal" shader from the drop down list on the top
// Click the "Add" button
// Click the "OK" button
// ps_2_0


sampler s0 : register(s0);
float4 p0 : register(c0);
float4 p1 : register(c1);
float4 p2 : register(c2);

#define width (p0[0]) // These 2 values are used in combination with the monitor_* values
#define height (p0[1]) // to determine if the destination pixel is on an odd or even offset
#define counter (p0[2]) // These 2 values are not used in this shader
#define clock (p0[3])
#define one_over_width (p1[0]) // These 2 values are used to calculate integer pixel offsets and
#define one_over_height (p1[1]) // to reposition the pixel offsets to the center of the source pixel
#define monitor_top (p1[2]) // These 2 values are used to determine if the output pixel
#define monitor_left (p1[3]) // is displayed to the right or left eye
#define video_left (p2[0]) // These 2 values are used for SBS, to calculate where
#define video_width (p2[1]) // to pull the source pixel from...
#define video_top (p2[2]) // These 2 values are used for TAB, to calculate where
#define video_height (p2[3]) // to pull the source pixel from...

#define PI acos(-1)

float4 main(float2 tex : TEXCOORD0) : COLOR
{
// Default the output color to the color of the pixel at the current coordinate
float4 output = tex2D(s0, tex);

// Integer math will be slower on a VPU but it will eliminate any possiblity of round off errors
int iCurPixel = tex.x / one_over_width;

// This value is used in combination with the video_left value, to be sure we don't change any of
// pixels that don't contain actual video data
int iVideoRight = video_left + video_width;

// If we are currently putting a pixel on the screen, that contains video image data
// Then figure out where we need to get the pixel from
if( ( iCurPixel > video_left ) && ( iCurPixel <= iVideoRight ) )
{
// Calculate a pixel offset into the frame on the left side of the video data
int iPixelOffset = ( ( iCurPixel - video_left ) / 2 ) + video_left; // Don't round up!

// Check to see if we need to be using data from the frame on the right side of the video data
if( (monitor_top+monitor_left+(int)(tex.y * height)+(int)(tex.x * width)) % 2 == 1 )
{
// Adjust the pixel offset, in to the video frame on the right side of the video data
iPixelOffset += (int)(video_width / 2);
}

// Use this 1/2 pixel width value to center our X coordinate over the pixel data,
// so we don't get color bleed
float fHalfPixelWidth = one_over_width / 2;

// Adjust the X coordinate of the source color to the correct side of the video image
// using the pixel offset we just calculated, and apply 1/2 pixel offset, so we don't
// get color bleed
// Since we didn't modify the Y coordinate, we can hopefully assume it is already at the center
// of the pixel
float2 Color = tex;
Color.x = clamp( ( iPixelOffset * one_over_width ) + fHalfPixelWidth, 0.0f,1.0f) ;

// Replace the default pixel color with the pixel color from the location we just calculated
output = tex2D(s0, Color);
}

return output;
}



This is the second one. I call this one "3D-SBS-DLP-CheckerBoard-Reversed". It is for the case when the image on the left of the video frame is for the right eye, and the image on the right of the video frame is for the left eye. In the actual code, there is literally only 1 byte that is different than the code in the first one. If the destination pixel calculation is even, we are placing a pixel that will be displayed to the left eye. For this one, if the destination pixel calculation is even, we pull the source pixel from the right side.



// 3D-SBS-DLP-CheckerBoard-Reversed
// Reversed - The video image on the right is displayed to the left eye, on even offset pixels
// The video image on the left is displayed to the right eye, on odd offset pixels

// Instructions:
// "View" Menu -> "Shader Editor" Item
// Enter "3D-SBS-DLP-CheckerBoard-Reversed" in the top left box, and press the "Enter" key.
// Select "ps_2_0" from the smaller top (on the middle / right)
// Paste in the code for th "3D-SBS-DLP-CheckerBoard-Reversed" shader.
// Close the Shaders Editor (x in upper left, next to name)
// "Play" Menu -> "Shaders" Sub-Menu Item -> "Select Shaders..." Item
// Check the "Enable post-resize pixel shaders" checkbox
// Click once in the window under the "Enable post-resize pixel shaders"
// select the "3D-SBS-DLP-CheckerBoard-Reversed" shader from the drop down list on the top
// Click the "Add" button
// Click the "OK" button
// ps_2_0


sampler s0 : register(s0);
float4 p0 : register(c0);
float4 p1 : register(c1);
float4 p2 : register(c2);

#define width (p0[0]) // These 2 values are used in combination with the monitor_* values
#define height (p0[1]) // to determine if the destination pixel is on an odd or even offset
#define counter (p0[2]) // These 2 values are not used in this shader
#define clock (p0[3])
#define one_over_width (p1[0]) // These 2 values are used to calculate integer pixel offsets and
#define one_over_height (p1[1]) // to reposition the pixel offsets to the center of the source pixel
#define monitor_top (p1[2]) // These 2 values are used to determine if the output pixel
#define monitor_left (p1[3]) // is displayed to the right or left eye
#define video_left (p2[0]) // These 2 values are used for SBS, to calculate where
#define video_width (p2[1]) // to pull the source pixel from...
#define video_top (p2[2]) // These 2 values are used for TAB, to calculate where
#define video_height (p2[3]) // to pull the source pixel from...

#define PI acos(-1)

float4 main(float2 tex : TEXCOORD0) : COLOR
{
// Default the output color to the color of the pixel at the current coordinate
float4 output = tex2D(s0, tex);

// Integer math will be slower on a VPU but it will eliminate any possiblity of round off errors
int iCurPixel = tex.x / one_over_width;

// This value is used in combination with the video_left value, to be sure we don't change any of
// pixels that don't contain actual video data
int iVideoRight = video_left + video_width;

// If we are currently putting a pixel on the screen, that contains video image data
// Then figure out where we need to get the pixel from
if( ( iCurPixel > video_left ) && ( iCurPixel <= iVideoRight ) )
{
// Calculate a pixel offset into the frame on the left side of the video data
int iPixelOffset = ( ( iCurPixel - video_left ) / 2 ) + video_left; // Don't round up!

// Check to see if we need to be using data from the frame on the right side of the video data
if( (monitor_top+monitor_left+(int)(tex.y * height)+(int)(tex.x * width)) % 2 == 0 )
{
// Adjust the pixel offset, in to the video frame on the right side of the video data
iPixelOffset += (int)(video_width / 2);
}

// Use this 1/2 pixel width value to center our X coordinate over the pixel data,
// so we don't get color bleed
float fHalfPixelWidth = one_over_width / 2;

// Adjust the X coordinate of the source color to the correct side of the video image
// using the pixel offset we just calculated, and apply 1/2 pixel offset, so we don't
// get color bleed
// Since we didn't modify the Y coordinate, we can hopefully assume it is already at the center
// of the pixel
float2 Color = tex;
Color.x = clamp( ( iPixelOffset * one_over_width ) + fHalfPixelWidth, 0.0f,1.0f) ;

// Replace the default pixel color with the pixel color from the location we just calculated
output = tex2D(s0, Color);
}

return output;
}



When creating a DLP Checkerboard output frame, we really don't want the colors of the adjacent pixels to be blended together. The TI DLP chip will be separating the odd and even pixels, to form 2 separate right and left eye video frames, that are displayed consecutively. Though they are right and left eye images of the same scene, the video separation created by the distance to the elements in the frame, could create drastically different colored pixels adjacent to each other in the checkerboard pattern. Those pixels need to maintain their original colors in the final right and left eye frames. So keeping the pixels as close to their original colors as possible is very important. So it sounds like the "Nearest Neighbor" setting is exactly what I need...

turbojet
7th August 2012, 13:15
Thanks for the tip. I took a look at autohotkey but it seems to be missing some key abilities:

-I don't think I can use it to extract info about the currently playing MPC file: filename, current position, etc... Thats really important here.

You can get filename from the window title. Elapsed and total time from static2 class.

-Also, I would like the hot keys to be available only while an MPC window is active. But, from what I can tell, autohotkey only lets you assign hot keys globally. That's a big problem if we want to use plain letters like 'A' 'B' 'C' as hotkeys in MPC.

#IfWinActive, ahk_class MediaPlayerClassicW
will restrict hotkeys to MPC-HC

JanWillem32
7th August 2012, 18:08
@TheCatcher: DirectX 9 only allows integers for the loop counter register, the rest are always floats: http://msdn.microsoft.com/en-us/library/windows/desktop/bb219858%28v=vs.85%29.aspx . The HLSL compiler in DirectX 9 mode can generate operations for floating-point that are usually integer-only. (You can check the output assembly of the compiler.)
Even under DirectX 10 rules, the hardware is required to support all integer operands, but may emulate the arithmetic operations using the floating-point units.
I used your code as a template. This is probably not a fully optimized version yet, but may help you further: (It only works in full screen for the trunk build. For my builds, it needs a window aligned on even pixel offsets, and video filling the width of the visible window.)sampler s0;
float2 c0;
float2 pc1;// temp, remove on final

// prototyped, resolve for final
//float4 c1;
//float4 c2;
/*
c0.x These 2 values are used in combination with the monitor_* values
c0.y to determine if the destination pixel is on an odd or even offset
c1.x These 2 values are used to calculate integer pixel offsets and
c1.y to reposition the pixel offsets to the center of the source pixel
c1.z These 2 values are used to determine if the output pixel
c1.w is displayed to the right or left eye
c2.x These 2 values are used for SBS, to calculate where
c2.y to pull the source pixel from...
c2.z These 2 values are used for TAB, to calculate where
c2.w to pull the source pixel from...
*/
float4 main(float2 tex : TEXCOORD0) : COLOR
{
float4 c1 = {pc1, 0, 0};// temp, remove on final
float4 c2 = {0, c0.x, 0, c0.y};// temp, remove on final

float2 CurPixel = tex * c0;
float VideoRight = c2.x + c2.y;

// If we are currently putting a pixel on the screen, that contains video image data
// Then figure out where we need to get the pixel from
// these compares probably could use an epsilon, else using VPOS would make it easier
if((CurPixel.x >= c2.x) && (CurPixel.x <= VideoRight)) {
float ox = tex.x-c1.x*c2.x;// normalized video-relative x position
float PixelOffset = -.5*ox;// the two images are half-width, compensate for that

float2 MonitorPos = CurPixel+c2.xz;// to monitor-relative coordinates
// Check to see if we need to be using data from the frame on the right side of the video data
float2 n = frac(MonitorPos*.5);

// Adjust the pixel offset, in to the video frame on the right side of the video data where required
if(n.x >= .5) {
PixelOffset -= c1.x*.5;// round half-pixel offsets down
if(n.y < .5) PixelOffset += c1.x*.5*c2.y;}
else if(n.y >= .5) PixelOffset += c1.x*.5*c2.y;

// Adjust the X coordinate of the source color to the correct side of the video image
// using the pixel offset we just calculated
tex.x += PixelOffset;}

return tex2D(s0, tex);
}I don't mind changing the renderers to include these extra variables. Adding the top-left corner relative to monitor position in c1.zw is perfectly fine, but I do prefer the conventional left-top-right-bottom or left-top-width-height order for the video area in c2.xyzw.

Reino
7th August 2012, 20:03
I'm considering doing a simple log viewer for people that prefer using the old fashioned build number.Unless you can append MPC-HC's build number on Github (1.6.3.5757 (8701ded349) for instance would be a lot better), I would very much welcome that.

TheCatcher
8th August 2012, 07:07
I don't mind changing the renderers to include these extra variables. Adding the top-left corner relative to monitor position in c1.zw is perfectly fine, but I do prefer the conventional left-top-right-bottom or left-top-width-height order for the video area in c2.xyzw.

Sounds great, I will modify my shader code and the parameter passing to put the offets to the video data (in C2) in left-top-width-height order.

I got the Pixel Shaders for Top And Bottom (TAB) 3D file format to 3D DLP Checkerboard working today. And while I was doing it, I identified a problem with my SBS Pixel Shaders.

The only code byte different between the two SBS shaders, is backwards. The SBS Normal Shader's modulo 2 compare should be to 0, not 1. And the SBS Reversed Shader's modulo 2 compare should be to 1, not 0.

Logically this change doesn't make sense to me. But it turned out the source SBS video I was using was reversed. So, though logically it doesn't make sense. The reality of it is that it works correctly after making this change. And the TAB 3D file format works this way also.

So the only conclusions I can come up with are...

1. One of the four variables that I am adding up to perform the modulo 2 on, must contain a relative 1 value, instead of a relative 0 value.

2. Somehow one of the (int) conversion on the tex.x and tex.y multiplies by the width and height of the textures are ending up one number higher than they should be...

Or

3. My video card settings are offset from the HDTV by one pixel... Which doesn't make sense, because the NVidia software required me to use its reversed mode for this reversed SBS file also...

I haven't seen the source code to other 3D SBS and TAB video players... maybe this is just the way it is - modulo 0 when it seems like it should be modulo 1, and vice versa...

None of these options makes sense to me. I will look into this later in the week, when I get another chance to play with the code.

Here is the working Pixel Shader code for the Normal Top and Bottom conversion to DLP Checkerboard format (Normal being left eye's image on top).



// 3D-TAB-DLP-CheckerBoard-Normal
// Normal - The video image on the top is displayed to the left eye, on even offset pixels
// The video image on the bottom is displayed to the right eye, on odd offset pixels

// Instructions:
// "View" Menu -> "Shader Editor" Item
// Enter "3D-TAB-DLP-CheckerBoard-Normal" in the top left box, and press the "Enter" key.
// Select "ps_2_0" from the smaller top (on the middle / right)
// Paste in the code for th "3D-TAB-DLP-CheckerBoard-Normal" shader.
// Close the Shaders Editor (x in upper left, next to name)
// "Play" Menu -> "Shaders" Sub-Menu Item -> "Select Shaders..." Item
// Check the "Enable post-resize pixel shaders" checkbox
// Click once in the window under the "Enable post-resize pixel shaders"
// select the "3D-TAB-DLP-CheckerBoard-Normal" shader from the drop down list on the top
// Click the "Add" button
// Click the "OK" button
// ps_2_0


sampler s0 : register(s0);
float4 p0 : register(c0);
float4 p1 : register(c1);
float4 p2 : register(c2);

#define width (p0[0]) // These 2 values are used in combination with the monitor_* values
#define height (p0[1]) // to determine if the destination pixel is on an odd or even offset
#define counter (p0[2]) // These 2 values are not used in this shader
#define clock (p0[3])
#define one_over_width (p1[0]) // These 2 values are used to calculate integer pixel offsets and
#define one_over_height (p1[1]) // to reposition the pixel offsets to the center of the source pixel
#define monitor_top (p1[2]) // These 2 values are used to determine if the output pixel
#define monitor_left (p1[3]) // is displayed to the right SBS, to calculate where
#define video_width (p2[1]) // to pull the source pixel from...
#define video_top (p2[2]) // These 2 values are used for TAB, to calculate where
#define video_height (p2[3]) // to pull the source pixel from...

#define PI acos(-1)

float4 main(float2 tex : TEXCOORD0) : COLOR
{
// Default the output color to the color of the pixel at the current coordinate
float4 output = tex2D(s0, tex);

// Integer math will be slower on a VPU but it will eliminate any possiblity of round off errors
int iCurPixel = tex.y / one_over_height;

// This value is used in combination with the video_top value, to be sure we don't change any of
// pixels that don't contain actual video data
int iVideoBottom = video_top + video_height;

// If we are currently putting a pixel on the screen, that contains video image data
// Then figure out where we need to get the pixel from
if( ( iCurPixel > video_top ) && ( iCurPixel <= iVideoBottom ) )
{
// Calculate a pixel offset into the frame on the top half of the video data
int iPixelOffset = ( ( iCurPixel - video_top ) / 2 ) + video_top; // Don't round up!

// Check to see if we need to be using data from the frame on the bottom half of the video data
if( (monitor_top+monitor_left+(int)(tex.y * height)+(int)(tex.x * width)) % 2 == 0 )
{
// Adjust the pixel offset, in to the video frame on the bottom half of the video data
iPixelOffset += (int)(video_height / 2);
}

// Use this 1/2 pixel width value to center our X coordinate over the pixel data,
// so we don't get color bleed
float fHalfPixelheight = one_over_height / 2;

// Adjust the Y coordinate of the source color to the correct half of the video image
// using the pixel offset we just calculated, and apply 1/2 pixel offset, so we don't
// get color bleed
// Since we didn't modify the X coordinate, we can hopefully assume it is already at the center
// of the pixel
float2 Color = tex;
Color.y = clamp( ( iPixelOffset * one_over_height ) + fHalfPixelheight, 0.0f,1.0f) ;

// Replace the default pixel color with the pixel color from the location we just calculated
output = tex2D(s0, Color);
}

return output;
}



Here is the working Reversed TAB Pixel Shader code.



// 3D-TAB-DLP-CheckerBoard-Reversed
// Reversed - The video image on the right is displayed to the left eye, on even offset pixels
// The video image on the left is displayed to the right eye, on odd offset pixels

// Instructions:
// "View" Menu -> "Shader Editor" Item
// Enter "3D-TAB-DLP-CheckerBoard-Reversed" in the top left box, and press the "Enter" key.
// Select "ps_2_0" from the smaller top (on the middle / right)
// Paste in the code for th "3D-TAB-DLP-CheckerBoard-Reversed" shader.
// Close the Shaders Editor (x in upper left, next to name)
// "Play" Menu -> "Shaders" Sub-Menu Item -> "Select Shaders..." Item
// Check the "Enable post-resize pixel shaders" checkbox
// Click once in the window under the "Enable post-resize pixel shaders"
// select the "3D-TAB-DLP-CheckerBoard-Reversed" shader from the drop down list on the top
// Click the "Add" button
// Click the "OK" button
// ps_2_0

sampler s0 : register(s0);
float4 p0 : register(c0);
float4 p1 : register(c1);
float4 p2 : register(c2);

#define width (p0[0]) // These 2 values are used in combination with the monitor_* values
#define height (p0[1]) // to determine if the destination pixel is on an odd or even offset
#define counter (p0[2]) // These 2 values are not used in this shader
#define clock (p0[3])
#define one_over_width (p1[0]) // These 2 values are used to calculate integer pixel offsets and
#define one_over_height (p1[1]) // to reposition the pixel offsets to the center of the source pixel
#define monitor_top (p1[2]) // These 2 values are used to determine if the output pixel
#define monitor_left (p1[3]) // is displayed to the right SBS, to calculate where
#define video_width (p2[1]) // to pull the source pixel from...
#define video_top (p2[2]) // These 2 values are used for TAB, to calculate where
#define video_height (p2[3]) // to pull the source pixel from...

#define PI acos(-1)

float4 main(float2 tex : TEXCOORD0) : COLOR
{
// Default the output color to the color of the pixel at the current coordinate
float4 output = tex2D(s0, tex);

// Integer math will be slower on a VPU but it will eliminate any possiblity of round off errors
int iCurPixel = tex.y / one_over_height;

// This value is used in combination with the video_top value, to be sure we don't change any of
// pixels that don't contain actual video data
int iVideoBottom = video_top + video_height;

// If we are currently putting a pixel on the screen, that contains video image data
// Then figure out where we need to get the pixel from
if( ( iCurPixel > video_top ) && ( iCurPixel <= iVideoBottom ) )
{
// Calculate a pixel offset into the frame on the top half of the video data
int iPixelOffset = ( ( iCurPixel - video_top ) / 2 ) + video_top; // Don't round up!

// Check to see if we need to be using data from the frame on the bottom half of the video data
if( (monitor_top+monitor_left+(int)(tex.y * height)+(int)(tex.x * width)) % 2 == 1 )
{
// Adjust the pixel offset, in to the video frame on the bottom half of the video data
iPixelOffset += (int)(video_height / 2);
}

// Use this 1/2 pixel width value to center our X coordinate over the pixel data,
// so we don't get color bleed
float fHalfPixelheight = one_over_height / 2;

// Adjust the Y coordinate of the source color to the correct half of the video image
// using the pixel offset we just calculated, and apply 1/2 pixel offset, so we don't
// get color bleed
// Since we didn't modify the X coordinate, we can hopefully assume it is already at the center
// of the pixel
float2 Color = tex;
Color.y = clamp( ( iPixelOffset * one_over_height ) + fHalfPixelheight, 0.0f,1.0f) ;

// Replace the default pixel color with the pixel color from the location we just calculated
output = tex2D(s0, Color);
}

return output;
}

JanWillem32
8th August 2012, 21:38
I think you missed the thing I noted before; DirectX 9 has no support for integers other than the loop counter. Not a single integer is used in the output assembly of your shaders. The integer modulo you put in the shader is approximated by doing many floating-point operations (most notable arithmetic saturation and extraction of the fractional component). The prototpe I posted has "float2 n = frac(MonitorPos*.5);", to only calculate a floating-point fractional part once, and use that directly. The FRC instruction is native to the assembly under PS 2.0 and onward rules: http://msdn.microsoft.com/en-us/library/windows/desktop/bb219854%28v=vs.85%29.aspx .

Integer modulo is expensive even on systems that do support it. For an x86 CPU, IDIV (signed) and DIV (unsigned) instructions are used to perform division (to the RAX[64-bit], EAX[32-bit], AX[16-bit] or AL[8-bit] register) and modulo (to the RDX, EDX, DX or AH register) simultaneously. It can take up to 197 clocks to perform. For calculating modulo of x with a right-hand operand of 2, 4, 8 and 16, we optimize using the single-clock AND/TEST instruction: x & 1, x & 3, x & 7, x & 15. I haven't seen a compiler do this optimization yet. So, the standard tests for odd and even are: "if(x&1) {" (TEST reg 1, JZ label) and "if(!(x&1)) {" (TEST reg 1, JNZ label).

betaking
9th August 2012, 00:43
S.Chinese update
http://www.mediafire.com/?j2grwjyp6ivy4jj

TheCatcher
9th August 2012, 16:45
Yep, I missed that point... I've made the changes, switched all the artificial ints over to floats, modified the modulo 2 code to be a

if (value - float(value) < 0.5f)

for normal and

if (value - float(value) >= 0.5f)

for reversed.

Also changed the passed in offsets to the video to be left-top-width-height.

The size went from over 60 slots / instructions to around 30. It still seems to be backwards. I will figure out what is up with that later this week.

JanWillem32
9th August 2012, 20:02
I optimized the primary SBS to checkerboard pixel shader:sampler s0;
float2 c0;
float4 c1;
float4 c2;
/*
c0.x screen width These 2 values are used in combination with the monitor-relative values to determine if the destination pixel is on an odd or even offset
c0.y screen height
c1.x 1/screen width These 2 values are used to calculate whole pixel offsets relative to the normalized space
c1.y 1/screen height
c1.z window left to monitor These 2 values are used to determine if the output pixel is displayed to the right or left eye
c1.w window top to monitor
c2.x video left to window These 2 values are used for SBS, to calculate where to pull the source pixel from...
c2.z video width
c2.y video top to window These 2 values are used for TAB, to calculate where to pull the source pixel from...
c2.w video height
For this shader to work correctly, the video width on screen has to be an even amount.*/

float4 main(float2 tex : TEXCOORD0) : COLOR
{
float2 CurPixel = tex*c0;
float VideoRight = c2.x+c2.z;

// If we are currently putting a pixel on the screen, that contains video image data
// Then figure out where we need to get the pixel from
// these compares probably could use an epsilon, else using VPOS would make it easier
if((CurPixel.x >= c2.x) && (CurPixel.x <= VideoRight)) {
float ox = CurPixel.x-c2.x;// video-relative x position
float PixelOffset = floor(-.5*ox);// the two images are half-width, compensate for that, round half-pixel offsets down

float2 MonitorPos = CurPixel-c2.xy;// to monitor-relative coordinates
// Check to see if we need to be using data from the frame on the right side of the video data
float n = frac(dot(1, MonitorPos)*.5-.25);
// Adjust the pixel offset, in to the video frame on the right side of the video data where required
if(n >= .5) PixelOffset += .5*c2.z;

// Adjust the X coordinate of the source position to the correct side of the video image using the pixel offset we just calculated
tex.x += PixelOffset*c1.x;}

return tex2D(s0, tex);
}This code compiles to 1 sampling and 19 arithmetic instructions under PS 3.0 rules. When not using the new variables in the registers (the non-adaptive state), it's 1 sampling and 18 arithmetic instructions:sampler s0;
float2 c0;
float2 pc1;// temp, remove on final

// prototyped, resolve for final
//float4 c1;
//float4 c2;
/*
c0.x screen width These 2 values are used in combination with the monitor-relative values to determine if the destination pixel is on an odd or even offset
c0.y screen height
c1.x 1/screen width These 2 values are used to calculate whole pixel offsets relative to the normalized space
c1.y 1/screen height
c1.z window left to monitor These 2 values are used to determine if the output pixel is displayed to the right or left eye
c1.w window top to monitor
c2.x video left to window These 2 values are used for SBS, to calculate where to pull the source pixel from...
c2.z video width
c2.y video top to window These 2 values are used for TAB, to calculate where to pull the source pixel from...
c2.w video height
For this shader to work correctly, the video width on screen has to be an even amount.*/

float4 main(float2 tex : TEXCOORD0) : COLOR
{
float4 c1 = {pc1, 0, 0};// temp, remove on final
float4 c2 = {0, 0, c0};// temp, remove on final

float2 CurPixel = tex*c0;
float VideoRight = c2.x+c2.z;

// If we are currently putting a pixel on the screen, that contains video image data
// Then figure out where we need to get the pixel from
// these compares probably could use an epsilon, else using VPOS would make it easier
if((CurPixel.x >= c2.x) && (CurPixel.x <= VideoRight)) {
float ox = CurPixel.x-c2.x;// video-relative x position
float PixelOffset = floor(-.5*ox);// the two images are half-width, compensate for that, round half-pixel offsets down

float2 MonitorPos = CurPixel-c2.xy;// to monitor-relative coordinates
// Check to see if we need to be using data from the frame on the right side of the video data
float n = frac(dot(1, MonitorPos)*.5-.25);

// Adjust the pixel offset, in to the video frame on the right side of the video data where required
if(n >= .5) PixelOffset += .5*c2.z;

// Adjust the X coordinate of the source position to the correct side of the video image using the pixel offset we just calculated
tex.x += PixelOffset*c1.x;}

return tex2D(s0, tex);
}

jffulcrum
10th August 2012, 21:20
Have some misunderstanding of the DXVA support for WMV3 (VC-1) in MPC-HC after about 5000 builds. With one video DXVA in MPC Video Decoder with all checks skipped is not in use:

MediaInfo:
ID : 2
Format : VC-1
Format profile : MP@ML
Codec ID : WMV3
Codec ID/Info : Windows Media Video 9
Codec ID/Hint : WMV3
Description of the codec : Windows Media Video 9
Duration : 4mn 25s
Bit rate mode : Variable
Bit rate : 1 500 Kbps
Width : 696 pixels
Height : 412 pixels
Display aspect ratio : 16:9
Frame rate : 25.000 fps
Bit depth : 8 bits
Scan type : Progressive
Compression mode : Lossy
Bits/(Pixel*Frame) : 0.209
Stream size : 47.5 MiB (84%)

Here is what DXVA Checker utility trace have during playback in MPC-HC:
DXVA2_ProcessDeviceDestroyed, 1800, 00:00:03.1345956
DXVA2_ProcessDeviceDestroyed, 1800, 00:00:03.1347092
DXVA2_ProcessDeviceCreated, mpc-hc64, 00:00:08.6857561
DXVA2_ProcessDeviceCreated, mpc-hc64, 00:00:08.6858225
DXVA2_ProcessDeviceDestroyed, mpc-hc64, 00:00:08.7013206
DXVA2_ProcessDeviceDestroyed, mpc-hc64, 00:00:08.7013597
DXVA2_ProcessDeviceCreated, mpc-hc64, 00:00:08.7521071
DXVA2_ProcessDeviceCreated, mpc-hc64, 00:00:08.7521567
DXVA2_ProcessBlt, mpc-hc64, 00:00:08.7534609
DXVA2_ProcessBlt, mpc-hc64, 00:00:08.7574633
DXVA2_ProcessBlt, mpc-hc64, 00:00:08.7604663
DXVA2_ProcessBlt, mpc-hc64, 00:00:08.7624646
DXVA2_ProcessBlt, mpc-hc64, 00:00:08.7644756

The last device created is a 'Device: BobDevice RenderTarget: NV12 Size: 768x412' - so no DXVA decoding

Here is another video, with working DXVA:

ID : 2
Format : VC-1
Format profile : MP@HL
Codec ID : WMV3
Codec ID/Info : Windows Media Video 9
Codec ID/Hint : WMV3
Description of the codec : Windows Media Video 9 - Professional
Duration : 1mn 3s
Bit rate mode : Constant
Bit rate : 11.0 Mbps
Width : 1 280 pixels
Height : 720 pixels
Display aspect ratio : 16:9
Frame rate : 29.970 fps
Bit depth : 8 bits
Scan type : Progressive
Compression mode : Lossy
Bits/(Pixel*Frame) : 0.398
Stream size : 83.6 MiB

And the trace is:

DXVA2_ProcessDeviceCreated, mpc-hc64, 00:00:03.8030614
DXVA2_ProcessDeviceCreated, mpc-hc64, 00:00:03.8031243
DXVA2_DecodeDeviceCreated, mpc-hc64, 00:00:03.8093286
DXVA2_DecodeDeviceBeginFrame, mpc-hc64, 00:00:03.8334641
DXVA2_DecodeDeviceGetBuffer, mpc-hc64, 00:00:03.8370296
DXVA2_DecodeDeviceGetBuffer, mpc-hc64, 00:00:03.8370321
DXVA2_DecodeDeviceGetBuffer, mpc-hc64, 00:00:03.8370349
DXVA2_DecodeDeviceExecute, mpc-hc64, 00:00:03.8370383
DXVA2_DecodeDeviceEndFrame, mpc-hc64, 00:00:03.8370771
DXVA2_DecodeDeviceBeginFrame, mpc-hc64, 00:00:03.8387586
DXVA2_DecodeDeviceGetBuffer, mpc-hc64, 00:00:03.8387688
DXVA2_DecodeDeviceGetBuffer, mpc-hc64, 00:00:03.8387716
DXVA2_DecodeDeviceGetBuffer, mpc-hc64, 00:00:03.8387775
DXVA2_DecodeDeviceExecute, mpc-hc64, 00:00:03.8387788
DXVA2_DecodeDeviceEndFrame, mpc-hc64, 00:00:03.8387936
DXVA2_DecodeDeviceBeginFrame, mpc-hc64, 00:00:03.8389860
DXVA2_DecodeDeviceGetBuffer, mpc-hc64, 00:00:03.8389922
DXVA2_DecodeDeviceGetBuffer, mpc-hc64, 00:00:03.8389932
DXVA2_DecodeDeviceGetBuffer, mpc-hc64, 00:00:03.8389950
DXVA2_DecodeDeviceExecute, mpc-hc64, 00:00:03.8389956
DXVA2_DecodeDeviceEndFrame, mpc-hc64, 00:00:03.8390025
DXVA2_DecodeDeviceBeginFrame, mpc-hc64, 00:00:03.8392582
DXVA2_DecodeDeviceGetBuffer, mpc-hc64, 00:00:03.8392650
DXVA2_DecodeDeviceGetBuffer, mpc-hc64, 00:00:03.8392662
DXVA2_DecodeDeviceGetBuffer, mpc-hc64, 00:00:03.8392678
DXVA2_DecodeDeviceExecute, mpc-hc64, 00:00:03.8392687
DXVA2_DecodeDeviceEndFrame, mpc-hc64, 00:00:03.8392762
DXVA2_DecodeDeviceBeginFrame, mpc-hc64, 00:00:03.8395024
DXVA2_DecodeDeviceBeginFrame, mpc-hc64, 00:00:03.8427427
DXVA2_DecodeDeviceBeginFrame, mpc-hc64, 00:00:03.8467446
DXVA2_DecodeDeviceBeginFrame, mpc-hc64, 00:00:03.8507470
DXVA2_DecodeDeviceGetBuffer, mpc-hc64, 00:00:03.8507579
DXVA2_DecodeDeviceGetBuffer, mpc-hc64, 00:00:03.8507597
DXVA2_DecodeDeviceGetBuffer, mpc-hc64, 00:00:03.8507666
DXVA2_DecodeDeviceExecute, mpc-hc64, 00:00:03.8507678
DXVA2_DecodeDeviceEndFrame, mpc-hc64, 00:00:03.8507815
DXVA2_DecodeDeviceBeginFrame, mpc-hc64, 00:00:03.8508879
DXVA2_DecodeDeviceBeginFrame, mpc-hc64, 00:00:03.8547464
DXVA2_DecodeDeviceGetBuffer, mpc-hc64, 00:00:03.8547554
DXVA2_DecodeDeviceGetBuffer, mpc-hc64, 00:00:03.8547563
DXVA2_DecodeDeviceGetBuffer, mpc-hc64, 00:00:03.8547728
DXVA2_DecodeDeviceExecute, mpc-hc64, 00:00:03.8547740
DXVA2_DecodeDeviceEndFrame, mpc-hc64, 00:00:03.8547914
DXVA2_DecodeDeviceBeginFrame, mpc-hc64, 00:00:03.8549084
DXVA2_ProcessBlt, mpc-hc64, 00:00:03.8557654

And the last device created is: 'Device: ModeVC1_VLD Size: 1280x720'

With both videos DXVA Checker 'Check Decoders' button results with this:
[DS] WMVideo Decoder DMO [DXVA1] [WMV3 696x412]
-
[MF] WMVideo Decoder MFT [DXVA2] [WMV3 696x412]
ModeVC1_VLD2010: DXVA2
ModeVC1_VLD: DXVA2
ModeVC1_IDCT: DXVA2
ModeWMV9_IDCT: DXVA2
ModeVC1_MoComp: DXVA2
ModeWMV9_MoComp: DXVA2
ModeVC1_PostProc: DXVA2
ModeWMV9_PostProc: DXVA2

ModeVC1_VLD2010: DXVA2 is marked red and is actually used as Decode Device if select 'Play' - and the CPU load is zero even with only one core active.

System is Win7 Pro x64, video board is a NVIDIA GTX 590 with 304.79 Driver.

Is videos with resolutions below 1280 is just banned from DXVA in MPC-HC after https://github.com/mpc-hc/mpc-hc/commit/ad48e5edf7eb5674f888a51f53bd3e866ce93fc1 commit? Cause the 4992 build from http://www.xvidvideo.ru/media-player-classic-home-cinema-x86-x64/media-player-classic-homecinema-x86-x64-1-6-3-4992.html use DXVA with both files.

v0lt
11th August 2012, 08:08
@jffulcrum

Most of WMV3 videos has problems when playing in DXVA mode, if the frame width is less or equal than 720.

Here runs a simple rule, if the format is WMV3, and frame width is less or equal than 720, then DXVA is not used. This rule is constant, it will not be optional.

MPC-HC v5349 or later.

bozek
11th August 2012, 09:42
What's up with the MPC-BE?

ryrynz
11th August 2012, 12:04
If your talking the MPC-BE project at sourceforge (http://sourceforge.net/projects/mpcbe/) it's a fork of MPC-HC currently in beta and only for selected beta testers, it's unknown if any of that code will ever make it into MPC-HC.

If your talking the old MPC-BE, some of it was already integrated into MPC-HC. Bobdynlan created a branch to refine and improve the UI to eventually be merged into MPC-HC.
When that will merge I don't know, he's been inactive for awhile now after creating the branch with no progress shown to date.

jffulcrum
11th August 2012, 18:58
v0lt

This rule is constant, it will not be optional.

But we already have 'Disable DXVA for SD' flag for H.264, why not to have the same for WMV3? I have some library of WMV3 videos and with 4992 all of them played normal in DXVA mode, even 2007 dated ones.

MPC-HC v5323

According to already given link https://github.com/mpc-hc/mpc-hc/commit/ad48e5edf7eb5674f888a51f53bd3e866ce93fc1 the 5323 commit was cancelled.

bozek
11th August 2012, 19:08
Well, no offense but I really don't care about the UI. The things that I do appreciate about the BE still haven't found their way in the 'standard' version. I'm talking about the ability to force 0-255 output or icons by filetype.

The BE mod is dead and the MPC-BE seems to have died before it was even born and if not, I don't really see the point for all the secretiveness. After all, it's supposed to be a GPL software... :confused:

r4in
11th August 2012, 21:56
Just a quick question: why is there still not implemented feature to play files that are being downloaded? Every other major players now support it. Honestly, who the hell cares about GUI, but this feature is a must. MPC used be my player of choice, but because of this, I am forced to use PotPlayer.

Thank you. Once it's implemented, you can count on me with donation.

v0lt
12th August 2012, 04:10
But we already have 'Disable DXVA for SD' flag for H.264, why not to have the same for WMV3?
This is a bad idea.

According to already given link https://github.com/mpc-hc/mpc-hc/commit/ad48e5edf7eb5674f888a51f53bd3e866ce93fc1 the 5323 commit was cancelled.
Excuse me. I mixed up the сhangeset number.
Changeset 5347 (http://sourceforge.net/apps/trac/mpc-hc/changeset/5347/)
Changeset 5349 (http://sourceforge.net/apps/trac/mpc-hc/changeset/5349/)

roytam1
12th August 2012, 07:54
TC/JA translations updated, please check them out!
http://sourceforge.net/apps/trac/mpc-hc/ticket/1644
http://sourceforge.net/apps/trac/mpc-hc/ticket/1647

Underground78
12th August 2012, 09:24
Unless you can append MPC-HC's build number on Github (1.6.3.5757 (8701ded349) for instance would be a lot better), I would very much welcome that.
I know that the hash is in the About dialog right? But I will probably do that when I find some times.

I'm talking about the ability to force 0-255 output or icons by filetype.
Isn't View > Renderer Settings > Output range > 0-255 what you are looking for?
As for the icons, I'm not sure I understand correctly but currently the icons are different for each extension. If it's not what you want but you have icons you love, it's pretty easy to build a custom icon lib.

Obveron
12th August 2012, 14:14
I wonder if it would be possible to accurately duplicate the OSD and right-click menus across the screen in situations when we put our 3DTVs into top-bottom/side-by-side. Obviously we'd have to manually select an option that tells MPC-HC we're putting our TV into a 3D mode, but it would allow us to control playback in 3D without the OSD being all messed up.

Reino
12th August 2012, 20:52
@ Underground78: I know about the About-dialog, but this is before downloading. At Github you can only see the hash-code and at XhmikosR's website (which appears to be offline atm :() only the build-code. If Github would show both, you would actually know what kind of MPC-HC build you're downloading.

nevcairiel
12th August 2012, 21:02
(which appears to be offline atm :()

Seems online to me, and since i'm hosting it, i think i would notice. :D

Reino
12th August 2012, 21:16
We're talking about http://xhmikosr.1f0.de (http://xhmikosr.1f0.de), aren't we?

nevcairiel
12th August 2012, 21:37
We're talking about http://xhmikosr.1f0.de (http://xhmikosr.1f0.de), aren't we?

Indeed we are.

Underground78
12th August 2012, 22:05
@ Underground78: I know about the About-dialog, but this is before downloading. At Github you can only see the hash-code and at XhmikosR's website (which appears to be offline atm :() only the build-code. If Github would show both, you would actually know what kind of MPC-HC build you're downloading.

XhmikosR can probably put the hash in the filename of the nightlies.

PS: It also works for me.

Reino
12th August 2012, 22:09
Well, call me crazy, but all I see is a white screen with h5ai 0.22-dev-9 (http://larsjung.de/h5ai) at the bottom.

nevcairiel
12th August 2012, 22:11
Well, call me crazy, but all I see is a white screen with h5ai 0.22-dev-9 (http://larsjung.de/h5ai) at the bottom.

Sounds like he updated to some broken version of that directory index script. I let him know.

HoP
12th August 2012, 23:02
Well, call me crazy, but all I see is a white screen with h5ai 0.22-dev-9 (http://larsjung.de/h5ai) at the bottom.

it works.you need to have JavaScript enabled in your browser
http://xhmikosr.1f0.de/mpc-hc/

ryrynz
13th August 2012, 00:16
I had an Adblock Plus issue like that a week or so ago, I disabled it on that site and that fixed it.

betaking
13th August 2012, 04:51
pls put mpc-hc sourcecode to code.google.com some chinese user can not visit and download sourcecode form github! thanks

JEEB
13th August 2012, 13:22
pls put mpc-hc sourcecode to code.google.com some chinese user can not visit and download sourcecode form github! thanks
And there are some Chinese who can't access Google Code (see: xy-vsfilter's developer).

Anyways, anyone is free to clone the git repository and push it wherever they want to mirror it. Every clone of a git repository is equal. That's the magic of distributed systems (just remember to grab all branches if you want them).

That said, if vBm or someone wants to set it up, mirroring to the official Google Code project should be possible (a simple script to check for new content and pushing it to the mirrors run every X minutes).

Tom Keller
15th August 2012, 05:05
I have a strange problem with the MPC-HC since build 1.6.3.5803:

I'm using WinXP SP3, running on a Core2Duo E6600 @2,4Ghz with an Asus Xonar DX soundcard and a NVIDIA 9600GT GPU (forceware driver 275.27) with a dual monitor setup. The "Fullscreen monitor" option in MPC-HC is set to "DISPLAY 2" (= the tv) while the player app runs all the time on the first display. So the playback controls are on the monitor and the video is on the tv, mostly using madVR with the "D3D fullscreen" option.
Till 1.6.3.5783 it was possible to open the MPC-HC options dialog (via "O" key or "View" => "Options") while playback was running - but since 1.6.3.5803 the dialog won't open. The dialog opens, while playing a file in window mode or playing no file at all - but the options dialog won't show with ANY video renderer (VMR/EVR/madVR) while playing a video using "D3D fullscreen" on display 2, with the player app on display 1. Even if i pause or stop the fullscreen-playback the dialog won't open... i always have to close and restart MPC-HC to change its options.

Is this a bug or is it on purpose ( <= maybe a stupid question... but you'll never know if some changes requested a specific behaviour ;) )?

ryrynz
15th August 2012, 07:44
I'm merely posting this for the curious. Any questions or comments you might have regarding MPC-BE should not be posted here. Enjoy.

MPC-BE build 802

Link removed for GPL reasons, new version stable release due out shortly, keep an eye out in the next few weeks.

alexins
15th August 2012, 09:02
I'm merely posting this for the curious. Any questions or comments you might have regarding MPC-BE should not be posted here. Enjoy.

MPC-BE build 802.

... and this message here should not be, you violates the GPL!
:devil:

p.s.
This building has several problems, which may adversely affect the operation of your computer. :D

bozek
16th August 2012, 13:16
Right.

Anonymous9377
18th August 2012, 02:12
is there a way to undock the controls and be able to drag them around the screen separate from the video like vlc?
cause i play video outside of the player and vlc 1.x cuts off video at the end, and vlc 2.x resizes the video when a new 1 is played instead of the fixed size selected
mpc doesn't have this problem but i need to undock and drag the controls independent of the screen.. seems like every video player has an achilles heel
i know its a customize niche but hey

some suggestions i have for mpc-hc
or "make mpc more like vlc"

1. option to undock controls separate from the video
need to move the controls away from the video
2. have playlist not appear in full screen like controls
when in full screen playlist is over the video
3. option to have controls appear in full screen mode
controls disappear in full screen unlike vlc
4. option to disable dragging video when you click on it
click the video for full screen etc. and accidentally moved

thank you very much

keneo
18th August 2012, 02:13
Calling all programmers!

I am a novice programmer with no experience in Windows programming.

My vision for a modification to mpc-hc is that the user could now add custom commands (consisting of a system commandline call and an associated hotkey to trigger that custom command) to the table on the "Keys" Option page. The commandline can include insertable paramaters such as <currently playing media full path name>, <the current media play position>, <the current media length>, etc...

I have made what I consider to be a lot of progress. But now I am at the point where I need to tell my new subroutine which hotkey was pressed. As far as I know it is not possible to call a message map function that uses parameters. Unfortunately, using a parameter was my entire plan A for passing along the hotkey info.

So now I need a plan B.

My thinking is that the function that gets called from the message map could some how find out what the latest hot key pressed was. So, is there a way to know what the last hotkey pressed was? if not, maybe I could insert some code somewhere to record the hotkey so that it can now remember? (I dont really like the idea of inserting code into someone elses routines, but if that's the only way, then so be it.)

Or plan C

Bypass the message map completely. Insert code to intercept the hotkey and branch off from there if any of the custom command hotkeys are pressed. That sounds like the the most horrible idea of them all. But I am totally open to any help!

jos99
18th August 2012, 17:38
Is there any way to set the size of the window in pixels when you open MPC HC?

Anonymous9377
19th August 2012, 00:05
Is there any way to set the size of the window in pixels when you open MPC HC?

not an expert on this but since its slow;

1. select option to make player adjust to video size
2. get or make a video the size you want
3. open video thats the size you want
4. unselect option to make player adjust to video size

or

1. if you know how do the same thing in vlc
2. stretch the screen so its the same as vlc's window

i dont remember how i did it exactly but good luck

betaking
19th August 2012, 12:55
https://github.com/mpc-hc/mpc-hc/commit/d78ea81f39e5b6c8d3c8bfa69a37e03f409ef9bf
why remove .dat extension?
If you remove the MPC-HC will not play .dat files on the VCD discs form CD-ROM OR DVD-ROM!
http://forum.doom9.org/showthread.php?p=1178911#post1178911

jos99
19th August 2012, 14:55
not an expert on this but since its slow;

1. select option to make player adjust to video size
2. get or make a video the size you want
3. open video thats the size you want
4. unselect option to make player adjust to video size

Thanks, that option doesn't really work as if you unselect it, it just reverts to the default small opening size & if you select it, it just saves whatever variable size of the video you just played. Any experts have any idea about how to change the default window size?

In case people didn't see the thread, there are two really nice toolbar skins from jinsk8r http://archangelx2.deviantart.com/ that I reposted

http://forum.doom9.org/showthread.php?p=1587541#post1587541

they didn't work originally as they only posted jpgs, they have now posted BMPs & they look great

can someone add to the toolbar skin wiki page as I don't have permissions:

https://sourceforge.net/apps/trac/mpc-hc/wiki/Toolbar_images

73ChargerFan
19th August 2012, 17:07
I'd like a right-click option to lock the window size, that holds only until the player is closed.

I often have a playlist of short cartoons of varying resolutions, off to one side of my screen while I'm reading a web browser on the other side (gotta love wide screens!) Every 5 minutes, when the next cartoon starts, the player resizes and I have to fix it.

This would be VERY handy.

VipZ
19th August 2012, 18:00
I'd like a right-click option to lock the window size, that holds only until the player is closed.

I often have a playlist of short cartoons of varying resolutions, off to one side of my screen while I'm reading a web browser on the other side (gotta love wide screens!) Every 5 minutes, when the next cartoon starts, the player resizes and I have to fix it.

This would be VERY handy.

I think disabling auto zoom in options should do this for you.

jos99
19th August 2012, 19:59
I think disabling auto zoom in options should do this for you.
Yeah that does work, you'd need to keep re-enabling it if you wanted to watch in full size but not full screen tho'. It would be nice if you could have various window size presets you could select by right clicking i.e. auto zoom, default, preset 1, preset 2, preset 3 etc that are remembered even on restart.

VipZ
19th August 2012, 20:39
Yeah that does work, you'd need to keep re-enabling it if you wanted to watch in full size but not full screen tho'. It would be nice if you could have various window size presets you could select by right clicking i.e. auto zoom, default, preset 1, preset 2, preset 3 etc that are remembered even on restart.

Disabling auto zoom and then using alt+2 (100% zoom, there are other presets as well) if you want to set video to 100% size. Personally I like to set my own window size at let media fill that size so I can do similar to you, watch and read stuff at same time.

jos99
19th August 2012, 21:39
Disabling auto zoom and then using alt+2 (100% zoom, there are other presets as well) if you want to set video to 100% size. Personally I like to set my own window size at let media fill that size so I can do similar to you, watch and read stuff at same time.
Thanks:), it was mainly for aesthetic reasons though that I wanted MPC-HC to start at a certain size each time, if I resize at all it just remembers that setting. Anyway, I've worked out what I want to do now, default starting size is simply determined by the size of the logo, I wanted mine about 535 pixel square, the top controls are about 50px, bottom 95px, sides 7px each on Windows 7 so the logo needs to 521 x 390 px.

v0lt
19th August 2012, 23:29
https://github.com/mpc-hc/mpc-hc/commit/d78ea81f39e5b6c8d3c8bfa69a37e03f409ef9bf
why remove .dat extension?
If you remove the MPC-HC will not play .dat files on the VCD discs form CD-ROM OR DVD-ROM!
http://forum.doom9.org/showthread.php?p=1178911#post1178911

I've seen a real VideoCD only once. He did not impress me compared to DivX 3.11. Most users do not know what a VideoCD.

.dat extension of very often used to store anything, but not for video. We have suffered for almost ten years. Now we are well, we're happy.


.dat playback nowhere gone. If you want the association, then it is done manually (added manually to "Other" group) or by means of Windows ("Open as...").
You can also rename the .mpg.

tetsuo55
20th August 2012, 21:31
VideoCD is still really popular in asian countries.
New VideoCD's get released about as often as DVD/Bluray.

There are even many videos that where only ever released on VideoCD ( i have a 100 disks myself)

I agree that it is unfortunate mpeg chose a common extention like .dat

My preference would be for your reverting the .dat part of the commit.

jos99
21st August 2012, 03:30
Modified MPC logo that was on jinsk8r's (http://archangelx2.deviantart.com) screenshot (http://forum.doom9.org/showthread.php?p=1587541#post1587541) to MPC-HC

http://dl.dropbox.com/u/35202345/mpchclogogreenmask.png

you can paste that as a layer onto any image and save as a bmp or png (merge/flatten layers if asked) & use any image as the MPC-HC logo background.

jos99
22nd August 2012, 14:06
Cleaned up the text a bit

http://dl.dropbox.com/u/35202345/mpchclogogreenmask3.png

logo on black

http://dl.dropbox.com/u/35202345/mpchclogogrnonblk.png
(http://dl.dropbox.com/u/35202345/mpchclogogrnonblk.png)
MPC-HC on mars

http://dl.dropbox.com/u/35202345/mpchcmarscurios.png

ney2x
22nd August 2012, 18:21
This (http://x33d.deviantart.com/art/MPC-HC-logo-244258311) is the logo I am using :)

Liisachan
23rd August 2012, 16:19
I'm experiencing a strange incompatibility about how VSFilter handles the advanced SSA tag {\frx}.

In VSFilter 1.6.3.5818, for example {\frx-10} works like {\frx+10} in 1.6.2.4902, at least sometimes. As if the sign of the parameter had been reversed between v1.6.2 and v1.6.3.

Samples:
"{\fnVerdana\fs32\b1\frx+30}Test frx+30" with 1.6.2
http://ffdshow.faireal.net/tmp/v162+30.png
"{\fnVerdana\fs32\b1\frx-30}Test frx-30" with 1.6.3
http://ffdshow.faireal.net/tmp/v163-30.png

***

"{\fnVerdana\fs32\b1\frx-30}Test frx-30" with 1.6.2
http://ffdshow.faireal.net/tmp/v162-30.png
"{\fnVerdana\fs32\b1\frx+30}Test frx+30" with 1.6.3
http://ffdshow.faireal.net/tmp/v163+30.png

***
Well, though it may be just me, this could be a serious problem for SSA/ASS typesetters. Did I do anything wrong? I'm still on Windows XP if that's a sin...

EDIT: I'm using VSFilter from the standalone_filters package, via Avisynth.

EDIT2: Maybe a problem in Transform_SSE2, enabled in Revision 5569, as opposed to the classic Transform_C?

Liisachan
24th August 2012, 13:17
This happened between 5555 and 5572; the revision 5569 by XhmikosR on July 19, 2012 should be the culprit.

This SSE2 optimization from VSFilterMod (i.e. Transform_SSE2) is obviously broken, where they're rotating font-x in the wrong (negative) direction. I just confirmed that VSFilterMod does really rotate font to the opposite direction. This "bug" should be something trivial, where they typed "+" when they should have typed "-" or something like that, when handling sin or cos.
The original rotation by Gabest agrees with MPC-HC 1.6.2 and before; with ffdshow, VLC, and probably with libass too (which I cannot test directly since I'm sadly on Windows). The latest version of MPC-HC is practically the only one that is not compatible.

See for yourself: font_rotation_x.mkv (http://ffdshow.faireal.net/tmp/font_rotation_x.mkv) (~50 kB)

MPC rev. 114
http://ffdshow.faireal.net/tmp/mpc114.jpg

ffdshow rev. 4483
http://ffdshow.faireal.net/tmp/ffdshow4483.jpg

VLC v2.0.3
http://ffdshow.faireal.net/tmp/vlc203.jpg

MPC-HC rev. 5555
http://ffdshow.faireal.net/tmp/mpc5555.jpg

MPC-HC rev. 5572 (Broken!)
http://ffdshow.faireal.net/tmp/mpc5572.jpg

If you guys are not interested in \frx at all, will you at least revert to the non-SSE2 version before many typesetters start rotating fonts to the opposite direction, creating a lot of confusion? Like I said, VSFilterMod should be fixed too if someone is still working on it.

Thanks again for your wonderful jobs!

sneaker_ger
24th August 2012, 14:37
VLC is using libass...

xy-vsfilter seems to be unaffected.

Keiyakusha
24th August 2012, 15:55
Why would anyone import something from vsfiltermod anyway? Its not meant for playback! Better revert everything and just integrate xy-vsfilter if you need optimizations.

nevcairiel
24th August 2012, 16:12
This SSE2 optimization from VSFilterMod (i.e. Transform_SSE2) is obviously broken, where they're rotating font-x in the wrong (negative) direction.

Should be fixed. It was a simple mistake in the SSE2 code, two operands flipped.

Why would anyone import something from vsfiltermod anyway? Its not meant for playback! Better revert everything and just integrate xy-vsfilter if you need optimizations.

Not much was added from VSFilterMod, only stuff that seemed harmless at the time, like this SSE2 optimization.

Liisachan
25th August 2012, 02:32
Should be fixed. It was a simple mistake in the SSE2 code, two operands flipped.
Thank you very much, nevcairiel, for trying to fix the problem, and thank you very much for working for MPC-HC in general too! Your efforts are really appreciated.

The obvious problem you mentioned has been surely fixed, but as it turned out, something (like the rotation origin, the nature of rotation...) is still wrong, suggesting the SSE2 optimizations in VSFilterMod are not well-tested, not compatible with the unoptimized code, and this problem is more subtle than I first thought.

The following images show the +70-degree x-rotation of "Čj" in the {\pos} (position) (0,0) with the {\an7} style (upper-left corner is the origin), that is the {\org} (origin) is (0,0) too. The original letters that are not rotated are shown in pale green. The results of the rotation are shown in red.

1) This is the good one, rendered by old, reliable 1.6.2, compatible with Gabest and with ffdshow, and almost compatible with VLC.
http://ffdshow.faireal.net/tmp/frx_samp2good.png

2) The next image shows what we have now, using 1.6.4.5887 (698e56d) taken from http://xhmikosr.1f0.de/mpc-hc/ (thanks to XhmikosR).
http://ffdshow.faireal.net/tmp/frx_samp2bad.png
As you can see, the general direction of the rotation is more or less better now, but this is far from being compatible.

See for yourself:
font_rotation_x2.mkv (http://ffdshow.faireal.net/tmp/font_rotation_x2.mkv) (~50 kiB): hardsubbed in blue, softsubbed in red.

Also note that, although I said that this was borked in 5569 by XhmikosR, the code was not written by XhmikosR. It was already there, already imported, and conditionally commented out. He/she (XhmikosR) simply enabled it. It's not his/her fault that this SSE2 code is broken.

cyberbeing
25th August 2012, 03:23
I remember these \frx \fry \frz bugs. It's why we disabled the Transform_SSE2 code in xy-VSFilter a long time ago.

Should be fixed. It was a simple mistake in the SSE2 code, two operands flipped.

As Liisachan mentioned, it's unfortunately still not fixed. The problem affects more than just \frx.

Here is a better sample which was initially created to track down this bug in xy-VSFilter last year:
http://www.mediafire.com/?j9ota09016rt2yb

The video is hardsubbed with a reference VSFilter 2.39 \frx \fry \frz rendering.
The external script subtitles with opposite color should match up identically through all the rotations.

Liisachan
25th August 2012, 03:58
The external script subtitles with opposite color should match up identically through all the rotations.
Confirmed here. \fry is wrong too. \frz seems okay (not buggy).

The bug officially came to MPC-HC in the v1.6.3 release like 10 days ago, which I first tried like 2 days ago, when I noticed the incompatibility. So this was a new problem for me. (Btw, xy-VSFilter seems really promising. Like, \fscx/fscy + float is what I've always wanted. I'll look into xy-VSFilter too when I have time.)

Liisachan
25th August 2012, 07:00
I looked into the inside of RTS.cpp, and this is my first impression. If you're watching __pointx in Transform_SSE2:

__pointx = _mm_add_ps(__xx, __yy); // xx = x * caz + y * saz; //#1
__xx = _mm_mul_ps(__pointx, __cay); // x * cay //#2
__pointx = _mm_add_ps(__xx, __zz); // xx = x * cay + z * say //#3
__xx = _mm_mul_ps(__pointx, __say); // x * say //#4

#1 Now __pointx is the vectorized version of "xx" from the C code.
#2 is wrong: you're using __pointx as "x" but it's "xx" since #1.
#3 makes __pointx "xx" again.
#4 is wrong: you're using __pointx as "x" but it's "xx" since #3.

Similarly, for __pointy:

__pointy = _mm_add_ps(__yy, __zz); // y = yy * cax + zz * sax //#5
__yy = _mm_mul_ps(__pointy, __sax); // yy * sax //#6

#5 __pointy is "y".
#6 is wrong. You're using __pointy as "yy" but it's "y" since #5.

nevcairiel
25th August 2012, 08:11
You're right, i really should've seen that when i documented the calls. I didn't actually change them except flipping the one operand there, just added the docs, but apparently didn't pay enough attention.
No matter, i gave it another try and refactored the whole function to use variable names matching the C ones very closely, no changes of meaning in the variables anymore. ;)

The test videos you and cyberbeing posted are working fine now.

JanWillem32
25th August 2012, 14:38
Well, you chose quite a monster of a function to work on there. (I'll try to explain it mostly to the public that knows at least basic programming, but hasn't seen this function yet.)
I disabled Transform_SSE2() when I was fixing the issues with scaling to the video area on the window area and aspect ratio correction with the frx, fry and frz functions a while ago. I marked Transform_SSE2() with: "TODO: The methods here are very wrong (the C function does work as it should), fix this with decent code, or delete this function." As resolving the list of issues of Transform_SSE2() plus fixing the scaling and aspect ratio bugs seemed to be too much work at the time, I chose to only edit Transform_C().
As the variables are prefixed with "_", I was already wondering who would write such code. That prefix is generally reserved for the global compiler-specific functions, constants and variables. Renaming would indeed be a good start.

A quick review of the function shows that:
-None of the typecasts between single- and double-precision floating points and 32-bit signed integers used in this function is properly handled with SSE.
-"static_cast<LONG>(x + 0.5)" is used to do rounding casts to integer in both the C and the SSE functions. SSE has native rounding casts to do this, which also handles negative values properly. (Vertices stored as integers is one of the most retarded design choices of the subtitle renderer. Using floating-point vertices would eliminate these type casts and provide decent sub-pixel precision.)
-No intrinsic to generate a native load data to register is used. "_mm_set_~" is used everywhere, where "_mm_load_~" should have been used.
-The basic cos() and sin() functions are not handled with SSE. (I'll ignore the horribly truncated PI in these lines for now.)
-4 lines of code feature access to member variables of the __m128 union. That's illegal if you take it strictly, but the compiler will probably bend over backwards and do a lot of register shuffles to output the correct values.
-"__m128 __pointz = _mm_set_ps1(0);"; this functionality is provided properly by _mm_setzero_ps().
-_mm_rcp_ps() (reciprocal approximation) is used. That's reasonably okay, but the output precision with only this instruction is low (12 bits). It could use a Newton-Raphson iteration to improve that (to about 22 bits, out of the full 24 bits). Else, a regular floating-point division to get the reciprocal would work fine.

The design choice of using single-precision instead of double-precision for this function is okay. (Transform_C() uses doubles.) The lower precision isn't significant. Handling this function with SSE2 vectorized doubles would have been just as easy, though.
I don't think that the author of the Transform_SSE2() function had any experience working with SSE intrinsics or ever wrote assembly before. The function is marked with "// speed up ~1.5-1.7x", but I doubt that to be true. Pretty much all the code for the subtitle renderer's SSE2 functions have issues, although most are less severe than this one.
Unfortunately, this function illustrates the state the subtitle renderer is in rather well. Refactoring the functions with these kinds of issues isn't easy, but any effort on getting proper, efficient routines in the subtitle renderer is very welcome indeed.

nevcairiel
25th August 2012, 15:13
I just fixed the math in it to match the C math, nothing else. :p

cyberbeing
25th August 2012, 15:27
On that note, xy-VSFilter rewrote the Transform_C code for better performance a couple weeks ago. Though from what I remember hearing, the transform code was never really a bottleneck for VSFilter in the first place.

Liisachan
25th August 2012, 16:20
The fix itself is awesome. Thank you very much, Nevcairiel. (I've not yet got a binary, though.)

However...

-_mm_rcp_ps() (reciprocal approximation) is used. That's reasonably okay, but the output precision with only this instruction is low (12 bits).
That's a very good point. And I'm not sure if it's okay. If x=1000, the possible error is roughly 1000/(2^12) = 0.25. But what if the true value is x=90.5 and we got x=90.4 because of this? Like this, a few points (maybe 1 out of 100) in the path will be off by 1 unit (1/8-pixel?) after rounding and slight distortion is possible, compared to the C version. Just divide, and the result is 10000 times more accurate:

__xx = _mm_mul_ps(__xx, __20000); // xx * 20000
__pointx = _mm_div_ps(__xx,__zz); // x = (xx * 20000) / (zz + 20000)
__yy = _mm_mul_ps(__yy, __20000); // yy * 20000
__pointy = _mm_div_ps(__yy, __zz); // y = (yy * 20000) / (zz + 20000);


Or use _mm_rcp_ps a la Newton.

//__zz = _mm_rcp_ps(__zz); // 1 / (zz + 20000)
__m128 z0 = _mm_rcp_ps(__zz);
__zz = _mm_sub_ps( _mm_add_ps(z0,z0), _mm_mul_ps(z0,_mm_mul_ps(z0,__zz)) );


-"static_cast<LONG>(x + 0.5)" is used to do rounding casts to integer in both the C and the SSE functions. SSE has native rounding casts to do this, which also handles negative values properly.
I don't think they are compatible for x=...-2.5, -1.5, 0.5, 1.5, 2.5, 3.5... (Cast vs. Round to nearest even). And I think x=1 means 1/8-pixel in VSFilter (it's already subpixel). Although it's a fact that VSFilter code is kind of insane in a good sense or a bad sense, it was not the original authors (Avery Lee/Gabest) who wrote this SSE2 function.

nevcairiel
25th August 2012, 16:41
the easiest solution would obviously be to use _mm_div_ps, but no idea how speed comparison is there.
Considering the C version also uses a real division, its probably not going to be slower then C at least.

Edit:
I pushed a patch to use _mm_div_ps and another small cleanup.

JanWillem32
25th August 2012, 17:53
I don't think they are compatible for x=...-2.5, -1.5, 0.5, 1.5, 2.5, 3.5... (Cast vs. Round to nearest even). And I think x=1 means 1/8-pixel in VSFilter (it's already subpixel). Although it's a fact that VSFilter code is kind of insane in a good sense or a bad sense, it was not the original authors (Avery Lee/Gabest) who wrote this SSE2 function.Subpixel rendering is very useful for anti-aliasing. (Something the subtitle renderer scores really badly at, and it isn't even configurable for the degree of anti-aliasing.) The best solution to render curvy shapes is to have their vertices stored as floating-point throughout the entire pipeline (like any normal image renderer). There are multiple casts back and forth to integer and floating point for various objects, this is just one of the functions that does that. Oh well, it could be a lot worse. The functions that take care of subtitle color rendering for instance...

I took a peek at the latency and throughput table (Intel® 64 and IA-32 Architectures Optimization Reference Manual, edition june 2011):
Given for a Sandy Bridge model (06_2AH) and an older Merom (06_0FH):
divps: 14/14, <21, <16
rcpps: 5/1, 3/1
mulps: 5/1, 4/1
addps: 3/1, 3/1
subps: 3/1, 3/1

I certainly can also look it up for AMD, but I think it won't matter much. Straight divisions are always expensive in both latency and throughput, no matter for integer or floating point.
The rcpps and a Newton-Raphson iteration method is mostly a lot faster if the pipeline can be reordered easily. If the µops are crammed together, the pipeline will stall for a little bit.
Of course, divps outputs with full 24 bits of precision, and the approximate routine with about 22. That's probably the main reason that there's no rcppd or rcpsd for doubles.

cyberbeing
26th August 2012, 02:57
On that note, xy-VSFilter rewrote the Transform_C code for better performance a couple weeks ago.

I was just emailed the following from Yu Zhuohuang (xy-VSFilter dev):
Nevcairiel may still want to look into our commit bac768e02081317ae17cf19e496ca3a3a1e5f7af (http://repo.or.cz/w/xy_vsfilter.git/commit/bac768e02081317ae17cf19e496ca3a3a1e5f7af), in which the Transform_C function was rewritten. This one is well documented, in comparison to other changes I've made. That commit reduces the number of multiplication to 1/3 of the original function. It is likely faster than a "1.7x - 2.x" speed up SSE code.

@Nevcairiel

He's basically suggesting that xy-VSFilter's Transform_C code be used as a base if any proper Transform_SSE2 function is ever going to be written.

If xy-VSFilter's rewritten Transform_C really is faster than the 'fixed' VSFilterMOD Transform_SSE2, that may be a good reason for MPC-HC to just scrap it and start over.

JanWillem32
26th August 2012, 07:55
I took a peek at that commit.
PI is still truncated to 3.1415. DSUtil (linked in) has M_PI with enough digits to fill a double.double scalex = style.fontScaleX/100;Right-hand side is implicitly an integer, the intent is a double. Luckily, only it's only esthetic in this case, but the same is done over and over again in the subtitle renderer's code, while it doesn't have to be like that at all.
(long)(x + org.x + 0.5);Is the org struct still made of integers? If so, two lines incur a useless cast to double and a cast back to long. Also, in many cases, org.x and .y are implicitly cast to double. Casting them to a temp double value before the loop would probably be better for those cases. Otherwise it looks like a good improvement overall, and a lot better to use than the current SSE2-ish function.

Liisachan
26th August 2012, 08:51
Tested 1.6.4.5895 (0235e5b), and the bug was finally fixed. Yay! Since I don't have a binary with the fix AND _mm_rcp_ps, I can't tell how _mm_rcp_ps is bad in a real-world sample.

The SSE2 version of CWord::Transform was originally committed on May 13, 2010:
https://code.google.com/p/vsfiltermod/source/detail?r=76
The log message says, "is this good and correct?" So the author was not sure themself if they were doing this right. But hey, everyone has the right to enjoy experimenting :D It's part of what free-software is all about. Let's stop blaming this function. It was unfortunate that this was just imported to MPC-HC without being tested properly.

Similarly, things should be tested properly before imported from xy-VSFilter, even though I'm willing to support xy-VSFilter too. I read somewhere that xy-VSFilter crashed just because you used a negative value between {\p1}...{\p0}, showing it's not very stable yet, though promising.

Subpixel rendering is very useful for anti-aliasing. (Something the subtitle renderer scores really badly at, and it isn't even configurable for the degree of anti-aliasing.)
If you're implying VSFilter is not handling subpixels or it's not doing anti-aliasing, that is incorrect. The following images show, left to right: 1) Not anti-aliased; 2) Anti-aliased, pixel-accuracy; 3) Half-pixel accuracy; 4) Quarter-pixel accuracy; 5) VSFilter (I think this is 1/8-pixel accuracy).
http://ffdshow.faireal.net/tmp/aou_antialias_demo.png

Compare the 4th and 5th images, and you'll see the quality gain by going from qpel to 8th-pel is marginal. Probably the algorithm of anti-aliasing itself could be improved, but you wouldn't gain much here by just using (float) or (double).
A subtitle renderer has to render things quickly, like 24 times a second. When Subtitler (the parent of VSFilter) was created about 10 years ago by Avery Lee (the same author of VirtualDub), 0.125-pixel accuracy stored as integer was probably an optimal choice - considering the CPUs used back then. And no one is going to say that Avery Lee didn't use float because he didn't know the best solution. That's too disrespectful! Today we have better hardware, and probably someone will create something even better eventually, like libass. But even if the font rendering quality of VSFilter is not perfect, maybe the "limited subpixelness" (8x8 subpixels per pixel) is not the reason. Rendered text looks solid to me, if not perfect. Correct me if I'm wrong.

There are multiple casts back and forth to integer and floating point for various objects.
I agree with you about this one. For one thing, I've been always unhappy about \fscx, where VSFilter does (double)wcstol, which doesn't make sense to me. If only it was wcstod... then you could use 99.5% or 100.5% font size easily. Technically, though, that would break the compatibility of a tag like {\fscx99.5}.

It seems better to me not to change 3.1415, even though it's weird. Changing it might break existing ASS scripts that depend on this weirdness. But then again, {\blur} broke the compatibility of {\b} too...

nevcairiel
26th August 2012, 08:54
All i did was to make the SSE2 function behave the same as the C function, i have no real interest in changing it any more.

If someone wants to still optimize the old and rather broken VSFilter, have fun. :p

MasterNobody
26th August 2012, 09:28
While you fixing subtitles renderer may be somebody can look at crash with this sample (http://www.mediafire.com/?r8aacdbna4b6beh):
http://i45.tinypic.com/20b25h1.png (http://i46.tinypic.com/28tkqiq.jpg)
To reproduce bug at least this conditions must be met:
1) Internal subtitles enabled and configured like this:
http://i45.tinypic.com/2iglzrm.png (http://i45.tinypic.com/2qv439g.png)http://i46.tinypic.com/2jg6jw5.png (http://i49.tinypic.com/29l1q28.png)
2) Desktop resolution is 1280x1024
3) Sample played in full screen from beginning to end

I checked with MPC-HC 1.6.4.5895 (0235e5b) x86 and it still happen. OS: Windows XP SP3.

P.S. Looks like final crash happen not inside subtitle renderer but caused by it (probably write outside of its memory).

JanWillem32
26th August 2012, 10:55
If you're implying VSFilter is not handling subpixels or it's not doing anti-aliasing, that is incorrect. The following images show, left to right: 1) Not anti-aliased; 2) Anti-aliased, pixel-accuracy; 3) Half-pixel accuracy; 4) Quarter-pixel accuracy; 5) VSFilter (I think this is 1/8-pixel accuracy).My exact words were "really badly at". The pixel rendering kernel in the subtitle renderer merely does an extreme amount of supersampling on already badly truncated vertices. It can't hold a candle in regard to the initial sub-pixel accuracy of vertices, the configurabilty (think of ClearType, anti-aliasing levels and such) and the performance-to-quality ratio, compared to any of the other renderers I've seen.
The images you posted feature basic upright letters and the picture has a large contrast. Those are easy to render, and hides the 6-bit-at-best color rendering quite well. (The colors degrade even more if heavy grading of pre-multiplied alpha comes into play, and after the weird R'G'B'->Y'CbCr limited range conversion is used.)
The subtitle renderers are really not easy to edit. (Not only the vector renderers are odd.The bitmap-type renderers also do weird things.) The bad performance of the vector subtitle renderers is mostly due to sloppy programming and poor design choices. These two reasons are also the main cause of the awful rendering quality, which bothers me the most.
In the case of rendering SSA/ASS subtitles, there's also the factor of the color tags for the awkward R'G'B' format the standard calls for. For some reason a notation that only takes 256 levels of R'G'B' color and alpha was chosen, instead of a regular floating-point notation. This means that only few colors can be rendered at all, which is just a pity.

I've been trying to edit a few of the worst things where I could, but it's very hard. The double dependency of both VSFilter and the DirectX 9 allocator unit on the same subtitle renderers makes it a menace as well. I mostly edited the subtitle queue handler, SSE function implementations and editing the DirectX 9 allocator unit to clear it from bugs (or more commonly adding 'features' of the subtitle renderer) for the texture unit and color correction. It gained in quality and performance and I'm happy that that work paid off. It's just by far not good enough, though.

@MasterNobody: I'll give it a try. Thank you for reporting, though normally this should go on the bug tracker.

cyberbeing
26th August 2012, 12:10
Similarly, things should be tested properly before imported from xy-VSFilter
I agree, especially since xy-VSFilter is based on VSFilter 2.39.

For this reason, the tentative plan was to merge anything MPC-HC needed from VSFilter 2.41 into xy-VSFilter rather than the other way around. I still haven't forgotten xhmikosr's request to get the xy-VSFilter dev on IRC to enter discussions with the MPC-HC team. Unfortunately this became delayed longer than expected. For a long time the project was on haitus, and now he's pre-occupied with completing xy-VSFilter's side of the new subtitle interface designed with madshi and nevcairiel as a replacement for the MPC-HC ISR.


My exact words were "really badly at". The pixel rendering kernel in the subtitle renderer merely does an extreme amount of supersampling on already badly truncated vertices. It can't hold a candle in regard to the initial sub-pixel accuracy of vertices, the configurabilty (think of ClearType, anti-aliasing levels and such) and the performance-to-quality ratio, compared to any of the other renderers I've seen.
I completely agree. Some fonts display quite horrible aliasing when rendered by VSFilter, which in many ways mimics the native rendering of its GDI32 backend. The good news is the xy-VSFilter dev has been tentatively planning as a long-term goal to completely rewrite the rendering code and the rest of VSFilter as fully floating-point along with implementation of high quality anti-aliased font rendering.


I read somewhere that xy-VSFilter crashed just because you used a negative value between {\p1}...{\p0}, showing it's not very stable yet, though promising.
Do you remember where you read that, or rather how long ago? I'm not able to reproduce any crashes caused by negative {\p1}...{\p0} values, and I never remember receiving any bug reports about such. I'll need an example script, if there really is such a bug in the current versions.

Liisachan
26th August 2012, 12:44
Do you remember where you read that, or rather how long ago? I'm not able to reproduce any crashes caused by negative {\p1}...{\p0} values, and I never remember receiving any bug reports about such. What I read was: "Fixed crash when \clip runs out of video frame"
http://code.google.com/p/xy-vsfilter/wiki/ReleaseNotes?tm=6
It was not {\p1}...{\p0}, but {\clip(...)}. Sorry!

@JanWillem32
@cyberbeing
I'm really happy and excited to know that there are people who are actually trying to improve VSFilter. And yes! I have to agree, in general, with what you guys are saying (though I don't really know the technical details).

Just in case there is some renewed interest: I posted these to MPC-HC bug tracker while ago:
*#2460 ASS Shadow alpha is wrong if subtitles are overlapped in a certain way (http://sourceforge.net/apps/trac/mpc-hc/ticket/2460)
*#2461 \r in ASS can break "Position subtitle relative to the video frame" (http://sourceforge.net/apps/trac/mpc-hc/ticket/2461)

Both are very old problems for me, but a few years ago, it was like, people were like "Reporting a bug of VSFilter? You're wasting your time. No one is working on it." I didn't know the latest buzz at all, and am happy to hear about xy-VSFilter.

sneaker_ger
26th August 2012, 12:53
I think #2461 does not apply to stand-alone (xy-)vsfilter anyway, since it only works on the input by the decoder. But that is not the only problem with MPC-HCs renderer and the positioning IIRC. For example positioned subtitles, boxes, etc. would also overlap into the black borders.

MasterNobody
26th August 2012, 13:08
@MasterNobody: I'll give it a try. Thank you for reporting, though normally this should go on the bug tracker.
To which one? You still use one at sf.net? Anyway thx.

P.S. btw. Link "Bugs can be reported here" from first post doesn't work.

JanWillem32
26th August 2012, 13:23
The support readme: https://github.com/mpc-hc/mpc-hc#readme
The support tracker is still the same as it was indeed. For your sample, it doesn't crash for me. It only rarely throws an exception that the crash reporter catches. The video keeps playing for me. It's a bit hard to debug, but I'll try some more.

@Liisachan:
For #2460; A layer property is probably stored wrong. I don't exactly know where to look for this code. I generally don't touch the code that handles these sorts of things.
For #2461; I re-wrote the DirectX 9 texture unit in the renderer fixes builds. It seems to work for the sample.

By the way, in the picture you posted, the sample for "no anti-aliasing" shows pixel blur (with a strong ClearType tinting of red on the left). If I render fonts without anti-aliasing, absolutely no color blending occurs. Also, the color is different than the other samples. Do you have any further source information about this picture?

Liisachan
26th August 2012, 13:36
@JanWillem32
The first picture is drawn as SSA by VirtualDub's old plugin, called Subtitler, with the Advanced Rasterizer disabled. The last picture is drawn normally (as text) by VSFilter. The other pictures are drawn by VSFilter too, but as a path, as {\p1}...{\p0}, {\p2}...{\p0}, and {\p3}...{\p0} respectively. I'm on Win XP, with USP10 1.0626.7600.20602. It's just showing VSFilter is anti-aliasing, and (my guess is) it's internally equivalent to {\p4}...{\p0}. I didn't mean anything else.

EDIT: Wait, captions like "no anti-aliasing" are drawn normally on an image editor. They are not part of demo, but simply captions.

cyberbeing
26th August 2012, 14:10
*#2460 ASS Shadow alpha is wrong if subtitles are overlapped in a certain way (http://sourceforge.net/apps/trac/mpc-hc/ticket/2460)

xy-VSFilter doesn't exhibit this issue.

By the looks of it, the bug was inadvertently fixed in xy-VSfilter's October 30th 2011 build, and has never resurfaced since.

Pulstar
1st September 2012, 02:26
I still can't figure out the 10bit option under Presentation. Using stats the output is still 8bit, even if it is forced, and no decoder can output 10bit through EVR(CP) at all. Is there a point to enabling it? 10bit sources are seldom seen, and madVR is overkill for my needs.

JanWillem32
1st September 2012, 13:23
The 10-bit output is a renderer feature, independent from video source. (The renderer can operate without video input as well, and output in 10-bit.)
Requirements for this feature:
-operating on Windows 7
-AMD Radeon/FireGL X1??? generation video card or newer, using a D-Sub analog (verified), HDMI (verified) or DP (no reports yet) connection, or one of the enabled Nvidia Quadro video cards since 2007 with a DP connection (no reports yet), I don't have information on Intel GPUs and 10-bit output capability yet
-D3D fullscreen exclusive mode enabled
-a display that will accept the 10-bit RGB signal (Note that the options for the Y'CbCr and 'limited range'/'studio range' RGB formats in the video card configuration panels force conversion of the pictures after the renderer, which degrade the image. Only full-range RGB formats are available for the renderer to output. Trying to output natively on a surface in a Y'CbCr format for display output has not been successful yet.)

gilic
1st September 2012, 13:38
-AMD Radeon/FireGL X1??? generation video card or newer, using a D-Sub analog (verified), HDMI (verified) or DP (no reports yet) connection

I can confirm that 10bit output over displayport works (for me) under statistics display says A2R10G10B10.

Pulstar
1st September 2012, 14:44
Ah yes, it works now, though the D3D option is a bit inconvenient. Cheers!

Edit - Actually it doesn't. Setting output to P010 in ffdshow just crashes the player, and using internal filter the output is NV12.

ajp_anton
1st September 2012, 22:00
What can I do to always automatically move a fullscreen video to the very top to give more space for subtitles in the bottom black bar (so they don't overlap with the movie so much)?

Mikey2
2nd September 2012, 02:28
Can anyone please help with this problem I Have been having for a long time?

Basically, my "mpc-hc.ini" file very often gets corrupt. Whenever I save anything from the "options" menu, MPC freezes for 10-30 seconds. It took me a while to see that in Windows explorer it is rebuilding "mpc-hc.ini". (I can see the file-size go up from 0 to the current size of 254 KB.) If I do anything, stop anything, open another instance of MPC, etc while it is re-building this file, it stops right there, leaving me with an uncomplete ini file.

I'm a software engineer, so I can get pretty technical, but it seems to me that in order to fix other possible defects that MPC is rebuilding the entire ini file needlessly (often nothing changes at all...You can reproduce the problem by selecting "Options" then simply pushing "OK.")

Thanks in advance for any help. (And let me know if I can do anything to help!) This initially was just an annoyance, but it is getting real bad now...

Oh currently I"m on version 1.6.4.5881 (2196459) - however, as I mentioned, I have had this issue for as far as I can remember. (Although I think it is getting worse as new options are added in subsequent versions.) I'm also on Windows 7 x64, but I also noticed this on my 32-bit Windows 8 laptop.

thanks again,
MikeY

Pulstar
2nd September 2012, 03:06
What can I do to always automatically move a fullscreen video to the very top to give more space for subtitles in the bottom black bar (so they don't overlap with the movie so much)?

Use the numpad keys to shift the picture in any direction you want. You can also untick the "Position subtitles relative to the video frame" option under Default Style.

Tiduz
2nd September 2012, 12:15
edit: problem solved.

ajp_anton
2nd September 2012, 13:24
Use the numpad keys to shift the picture in any direction you want. You can also untick the "Position subtitles relative to the video frame" option under Default Style.Well, that's not really automatic, and it will rarely align perfectly with the top, but I guess it's better than nothing (once I remap the keys to my laptop keyboard).

pulbitz
2nd September 2012, 14:24
It is deblocking problem.
Other decoders are the same condition.
Anyway I turn it off and caputre.

mpc-hc_dxva_decoder_does_not_deblocking.jpg:http://imageupload.org/thumb/thumb_224108.jpg (http://imageupload.org/en/file/224108/mpc-hc-dxva-decoder-does-not-deblocking.jpg.html)
other_decders_are_OK.jpg:http://imageupload.org/thumb/thumb_224109.jpg (http://imageupload.org/en/file/224109/other-decders-are-ok.jpg.html)


Edit:
ffdshow_libav_skip_deblocking_always.jpg:http://imageupload.org/thumb/thumb_224112.jpg (http://www.imageupload.org/en/file/224112/ffdshow-libav-skip-deblocking-always.jpg.html)
I have compared between MPC-HC H.264 DXVA decoder and 'skip deblocking always' in ffdshow libavcodec.
They are same quality.

bump.
Not yet fix. (MPC-HC H.264 DXVA decoder doesn't support deblocking for Intel HD Graphics)

sample.flv
http://www.sendspace.com/file/xdrg1y

JanWillem32
2nd September 2012, 14:59
Edit - Actually it doesn't. Setting output to P010 in ffdshow just crashes the player, and using internal filter the output is NV12.The EVR and VMR-9 mixers require support from the video card drivers to handle formats. The Y'CbCr formats supported by all reasonably modern video cards are: NV12 (8-bit 4:2:0), YUY2 (8-bit 4:2:2) and UYVY (8-bit 4:2:2). Nvidia also added YV12 and I420/IYUV (both 8-bit 4:2:0) support. It's not likely that newer drivers will support more formats anytime soon. Equipping the renderer with a custom mixer that supports additional formats is possible, but creating a custom mixer would require quite a bit of programming work.

GrofLuigi
2nd September 2012, 23:59
Can anyone please help with this problem I Have been having for a long time?

Basically, my "mpc-hc.ini" file very often gets corrupt. Whenever I save anything from the "options" menu, MPC freezes for 10-30 seconds. It took me a while to see that in Windows explorer it is rebuilding "mpc-hc.ini". (I can see the file-size go up from 0 to the current size of 254 KB.) If I do anything, stop anything, open another instance of MPC, etc while it is re-building this file, it stops right there, leaving me with an uncomplete ini file.

I'm a software engineer, so I can get pretty technical, but it seems to me that in order to fix other possible defects that MPC is rebuilding the entire ini file needlessly (often nothing changes at all...You can reproduce the problem by selecting "Options" then simply pushing "OK.")

Thanks in advance for any help. (And let me know if I can do anything to help!) This initially was just an annoyance, but it is getting real bad now...

Oh currently I"m on version 1.6.4.5881 (2196459) - however, as I mentioned, I have had this issue for as far as I can remember. (Although I think it is getting worse as new options are added in subsequent versions.) I'm also on Windows 7 x64, but I also noticed this on my 32-bit Windows 8 laptop.

thanks again,
MikeY

I have never seen anything like that (in the sense that MPC-HC is doing it), and I work on multiple computers/OS-s, often comparing the .ini-s and sorting the sections. If I change one option, only that option is written. There are some sections that MPC-HC likes to sort in its own way, and they aren't rewritten when I just visit the Options page(s).

I think in your case it might be caused by virus/antivirus or UAC File System Virtualization (http://windowsteamblog.com/windows/b/developers/archive/2009/08/04/user-account-control-data-redirection.aspx).

GL

Liisachan
3rd September 2012, 04:57
Whenever I save anything from the "options" menu, MPC freezes for 10-30 seconds. It took me a while to see that in Windows explorer it is rebuilding "mpc-hc.ini". (I can see the file-size go up from 0 to the current size of 254 KB.) This is just a guess, but it may have something to do with this line in mplayerc.cpp.

bool CMPlayerCApp::ChangeSettingsLocation(bool useIni)
{
...
// In case an ini file is present, we remove it so that it will be recreated
_tremove(GetIniPath());
AFAIK, the original intention of the above is, if the current .ini file is in ANSI, it will be deleted once and recreated as a Unicode (UTF-16LE) file so that a "Unicode" path can be stored in .ini (eg file names in Spanish and in Chinese at the same time).

cremor
4th September 2012, 09:49
Is the automatic loading of subtitles broken in 1.6.3? I remember that it used to work fine but I can't get it working now. I'm playing an avi file and the subtitles are in a "Subs" subfolder in idx/sub format.

Automatic loading of subtitles is enabled and the subtitle search path is using the default value.

Mikey2
4th September 2012, 18:08
Thanks for the responses re: my problem is simply that MPC-HC is rebuilding the ini file each time anything changes..


Re: anti-virus, I tried MSE, NOD32, and none at all. It doesn't seem like it is making anything "dirty" on that end since it is rebuilding the file.

That line of code looks exactly like what I think is happening! But why is it being called ever-time? Could there be something wrong with my ASCII/Unicode defaults? I know that on my system I have had several problems with this, from Notepad++ working differently depending on the type to My SQL Server stored procs for my other development activities always needed to be changed to ANSI.

I'm not home now but I'll play with procmon when I get home.

EDIT: Taking the simplest recreation steps, I did the following:
1) Open MPC-HC.
2) Close MPC-HC.

For this scenario, ProcMon is showing approximately 102,061 event lines that touch the mpc-hc.ini file! (18,268 Opens, 18,268 Closes, 11,741 Reads, 2,472 Writes, 132 Get ACL, 51,180 Other )

EDIT2 (back home now on the problem computer): I notice in Notepad++ that MPC-HC creates the file encoded in "UCS-2 Little Endian." When I try to re-save the file in ANSII or UTF-8, I MPC-HC rebuilds it back to UCS-2 Little Endian. (BTW the "rebuild" takes about 5 seconds, during which time MPC-HC is unresponsive.)

Edit3: Actually can you point me out to that part of the source code? I'd like to see what is calling that function. Inferring from the name of the method, it looks like it may also be called when MPC thinks it's storing the ini file to a different location. Again I'll have to check when I get home, but perhaps my shortcut is pointing to a virtualized path (e.g. libraries) and it is getting confused thinking it is in a different place each time.

Thanks much in advance.
MikeY.

Mikey2
4th September 2012, 18:25
Is the automatic loading of subtitles broken in 1.6.3? .

Subtitles still work for me. I usually put it in the same directory, rename the file to the same as the mkv/avi and select "prefer external subtitles..." Also, if you're putting them into a subfder, make sure to include the subs\ relative path in that list. Finally, make sure "auto-load subtitles" is still selected on the playback screen. (I know this is obvious, but sometimes people forget that one.) (I'm sorry, I'm on my phone now so I don't remember the exact names for all this...)

Liisachan
4th September 2012, 23:48
Edit3: Actually can you point me out to that part of the source code? I'd like to see what is calling that function. Inferring from the name of the method, it looks like it may also be called when MPC thinks it's storing the ini file to a different location. Again I'll have to check when I get home, but perhaps my shortcut is pointing to a virtualized path (e.g. libraries) and it is getting confused thinking it is in a different place each time.

mplayerc.cpp (https://github.com/mpc-hc/mpc-hc/blob/bcd7563a666aa2b803d1f0d479c50f015a4af63a/src/mpc-hc/mplayerc.cpp) Line 418 CMPlayerCApp::ChangeSettingsLocation

This function is called in Line 1018 if IsIniValid() && !IsIniUTF16LE(). [There might be another place calling it, but I'm not sure.]

- IsIniValid() is FileExists(GetIniPath()). This may fail even when .ini does exists, if GetIniPath() fails, or if it returns an incorrect path for some reason. GetIniPath is:

CString path = GetProgramPath(true);
path = path.Left(path.ReverseFind('.') + 1) + _T("ini");
return path;

This suggests that .ini must share the path with the program .exe. If, for example, a file-link (shortcut) is used for .ini, things may go wrong. Like you said, a virtualized path may be a problem. Also, GetProgramPath itself might fail, if for example the exe is remote.

- IsIniUTF16LE() returns false not only when it succeeds and the file is actually not UTF-16 LE, but also when CFile f fails, and when f.Read() fails. Also, if this is cross-platform, the below code has obviously an endianness problem. Though, I think CFile always reads a WORD as LE, since this is on Windows. A byte order mark (BOM) is 0xFEFF, which is 0xFF 0xFE if encoding is UTF16-LE. [Edit: I was wrong. The below is just fine, as f.Read is byte-by-byte reading.]

WORD bom;
if (f.Read(&bom, sizeof(bom)) == sizeof(bom)) {
isUTF16LE = (bom == 0xFEFF);
}

Mikey2
5th September 2012, 01:21
Wow thanks a lot Liisaschan! As I mentioned, I am a software engineer, so I think I will try getting down and dirty in the code. Just to make sure I'm in the right place, is current development being done on this svn repository: http://sourceforge.net/projects/mpc-hc/ and/or this onehttps://github.com/mpc-hc/mpc-hc ?

What version of VC++ are you using to compile? (I currently have Visual Studio 2008 installed, but my MSDN license should still be valid if I need to upgrade.) Is there any specific "gotcha's" involved in getting my environment setup to debug MPC-HC?

This sounds like it could be fun! :)

Oh and as far as changes, I won't checkin anything; I just want to step-into the code and see where it is going wrong... (It is weird, I am staring at Notepad++ which clearly stating the file is encoded UCS-2 Little Endian...)

MikeY

Liisachan
5th September 2012, 02:34
@Mikey2
I'm just a hobbyist (a user), not an MPC-HC dev nor a professional programmer. I've never even tried to compile MPC-HC myself. MPC-HC things used to be on sourceforge, but now it's on github.com, starting from 1.6.3. You should check files in /docs, and http://sourceforge.net/apps/trac/mpc-hc/wiki/How_to_compile_the_MPC - it says vs2010 (maybe the free Express version will do).

In ChangeSettingsLocation, UpdateData(true) is always called anyway even when StoreSettingsToIni() fails. This means that if CreateFile(...GENERIC_WRITE...) fails but WriteProfile* doesn't fail, then an ANSI (non-Unicode) ini file is recreated every time you start MPC-HC, because it sees the ini is not in Unicode, and so it tries to recreate it, but the ini doesn't have an BOM if CreateFile fails, when WriteProfile* writes ANSI strings. Perhaps that's not your problem, though, since you say your ini is already in UTF-16. To make sure, you can rename a random sample media file like "中文 & espańol.avi" and try to bookmark it, while "Store settings to .ini" is enabled. Restart MPC-HC and select it from the bookmarks; it works if .ini is in Unicode, and doesn't work if .ini is in ANSI.

EDIT:

Another thing you can try easily is an old version like
4235 (http://sourceforge.net/projects/mpc-hc/files/MPC%20HomeCinema%20-%20Win32/MPC-HC%20v1.6.1.4235_32%20bits/)
If builds before 4274 don't have your problem, then the 4274 changes (http://mpc-hc.svn.sourceforge.net/viewvc/mpc-hc?view=revision&revision=4274) may have caused it.

vBm
5th September 2012, 09:33
Just to make sure I'm in the right place, is current development being done on this svn repository: http://sourceforge.net/projects/mpc-hc/ and/or this onehttps://github.com/mpc-hc/mpc-hc ?

What version of VC++ are you using to compile? (I currently have Visual Studio 2008 installed, but my MSDN license should still be valid if I need to upgrade.) Is there any specific "gotcha's" involved in getting my environment setup to debug MPC-HC?

we're switched to github for development repository.
VS2010 is needed to compile mpc-hc.

cremor
5th September 2012, 10:50
Subtitles still work for me. I usually put it in the same directory, rename the file to the same as the mkv/avi and select "prefer external subtitles..." Also, if you're putting them into a subfder, make sure to include the subs\ relative path in that list. Finally, make sure "auto-load subtitles" is still selected on the playback screen. (I know this is obvious, but sometimes people forget that one.) (I'm sorry, I'm on my phone now so I don't remember the exact names for all this...)

I just found out that it works fine when the subtitles have the exact same name as the movie file. But my subtitles are named "<movie file name>.en.<extension>" and "<movie file name>.de.<extension>". Shouldn't this work too? How are you supposed to automatically load more than one subtitle otherwise?

Thunderbolt8
6th September 2012, 23:28
is mpc-hc actually able to open/read BD menus like a normal playback software (e.g. powerdvd) or a standalone player?

JanWillem32
7th September 2012, 00:55
@TheCatcher: Today I had the spare time to do some programming, so I integrated the changes you wanted in the renderer. I modified the parameters a bit, so it can be used a bit more universally for other pixel shaders as well. I posted the builds and pixel shaders in the renderer fixes thread on this board.

mr.duck
9th September 2012, 12:43
The log has stopped updating? http://mpc-hc.svn.sourceforge.net/viewvc/mpc-hc/?view=log

Is there an updated URL?

JEEB
9th September 2012, 12:47
The log has stopped updating? http://mpc-hc.svn.sourceforge.net/viewvc/mpc-hc/?view=log

Is there an updated URL?
Yes, MPC-HC switched from svn to git: repository log (https://github.com/mpc-hc/mpc-hc/commits/master)

mr.duck
9th September 2012, 13:10
Yes, MPC-HC switched from svn to git: repository log (https://github.com/mpc-hc/mpc-hc/commits/master)

I see. Thanks.

Is there any way too see the the build number (such as r5940) from this new list?

JEEB
9th September 2012, 13:51
Is there any way too see the the build number (such as r5940) from this new list?
No. Git (like many other newer revision control systems, such as mercurial) basically have abolished the concept of a single-lined, unmodifiable revision histories, and thus every commit just has a hash of its own (usually the seven first symbols of it are long enough to be specific to one, so a shortened version is shown on github f.ex.), and the history is a line that tangles these commits together. So no, there is no automatical revision number in git (hg actually makes it harder for the user to rebase etc. + tries to "look the same" so it just counts the amount of commits and creates a revision number for the user from there when you check its command line log IIRC).

That said, the MPC-HC's master branch is supposed to be without rebasing, so the revision numbers you get when you build are gotten by counting from the last svn commit and adding the amount of commits after it to it (you can't otherwise match up the numbers because svn puts all branches in a single history line, while git only has the history of a certain branch in a branch).

e-t172
9th September 2012, 19:42
No. Git (like many other newer revision control systems, such as mercurial) basically have abolished the concept of a single-lined, unmodifiable revision histories, and thus every commit just has a hash of its own (usually the seven first symbols of it are long enough to be specific to one, so a shortened version is shown on github f.ex.), and the history is a line that tangles these commits together. So no, there is no automatical revision number in git (hg actually makes it harder for the user to rebase etc. + tries to "look the same" so it just counts the amount of commits and creates a revision number for the user from there when you check its command line log IIRC).

That said, the MPC-HC's master branch is supposed to be without rebasing, so the revision numbers you get when you build are gotten by counting from the last svn commit and adding the amount of commits after it to it (you can't otherwise match up the numbers because svn puts all branches in a single history line, while git only has the history of a certain branch in a branch).

"git describe" to the rescue!

The command finds the most recent tag that is reachable from a commit. If the tag points to the commit, then only the tag is shown. Otherwise, it suffixes the tag name with the number of additional commits on top of the tagged object and the abbreviated object name of the most recent commit.

So you just need to tag the tree you're building from with the build number, and you're all set.

Tiduz
9th September 2012, 19:56
ok, is it just me or is normalize broken for a while? my audio randomly gets softer and then when i disable and reenable it i get louder sound again, am i the only one with this problem?

patch1
10th September 2012, 08:03
Is there any way too see the the build number (such as r5940) from this new list?

I agree it is a useful function (http://forum.doom9.org/showthread.php?p=1585559#post1585559) even if it is now difficult to generate.
I now use the date to relate commit history (https://github.com/mpc-hc/mpc-hc/commits/master) to available builds (http://xhmikosr.1f0.de/mpc-hc/)

Not exact, I suspect due to time zone differences and multiple commits in a day but at least it limits the number of hash codes I need to check.

Reino
10th September 2012, 11:36
@ patch1:
XhmikosR can probably put the hash in the filename of the nightlies.Since it's unclear what rev. build corresponds with what commit, this suggestion made by Underground78 would help a lot, but as of yet XhmikosR hasn't answered to it.

Liisachan
10th September 2012, 12:18
Another VSFilter problem if anyone is interested:
VSFilter: Shadow is not drawn when Border is very thin (#2588) (https://sourceforge.net/apps/trac/mpc-hc/ticket/2588)

When the border width is very small but not zero, MPC-HC "forgets" to draw the shadow, both in hardsubbing and softsubbing. Left to right, border=0.25 / 0.125 / 0.0625 / 0.062499 / 0 (@ 100%; if zoomed, the threshold will change):
http://ffdshow.faireal.net/tmp/missing_shadow_demo.png
This results in several realistic problems, such as unintended shadow blinking when the border width is slowly animated from non-zero to 0, or from 0 to non-zero (Sample clip (https://sourceforge.net/apps/trac/mpc-hc/raw-attachment/ticket/2588/missing_shadow_test.mkv)).

User-side workaround: For example, instead of \bord1\t(0,2000,\bord0), try \bord1\t(0,1750,\bord0.125)\t(1750,2000,\3a&Hff). Instead of \bord0\t(0,2000,\bord1), try \bord0.125\3a&Hff\t(0,250,\3a&H00)\t(250,2000,\bord1).

v0lt
11th September 2012, 19:08
What do you think about moving the mixer from MpaDecFilter to AudioSwitcher? And about removing the "custom channel mapping"?

Mercury_22
11th September 2012, 20:22
What do you think about moving the mixer from MpaDecFilter to AudioSwitcher? And about removing the "custom channel mapping"?

Do not remove the "custom channel mapping"!!!!!!!!!!!!!!!!!
And yes "moving the mixer from MpaDecFilter to AudioSwitcher" seems a good idea

EDIT : Also it will be nice if you could add independent volume levels for each channel like in FFD

betaking
11th September 2012, 20:25
Do not remove the "custom channel mapping"!!!!!!!!!!!!!!!!!
And yes "moving the mixer from MpaDecFilter to AudioSwitcher" seems a good idea

+1!I also agree with you!

jq963152
11th September 2012, 22:19
Hello,

with MPC-HC x64 1.6.3.5818, hardware acceleration apparently is not used on videos with resolutions beyond 1920x1080?

Why is that?

And is there any way to use hardware acceleration on videos with resolutions beyond 1920x1080?

Thanks in advance.

v0lt
12th September 2012, 03:25
with MPC-HC x64 1.6.3.5818, hardware acceleration apparently is not used on videos with resolutions beyond 1920x1080?
Call type of your video card.

JanWillem32
12th September 2012, 03:56
@jq963152: It's at the bottom of the page: https://github.com/mpc-hc/mpc-hc/blob/master/src/filters/transform/MPCVideoDec/FfmpegContext.cpp . There are restrictions to the size. If you see any case that needs to be corrected, please give us some documentation. We can then patch these items.

jq963152
12th September 2012, 13:44
Thanks for your replies.

Call type of your video card.

NVIDIA GeForce GT 520 (GF119)

@jq963152: It's at the bottom of the page: https://github.com/mpc-hc/mpc-hc/blob/master/src/filters/transform/MPCVideoDec/FfmpegContext.cpp . There are restrictions to the size. If you see any case that needs to be corrected, please give us some documentation. We can then patch these items.

Well, not sure, not a programmer, but the text from your link apparently states the following (among other things):



https://github.com/mpc-hc/mpc-hc/blob/master/src/filters/transform/MPCVideoDec/FfmpegContext.cpp#L165 (https://github.com/mpc-hc/mpc-hc/blob/master/src/filters/transform/MPCVideoDec/FfmpegContext.cpp#L165)
nVidia cards support level 5.1 since drivers v6.14.11.7800 for XP and drivers v7.15.11.7800 for Vista/7

https://github.com/mpc-hc/mpc-hc/blob/master/src/filters/transform/MPCVideoDec/FfmpegContext.cpp#L188
HD4xxx, HD5xxx, and HD6xxx AMD/ATI cards support level 5.1 since drivers v8.14.1.6105 (Catalyst 10.4)

And at least according to Wikipedia:

http://en.wikipedia.org/wiki/H.264/MPEG-4_AVC#Levels

AVC HP@L5.1 apparently would allow for much higher resolutions than 1920x1080, wouldn't it?

Also, in the LAV Filters thread apparently the following was posted:

Only Ivy Bridge does 4K decoding, if you're running it on your 2500k from your signature, no 4K for you.

NVIDIA (via CUVID) only supports it with VP5 (VDPAU Feature Set D). AMD claims to support it with the 7xxx series, but in my tests, it just failed miserably.
Try it with LAV CUDA or LAV CB, as in these modes IIRC, there are no blocks on any resolutions. (res > 1080p HD)
LAV Native DXVA might block some res. higher then 1920x1088 IIRC

And apparently when playing back 3840x2160 video here for example with a GT 520, hardware acceleration apparently is only shown as "active" in the LAV Video Configuration panel when it is set to LAV CUVID or LAV DXVA2 (copy-back).

But when setting it to LAV DXVA2 (native) or when using internal MPC-HC Video Decoder it apparently is falling back to software decoding.

Why are resolutions beyond 1920x1080 blocked with LAV DXVA2 (native) and internal MPC-HC Video Decoder (which is DXVA2 native as well, isn't it?)?

nevcairiel
12th September 2012, 14:01
Its blocked with DXVA2 Native in LAV because auto-detection of 4k support is not working properly, and if it enabled it but doesnt support it, you get a black screen, which is no good. :p
Either i'll have to fix the auto-detection (might be tricky) or simply add a checkbox so people can turn on 4k DXVA if they think their Hardware can do it.

In any case, I've been rather busy with a lot of different things over the last few weeks, and not much got done.

jq963152
12th September 2012, 14:06
Its blocked with DXVA2 Native in LAV because auto-detection of 4k support is not working properly, and if it enabled it but doesnt support it, you get a black screen, which is no good. :p

But with VP5 you would not get a black screen, or would you ;)?

Either i'll have to fix the auto-detection (might be tricky) or simply add a checkbox so people can turn on 4k DXVA if they think their Hardware can do it.

That would probably be appreciated :D;).

jq963152
13th September 2012, 13:36
There are restrictions to the size. If you see any case that needs to be corrected, please give us some documentation. We can then patch these items.

No reply from you :p?

JanWillem32
13th September 2012, 16:57
I recently patched some of the DXVA code, so I know what variables are stored and how these are used. You can take a look at the registry part that is read for this function by using regedit.exe . The keys for the various video adapters are listed in "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Video" . The correct adapter is selected by using the monitor handle. The device and driver identifier keys can be seen under the "0000" key.
Here comes the problem: only very few keys in there are standardized, the rest is driver-specific.
The three identifiers that are stored are the vendor ID, the hardware ID and the driver revision. The device and hardware ID is in plain text. For example, my video adapter is; "pci\ven_1002&dev_9460" . http://www.pcidatabase.com/search.php?device_search_str=9460&device_search=Search
These three numbers are used to determine the capabilities of the device and driver, as you can see in the link I posted to the source code. These values are acquired by reading spec sheets and by trial and error testing. There are no ways to directly query these detailed things from the standard driver-linked interfaces in software.
So what we need is data on what manufacturer ID, what device ID or which series of IDs and which driver revisions have which specific capabilities.

jq963152
13th September 2012, 17:13
Could you possibly do something similar to what "nevcairiel" suggested for LAV Filters:

or simply add a checkbox so people can turn on 4k DXVA if they think their Hardware can do it.

?

At least as long as auto-detection is not working properly?

Suggestion:

In MPC-HC x64 1.6.3.5818, if you go to:

Filters ---> MPC-HC Video Decoder ---> DXVA Settings ---> DXVA (H.264) Compatibility check
apparently you can choose between:

Full check, Skip level check, Skip ref frame check, Skip all checks

So how about adding something like "Skip width and height check" or "Skip resolution check" or "Skip framesize check" or something like that ;)?

v0lt
13th September 2012, 19:20
jq963152
NVIDIA GeForce GT 520 (GF119)
Nvidia cards can not decode 4k in DXVA mode. Tested on GTX 680.

Nvidia cards are limited:
width <= 2032 && height <= 2032 && width*height <= 8190*16*16

Nvidia officially declares support for the width and height of 2048 pixels and 8192 macroblock for H264, but this is not true.

So how about adding something like "Skip width and height check" or "Skip resolution check" or "Skip framesize check" or something like that ?
Why? Will you look at the a black square?
There were cases in the fall of BSOD.

Keiyakusha
13th September 2012, 19:33
Nvidia officially declares support for the width and height of 2048 pixels and 8192 macroblock for H264, but this is not true.

Does it work in cuvid mode? Do they really say it should work with DXVA, or they say that this is theoretical limit of the engine? Cause this is different things... Maybe its dxva-specific limitation, which you can expect from such old technology. Also noone cares much about dxva these days

v0lt
13th September 2012, 20:43
Does it work in cuvid mode?
MPCVideoDec does not support cuvid mode.

Keiyakusha
13th September 2012, 20:50
MPCVideoDec does not support cuvid mode.

I know. But you better check it too before saying that nvidia's hardware doesn't supports what it claims. Does they realy say it should work with DXVA, or they say the hardware is capable of decoding 2048 pixels and 8192 macroblock? You didn't answered.

v0lt
13th September 2012, 21:09
I know. But you better check it too before saying that nvidia's hardware doesn't supports what it claims
Nvidia says about DXVA. I and a few people checked DXVA. For our decoder such check is sufficient.

...
I specifically checked in CUVID (LAV Video Decoder 0.51.3). It does not support for the width and height of 2048 pixels and 8192 macroblocks. Nvidia is lying.

Keiyakusha
13th September 2012, 21:22
I specifically checked in CUVID (LAV Video Decoder 0.51.3). It does not support for the width and height of 2048 pixels and 8192 macroblocks. Nvidia is lying.
At this moment LAV won't allow you to do it even if it will work. <-- edit: judging from the post below this maybe not very true
But if they say DXVA should work, that's too bad =(
On other forums people claim nvidia really decodes what it says, but not in DXVA

jq963152
13th September 2012, 22:16
Nvidia cards can not decode 4k in DXVA mode.

But what about what Wikipedia says for example:



http://en.wikipedia.org/wiki/Nvidia_PureVideo#The_Fifth_Generation_PureVideo_HD
(http://en.wikipedia.org/wiki/Nvidia_PureVideo#The_Fifth_Generation_PureVideo_HD)

[...]

The Fifth Generation PureVideo HD

The fifth generation of PureVideo HD, introduced with the Geforce GT 520 and also included in the Nvidia GeForce 600(Kepler) series GPUs has significantly improved performance when decoding H.264, VC-1 and MPEG-2 codecs [8]. It is also capable of decoding 4K resolution videos at 3840 x 2160 pixels, (doubling the 1080p high-definition television standard in both the vertical and horizontal dimensions), also known as Quad Full High Definition (QFHD). Also MVC (Multiview Video Coding) H.264 decoding support for Blu-ray 3D and other Full HD 3D at 1080p.[9]

[...]



http://en.wikipedia.org/wiki/Nvidia_PureVideo#Feature_Set_D

[...]

Feature Set D

Introduced 4K resolution / QFHD video decoding at up to 3840 x 2160 pixels

[...]

?

:confused:

Tested on GTX 680.

How did you test that if it is currently blocked in MPC-HC?

Nvidia cards are limited:
width <= 2032 && height <= 2032 && width*height <= 8190*16*16

Nvidia officially declares support for the width and height of 2048 pixels and 8192 macroblock for H264, but this is not true.

Is this:

http://us.download.nvidia.com/XFree86/Linux-x86_64/304.43/README/vdpausupport.html#vdpau-implementation-limits-decoder

your source for what you just posted?

Does it work in cuvid mode?

From the LAV Filters thread:

Try it with LAV CUDA or LAV CB, as in these modes IIRC, there are no blocks on any resolutions. (res > 1080p HD)
LAV Native DXVA might block some res. higher then 1920x1088 IIRC

Just tried using LAV CUVID and LAV DXVA2 (copy-back) on the 2560x1440p video and apparently it does work (both apparently are shown as being "active" in the LV Video Configuration panel) :).

Only Ivy Bridge does 4K decoding, if you're running it on your 2500k from your signature, no 4K for you.

NVIDIA (via CUVID) only supports it with VP5 (VDPAU Feature Set D). AMD claims to support it with the 7xxx series, but in my tests, it just failed miserably.

Also tried 3840x2160p testclip with LAV CUVID and LAV DXVA2 (copy-back). Apparently both are shown as being "active" in the LAV Video Configuration panel when playing back. But it appears to be very laggy with LAV DXVA2 (copy-back). With LAV CUVID it appears to be much better, although, unfortunately, not necessarily perfect either.

;)

I specifically checked in CUVID (LAV Video Decoder 0.51.3). It does not support for the width and height of 2048 pixels and 8192 macroblocks. Nvidia is lying.

See above.

Using GT 520 (GF119) here with LAV Filters 0.51.3, both, LAV CUVID and LAV DXVA2 (copy-back) apparently are shown as being "active" in the LAV Video Configuration panel when playing back 3840x2160p testclip and even when playing back 4096x2304 testclip. But, as mentioned in the quote above, it appears to be very laggy with LAV DXVA2 (copy-back). With LAV CUVID it appears to be much better, although, unfortunately, not necessarily perfect either.

So why do you write it would not work?

Or has it something to do with 8192 macroblocks?

nevcairiel
13th September 2012, 22:39
I specifically checked in CUVID (LAV Video Decoder 0.51.3). It does not support for the width and height of 2048 pixels and 8192 macroblocks. Nvidia is lying.

4K decoding works with CUVID on my 680. :p
I'll look into DXVA soon, there were some driver bugs that caused it to fail in earlier versions, but maybe those are fixed now.

But, as mentioned in the quote above, it appears to be very laggy with LAV DXVA2 (copy-back). With LAV CUVID it appears to be much better, although, unfortunately, not necessarily perfect either.

Thats because the 520 does not have enough memory bandwidth for "copy back" modes like CUVID or DXVA2-CB, its to be expected, the card is too weak.
Although the decoder chip isn't really all that fast on 4K content either, it can do 24p just fine, but above 30fps it'll start to lag.

jq963152
13th September 2012, 22:59
I specifically checked in CUVID (LAV Video Decoder 0.51.3). It does not support for the width and height of 2048 pixels and 8192 macroblocks. Nvidia is lying.
4K decoding works with CUVID on my 680. :p
I'll look into DXVA soon, there were some driver bugs that caused it to fail in earlier versions, but maybe those are fixed now.

But, as mentioned in the quote above, it appears to be very laggy with LAV DXVA2 (copy-back). With LAV CUVID it appears to be much better, although, unfortunately, not necessarily perfect either.
Thats because the 520 does not have enough memory bandwidth for "copy back" modes like CUVID or DXVA2-CB, its to be expected, the card is too weak.
Although the decoder chip isn't really all that fast on 4K content either, it can do 24p just fine, but above 30fps it'll start to lag.

And that's why it would probably be appreciated if there would be a way to be able to test if it would work with DXVA2 (native). And to be able to test if there would be less lag with DXVA2 (native) than with CUVID and DXVA2 (copy-back) ;).

And that's why it was requested if it would be possible to add a "4K checkbox" (or whatever you wanna call it) to LAV Video Configuration panel and a "Skip framesize check" (or whatever you wanna call it) setting to MPC-HC DXVA Settings ;).

At least as long as auto-detection is not working properly ;).

jq963152
13th September 2012, 23:35
PS:

Although the decoder chip isn't really all that fast on 4K content either, it can do 24p just fine, but above 30fps it'll start to lag.

Well, at least according to the following Wikipedia page:

http://en.wikipedia.org/wiki/H.264/MPEG-4_AVC#Levels

AVC Level 5.1 appears to be limited at 30 fps with "4K", doesn't it?

60 fps with "4K" would be AVC Level 5.2, wouldn't it?

So, wouldn't what you wrote above maybe "just" mean that it probably can do Level 5.1 but not Level 5.2?

v0lt
14th September 2012, 03:49
@jq963152
But what about what Wikipedia says for example:
What does it change?

How did you test that if it is currently blocked in MPC-HC?
I used a special test builds.
http://www.mediafire.com/?n6ajswiwd3q7h (use at your own risk)

AVC HP@L5.1 apparently would allow for much higher resolutions than 1920x1080, wouldn't it?
What is the question? Show specification Nvidia, which states full support for AVC HP@L5.1.
We're talking about the real possibilities of video cards.

Is this:

http://us.download.nvidia.com/XFree8...limits-decoder

your source for what you just posted?
Yes. This is the official source. I saw it.

VDPAU Feature Sets C and D
VDP_DECODER_PROFILE_H264_MAIN, VDP_DECODER_PROFILE_H264_HIGH:

Complete acceleration.

Minimum width or height: 3 macroblocks (48 pixels).

Maximum width or height: 128 macroblocks (2048 pixels).

Maximum macroblocks: 8192
I see no support for 4K.
But this information is also incorrect. In reality, there must be so:

VDPAU Feature Sets C and D
Maximum width or height: 128 macroblocks (2032 pixels).

Maximum macroblocks: 8190

If you need a blank screen, then you can use the Microsoft DTV-DVD Video Decoder.

jq963152
14th September 2012, 09:34
I used a special test builds.
Are you a developer of MPC-HC? Is there any "official" link where this would be available?

I see no support for 4K.
But this information is also incorrect. In reality, there must be so:

VDPAU Feature Sets C and D
Maximum width or height: 128 macroblocks (2032 pixels).

Maximum macroblocks: 8190

Then what about the following article for example:



http://www.anandtech.com/show/4380/discrete-htpc-gpus-shootout/11

[...]

The GT 520's scores above are more interesting. Even the high end GPUs such as the 460 and 560 are unable to achieve that frame rate. The answer was buried in the README for the latest Linux drivers. The GT 520 is the first (and only GPU as of now) to support the VDPAU Feature Set D.

We asked NVIDIA about the changes in the new VDPAU feature set and what it meant for Windows users. They indicated that the new VPU was a faster version, also capable of decoding 4K x 2K videos. This means that the existing dual stream acceleration for 1080p videos has now been bumped up to quad stream acceleration.

[...]

?

:p:D;)

If you need a blank screen, then you can use the Microsoft DTV-DVD Video Decoder.

Just tried "Microsoft DTV-DVD Video Decoder" with MPC-HC x64 1.6.3.5818 here with GT 520 (GF119) and 3840x2160p and 4096x2304p testclip and apparently the screen remains blank (black) indeed, apparently just audio is being played back and GPU-Z/NVIDIA Inspector for example apparently do not show any VPU Load at all.

But would that automatically "translate" to MPC-HC Video Decoder and LAV DXVA2 (native) :confused:?

And, again, see for example:

Using GT 520 (GF119) here with LAV Filters 0.51.3, both, LAV CUVID and LAV DXVA2 (copy-back) apparently are shown as being "active" in the LAV Video Configuration panel when playing back 3840x2160p testclip and even when playing back 4096x2304 testclip. But, as mentioned in the quote above, it appears to be very laggy with LAV DXVA2 (copy-back). With LAV CUVID it appears to be much better, although, unfortunately, not necessarily perfect either.

And even "nevcairiel" wrote the following:

4K decoding works with CUVID on my 680. :p
I'll look into DXVA soon, there were some driver bugs that caused it to fail in earlier versions, but maybe those are fixed now.

Thats because the 520 does not have enough memory bandwidth for "copy back" modes like CUVID or DXVA2-CB, its to be expected, the card is too weak.
Although the decoder chip isn't really all that fast on 4K content either, it can do 24p just fine, but above 30fps it'll start to lag.

;)

So what about MPC-HC Video Decoder and LAV DXVA2 (native) :p:D;)?

DragonQ
14th September 2012, 12:29
How can I tell if MPC-HC is doing IVTC correctly? I'm using LAV Filters and EVR. The source is mostly 24p but with a few 60i bits, so most of it needs to be ITVCed. When I step frame-by-frame it looks like it's just playing it back at 60p and not IVTCing correctly, but I think it looks OK when played back at full speed. However, the frame rate indicator (CTRL+J) always says 59.xxx FPS, never 23.976 FPS, so maybe it's not doing IVTC properly?

nevcairiel
14th September 2012, 12:32
EVR* does not perform full removal of hard-telecine. It will detect the cadence, and ensure the frames are properly stitched together, but it will not remove duplicate frames, which results in 60p output - artifact free, but not decimated to 24p.

* Technically thats not EVRs doing, but the GPU drivers

madshi
14th September 2012, 12:42
How can I tell if MPC-HC is doing IVTC correctly? I'm using LAV Filters and EVR. The source is mostly 24p but with a few 60i bits, so most of it needs to be ITVCed. When I step frame-by-frame it looks like it's just playing it back at 60p and not IVTCing correctly, but I think it looks OK when played back at full speed.
You'll get the typical 3:2 motion judder this way. You can play such videos at proper 24p by either using the DScaler IVTC Mod MPEG2 Decoder (works only for MPEG2, obviously), or by using some funny AviSynth scripts, or by using madVR's built in IVTC algorithm.

DragonQ
14th September 2012, 13:00
I see. So if I wanted to play these files using MediaPortal (which only supports EVR), I'd have to set the MPEG2 decoder to DScaler IVTC Mod MPEG2 Decoder?

madshi
14th September 2012, 13:01
Yep...

DragonQ
14th September 2012, 13:10
OK. I can't seem to get good playback in MPC-HC with MadVR though. The only way I can get the stats to say "ivtc" is by ticking "disable automatic source type detection" and choosing "force film mode". However, I then get juddery video and combing artefacts. :confused:

madshi
14th September 2012, 13:54
OK. I can't seem to get good playback in MPC-HC with MadVR though. The only way I can get the stats to say "ivtc" is by ticking "disable automatic source type detection" and choosing "force film mode". However, I then get juddery video and combing artefacts. :confused:
Do you get juddery video and combing artifacts with movie content or with video content? Of course forcing film mode won't work for anything other than native film content.

DragonQ
14th September 2012, 15:13
I'm pretty sure it's 24p material that has been telecined to 60i. If I force IVTC in MadVR and step through the frames, no frames are repeated (as expected) but there's still combing artefacts on some of them. Here's a sample. (http://www.aotplaza.com/Files/HTPC/Weird%20IVTC%20Sample.ts)

madshi
14th September 2012, 16:18
From a quick check the sample doesn't seem to be 24p -> 60i content. It's something else. IVTC is not possible with this sample. Consequently DScaler2 IVTC Mod shows the same combing as madVR's IVTC algorithm.

DragonQ
14th September 2012, 16:42
From a quick check the sample doesn't seem to be 24p -> 60i content. It's something else. IVTC is not possible with this sample. Consequently DScaler2 IVTC Mod shows the same combing as madVR's IVTC algorithm.
Any ideas what it could be then?

madshi
14th September 2012, 16:45
Would have to look at every field separately to say for sure. Probably it was originally movie content, but then it got half converted to video mode, with different fields being blended into each other. This is sometimes done to bring 25p content to 24p or vice versa.

DragonQ
14th September 2012, 16:54
Ah that could be it...the show is a mixture of US and Japanese footage, so it should be 24p all the way through. However, I know this particular episode was sourced from an "international master", so it could be a weird NTSC -> PAL -> NTSC conversion, which I imagine would be a major pain to get proper playback with.

I'll check some other episodes tonight that weren't from international masters and see if I get the same result.

DragonQ
14th September 2012, 22:09
Hmm, other episodes are the same. I guess the best way to play it back is deinterlaced to 60p but that still produces combing and it's a bit weird that IVTC doesn't work when 60p produces a frame repeating pattern of 3-2-3-2-3-2...

What program allows one to look at each field separately?

madshi
15th September 2012, 07:32
Hmm, other episodes are the same. I guess the best way to play it back is deinterlaced to 60p but that still produces combing and it's a bit weird that IVTC doesn't work when 60p produces a frame repeating pattern of 3-2-3-2-3-2...
My AMD card's DXVA seems to try to IVTC this sample, too, with combing results. I think AMD DXVA is mistaken, trying to IVTC this. In theory it's supposed to automatically detect whether IVTC or video mode deinterlacing should be performed. This detection seems to fail with this sample. However, if you enable "agressive deinterlacing" + "force deinterlacing" + "enable YADIF deinterlacing" in LAV, the combing is gone.

What program allows one to look at each field separately?
AviSynth. Or a special madVR debug build (not polished enough to be published).

ikarad
16th September 2012, 19:17
With some blu-ray movies, some subtitles are not displayed with mpc-hc 1.6.4.5957 (this problem exist since MPC-HC 1160)
(this problem exists from the start of HD subtitle support).

When two subtitles must be displayed in the same time, only one subtitle is
displayed.

file

http://www.mediafire.com/download.php?2fwqy0doid91uj1
http://www.mediafire.com/download.php?tsr8zol53hvdt9s
http://www.mediafire.com/download.php?9se81h31ciggp4b

bugtraq
https://sourceforge.net/apps/trac/mpc-hc/ticket/48#comment:28

Xaurus
17th September 2012, 02:03
There is not.
Not to mention that a decoder alone wouldn't be enough, you also need a renderer that can render 3D signals, which also doesn't exist yet.
So if no decoder exists what is this?

http://corecodec.com/products/coremvc

Or is this something else? I have a 3D TV which I would like to use with my htpc... :)

As you say.. won't work without a compatible renderer but that Stereoscopic player must have a renderer of sorts?

the_weirdo
17th September 2012, 12:46
So if no decoder exists what is this?

http://corecodec.com/products/coremvc

Or is this something else?
Is it released?

As you say.. won't work without a compatible renderer but that Stereoscopic player must have a renderer of sorts?
Stereoscopic player has its own renderer. Can it work as a standalone renderer?

nevcairiel
17th September 2012, 13:10
Is it released?

Not to the general public. Only through OEM channels you can apparently get it. I've asked CoreCodec about a release timeframe, but they have been quiet about CoreMVC.
Having a decoder thats not available to you equals not having a decoder at all. Until someone releases a MVC decoder that i can take and install, i'll consider such a thing non-existant.


Stereoscopic player has its own renderer. Can it work as a standalone renderer?

Doubtful that you can just plug a 3D renderer like that into any other player.

I have a 3D TV which I would like to use with my htpc... :)

3D on LCD or Plasma TVs just sucks, i know, i have tried it on mine. ;) You need good projector setup for it to be worthwhile, IMHO. But of course opinions differ on that.
Anyway, if you really want it, you can use Stereoscopic Player, or even stuff like PowerDVD or TMT5.

3D support in "free" and opensource players will maybe improve over time, but right now it just doesn't work completely.

the_weirdo
17th September 2012, 13:30
Not to the general public. Only through OEM channels you can apparently get it. I've asked CoreCodec about a release timeframe, but they have been quiet about CoreMVC.
Having a decoder thats not available to you equals not having a decoder at all. Until someone releases a MVC decoder that i can take and install, i'll consider such a thing non-existant.


Doubtful that you can just plug a 3D renderer like that into any other player.
Actually, what you said is what I want to reply to him. Because of my poor English writing skill, I couldn't express my thought well :o I also must try very hard to write long sentences! :(

Xaurus
17th September 2012, 21:05
3D on LCD or Plasma TVs just sucks, i know, i have tried it on mine. ;) You need good projector setup for it to be worthwhile, IMHO. But of course opinions differ on that.
Anyway, if you really want it, you can use Stereoscopic Player, or even stuff like PowerDVD or TMT5.

3D support in "free" and opensource players will maybe improve over time, but right now it just doesn't work completely.
I tried the Stereoscopic Player and it worked, I will test a 3D BR later to see if my htpc can handle it (no GPU for 3D, apparently).

And it seems it uses CoreMVC, so there we go. OEM it is. :)

ceb
18th September 2012, 19:30
I used to read updates to MPC-HC here (http://sourceforge.net/apps/trac/mpc-hc/timeline) but it doesn't seem to show them anymore as the latest change is v5597 while the nightly builds (http://xhmikosr.1f0.de/mpc-hc/) are at v5969.
Am I missing something or is there another place where I can find the changes?
Thanks. :)

vBm
18th September 2012, 19:43
I used to read updates to MPC-HC here (http://sourceforge.net/apps/trac/mpc-hc/timeline) but it doesn't seem to show them anymore as the latest change is v5597 while the nightly builds (http://xhmikosr.1f0.de/mpc-hc/) are at v5969.
Am I missing something or is there another place where I can find the changes?
Thanks. :)

We've moved to GitHub ... so now you can read updates HERE (https://github.com/mpc-hc/mpc-hc/commits/master/)

ceb
18th September 2012, 19:58
We've moved to GitHub ... so now you can read updates HERE (https://github.com/mpc-hc/mpc-hc/commits/master/)
Oh I see, thank you. :)

dansrfe
19th September 2012, 21:55
Problem/Feature request (not sure which it is):

I like the icon lib which is at version 1.4.0.0. usually when I update mpc-hc.exe I just extract the executable and add my own toolbar.bmp and keep the icon lib from version 1.4.0.0 and mpc-hc recognizes it just fine and it works. But since the last maybe 10-15 builds (basically when 1.6.4 started) mpc-hc.exe refuses to acknowledge that mpciconlib.dll is in the same directory as it and it says that mpciconlib.dll is missing. Would it be possible for someone to patch mpc-hc so that it accepts older versions of mpciconlib.dll files? Thanks!

The only workaround I have as of yet is to use an older build of mpc-hc <= 1.6.3, associate the icons, and then replace mpc-hc with the latest build.

nuhkka
21st September 2012, 02:15
anybody know how to fix hd 2000 dxva problem?

the videos look blocky on h.264 videos and it also gets breaking lines when skipping scenes

vivan
21st September 2012, 15:00
nuhkka,
Don't use DXVA, use LAV Video Decoder and choose Intel QuickSync decoder.

betaking
23rd September 2012, 07:53
S.Chinese update
http://www.mediafire.com/?n55kp6vupus4rx3

Cloudstrifeff7
23rd September 2012, 07:58
Hello guys! :D

Is it normal that file extensions doesn't work in Windows 8? I can manually choice mpc-hc for .avi, .mp4, .mkv etc. But I don't know if the problem is windows 8.

MPC-HC version is 1.6.4.5986

Thanks in advance! :D

Aleksoid1978
24th September 2012, 00:16
Latest revision broken PGS subtitle render in this sample - "Blind Fury" sample (http://aleksoid.tosei.ru/Test/Sample/Blind_Fury.m2ts)

Also - very bad render on resize;

Aleksoid1978
24th September 2012, 00:39
Hello guys! :D

Is it normal that file extensions doesn't work in Windows 8? I can manually choice mpc-hc for .avi, .mp4, .mkv etc. But I don't know if the problem is windows 8.

MPC-HC version is 1.6.4.5986

Thanks in advance! :D

Windows 8 do not support Api from previous Win Vista/7 for register file association. But - you can try MPC-BE :)

oddball
24th September 2012, 03:33
Nevermind. Figured it out.

madshi
24th September 2012, 09:32
Hi devs,

in the latest madVR build I've modified the madVR shutdown behaviour to fix some shutdown crashes that have been reported. Basically in older builds I've allowed the madVR instance to be destroyed without waiting for the Direct3D interface to be fully released. The new madVR v0.83.1 now waits until D3D is fully released before leaving the madVR destructor. As a result some users are now getting freezes when closing MPC-HC or when reloading/changing video files. I've got the following freeze report (thanks, cyberbeing):

http://www.mediafire.com/?iu9lpazavisx8od

Looking at the callstacks I've found that the MPC-HC main thread seems to be stuck in CMainFrame::CloseMedia(), waiting for the graph thread to close:

CAMEvent e;
m_pGraphThread->PostThreadMessage(CGraphThread::TM_CLOSE, 0, (LPARAM)&e);
e.Wait(); // either opening or closing has to be blocked to prevent reentering them, closing is the better choice
The problem is that the madVR destructor is stuck, too, because Direct3D->Release() is stuck. And Direct3D->Release() is most probably stuck because it does a SendMessage() to the MPC-HC main window. And the MPC-HC main window doesn't react to the SendMessage() call because the main thread is doing "e.Wait()" without handling messages. You may wonder why Direct3D tries to contact the MPC-HC main window? The reason for that is that in exclusive mode, madVR uses the MPC-HC main window as the Direct3D device window. I have to do that because for fullscreen exclusive mode the Direct3D device window must be a top level window and the madVR rendering window isn't top level.

I believe that the MPC-HC main thread should handle messages at all times. Not handling messages while closing down the graph thread is an open invitation to get freezes, IMHO. Is there any chance to have the MPC-HC behaviour modified? I think there should be better ways to stop reentering than blocking message handling. E.g. just set a flag "AmClosing" or something like that.

Thanks!!

Cloudstrifeff7
24th September 2012, 15:58
Windows 8 do not support Api from previous Win Vista/7 for register file association. But - you can try MPC-BE :)

Thank you very much for your answer! :D

But MPC-BE is good? I didn't know this software. xD

ikarad
24th September 2012, 15:59
I find a problem with sub.


problem:
At the beginning of this video (beginnning credits), subs flash. With directvobsub, subs are displayed without flash
https://sourceforge.net/apps/trac/mpc-hc/ticket/2617

Aleksoid1978
25th September 2012, 02:48
Thank you very much for your answer! :D

But MPC-BE is good? I didn't know this software. xD


Try http://forum.doom9.org/showthread.php?t=165890

Aleksoid1978
25th September 2012, 05:39
I find a problem with sub.


problem:
At the beginning of this video (beginnning credits), subs flash. With directvobsub, subs are displayed without flash
https://sourceforge.net/apps/trac/mpc-hc/ticket/2617

Sub is flashed only in full screen, in window - all ok.

SamuriHL
25th September 2012, 19:45
I'm having some compile issues. If anyone knows what kind of moron I'm being I'd appreciate being knocked over the head with it. I'm pulling from GIT.


..\thirdparty\mfc\afxglobals.cpp(50): error C2039: 'm_hinstD2DDLL' : is not a m
ember of 'AFX_GLOBAL_DATA' [c:\dev\projects\mpc-hc\src\mpc-hc\mpc-hc.vcxproj]
C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\atlmfc\include
\afxglobals.h(111) : see declaration of 'AFX_GLOBAL_DATA'
..\thirdparty\mfc\afxglobals.cpp(51): error C2039: 'm_hinstDWriteDLL' : is not
a member of 'AFX_GLOBAL_DATA' [c:\dev\projects\mpc-hc\src\mpc-hc\mpc-hc.vcxproj
]
C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\atlmfc\include
\afxglobals.h(111) : see declaration of 'AFX_GLOBAL_DATA'
..\thirdparty\mfc\afxglobals.cpp(53): error C2143: syntax error : missing ';' b
efore '*' [c:\dev\projects\mpc-hc\src\mpc-hc\mpc-hc.vcxproj]
..\thirdparty\mfc\afxglobals.cpp(53): error C4430: missing type specifier - int
assumed. Note: C++ does not support default-int [c:\dev\projects\mpc-hc\src\mp
c-hc\mpc-hc.vcxproj]
..\thirdparty\mfc\afxglobals.cpp(53): error C2039: 'm_pDirect2dFactory' : is no
t a member of 'AFX_GLOBAL_DATA' [c:\dev\projects\mpc-hc\src\mpc-hc\mpc-hc.vcxpr
oj]
C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\atlmfc\include
\afxglobals.h(111) : see declaration of 'AFX_GLOBAL_DATA'
..\thirdparty\mfc\afxglobals.cpp(53): error C4430: missing type specifier - int
assumed. Note: C++ does not support default-int [c:\dev\projects\mpc-hc\src\mp
c-hc\mpc-hc.vcxproj]
..\thirdparty\mfc\afxglobals.cpp(54): error C2143: syntax error : missing ';' b
efore '*' [c:\dev\projects\mpc-hc\src\mpc-hc\mpc-hc.vcxproj]
..\thirdparty\mfc\afxglobals.cpp(54): error C4430: missing type specifier - int
assumed. Note: C++ does not support default-int [c:\dev\projects\mpc-hc\src\mp
c-hc\mpc-hc.vcxproj]
..\thirdparty\mfc\afxglobals.cpp(54): error C2039: 'm_pWriteFactory' : is not a
member of 'AFX_GLOBAL_DATA' [c:\dev\projects\mpc-hc\src\mpc-hc\mpc-hc.vcxproj]
C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\atlmfc\include
\afxglobals.h(111) : see declaration of 'AFX_GLOBAL_DATA'
..\thirdparty\mfc\afxglobals.cpp(54): error C4430: missing type specifier - int
assumed. Note: C++ does not support default-int [c:\dev\projects\mpc-hc\src\mp
c-hc\mpc-hc.vcxproj]
..\thirdparty\mfc\afxglobals.cpp(55): error C2143: syntax error : missing ';' b
efore '*' [c:\dev\projects\mpc-hc\src\mpc-hc\mpc-hc.vcxproj]
..\thirdparty\mfc\afxglobals.cpp(55): error C4430: missing type specifier - int
assumed. Note: C++ does not support default-int [c:\dev\projects\mpc-hc\src\mp
c-hc\mpc-hc.vcxproj]
..\thirdparty\mfc\afxglobals.cpp(55): error C2039: 'm_pWicFactory' : is not a m
ember of 'AFX_GLOBAL_DATA' [c:\dev\projects\mpc-hc\src\mpc-hc\mpc-hc.vcxproj]
C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\atlmfc\include
\afxglobals.h(111) : see declaration of 'AFX_GLOBAL_DATA'
..\thirdparty\mfc\afxglobals.cpp(55): error C4430: missing type specifier - int
assumed. Note: C++ does not support default-int [c:\dev\projects\mpc-hc\src\mp
c-hc\mpc-hc.vcxproj]
..\thirdparty\mfc\afxglobals.cpp(57): error C2039: 'm_pfD2D1MakeRotateMatrix' :
is not a member of 'AFX_GLOBAL_DATA' [c:\dev\projects\mpc-hc\src\mpc-hc\mpc-hc
.vcxproj]
C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\atlmfc\include
\afxglobals.h(111) : see declaration of 'AFX_GLOBAL_DATA'
..\thirdparty\mfc\afxglobals.cpp(57): error C2146: syntax error : missing ';' b
efore identifier 'm_pfD2D1MakeRotateMatrix' [c:\dev\projects\mpc-hc\src\mpc-hc\
mpc-hc.vcxproj]
..\thirdparty\mfc\afxglobals.cpp(57): error C4430: missing type specifier - int
assumed. Note: C++ does not support default-int [c:\dev\projects\mpc-hc\src\mp
c-hc\mpc-hc.vcxproj]
..\thirdparty\mfc\afxglobals.cpp(57): error C4430: missing type specifier - int
assumed. Note: C++ does not support default-int [c:\dev\projects\mpc-hc\src\mp
c-hc\mpc-hc.vcxproj]
..\thirdparty\mfc\afxglobals.cpp(59): error C2039: 'm_bD2DInitialized' : is not
a member of 'AFX_GLOBAL_DATA' [c:\dev\projects\mpc-hc\src\mpc-hc\mpc-hc.vcxpro
j]
C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\atlmfc\include
\afxglobals.h(111) : see declaration of 'AFX_GLOBAL_DATA'
..\thirdparty\mfc\afxglobals.cpp(921): error C3861: 'ReleaseD2DRefs': identifie
r not found [c:\dev\projects\mpc-hc\src\mpc-hc\mpc-hc.vcxproj]
..\thirdparty\mfc\afxglobals.cpp(1469): error C2039: 'InitD2D' : is not a membe
r of 'AFX_GLOBAL_DATA' [c:\dev\projects\mpc-hc\src\mpc-hc\mpc-hc.vcxproj]
C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\atlmfc\include
\afxglobals.h(111) : see declaration of 'AFX_GLOBAL_DATA'
..\thirdparty\mfc\afxglobals.cpp(1469): error C2065: 'D2D1_FACTORY_TYPE' : unde
clared identifier [c:\dev\projects\mpc-hc\src\mpc-hc\mpc-hc.vcxproj]
..\thirdparty\mfc\afxglobals.cpp(1469): error C2146: syntax error : missing ')'
before identifier 'd2dFactoryType' [c:\dev\projects\mpc-hc\src\mpc-hc\mpc-hc.v
cxproj]
..\thirdparty\mfc\afxglobals.cpp(1469): error C2059: syntax error : ')' [c:\dev
\projects\mpc-hc\src\mpc-hc\mpc-hc.vcxproj]
..\thirdparty\mfc\afxglobals.cpp(1470): error C2143: syntax error : missing ';'
before '{' [c:\dev\projects\mpc-hc\src\mpc-hc\mpc-hc.vcxproj]
..\thirdparty\mfc\afxglobals.cpp(1470): error C2447: '{' : missing function hea
der (old-style formal list?) [c:\dev\projects\mpc-hc\src\mpc-hc\mpc-hc.vcxproj]
..\thirdparty\mfc\afxglobals.cpp(1527): error C2039: 'ReleaseD2DRefs' : is not
a member of 'AFX_GLOBAL_DATA' [c:\dev\projects\mpc-hc\src\mpc-hc\mpc-hc.vcxproj
]
C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\atlmfc\include
\afxglobals.h(111) : see declaration of 'AFX_GLOBAL_DATA'
..\thirdparty\mfc\afxglobals.cpp(1536): error C2227: left of '->Release' must p
oint to class/struct/union/generic type [c:\dev\projects\mpc-hc\src\mpc-hc\mpc-
hc.vcxproj]
type is 'int *'
..\thirdparty\mfc\afxglobals.cpp(1542): error C2227: left of '->Release' must p
oint to class/struct/union/generic type [c:\dev\projects\mpc-hc\src\mpc-hc\mpc-
hc.vcxproj]
type is 'int *'
..\thirdparty\mfc\afxglobals.cpp(1548): error C2227: left of '->Release' must p
oint to class/struct/union/generic type [c:\dev\projects\mpc-hc\src\mpc-hc\mpc-
hc.vcxproj]

ikarad
25th September 2012, 19:47
Sub is flashed only in full screen, in window - all ok.

In window, sub is flashed also on my computer.

vBm
26th September 2012, 02:25
I'm having some compile issues. If anyone knows what kind of moron I'm being I'd appreciate being knocked over the head with it. I'm pulling from GIT.

Are you following https://sourceforge.net/apps/trac/mpc-hc/wiki/How_to_compile_the_MPC ?

SamuriHL
26th September 2012, 02:27
Are you following https://sourceforge.net/apps/trac/mpc-hc/wiki/How_to_compile_the_MPC ?

Woa, they changed it. Ok, thanks so much! I'm sure I can get it working now.

vBm
26th September 2012, 02:30
NP. Wiki page always contain the newest info. Always refer to it in future.

SamuriHL
26th September 2012, 02:33
Yea, call it a memory lapse. I have it bookmarked and didn't really think of it tbh. I've been sick for the past few days so my brain is fried. Thanks again.

Aleksoid1978
27th September 2012, 01:13
About PGS subtitle - in this file at the begin PGS draw with incorrect color, like there is no Palette set for this segment
http://aleksoid.tosei.ru/Test/Sample/PGS/PGS_StartBroken.m2ts

JEEB
28th September 2012, 13:28
About PGS subtitle - in this file at the begin PGS draw with incorrect color, like there is no Palette set for this segment
http://aleksoid.tosei.ru/Test/Sample/PGS/PGS_StartBroken.m2ts
If that is the sample that Underground was working on yesterday, it really doesn't have a palette set there (because of how the sample was cut). The specification seems to say that in such cases a fully transparent palette should be used, so I think that's how it was decided to be fixed (it will of course lead to this kind of subpictures not showing, but I think following the specification is better than showing possibly broken subpictures with some cached/default palette) :)

ikarad
28th September 2012, 21:13
I find a problem with sub.


problem:
At the beginning of this video (beginnning credits), subs flash. With directvobsub, subs are displayed without flash
https://sourceforge.net/apps/trac/mpc-hc/ticket/2617

It works with xy-vsfilter but I must switch and it's not a native solution.

Are there any plans to merge xyvsfilter with mpc-hc?


CLSID asked some months ago the same thing
Are there any plans to merge changes from xy-vsfilter project? The performance gains are significant.

vivan
29th September 2012, 00:02
ikarad,
Custom interface for rendering subtitles on an RGBA texture(s) (http://code.google.com/p/xy-vsfilter/issues/detail?id=40).

Aleksoid1978
29th September 2012, 05:36
If that is the sample that Underground was working on yesterday, it really doesn't have a palette set there (because of how the sample was cut). The specification seems to say that in such cases a fully transparent palette should be used, so I think that's how it was decided to be fixed (it will of course lead to this kind of subpictures not showing, but I think following the specification is better than showing possibly broken subpictures with some cached/default palette) :)

ffdshow & mpc-be show normal. if no pallete - i think must do:
or do not show this segment, or use default palette;

P.S. What about his file - http://aleksoid.tosei.ru/Test/Sample/Blind_Fury.m2ts. After latest change broken subtitle render. in this sample.

ikarad
29th September 2012, 08:22
ikarad,
Custom interface for rendering subtitles on an RGBA texture(s) (http://code.google.com/p/xy-vsfilter/issues/detail?id=40).

Thanks but I don't understand why you have posted this link because the problem arrive with or without madvr.

Keiyakusha
29th September 2012, 08:29
ikarad
this link means xy-vsfilter won't be merged. xy is already better than any external renderer and once thing by that link is finished it will be better than any internal one. Integrating it will means completely removing what its there now and then updating each time. But that's pointless as you can just download new version and don't need to maintain the code. By being external library it will be able to do anything that internal renderer capable of. It doesn't restricted to madvr, any software will be able to use it. Of course support for that needs to be added.

ikarad
29th September 2012, 08:34
ikarad
this link means xy-vsfilter won't be merged. xy it is already better than any external renderer and once thing by that link is finished it will be better than any internal one. Integrating it will means completely removing what its there now and then updating each time. But that's pointless as you can just download new version and don't need to maintain the code. By being external library it will be able to do anything that internal renderer capable of.

The problem is that xy vsfilter doesn't work well with pgs subs (there is the problem with multiple sub displayed in the same time that aleksoid have corrected some days ago) and I must swith between internal sub renderer and xy vsfilter. It's not very user friendly.


If xy vsfilter is the better, why mpc-hc don't intergrate xy vsfllter because I don't understand the interest to keep internal sub renderer if it's less good. A merger could permit to have the better of the two worlds.

An interest of mpc-hc is to have all in internal renderer.

Keiyakusha
29th September 2012, 08:39
The problem is that xy vsfilter doesn't work well with pgs subs (there is the problem with multiple sub displayed in the same time that aleksoid have corrected some days ago) and I must swith between internal sub renderer and xy vsfilter. It's not very user friendly.

I wasn't aware of pgs problems, then maybe bugreport should be filled. Edit: yet this is not a big problem that will make someone to completely integrate something.
As for integrating I explained already. It is pointless to integrate as xy-vsfilter will have complete replacement for built-in renderer's functionality. Replacement will means deleting all current vsfilter internal and external stuff in mpc-hc and adding all things from xy

ikarad
29th September 2012, 08:46
If xy vsfilter is better than interal sub renderer of mp-hc like you said, why keep a sub renderer that is less good?

mpc-hc team update ffmpeg each time ti's necessary. It would be the same thing for xy vsfilter.

Keiyakusha
29th September 2012, 09:11
If xy vsfilter is better than interal sub renderer of mp-hc like you said, why keep a sub renderer that is less good?
xy is not finished yet. read stuff more carefully. I never said it is better than internal, I said it will be.

mpc-hc team update ffmpeg each time ti's necessary. It would be the same thing for xy vsfilter.
you don't seem to understand what you asking for. complete replacing means that among other things you'll have pgs bug from xy ported too. Internal mpc renderer will be no more! Also i believe mpc-hc doesn't uses the whole ffmpeg, just needed parts of it.
If you want some specific part of the xy merged, that's different story. Good luck finding someone who will dig into its code and extract that part.

ikarad
29th September 2012, 09:58
xy is not finished yet. read stuff more carefully. I never said it is better than internal, I said it will be.


you don't seem to understand what you asking for. complete replacing means that among other things you'll have pgs bug from xy ported too. Internal mpc renderer will be no more! Also i believe mpc-hc doesn't uses the whole ffmpeg, just needed parts of it.
If you want some specific part of the xy merged, that's different story. Good luck finding someone who will dig into its code and extract that part.
I speak about merge instead of replace.

i think it would be possible because it seems that xy vsfilter is based upon vsfilter which is the same in mpc-hc.

It's just one question that I ask. CLsid have asked the same question like I mentionned above.

If clsid have asked the question, I think, there is one reason.

Keiyakusha
29th September 2012, 10:15
well, you whatever merge only needed parts, or throw away the whole thing and replace it. If second, it doesn't need to be merged cause it works as separate library just good. when xy will be finished I'd like to see that. Just as much as I'd like to see internal filters completely removed without trace of them left and external LAV used in package. And if first, you should be more specific about what exactly from xy you want to merge. Merging the whole xy will be the same as replacing. Unless, as you say someone will want to keep "renderer that is less good"

JEEB
29th September 2012, 11:59
ffdshow & mpc-be show normal. if no pallete - i think must do:
or do not show this segment, or use default palette;
Yup, the fix is in Underground's tree and should get merged soon'ish into master, I think he was also wanting to work on forced subpictures too, which could be related why it's not yet in the main master. Anyways, as I said, the fix was to use the specified-by-spec default palette (all transparent it seems).

I have no idea about the other sample to be honest, as I just voiced my opinion that the specification should be honored instead of just giving it some random cached/default palette with regards to the no-palette sample when Underground was fixing that :)

73ChargerFan
29th September 2012, 15:07
... I'd like to see internal filters completely removed without trace of them left and external LAV used in package.
I like mpc-hc as an all-in-one player, and only having one file to download.

I'm not looking forward to having to check bi-weekly for LAV, xy vsfilter, madVR, and who knows what else.

The only thing left will be window frame and toolbar, which are not the best things about this player.

Keiyakusha
29th September 2012, 15:51
I like mpc-hc as an all-in-one player, and only having one file to download.

I didn't meant you'll have to download several files. That was poor explanation. Everything can be included in one package. Current internal filters are crap. Sub renderer, excluding some features that don't have replacement yet - crap too.
Edit: window and toolbar, location of menus and options, translations, is the only good things about this player, you didn't know? evr renderer too if not comparing it to madvr. there is places where madvr can lose, like x64 support, custom shaders...

73ChargerFan
29th September 2012, 16:45
UI is personal, and I'm not into retro. I delete the huge icons package because mpc-hc plays all my videos, and I don't care what the format is.

Internal filters work great, imho - I don't need haali, ac3filter, ffdshow to fill in the gaps anymore. VC1 support could be improved upon I guess. And I watch anime, never a problem with subs myself. Just lucky I guess.

I really only encounter a glitch once every other month, at which time I update then use VLC if it still doesn't work.

Back on topic, I'm fine with DLLs in the directory.

betaking
30th September 2012, 09:23
S.Chinese update
http://www.mediafire.com/?qrmesy7snm23ksg

cyberbeing
30th September 2012, 11:00
The problem is that xy vsfilter doesn't work well with pgs subs
MPC-HC's recent fixes for multiple PGS subtitles and parsing improvements are planned to be included in the next xy-VSFilter release. There is a bit of a delay, since the palette changes will require some additional modifications to xy-VSFilter's colorspace handling, and our fix for flickering PGS subtitles without pre-buffering (an issue which still exists in MPC-HC) was broken by these new MPC-HC commits and will need to be re-created.

On that note, our previous PGS/DVB flickering without pre-buffering fixes are here (http://repo.or.cz/w/xy_vsfilter.git/commit/7fcda23f5729bda59cef74ca3e536629f47ff282), if Underground78 or someone else would instead like to make it compatible with the recent PGS 'parsing improvement' commits by themselves, and merge it into MPC-HC in the meantime.

Aleksoid1978
30th September 2012, 11:24
Another 2 BIG BUGS with PGS on resize:
1 - Incorrect size/proportions
2 - Sometimes sub is hide/missing until seek, although they should still show up.
:)

Dstruct
30th September 2012, 11:32
I like mpc-hc as an all-in-one player, and only having one file to download.

Same here.

vBm
1st October 2012, 18:18
v1.6.4 is released.

After almost 6 weeks after the previous stable release, we decided to release 1.6.4.

It’s a maintenance release with a couple of UI improvements, few bugfixes and better API.

Highlights of this release:


Better UTF8 support for webui
Chapter indicators on seekbar
Improved DVD and PSG (BD) sub handling
Changed default maximum subtitle resolution to “Desktop”


You can download the new version here (http://mpc-hc.sourceforge.net/downloads/). For the complete changes see the changelog (http://mpc-hc.sourceforge.net/changelog/)

Aleksoid1978
2nd October 2012, 06:58
On release - you have some memory leak, one it's in AudioDecoder, in Mixer

Detected memory leaks!
Dumping objects ->
{819618} normal block at 0x17DC0FD0, 12288 bytes long.
Data: < > CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD
Object dump complete.

another i think as that associated with the PGS subtitles, test 2 different files with multiple PGS subtitle render at one time:

Detected memory leaks!
Dumping objects ->
{18092} normal block at 0x08C2B380, 1572 bytes long.
Data: < > CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD
{18091} normal block at 0x00A50A28, 84 bytes long.
Data: < > CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD
{18079} normal block at 0x009DC680, 104 bytes long.
Data: < > CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD
{18078} normal block at 0x009DC5D8, 104 bytes long.
Data: < > CD CD CD CD D8 C5 9D 00 C0 95 A6 00 02 00 00 00
{18077} normal block at 0x00A5C778, 8228 bytes long.
Data: < x > CD CD CD CD 78 C7 A5 00 CD CD CD CD CD CD CD CD
{18076} normal block at 0x00A57378, 60 bytes long.
Data: < xs > CD CD CD CD 78 73 A5 00 80 C7 A5 00 80 C7 A5 00
{18075} normal block at 0x00A4E020, 40 bytes long.
Data: < > CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD
{18074} normal block at 0x00A57278, 64 bytes long.
Data: < xr @ > CD CD CD CD 78 72 A5 00 40 E0 A4 00 01 00 00 00
{18073} normal block at 0x009E13F8, 232 bytes long.
Data: < 9 > CD CD CD CD F8 13 9E 00 C0 96 39 03 00 00 00 00
{18072} normal block at 0x00A631E0, 232 bytes long.
Data: < > CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD
{18071} normal block at 0x00A54748, 492 bytes long.
Data: < > CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD
{18070} normal block at 0x00A695B8, 220 bytes long.
Data: < 9 > CD CD CD CD B8 95 A6 00 80 8A 39 03 00 00 00 00
Object dump complete.

---
Detected memory leaks!
Dumping objects ->
{43174} normal block at 0x15FD1028, 36900 bytes long.
Data: < > CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD
{43173} normal block at 0x1620BD18, 84 bytes long.
Data: < ? > CD CD CD CD 18 BD 20 16 00 00 80 3F 00 00 00 00
{43145} normal block at 0x060207C8, 104 bytes long.
Data: < > CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD
{43142} normal block at 0x0BA73C68, 104 bytes long.
Data: < > CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD
{43141} normal block at 0x16209CB8, 8228 bytes long.
Data: < > CD CD CD CD B8 9C 20 16 CD CD CD CD CD CD CD CD
{43140} normal block at 0x06088E20, 60 bytes long.
Data: < > CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD
{43139} normal block at 0x0B9D8D68, 40 bytes long.
Data: < > CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD
{43138} normal block at 0x06088DA0, 64 bytes long.
Data: < > CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD
{43137} normal block at 0x0BA73F58, 232 bytes long.
Data: < X? > CD CD CD CD 58 3F A7 0B C0 96 A6 02 00 00 00 00
{43136} normal block at 0x0B9ABBD8, 232 bytes long.
Data: < @ > CD CD CD CD D8 BB 9A 0B C0 96 A6 02 40 10 FD 15
{43135} normal block at 0x0B9AB9B0, 492 bytes long.
Data: < > CD CD CD CD CD CD CD CD CD CD CD CD B0 B9 9A 0B
{43132} normal block at 0x0BA74150, 220 bytes long.
Data: < PA > CD CD CD CD CD CD CD CD CD CD CD CD 50 41 A7 0B
Object dump complete.


if need - i upload this files;

Another bug - incorrect work with icon in AboutDlg.
First - there is never call DestroyIcon, simple like that

if (m_hIcon) {
DestroyIcon(m_hIcon);
}


and second - in Debug build Exception while open AboutDlg:
http://s019.radikal.ru/i621/1210/bc/9ad5e1065f41t.jpg (http://radikal.ru/F/s019.radikal.ru/i621/1210/bc/9ad5e1065f41.png.html)
http://i017.radikal.ru/1210/f8/763db336d1fbt.jpg (http://radikal.ru/F/i017.radikal.ru/1210/f8/763db336d1fb.png.html)

something not very good for the release :)

v0lt
2nd October 2012, 17:46
you have some memory leak, one it's in AudioDecoder, in Mixer
Perhaps I solved this problem in 88f078a405 (https://github.com/mpc-hc/mpc-hc/commit/88f078a4058401bae43552bc8edb0bdf1426d73b)

Pulstar
5th October 2012, 04:57
When can we have FFmpeg 1.0 in a stable release kindly?

Amour
6th October 2012, 10:23
Thank you vBm for the release. I hope next one will focus on maximum Windows 8 / Windows Phone compatibility. :)

kopija
6th October 2012, 10:50
Greetings,
I am having trouble playing multi-channel sources using Reclock combined with MPCHC internal audio renderer.
MPCHC audio renderer output is recognized by Reclock, but there is no sound output. Stereo sources work fine, though. When using ffdshow or LAV audio everything works fine.
Has anybody else noticed this?
Using Windows 7, with Reclock configured to output AC3 via optical to my receiver.
Thanks for any suggestions!

pirlouy
6th October 2012, 11:40
Thank you vBm for the release. I hope next one will focus on maximum Windows 8 / Windows Phone compatibility. :)
I wonder where you read MPC will be compatible with Windows Phone.
From what I've read, applications for Windows Phone 8 don't necessarily use the same language (except some Microsoft applications).

madshi
6th October 2012, 12:21
@developers,

the latest madVR build v0.84.0 now supports screenshots. Would you mind updating your video renderer configuration panel to reflect this change? Currently MPC-HC claims madVR can't do screenshots (which was correct until today).

Thanks!

Snowknight26
6th October 2012, 17:22
It claims it and it still seems it can't. You get the usual dialog box about Save Image function not working with madVR.

Superb
6th October 2012, 17:25
https://github.com/mpc-hc/mpc-hc/blob/master/src/mpc-hc/MainFrm.cpp
In CMainFrame::IsRendererCompatibleWithSaveImage
Remove:
else if (s.iDSVideoRendererType == VIDRNDT_DS_MADVR) {
AfxMessageBox(IDS_SCREENSHOT_ERROR_MADVR, MB_ICONEXCLAMATION | MB_OK, 0);
result = FALSE;
}

EDIT: And for the Output page in Settings...
https://github.com/mpc-hc/mpc-hc/blob/master/src/mpc-hc/PPageOutput.cpp
In CPPageOutput::OnDSRendererChange
Under:
case VIDRNDT_DS_MADVR:
Add:
m_iDSSaveImageSupport.SetIcon(tick);
(preferably, under m_iDSSubtitleSupport.SetIcon(tick); )

Armada
6th October 2012, 17:26
@developers,

the latest madVR build v0.84.0 now supports screenshots. Would you mind updating your video renderer configuration panel to reflect this change? Currently MPC-HC claims madVR can't do screenshots (which was correct until today).

Thanks!
Is there any way to detect which version the user is using? So we don't give users with an old version the option to make a screenshot.

It claims it and it still seems it can't. You get the usual dialog box about Save Image function not working with madVR.
That dialog is part of MPC-HC, it still thinks it's unsupported while in reality it is.

madshi
6th October 2012, 17:38
Something must have changed in MPC-HC because the (relatively old) MPC-HC build I'm still using (1.5.3.3760) allows doing screenshots with madVR.

@Armada, you could find out the video renderer file path and then use win32 APIs to find out the file version, but that's rather complicated. I think the best and easiest solution would be what old MPC-HC builds did: Namely trying to make a screenshot and complaining if it fails. That should handle all cases just fine. Ok, maybe the user will see a "file save" dialog and then get a complaint afterwards, when using an old madVR build. But all newer madVR builds will support screenshots, so it's only a matter of time when everybody has a madVR build with screenshot support. So I would simply try to make a screenshot and complain if it fails.

sneaker_ger
6th October 2012, 18:31
Something must have changed in MPC-HC because the (relatively old) MPC-HC build I'm still using (1.5.3.3760) allows doing screenshots with madVR.

Revision 4585, Fri May 4 20:19:52 2012

Disable saving images/thumbnails if using madVR as video renderer

patch by demi_alucard
This commit fixes ticket #2261.

Blitzker
6th October 2012, 20:16
For thoses interested, i've build the lastest MPC-HC git with Superb's modifs to be able to take screenshots with MadVR 0.84.

You can grab it here: http://www.mediafire.com/download.php?dj7b3fq8n8k5rtj

Have fun!

Sylt
6th October 2012, 20:21
@Blitzker: Can you please push this changes/patch to the GitHub Repository of MPC-HC (you can create a Pull Request for this).

Armada
6th October 2012, 21:18
I pushed the necessary changes to the GitHub repo now and I'll see if I can improve the error handling later.

The changes should be available as a nightly build in a few hours.

kasper93
6th October 2012, 21:19
With all due respect downloading random build from random people is not good idea :)

It's easy change, only few lines and I'm sure someone from the team will change it ASAP.

Is there any way to detect which version the user is using? So we don't give users with an old version the option to make a screenshot.
I think it's fine to remove that check completely. Most of madVR user know what they are doing. And most likely everyone uses newest version of it so there is not big problem here :)

If doing screenshot with older madVR would crash mpc then it would be worth to do check, but there is error, which everyone can search for and find that they need to update madVR :)

Sylt
6th October 2012, 21:25
@Armada: Any news about the memory leaks with icon handling, reported by aleksoid? I found already a patch in the trac.

Armada
6th October 2012, 21:39
@Armada: Any news about the memory leaks with icon handling, reported by aleksoid? I found already a patch in the trac.
The AboutDlg bug is already on my To-Do list, I'll keep an eye out for memory leaks also. The AboutDlg memory leak is unlikely to cause issues though, unless you regularly opens thousands of about dialogs. But it is still a memory leak and will be fixed.

As for other memory leaks, I'll try and address most of them before the next stable. Latest report indicated 34 leaks during playback, so there's quite some work to do to find them all.

Sylt
6th October 2012, 21:51
Sounds very good. Thank you! Here I found a fix: http://sourceforge.net/apps/trac/mpc-hc/ticket/2641

I've a feature request: Can you improve the seekbar, like android:
http://i.techrepublic.com.com/blogs/seekbar_2.png

Armada
6th October 2012, 22:00
I have other improvements planned for the interface (classic will stay available), but I can't fix leaks and work on the interface at the same time.

Aleksoid1978
7th October 2012, 01:29
The AboutDlg bug is already on my To-Do list, I'll keep an eye out for memory leaks also. The AboutDlg memory leak is unlikely to cause issues though, unless you regularly opens thousands of about dialogs. But it is still a memory leak and will be fixed.

As for other memory leaks, I'll try and address most of them before the next stable. Latest report indicated 34 leaks during playback, so there's quite some work to do to find them all.

To easy find memory leak - try Visual Leak Detector (http://vld.codeplex.com/)

P.S. - But I can tell - a lot of leaks in the new mechanism/parser PGS subtitles.

Armada
7th October 2012, 11:21
To easy find memory leak - try Visual Leak Detector (http://vld.codeplex.com/)

P.S. - But I can tell - a lot of leaks in the new mechanism/parser PGS subtitles.
Thanks, vBm also recommended that leak detector.

I'll pay especially close attention to the PGS parser. But the internal filters seem to contain the most leaks, even before the changes to the PGS parser.

Aleksoid1978
7th October 2012, 11:31
But the internal filters seem to contain the most leaks, even before the changes to the PGS parser.

Like that ?

Armada
7th October 2012, 11:50
I tested PGS subs with the internal filters disabled and I don't get any memory leaks. But as soon as I turn the internal filters on I get at least 30 with the DXVA filters, 10 if I only use ffmpeg.
No memory leaks detected.
Visual Leak Detector is now exiting.

Aleksoid1978
7th October 2012, 12:33
I tested PGS subs with the internal filters disabled and I don't get any memory leaks. But as soon as I turn the internal filters on I get at least 30 with the DXVA filters, 10 if I only use ffmpeg.

Memory leak log, that i posted above - it's happened on file when need render multiple PGS at one time;

VLD - it's very paranoid program :) - it see memory leak, as example when see AllocMemory - and do not see delete for this;

P.S. - I could help you with this - if your "commander" asked me :)

Armada
7th October 2012, 13:16
Memory leak log, that i posted above - it's happened on file when need render multiple PGS at one time;
I will also look at that log, but could you add the stack trace? It would help me find the source.

VLD - it's very paranoid program :) - it see memory leak, as example when see AllocMemory - and do not see delete for this;
But despite being paranoid it doesn't report any memory leak to me when not using the internal filters.

P.S. - I could help you with this - if your "commander" asked me :)
Help is always welcome, but you should only do so when you want to yourself. This is a team effort, there is no "commander" pulling the strings.

Aleksoid1978
7th October 2012, 13:29
Help is always welcome, but you should only do so when you want to yourself. This is a team effort, there is no "commander" pulling the strings.

If this is a team - why so one person deprived of access another, simply because he wanted to, а ???

I'm talking about our mutual "friend" XhmikosR :)

Aleksoid1978
7th October 2012, 13:31
But despite being paranoid it doesn't report any memory leak to me when not using the internal filters.


When no internal filter - VLD do not see source for external filter and do not generate his report.

About multiple PGS - see this is sample
http://aleksoid.tosei.ru/Test/Sample/PGS/PGS_StartBroken.m2ts - enable subtitle and see in Debug mode what happened.

vBm
7th October 2012, 13:45
If this is a team - why so one person deprived of access another, simply because he wanted to, а ???

I'm talking about our mutual "friend" XhmikosR :)

What happened in past should stay in the past. All of us have the same goal and that is to have best media player for windows.
Personal crap should stay behind and we all should concentrate on getting things done. That's all.

ryrynz
7th October 2012, 13:53
What happened in past should stay in the past.

I don't see him bringing up the past as much as saying "I want to help why don't I have access to help?"

Personal crap should stay behind and we all should concentrate on getting things done. That's all.

But isn't Aleksoid1978 trying "get things done" but has the issue of not having access?

Armada
7th October 2012, 14:02
Please don't bring this up again, there has already been too much drama around this subject and frankly it's been a big demotivation to the team. If Aleksoid1978 wants to help he is still free to submit patches and we will review them, you don't need write access to the repo to contribute and you don't need to involve XhmikosR.

Aleksoid1978 had a disagreement over how the project was being run and so he started a fork. We are currently satisfied with the situation where we can each manage the project as we see fit. We are hoping we can build a professional relationship between the two projects so both projects will improve.

Aleksoid1978
8th October 2012, 07:34
Please don't bring this up again, there has already been too much drama around this subject and frankly it's been a big demotivation to the team. If Aleksoid1978 wants to help he is still free to submit patches and we will review them, you don't need write access to the repo to contribute and you don't need to involve XhmikosR.

Aleksoid1978 had a disagreement over how the project was being run and so he started a fork. We are currently satisfied with the situation where we can each manage the project as we see fit. We are hoping we can build a professional relationship between the two projects so both projects will improve.

No - i don't have a disagreement over how the project was being run. I just lost access, for what started my own project. And I still do not understand how connected the MPC-HC and my project - MPC-BE. What was I deny access?

Gaius
8th October 2012, 07:42
Hey guys, something fun for you to see. MPC-HC was featured on last night's episode of the Showtime TV series Homeland.

http://i.imgur.com/qGj3A.jpg

kasper93
8th October 2012, 11:28
Product placement :D Oh, well MPC-HC is the best player with simple gui so why they would want to use anything else?

gebla
8th October 2012, 12:37
Dear all,

Recently when trying to play a dvd (from file load dvd and select the Video_ts folder) I get error "failed to query the needed interfaces for DVD playback". I tried different renderer but the issues still occured. I am playing with madvr and LAV (cuvid) filters. I tried the repair fromm the MPC webpage to register a .dll but still this issue occurs. Also updated to the latest MPC HC build.

Any hints and tips what I can try to repair this issue?

roytam1
9th October 2012, 02:49
Dear all,

Recently when trying to play a dvd (from file load dvd and select the Video_ts folder) I get error "failed to query the needed interfaces for DVD playback". I tried different renderer but the issues still occured. I am playing with madvr and LAV (cuvid) filters. I tried the repair fromm the MPC webpage to register a .dll but still this issue occurs. Also updated to the latest MPC HC build.

Any hints and tips what I can try to repair this issue?

what version of windows you're using?

In general, you may run "regsvr32 qdvd.dll" and "regsvr32 quartz.dll" to fix this issue, but I don't know about europe "N" version of windows.

DrNein
12th October 2012, 05:46
Hey guys, something fun for you to see. MPC-HC was featured on last night's episode of the Showtime TV series Homeland.

http://i.imgur.com/qGj3A.jpg

I came to post same. :)

Oddly, Microsoft did pay for Skype placement yet WMP was replaced with MPC-HC. Maybe CBS wanted more monies for that but they declined since not marketable. Or maybe production IT just know MPC-HC is better. ;)

madshi
12th October 2012, 16:05
@developers,

there's an incompatability between MPC-HC and madVR now with the "save thumbnails" MPC-HC feature. Basically MPC-HC asks madVR whether it can do frame stepping. madVR says "yes". Then MPC-HC asks for 1 frame step. madVR replies with E_UNEXPECTED. I'm aware of that this is not standard renderer behaviour, and it's on my list of things to fix. Unfortunately a proper fix will be quite difficult due to madVR's internal queue design, so I can't fix it at the moment. What madVR currently does is a bit weird, but still somewhat "ok", I believe, and it works ok with normal MPC-HC frame stepping during playback. Only the "save thumbnails" feature has a problem with the way madVR behaves.

I've looked into this a bit and from my logs madVR clearly replies with E_UNEXPECTED to the frame step request. In MPC-HC's "MainFrm.cpp" in line 4902 (current revision) there's the line "HRESULT hr = pFS ? pFS->Step(1, NULL) : E_FAIL;". However, it seems that this for whatever reason doesn't come out with E_FAIL, because MPC-HC freezes then a bit later in the source code in line 4913 in the WaitForSingleObject. MPC-HC waits there for madVR to reply with EC_STEP_COMPLETE. But madVR doesn't send that event because it already denied the step request in the first place.

Hope somebody can look into this? It's dead easy to reproduce. And you can get a freeze report which shows you where MPC-HC is stuck by pressing Ctrl+Alt+Shift+Break (freeze report will be saved to desktop). Just make sure you have the correct MPC-HC.pdb file in the MPC-HC folder, so the freeze report contains valid stack traces.

HoP
13th October 2012, 06:17
how i can change the volume 2 unit (default is 5 unit).like potplayer ↓

http://upit.cc/i/76d261b4.gif

Armada
13th October 2012, 11:03
how i can change the volume 2 unit (default is 5 unit).like potplayer ↓
I added the keys Alt+Up/Down to change the volume by 1 unit in the latest stable. If you want to use 1 unit as the default, you can change the keys in the options.

HoP
13th October 2012, 11:45
I added the keys Alt+Up/Down to change the volume by 1 unit in the latest stable. If you want to use 1 unit as the default, you can change the keys in the options.

many thanks :thanks:
now i have more control on sound in the night!! :p
can you make an option for this in Tweaks section?? below "jump distance" :D
thanks again ;)

Armada
13th October 2012, 12:02
many thanks :thanks:
now i have more control on sound in the night!! :p
can you make an option for this in Tweaks section?? below "jump distance" :D
thanks again ;)
I don't think that's necessary, we already have way too many tweak options. Is it that that much trouble to press the same button twice?

HoP
13th October 2012, 12:28
@Armada
Is it that that much trouble to press the same button twice?
nope.thanks anyway :D

dansrfe
15th October 2012, 14:58
What's the best method of viewing MediaInfo readouts for files within MPC-HC? It used to be integrated but not anymore I guess.

vBm
15th October 2012, 16:21
What's the best method of viewing MediaInfo readouts for files within MPC-HC? It used to be integrated but not anymore I guess.

Properties (Shift+F10) -> Media Info

It's still there, unless you are using some unofficial build or lite one.

sneaker_ger
15th October 2012, 21:06
While you're talking about MediaInfo I have a request:
If a file cannot be played by MPC-HC it would be nice if it ran MediaInfo over it anyways, so you could quickly analyze what the problem could be.

hayan
16th October 2012, 12:11
Big bug? :scared:
Open video file(mp4), after drag and drop another video file(mp4) to mpchc, mpc-hc is crash. :(

W7 x64, mpc-hc rev6086

LigH
16th October 2012, 14:12
Using the internal MP4 splitter or an external (e.g. Haali)? Using an internal MPEG4 decoder (DXVA / FFmpeg) or an external?

hayan
16th October 2012, 19:30
no open any file -> drag n drop video file -> no problem
play audio file -> drag n drop audio file -> no problem (mp3)
play video file -> next video file (page down) -> no problem
play video file -> drag n drop video file -> mpchc gui and video freeze

EVRCP
no subtitle
playlist: hide
filetype: no limit (mp4, wmv or avi)
Splitter: internal or LAV
video decoder: internal(DXVA/Soft) or LAV
audio decoder: internal or LAV
MPC-HC: x86 or x64 (XhmikosR's Builds)

PS:rev6081 no problem, rev6086/6087 freeze

HoP
17th October 2012, 10:27
@hayan
i had a problem like that with JanWillem32 builds.this post (http://forum.doom9.org/showpost.php?p=1570488&postcount=936)
and JanWillem32 said:
I'm very familiar with that one. When the renderer's initialization fails (usually because other components are still quitting), the graph builder will just try again. Note that it may revert silently to VMR-7 w. after a renderer failure.

Aleksoid1978
21st October 2012, 03:50
no open any file -> drag n drop video file -> no problem
play audio file -> drag n drop audio file -> no problem (mp3)
play video file -> next video file (page down) -> no problem
play video file -> drag n drop video file -> mpchc gui and video freeze

EVRCP
no subtitle
playlist: hide
filetype: no limit (mp4, wmv or avi)
Splitter: internal or LAV
video decoder: internal(DXVA/Soft) or LAV
audio decoder: internal or LAV
MPC-HC: x86 or x64 (XhmikosR's Builds)

PS:rev6081 no problem, rev6086/6087 freeze

This error is due to the inclusion of subtitle support in UTF-8 without BOM.

MADAJ
21st October 2012, 18:32
hi there

can someone help me with web interface ,can i download files by this method ..

i mean , if there is a someone have mpc-hc web interface and it shared with others , can they download files or at least play it in there own computers.

and thx


-- is there an irc channel for mpc-hc developers ? , to ask him in faster way -- :)

kasper93
22nd October 2012, 00:56
It's not media player task to share files :)

Of course there is IRC channel, even two. #mpc-hc (general) and #mpc-hc-dev (for devs) on freenode :)

MADAJ
22nd October 2012, 09:54
thank you kasper93 for answering me :)

what is benefit from MPC-HC Web interface ?

vBm
22nd October 2012, 16:50
Remote controlling of the player. (there's no way at the moment to stream video, so only to play/pause/load/etc files)

MADAJ
23rd October 2012, 07:15
OK , thanks a lot
:)

Yoshi8765
23rd October 2012, 22:13
what version of windows you're using?

In general, you may run "regsvr32 qdvd.dll" and "regsvr32 quartz.dll" to fix this issue, but I don't know about europe "N" version of windows.

I have the same problem as the guy you replied to: "Failed to query the needed interfaces for DVD playback" error when trying to open DVDs. I tried both regsvr43 qdvd.dll and quartz.dll. Error still comes up. Note: this is only for DVDs.
Win 7, using madVR+LAVFilters and DXVA.

Anyone have a suggestion?

Joniii
24th October 2012, 06:31
Does the settings on VSFilter color tab work? It seems to always output YUY2 to EVR.

cyberbeing
24th October 2012, 06:57
On regular VSFilter, the colors tab has been broken for as long as I remember. Though the reason you are seeing YUY2, is because AMD/ATI GPUs don't support YV12 with EVR, and regular VSFilter doesn't support NV12. What will usually occur, is VSFilter will take YV12 input from the decoder, and then do a color conversion to YUY2.

xy-VSFilter has a fully functional colors tab, and it also supports NV12. Though unlike regular VSFilter, xy-VSFilter will never perform color conversions.
Input format from decoder to xy-VSFilter = Format supported by Video Renderer = Output format from xy-VSFilter to Video Renderer.

Joniii
24th October 2012, 10:28
On regular VSFilter, the colors tab has been broken for as long as I remember. Though the reason you are seeing YUY2, is because AMD/ATI GPUs don't support YV12 with EVR, and regular VSFilter doesn't support NV12. What will usually occur, is VSFilter will take YV12 input from the decoder, and then do a color conversion to YUY2.

xy-VSFilter has a fully functional colors tab, and it also supports NV12. Though unlike regular VSFilter, xy-VSFilter will never perform color conversions.
Input format from decoder to xy-VSFilter = Format supported by Video Renderer = Output format from xy-VSFilter to Video Renderer.

Thanks, that must be the problem.

Anyone know how those PowerDVD and TMT plug-ins for Windows Media Center works?

On Windows Media Center you can add Blu-rays and DVD's into movie library but you will need a plug-in for Blu-rays, for example PowerDVD, when you launch a BD from the WMC library it opens the movie on PowerDVD on top of WMC. You can get MPC-HC to load also but the problem is that it can't properly communicate with MPC-HC to start the playback. I think it would need some plug-in that wouldn't require much code to start MPC-HC on full screen and start playback with the correct switches.

Joniii
24th October 2012, 16:20
Almost got mpc-hc to load when hitting play in Windows Media Center Movie Library. Only thing is that WMC passes this to MPC-HC

"C:\Program Files (x86)\mpc\mpc-hc.exe" -embed 393972H:/AVATAR/

Those six numbers are always random.

So I would need to compile a MPC-HC build that has for example -fullscreen switch name replaced to -emblem so that is accepted and at the same time mpc-hc lauches in full screen. Other change would be to make mpc-hc to discard those six numbers in the path.

Anyone here who has everything already set up and compiles MPC-HC builds often? I could do it myself but I have VS 2012, dunno if it will work. Also it takes a while to setup everything.

vBm
25th October 2012, 14:45
Almost got mpc-hc to load when hitting play in Windows Media Center Movie Library. Only thing is that WMC passes this to MPC-HC

"C:\Program Files (x86)\mpc\mpc-hc.exe" -embed 393972H:/AVATAR/

Those six numbers are always random.

So I would need to compile a MPC-HC build that has for example -fullscreen switch name replaced to -emblem so that is accepted and at the same time mpc-hc lauches in full screen. Other change would be to make mpc-hc to discard those six numbers in the path.

Anyone here who has everything already set up and compiles MPC-HC builds often? I could do it myself but I have VS 2012, dunno if it will work. Also it takes a while to setup everything.

Uriziel made this tiny python script you can use to strip that stuff out.

import subprocess
import sys

if "__main__" == __name__:
path = sys.argv[2].lstrip("0123456789")
subprocess.call(["C:\Program Files (x86)\mpc\mpc-hc.exe", path])


And point media center to that script instead of mpc-hc

Joniii
25th October 2012, 15:50
Uriziel made this tiny python script you can use to strip that stuff out.

import subprocess
import sys

if "__main__" == __name__:
path = sys.argv[2].lstrip("0123456789")
subprocess.call(["C:\Program Files (x86)\mpc\mpc-hc.exe", path])


And point media center to that script instead of mpc-hc

Nm, I got it now. Thanks for the tip.

clsid
25th October 2012, 21:49
I have improved the pan&scan rotation functionality. With this change it is easier to flip and rotate the video. Old behavior was a 2 degree step for all 6 directions. New behavior is to take 180/90 degree steps in 3 of those directions.
Alt+2 = vertical flip
Alt+6 = horizontal flip
Alt+3 = rotate 90 degree counterclockwise

Here is changed code:

mainform.cpp
void CMainFrame::OnViewRotate(UINT nID)
------------------------------
switch (nID) {
case ID_PANSCAN_ROTATEXP:
m_AngleX = (m_AngleX + 2) % 360;
break;
case ID_PANSCAN_ROTATEXM:
if (m_AngleX >= 180)
m_AngleX = 0;
else
m_AngleX = 180;
break;
case ID_PANSCAN_ROTATEYP:
m_AngleY = (m_AngleY + 2) % 360;
break;
case ID_PANSCAN_ROTATEYM:
if (m_AngleY >= 180)
m_AngleY = 0;
else
m_AngleY = 180;
break;
case ID_PANSCAN_ROTATEZP:
m_AngleZ = (m_AngleZ + 2) % 360;
break;
case ID_PANSCAN_ROTATEZM:
if (m_AngleZ >= 270)
m_AngleZ = 0;
else if (m_AngleZ >= 180)
m_AngleZ = 270;
else if (m_AngleZ >= 90)
m_AngleZ = 180;
else
m_AngleZ = 90;
break;
default:
return;
}

tiny
26th October 2012, 15:32
I have the same problem as the guy you replied to: "Failed to query the needed interfaces for DVD playback" error when trying to open DVDs. I tried both regsvr43 qdvd.dll and quartz.dll. Error still comes up. Note: this is only for DVDs.
Win 7, using madVR+LAVFilters and DXVA.

Anyone have a suggestion?

Use the win32 version of the DVDNavigatorPathHack.exe tool from the dslibdvdnav-0.2.4 package to restore the link to the DVD navigator filter. (use google to find it)

See this image showing how I hacked the DVD Navigator path on my system:
http://img534.imageshack.us/img534/428/dvdnavigatorpathhack.jpg (http://imageshack.us/photo/my-images/534/dvdnavigatorpathhack.jpg/)
Clicking "restore" should revert to the system default.

Yoshi8765
26th October 2012, 23:47
@tiny:
Thanks a lot. I'll try this and report back.

Edit: I've completely forgotten about that neat little program for allowing DVD playback with madVR. I set it back to the system default. Then, MPC-HC gave me a "Macrovision fail," as expected. I switched it back to dslibdvdnav.ax in my 32-bit version of dslibdvdnav and tried again.
Left is what I get with open disc-> E.
Right is what I get with open DVD/BD->E.
http://i.imgur.com/MWXqy.jpg
The DVD drive whirls for a few seconds after showing me this, then stops. :confused:
I have Win 7 64-bit by the way. So I tried doing the same with with dslibdvdnav.ax 64-bit version, with no avail.

thedamager
28th October 2012, 00:59
I have this weird problem in fullscreen, all advice is welcome.

Window: http://i.imgur.com/kBqfI.jpg
Fullscreen: http://i.imgur.com/ZV9XC.jpg

As you can see, target rectangle in fullscreen is very wrong. My monitor is 1680x1050.

MPC-HC 1.6.4.6052
LAV Filters 0.52
madVR 0.84.3

It happens with different renderers too, on all videos.

Snowknight26
28th October 2012, 01:08
Video Frame -> Touch Window From Inside

thedamager
28th October 2012, 01:27
Oh, I feel so stupid now, I swear I thought I tried it.
Thanks a lot Snowknight26.

dansrfe
28th October 2012, 02:30
Feature request: If the file doesn't have chapters then MPC-HC should automatically divide the file into x equal chapter points. Thanks.

kasper93
29th October 2012, 15:25
No it shouldn't. Anyway for feature requests we have trac http://sourceforge.net/apps/trac/mpc-hc/wiki/How_to_Report_Issues

tiny
30th October 2012, 16:42
@Yoshi8765:
I'm sorry I couldn't test this earlier. I've got AnyDVD running in the background doing the decryption. If I disable AnyDVD the black window & no play problem like you're having occurs. Looks like the MPC/dslibdvdnav.ax/LAV combination doesn't play (normal commercial) encrypted DVDs without some extra help.

Yoshi8765
30th October 2012, 23:58
@tiny:
So if I get AnyDVD, the problem will go away? It's not free though... is there an alternative?
Why would it be that I'm the only one with this problem? There are tons of people who play DVDs with a MPC/LAV setup, AFAIK.

tiny
31st October 2012, 00:32
Default system DVD navigator + MPC + LAV + EVR works without AnyDVD as long as the region of the DVD matches the drive's region setting. AnyDVD removes the region setting and decrypts the disc, allowing dsdvdlivnav to be used. Which in turn allows MadVR to be used.

Alternative is ripping the disc to hard disk first.

Yoshi8765
31st October 2012, 00:34
I don't understand why I would have anything other than a region code of 1 (for USA, where I live).
Also, the DVDs I'm trying to play were burned by me, with DVDs I bought at staples....

Aleksoid1978
31st October 2012, 02:03
Hi. in MPC-HC's HDMV engine have a bug:
you parse object in m_compositionObjects[] and then take from here to the m_pPresentationSegments. But - you do not clear m_compositionObjects[] after NewSegment call(after seek) and sometimes after seeking we see incorrect/wrong subtitle image :)

LigH
31st October 2012, 09:00
The menus of a DVD are usually not encrypted, only the video of the movie titleset(s) (and even only partially). After the drive is successfully authentified, access to the logical structure (IFO files) and First Play / Video Manager domain (VIDEO_TS.VOB) should be granted without a need for any invoking decryption software.

If you burned the DVDs you are trying to play, they will be seen as unencrypted; "General Use" DVD media don't support encryption. So you hopefully decrypted the original disk before burning a copy of their content.

The most compatible way to check the behaviour is probably having an ISO image if the decrypted DVD (e.g. before burning the copy; if you only stored files of the DVD directories, use ImgBurn to build an image from the base directory) and mounting that in a virtual CD/DVD drive like DaemonTools, then play this virtual DVD Video disk.

hdboy
31st October 2012, 22:04
Is there a way to override style (font colors, specifically) of vobsub external subtitle files (.sub and .idx)? I have Default Style checked under the subtitle menu but MPC still uses the style set in the idx file instead of what I set in Options.

Yoshi8765
31st October 2012, 22:13
@LigH:
I'm assuming you're talking to me.
I don't think I'm following you-- This is what I think you are saying:
I can test if a source file (the movie I have in .mkv) is turned into an iso. By doing that, I can see if the problem is the physical disc I am using or the source.
That's what you're saying, right?
If it is, then here's my question: Either way, how can I fix the problem? is AnyDVD the only way?

btw, thanks for helping everyone. :)

Aleksoid1978
1st November 2012, 05:02
Is there a way to override style (font colors, specifically) of vobsub external subtitle files (.sub and .idx)? I have Default Style checked under the subtitle menu but MPC still uses the style set in the idx file instead of what I set in Options.

change style - it's only for text/animated subtitle. It's can't work with bitmap subtitle, like VOBSUB/DVB/PGS

LigH
1st November 2012, 09:39
@ Yoshi8765:

I never talked about MKV here. I always assumed that there is an issue with "DVD Video" media (*.IFO + *.VOB in \VIDEO_TS).

If you burn an MKV onto a (data) DVD, there is no reason to load the "DVD Navigator" filter. And there is no reason to use any decryptor like AnyDVD.

You may need AnyDVD only for "DVD Video" media with copy protections (like CSS encrypted VOBs, or IFO files being garbled on purpose to confuse Windows PCs reading the ISO-9660 file system instead of the UDF file system).

If you rip a DVD Video (removing any copy protection) and create a DVD Video Image from the ripped content, and mount it into a virtual drive, and play that: Is there still an issue with the DVD Navigator filter?

Reino
2nd November 2012, 15:57
Feature request: MPC-HC being able to handle (embedded) cue-files.
SourceForge Ticket #1673 (http://sourceforge.net/apps/trac/mpc-hc/ticket/1673) resurrected.

Well, call me crazy, but all I see is a white screen with h5ai 0.22-dev-9 (http://larsjung.de/h5ai) at the bottom.Sounds like he updated to some broken version of that directory index script. I let him know.Today I noticed on a much newer computer that the website is actually working. I know I desperately have to buy a new computer, but because my cpu doesn't support SSE2, I can't use any newer version than Firefox 3 (3.6.32 atm), which can't render XhmikosR's website it seems. It's only the 2nd website I come across which my FF can't render, so is it possible to use a more universal directory index script for folks like me? :rolleyes:

vBm
2nd November 2012, 18:25
He won't change index script cause of you. Maybe try to disable JS.

betaking
2nd November 2012, 22:20
S.Chinese update
http://www.mediafire.com/?4hsu2dm189rcuh5

Reino
2nd November 2012, 23:46
Disabling JavaScript entirely seems to do the trick for now. Thanks though.

Yoshi8765
3rd November 2012, 22:22
@ Yoshi8765:

I never talked about MKV here. I always assumed that there is an issue with "DVD Video" media (*.IFO + *.VOB in \VIDEO_TS).

If you burn an MKV onto a (data) DVD, there is no reason to load the "DVD Navigator" filter. And there is no reason to use any decryptor like AnyDVD.

You may need AnyDVD only for "DVD Video" media with copy protections (like CSS encrypted VOBs, or IFO files being garbled on purpose to confuse Windows PCs reading the ISO-9660 file system instead of the UDF file system).

If you rip a DVD Video (removing any copy protection) and create a DVD Video Image from the ripped content, and mount it into a virtual drive, and play that: Is there still an issue with the DVD Navigator filter?

Ok, that clarified things for me.
To clarify my situation, here it is: I have an .mkv of a movie that has been ripped from a HDTV source. I want to burn it onto a DVD and watch it on my laptop. The DVD works with my DVD player but not my laptop.
I will make an .iso and see what happens. Thanks.
Edit: Just tried with an .iso of one of the movies that doesn't work. So I guess the source has not been decrypted and I have to use AnyDVD. So again, is there a free alternative to AnyDVD, or a way to decrypt the source file so that the DVD will play on my laptop?

Another edit: After I search up more on this, I found a partial solution. I uninstalled then reinstalled the LAVFilters Megamix I had. Now, .iso files of DVDs work perfectly (the menu navigation and everything) but DVDs still refuse to work. When I try to start a DVD with 'Open disc'->E:\ , it opens it but only gives me a black screen. It says 'Playing' at the bottom. I have no idea why reinstalling the Megamix solved the problem with .iso files.

Pulstar
4th November 2012, 18:16
Is the MPC-HC nightly subs renderer now good to replace xy-vsfilter?

ryrynz
5th November 2012, 00:15
Nothing beats xy-vsfilter, likely they will port some code across but it won't be any time soon.

Mercury_22
5th November 2012, 10:23
What's the equivalent command for "Open Directory" with "Include subdirectories" ?

LigH
5th November 2012, 13:43
@ Yoshi8765:

Do you know the difference between "the DVD Video standard" and "an MKV file burned onto a data DVD±R"?

If the DVD contains an MKV file which you burned in your own PC using a DVD±RW drive, AnyDVD is not used at all. In this case it doesn't matter if AnyDVD is installed or not.

AnyDVD is only used if you have an industrially produced DVD (commercial disk manufacturing, mastered and replicated, not burned) containing a "VIDEO_TS" directory with VOB and IFO files. Commercial "DVD Video" media may be encrypted in a way that AnyDVD may circumvent this encryption.

Burned MKV files are not encrypted, and they are no "DVD Video" media. If you did not convert the MKV file to DVD compliant MPEG2 video and did not use a DVD Authoring tool to author a "DVD Video" structure, you don't have a "DVD Video" media. And AnyDVD will not solve any problem related to your content.

DragonQ
5th November 2012, 19:23
Does anyone know why MPC-HC doesn't link properly with the Windows 8 Volume Mixer? Here's a comparison between what happens for me on Windows 7 and Windows 8:

Windows 7
- MPC-HC volume = 100%, main device volume = 50%, MPC-HC volume in Volume Mixer = 50%.
- Give MPC-HC focus, then press volume down key twice on my keyboard.
- MPC-HC volume is now 90%, main device volume is still 50%, MPC-HC volume in Volume Mixer is now 45% (i.e. 90% of 50%).

Windows 8
- MPC-HC volume = 100%, main device volume = 50%, MPC-HC volume in Volume Mixer = 50%.
- Give MPC-HC focus, then press volume down key twice on my keyboard.
- MPC-HC volume is now 90%, main device volume is now 46% (i.e. down 2 steps), MPC-HC volume in Volume Mixer is now 46%.

Essentially MPC-HC doesn't seem to be linked to the Volume Mixer at all, and it also isn't blocking the media keys from changing the global device volume when MPC-HC is focused, unlike in Windows 7. :(

Mangix
5th November 2012, 20:48
Needs to be implemented. Keep in mind that most Windows applications are also like this.

cyberbeing
5th November 2012, 23:03
Does anyone know why MPC-HC doesn't link properly with the Windows 8 Volume Mixer? Here's a comparison between what happens for me on Windows 7 and Windows 8

AFAIK, what is shown in the Windows Volume Mixer (Peak Meter) can also be determined by audio hardware and/or driver, some of which either misreport or post-process the audio.

For example, on Win7 the VIA2021 chip from the Gigabyte Z77 UD3H has an extremely messed up non-linear curve in Volume Mixer:
Volume Sliders @ 100% + Source Level @ 0.86+ = 100% Volume Mixer(clipped).
Volume Sliders @ 100% + Source Level @ 0.85 = ~100% Volume Mixer.
Volume Sliders @ 100% + Source Level @ 0.75 = ~75% Volume Mixer.
Volume Sliders @ 100% + Source Level @ 0.60 = ~45% Volume Mixer.
Volume Sliders @ 100% + Source Level @ 0.50 = ~25% Volume Mixer.
Volume Sliders @ 100% + Source Level @ 0.25 = ~10% Volume Mixer.
Volume Sliders @ 100% + Source Level @ 0.15 = ~5% Volume Mixer.

The Realtek chip on my secondary P55 system has 1:1:1 scaling of Volume Sliders to Source Level to Volume Mixer on Win7.
Same with the Creative card I used on my previous WinXP/Win7 AMD 939 system.

DragonQ
6th November 2012, 00:25
I had assumed that the Volume Mixer worked similarly to Windows 7's and that adding support for it in Windows 8 would be unnecessary. I could be totally wrong though.

It could also be to do with drivers as you say - I think right now I'm using Windows' built-in drivers since there are no Windows 8 drivers for my motherboard at all (yet).

One interesting change in the handling of audio, which could be down to either Windows 8 or the generic driver, is that my headphones (plugged into the front line out socket) are now treated as a separate audio device, with their own master volume setting.

IceFiend
6th November 2012, 15:32
Is there any way to force MPC to auto resize all videos to a particular %? Like %100 Width and %130 height?

Edit:
There is!
View->video frame->keep aspect ratio" and then go to Play->Filters->ffdshow video decoder->resize & aspect tick "resize", go down to the aspect ratio section at the bottom and select "manual", then change 1.33 to whatever you want. 1.6 would be wider, 1.0 would be taller.

Pulstar
6th November 2012, 16:52
http://i49.tinypic.com/20fev7t.png

Have you tried fiddling with the P&S presets?

Carpo
7th November 2012, 13:15
where can we get official nightly builds? because the Official nightly builds by: XhmikosR - is just a blank page for me

vBm
7th November 2012, 15:14
where can we get official nightly builds? because the Official nightly builds by: XhmikosR - is just a blank page for me

It's always the same page. HERE -> http://xhmikosr.1f0.de/mpc-hc/

Carpo
7th November 2012, 15:15
Must be a chrome issue, works in IE10, but not FF, i will have to check the settings on the browsers - thanks :)

v0lt
7th November 2012, 20:02
Must be a chrome issue, works in IE10, but not FF, i will have to check the settings on the browsers - thanks :)
confirm.
works in IE9, but not FF10.

My builds (http://www.mediafire.com/?xfgh33iws56bh)

tdoll
7th November 2012, 20:35
Since I am using the official windows 8 version i get wrong colors with evr (custom) and madvr. By now I have now clue what could be wrong. Does anyone have an Idea or at least the same problem. When I switch to evr the colors are fine.

Everyting seems to be redish. White actually is pink. Red seems to be purple and so on.

In between I tried all the different renderers. The only ones that produce correct colors are:

Overlay
VMR 7 and
EVR

All other renderers produce wrong colors. Does anyone have an idea?


Thomas

Taurus
7th November 2012, 20:38
confirm.
works in IE9, but not FF10.

My builds (http://www.mediafire.com/?xfgh33iws56bh)
hmmh,works here..
IE, FF, Chrome, etc..

aufkrawall
7th November 2012, 22:37
Shouldn't it be possible with the latest madVR version to create thumbnails with the player?
With build 6174 it still aborts because "it couldn't seek single frames".

cyberbeing
7th November 2012, 23:24
With build 6174 it still aborts because "it couldn't seek single frames".

I get the "Cannot Frame Step" error when I attempt to create thumbnails with madVR 0.84.7, but only with MKV files apparently. Changing the decoder or splitter makes no difference.

v0lt
8th November 2012, 06:33
hmmh,works here..
IE, FF, Chrome, etc..
works in http://xhmikosr.1f0.de/mpc-hc/ ? :confused:

ryrynz
8th November 2012, 07:13
Works for me, Chrome 22/23 Firefox 17, IE9

v0lt
8th November 2012, 07:15
Crash when mixing DTS and some other audio formats (https://sourceforge.net/apps/trac/mpc-hc/ticket/2707)
The problem appeared after (b4c70f207264bdf9f56e45d08c5a0c4c8dc00db9) commit.
FFmpeg bugs :mad:

LigH
8th November 2012, 08:20
Works even in Opera 12. Your reason might be blocked JavaScripts? This site is very dynamic.

kasper93
8th November 2012, 11:42
I would rather try to disable JS, it will fallback to legacy mode and should work for everyone. Anyway if you have any poblems you should report it to h5ai developers and if they say that it's configuration/server fault then report it to XhmikosR's :)

kutjong
9th November 2012, 10:23
Anybody else having troubles with Catalyst 12.11 beta drivers and MPC-HC? After updating to these drivers the MPC-HC window is just black and does not render any video. Only way to get a picture is to use windowed VMR-7/9 or madVR.

My graphics card is a Radeon 7950 and I'm using Win 7 x64.

kasper93
9th November 2012, 12:17
Don't use beta drivers then. Noone will try to fix bug that may be just driver bug. Use WHQL drivers and tell us about any problems with them...

Mercury_22
9th November 2012, 12:23
Anybody else having troubles with Catalyst 12.11 beta drivers and MPC-HC? After updating to these drivers the MPC-HC window is just black and does not render any video. Only way to get a picture is to use windowed VMR-7/9 or madVR.

My graphics card is a Radeon 7950 and I'm using Win 7 x64.

Disable full/half "Floating point processing" and please report to AMD

dansrfe
9th November 2012, 20:28
This issue has existed for a while for me but I never raised an issue about this before. I actually don't know what it is attributed to. Either MPC-HC, madVR, or LAV Filters.

The issue is that when I have subtitles on (in windowed mode) and I drag the playing MPC-HC window across to my other monitor, the subtitles become horizontally stretched and I have to resize the window (just trigger a resize basically so even +- 1 pixel does it) to correct the subtitles width. This happens with SRT or SSA embedded in MKV files.

Polcius
10th November 2012, 00:28
Since I am using the official windows 8 version i get wrong colors with evr (custom) and madvr. By now I have now clue what could be wrong. Does anyone have an Idea or at least the same problem. When I switch to evr the colors are fine.

Everyting seems to be redish. White actually is pink. Red seems to be purple and so on.

In between I tried all the different renderers. The only ones that produce correct colors are:

Overlay
VMR 7 and
EVR

All other renderers produce wrong colors. Does anyone have an idea?


Thomas

Same here.

Superb
10th November 2012, 00:54
Same here.
Do you guys have the latest video card drivers available installed?

Polcius
10th November 2012, 01:43
Do you guys have the latest video card drivers available installed?

Yes... In my case I have an ATI HD4350; so I installed the 12.6 Legacy Driver.

Skibicki
10th November 2012, 09:39
It could also be to do with drivers as you say - I think right now I'm using Windows' built-in drivers since there are no Windows 8 drivers for my motherboard at all (yet).Have you tried updating the individual components? The motherboard support site will list the model of chip used. If it's a generic Realtek model then updating from the Realtek site is fine.

betaking
10th November 2012, 11:24
S.Chinese update
http://www.mediafire.com/?rw9vpwparktlcwa

ikarad
10th November 2012, 12:30
I have a problem with mpc-hc.

bugtrack: https://sourceforge.net/apps/trac/mpc-hc/ticket/2712

If I use vmr9-renderless or windowed, evr or evr custom, enterlaced (24fps entrerlaced to 30 fps) video play at 60fps.
If I use lav video, same problem.

If I use vmr7 or madvr, video play well at 30 fps as indacted by mpc-hc but 60 fps with fraps.

If I use mpc-hc + madvr ou without madvr + ffdshow video decoder same problem. If I use potplayer + ffdshow video decoder no problem

if I use madvr with plotplayer, there is no problem.

edit 2: there is no problem with internal decoder of potplayer and kmplayer. Video play at 30fps

My config:
nvidia 560gt with last driver
windows 7


evrcustom + mpc-hc (60 fps with fraps and 60 on mpc-hc statistic)
http://img15.hostingpics.net/thumbs/mini_780819evrcustom.jpg (http://www.hostingpics.net/viewer.php?id=780819evrcustom.jpg)

madvr+mpc-hc (60 fps with fraps and 30 on mpc-hc statistic)
http://img15.hostingpics.net/thumbs/mini_457226madvrinterlacedtelecinemovie.jpg (http://www.hostingpics.net/viewer.php?id=457226madvrinterlacedtelecinemovie.jpg)

kmplayer or plotplayer (30 fps with fraps and 30 on mpc-hc statistic)
http://img15.hostingpics.net/thumbs/mini_895976kmplayer.jpg (http://www.hostingpics.net/viewer.php?id=895976kmplayer.jpg)

vmr7 (30 fps with fraps and on mpc-hc statistic)
http://img15.hostingpics.net/thumbs/mini_193210vmr7wihtmpchc.jpg (http://www.hostingpics.net/viewer.php?id=193210vmr7wihtmpchc.jpg)

example:
http://www.mediafire.com/?75rcn9zo76oyoar

edit 3: I find how solve the problem with ffdshow used.
I must turn off set interlaced flag in output media type in output section of ffdshow.

If I turn off, video is at 24fps and not 48 fps

If I use mpc-only the problem still exist because there is no the same option.

kasper93
10th November 2012, 12:42
Yes... In my case I have an ATI HD4350; so I installed the 12.6 Legacy Driver.

Be sure that you are using this driver http://support.amd.com/us/kbarticles/Pages/catalystlegacywin8.aspx :) If so, you can report the problem to AMD...

FWIW You could try this driver http://forum.guru3d.com/showthread.php?t=370452

DragonQ
10th November 2012, 13:39
Have you tried updating the individual components? The motherboard support site will list the model of chip used. If it's a generic Realtek model then updating from the Realtek site is fine.
Yeah when I first installed Windows 8 I looked for drivers but the only ones I could find were for Windows 7. Installing those broke audio completely so I reverted to generic Windows drivers. It's a SoundMAX 2000B.

Snowknight26
10th November 2012, 18:15
It's working as intended ikarad. It's supposed to play at 60fps if your GPU is doing IVTC.

ikarad
10th November 2012, 19:54
It's working as intended ikarad. It's supposed to play at 60fps if your GPU is doing IVTC.
I agree with you but I don't use gpu to do ivtc. I use cpu. It's for it that I said there is a problem.

With h264 no dvxa or dvxa decoder, same thing. With ffdshow with mpc-hc, kmplayer, plotplayer h264 no dxva decoder, there is no problem. Video works at 30fps (24 fps if I use inverse telecine filter like decomb). With mpc-hc no dxavdecoder, it's like with I use dxva decoder with 60fps (48 fps if I use inverse telecine filter). It's not normal. It's like framerate was doubled.

Snowknight26
11th November 2012, 00:53
I agree with you but I don't use gpu to do ivtc. I use cpu. It's for it that I said there is a problem.


Your results say otherwise. Your GPU is being used.

manolito
11th November 2012, 13:08
This is a very long thread, so forgive me if this problem has already been discussed...:sly:

Whenever I use MPC-HC (current version 1.6.4.6052 from sourceforge) to play audio CDs whithout any gaps between the tracks (Live recordings), MPC-HC still adds a rather long and annoying pause between the tracks. I already tried all available options for the audio renderer, but this did not help.

Is there anything I could do to correct this problem?

VLC has a similar behavior, but the pauses it inserts are a lot shorter than with MPC-HC. So far I have to use good old WMP 9 for these audio CDs, it handles them flawlessly.

I believe that it is bad enough that there is no real solution for this with the MP3 format (I use a WinAmp plugin as a workaround), but I see no reason why a software player should behave that way with plain audio CDs...:angry:


Thanks for any suggestions,
Cheers
manolito

Reino
11th November 2012, 14:11
Every time the CD track changes, a new DirectShow-graph has to be created. As such I don't think it will ever be possible to play CD tracks gaplessly. You could of course choose a DirectShow filter with the shortest loading(buffering) time between tracks; with MPC-HC's internal CDDA Source Filter + LAV Splitter I experienced the longest loading time. MPC-HC's internal CDDA Source Filter + the standard Wave Parser is a little bit faster. DC-Bass Source Mod has the fastest loading time of these 3 scenarios.

Feature request: MPC-HC being able to handle (embedded) cue-files.
SourceForge Ticket #1673 (http://sourceforge.net/apps/trac/mpc-hc/ticket/1673) resurrected.In light of this ticket I've done some Paint editing:
http://www.ld-host.de/uploads/images/698c820543aee425fa419629903186ac.png
- 1st image: Seekbar covers the entire album length, like it is now (including mka-files). The "Jump To..."-time is the actual offset in the image-file.
- 2nd image: Seekbar covers every separate cue-entry/song, like with playing Audio CDs. The "Jump To..."-time is the cue-entry/song duration.

I think it's important to know what end-users would prefer beforehand. So, what's your opinion? How would you like MPC-HC to handle (embedded) cue-sheets?

wanezhiling
11th November 2012, 14:42
http://xhmikosr.1f0.de/mpc-hc/icl13/
icl13 :eek:

nuhkka
11th November 2012, 16:53
can you guys please fix it where it won't look choppy/low frame when it automatically replays an mpeg2 ota hdtv clip with dxva ?

also sometimes it will just freeze when the clip finishes..

it'll play the videos fine but the problem lies when it replays it automatically

manolito
11th November 2012, 19:07
Every time the CD track changes, a new DirectShow-graph has to be created. As such I don't think it will ever be possible to play CD tracks gaplessly.
But how do you explain then that Windows Media Player 9 (which is certainly based on DirectShow) plays such Audio CDs without any pauses between gapless tracks?


Cheers
manolito

ikarad
11th November 2012, 21:54
Your results say otherwise. Your GPU is being used.

I only turn on software decoder. Then, I can't use gpu.
MPc-hc say that only h264 decoder is used.

If gpu is used, it's a bug because I desactivate dxva decoder and in filter option: I have only decoder software used.

Snowknight26
11th November 2012, 22:08
Whether your decoder is doing software or hardware decoding is irrelevant.

If your decoder is outputting NV12 (which it is), your GPU will deinterlace/IVTC.

Not a bug.

ikarad
11th November 2012, 22:28
Whether your decoder is doing software or hardware decoding is irrelevant.

If your decoder is outputting NV12 (which it is), your GPU will deinterlace/IVTC.

Not a bug.

Why with ffdshow, madvr decoder, plotplayer and kmplayer, there is no problem and gpu won't deinterlace?

There is a problem with mpc-hc. It lacks an option like in madvr decoder or ffdshow decoder.

In potplayer and kmplayaer, by default I have 30 fps and 24fps if I use inevrse telecine filter.

In madvr the option is to turn on "disable automatic source type detection" and turn on force film mode

I have 24fps and not 48fps.

In ffdshow I must turn off set interlaced flag in output media type

I I turn on I have 60fps and 48fps if I use inverse telecine.
If I tunr off I have 30 fps and 24fps if I use inverse telecine.

There is a problem with MPC-HC internal decoder.

kthxbye
12th November 2012, 09:07
I am using Windows 8 Pro x64. After installing the newest icl13 nightly build (on a fresh clean install of Windows 8) the filetypes are not automatically registered. Even when I click those in MPC-HC, Windows' 'Video' still opens every file. There are also no context menus for individual files (folders do have a context menu). Is this a known problem?

Superb
12th November 2012, 10:26
Well I guess the devs should read http://go.microsoft.com/fwlink/?LinkId=228165 for file associations under Windows 8...
EDIT: also http://msdn.microsoft.com/en-us/library/cc144104%28v=vs.85%29.aspx

clsid
12th November 2012, 16:25
Win8 does not allow an app to force itself as default. Users have to choose their preferred app if multiple are installed for a specific file extension.
MPC-HC should nuke this key when it creates file associations:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\[extension]\UserChoice

Reino
12th November 2012, 17:20
But how do you explain then that Windows Media Player 9 (which is certainly based on DirectShow) plays such Audio CDs without any pauses between gapless tracks?I can't install WMP9 here, so I honestly can't tell you.

nevcairiel
12th November 2012, 17:22
Audio CDs dont exactly have files (the .cda files are "fakes" created by Windows), so one could certainly envision a source filter that reads the whole disc and just uses the tracks as chapters or something like that.

LigH
13th November 2012, 08:02
WMP may be based on DirectShow in general. But it can still use even more ancient APIs, like MCI (Media Control Interface, mmsystem.dll) – as used to control CD drives for Audio playback since Windows 3.x already.

A "Red Book" Audio CD is indeed rather one whole gapless media, divided into chapters by its TOC. In times of Windows 9x, there was already an alternative CDFS driver which gave access to CD tracks as virtual WAV files, to copy them from a CD in the Explorer; it will probably have used some compatible Digital Audio interface of Windows.

Lighto
13th November 2012, 12:55
Not having file association working on Windows 8 is a major deal breaker, stuck with VLC/MPC-BE for now........

manolito
13th November 2012, 13:16
WMP may be based on DirectShow in general. But it can still use even more ancient APIs, like MCI (Media Control Interface, mmsystem.dll) – as used to control CD drives for Audio playback since Windows 3.x already.

Thanks for the replies. I did a couple of tests, and my conclusion is that the developers of current software media players simply do not care about plain old Audio CDs anymore...:angry:

Players which do not work (they insert pauses):
MPC-HC, MPC-BE, VLC, WinAmp 5

Player which work (no pauses between gapless tracks):
Windows Media Player 9 (under WinXP SP3)
Feurio CD Player widget
Tiny Player by Petr Laštovicka (at sourceforge)
Ancient WinAmp 2.9 (under Win98 SE)

My favorite software for Audio CDs is Tiny Player right now. As an audio renderer it can either use its built-in renderer, or you can set it up to use the default DirectShow renderer (or your specific sound card). In all cases it does play Live Audio CDs correctly.


Cheers
manolito

LigH
13th November 2012, 15:05
The MCI commands only make the drive play the CD. The tracks may not even have to be sampled if the soundcard is connected to the drive with an Audio CD cable (means, the played audio would not even pass the ATA/SCSI bus and the CPU). If the sound is used in a visualization window, it may be sampled back from the soundcard.

Only if the drive is not directly connected to the soundcard, the CD track would have to be "grabbed" (digitally extracted, like e.g. CDex or EAC would do) prior to playing it. In such a case, gaps may occur.

manolito
13th November 2012, 15:48
Only if the drive is not directly connected to the soundcard, the CD track would have to be "grabbed" (digitally extracted, like e.g. CDex or EAC would do) prior to playing it. In such a case, gaps may occur.

My CD- and DVD-drives are not connected to the soundcard at all, digital audio extraction is used exclusively.

One interesting thing about the different behavior of the two WinAmp versions:

While the current version 5 (which misbehaves) uses its own routines for DAE, the ancient version 2.9 can by itself only play audio CDs with an analog connection of the drive with the soundcard. Since my drives do not have such a connection I had to use the CD-Reader plugin by copah. And in this configuration it works perfectly, i.e. there are no audible pauses between tracks for Audio CDs containing Live recordings. Strange...


Cheers
manolito

jos99
13th November 2012, 17:59
Thanks for the replies. I did a couple of tests, and my conclusion is that the developers of current software media players simply do not care about plain old Audio CDs anymore...:angry:

Players which do not work (they insert pauses):
MPC-HC, MPC-BE, VLC, WinAmp 5

Player which work (no pauses between gapless tracks):
Windows Media Player 9 (under WinXP SP3)
Feurio CD Player widget
Tiny Player by Petr Laštovicka (at sourceforge)
Ancient WinAmp 2.9 (under Win98 SE)

My favorite software for Audio CDs is Tiny Player right now. As an audio renderer it can either use its built-in renderer, or you can set it up to use the default DirectShow renderer (or your specific sound card). In all cases it does play Live Audio CDs correctly.


Cheers
manolito
You missed foobar2000, very customisable player:)

http://www.foobar2000.org/

manolito
13th November 2012, 18:19
Thanks jos99 for the hint...:)

I have heard good things about foobar2000, but frankly this program looks way too powerful and way too customizable to me. All I want is a player which is simple, fast, lightweight and handles anythig I throw at it. And it should come with built-in source filters for all audio and video formats.

MPC-HC comes pretty close to these requirements, and the only reason I have VLC installed is that some other software requires it.

On the foobar website I found a very informative link to a Hydrogenaudio page about gapless playback:
http://wiki.hydrogenaudio.org/index.php?title=Gapless
I particularly like this quote :
There are two main reasons why gaps occur during playback: compression scheme artifacts and poorly designed playback systems.

Since in this case we are talking about uncomressed PCM material, the second reason applies to MPC-HC and VLC.
What a shame...:devil:


Cheers
manolito

nevcairiel
13th November 2012, 18:34
MPC-HC is a DirectShow video player, it was never designed for gapless playback (or heck music playback in general), so you're trying to use it as something that its not, so rough edges can be expected. :p

manolito
13th November 2012, 18:53
MPC-HC is a DirectShow video player, it was never designed for gapless playback (or heck music playback in general),

Where do you have that from? The MPC-HC homepage at sourceforge says otherwise:
MPC-HC is an extremely light-weight media player for Windows.
The player supports all common video and audio file formats available for playback.


Cheers
manolito

pirlouy
13th November 2012, 19:14
Because 95% (at least) people use MPC as a video player.
You don't have the same requirements between a video player and an audio player (especially GUI).

Foobar2000 is the reference for audio player. Install it and it will surely handle anything you through at it (if not, just add a plugin). UI modification is a bit complicated, but there's a good chance you can obtain what you had in minds.

manolito
13th November 2012, 19:29
Because 95% (at least) people use MPC as a video player.

Can you back that up with any statistical data? I only refer to what the developers claim themselves about their software on their website.


Cheers
manolito

the_weirdo
13th November 2012, 19:49
Where do you have that from? The MPC-HC homepage at sourceforge says otherwise:
MPC-HC is an extremely light-weight media player for Windows.
The player supports all common video and audio file formats available for playback.


First, being a media player doesn't mean it must support all kind of media formats. So MPC-HC, foobar2000, Winamp... they're all media players. Secondly, just because MPC-HC supports various audio file formats doesn't imply that it can function as a good music player.

Keiyakusha
13th November 2012, 20:07
manolito
Think of it as side effect derived from video playback support. Audio playback support is very limited. You shouldn't be using it for playing audio. And if you do use it - don't complain that it lacks something. It never meant to be audio player. What devs claim is true, it supports audio. You can play back some single audio file. If you want more audio-only features or existing features implemented in a better way - get some audio player.

Edit: BTW I can load webpages from some audio players, no one yet claimed them to be browsers or recommended as ones, because their browsing support is nothing compared to full-featured browser. Never heard that photoshop is a video editor, yet it have limited support for editing video. In fact photoshop can play back single audio tracks too. I wonder what adobe will answer if I'll request gapless playback of audioCD's there.

DragonQ
13th November 2012, 23:18
If you want a dedicated audio player, Winamp and Foobar are very popular. I use the latter myself.

dansrfe
14th November 2012, 05:11
Wait, what's wrong with playing music with MPC-HC and LAV Filters? MPC-HC has a playlist option too. Albeit, not that glamorous but it works well.

the_weirdo
14th November 2012, 05:37
Wait, what's wrong with playing music with MPC-HC and LAV Filters? MPC-HC has a playlist option too. Albeit, not that glamorous but it works well.

Nothing is wrong with playing music with MPC-HC, of course. If that's what you like, go ahead. But you cannot expect it to work as a dedicated audio/music player. That's it.

LigH
14th November 2012, 08:20
Where do you have that from? The MPC-HC homepage at sourceforge says otherwise:

A CD track is not an "audio file". Not even a whole CD is an "audio file". The virtual CDA "files" are only a logical representation of the TOC entries of a Red Book Audio CD in the Windows Explorer (as virtual as the "Control Center" which appears like a folder).

Due to a lack of additional error detection/correction codes present in data tracks (CD audio uses 2352 content bytes per sector, files in data tracks only 2048 content bytes per sector - the rest are EDC/ECC codes here), reading CD audio is more sensitive, unreliable. Therefore, if a media player plays one track, stops, seeks again to the next track, and starts playing it after a while, there will be an audible gap because finding the start sector with the optical system will take its time, a lot more time than seeking on a harddisk. Gaplessly playing an Audio CD requires not handling tracks like individual media files. Unfortunately, MPC-HC does handle playlist entries individually, it does not pre-read into the next entry while still playing the current.

manolito
14th November 2012, 10:31
A CD track is not an "audio file". Not even a whole CD is an "audio file". The virtual CDA "files" are only a logical representation of the TOC entries of a Red Book Audio CD in the Windows Explorer (as virtual as the "Control Center" which appears like a folder).

I know all that, I've been around for a while...:)
But MPC-HC certainly has the option "Open Disc -> Audio CD", so it is designed to play Audio CDs. Period. And a player which is designed to play Audio CDs should be able to play them correctly, i.e. not insert pauses between tracks when the CD was mastered to play these tracks gaplessly. If the player cannot do this then it is due to a poorly designed playback system.
And this capability is certainly not a far out or uncommon or unusual feature, it is a basic requirement for an Audio CD player.

I know that people today do not listen to complete albums any more, and more and more people do not even own Audio CDs. So I understand that the developers of todays player software do not have much incentive to implement this capability. OTOH it sure is no rocket science to implement this, it has been done many times (see Tiny Player).

I believe it is time to put an end to this discussion. I found a solution which works nicely for me - Tiny Player turned out to be a capable video player, too, so it is my default media player now...



Cheers
manolito

kthxbye
14th November 2012, 11:21
Not having file association working on Windows 8 is a major deal breaker, stuck with VLC/MPC-BE for now........

Well it works, you'll just have to set each filetype manually. It's done in a minute, since I only play .mkv, .mp4, .avi or .wmv these days anymore.

Reino
14th November 2012, 23:00
I know that people today do not listen to complete albums any more:confused:

Aleksoid1978
14th November 2012, 23:43
Well it works, you'll just have to set each filetype manually. It's done in a minute, since I only play .mkv, .mp4, .avi or .wmv these days anymore.

But it should be automatic :)

khagaroth
15th November 2012, 00:01
But it should be automatic :)Not possible. Microsoft simply disabled this in W8, no program can set itself as default programatically, the user has to do it manually.

DragonQ
15th November 2012, 00:24
IIRC a program can set itself as default but then the user has to essentially confirm this the first time a file of that type is opened.

Aleksoid1978
15th November 2012, 02:52
Not possible. Microsoft simply disabled this in W8, no program can set itself as default programatically, the user has to do it manually.

But - see how it done in MPC-BE
http://www.mediafire.com/?icc50r70d2emcfz

LigH
15th November 2012, 08:17
If there is one method to do it, there is one piece of code which does it. Microsoft may have made it more complex and "secret", so that hardly any other developer outside Microsoft knows how it has to be done. But at least one inside Microsoft knows how to do it, because it can be done at least in one way supported by Microsoft's OS functions. "The user has to do it manually" doesn't mean to patch the registry with a hex editor, at least, not even to use a Registry editor; Microsoft wouldn't trust the average user to be able, there have to be complete routines doing the whole required sequence, even if that involves the user confirming a dialog...

Yoshi8765
15th November 2012, 09:18
@ Yoshi8765:

Do you know the difference between "the DVD Video standard" and "an MKV file burned onto a data DVD±R"?

If the DVD contains an MKV file which you burned in your own PC using a DVD±RW drive, AnyDVD is not used at all. In this case it doesn't matter if AnyDVD is installed or not.

AnyDVD is only used if you have an industrially produced DVD (commercial disk manufacturing, mastered and replicated, not burned) containing a "VIDEO_TS" directory with VOB and IFO files. Commercial "DVD Video" media may be encrypted in a way that AnyDVD may circumvent this encryption.

Apologies for abandoning the thread for a while...

Yes, I know that DVDs are "VIDEO_TS directories with VOB, IFO, etc....
When I said "burned DVD" or "burned movie," this is what I meant, not an "mkv file in a DVD disc."
I am making a DVD movie. By that, I mean a disc that will play in a DVD player, not a DVD disc with an .mkv file burned inside it.
The source for making the DVD is an .mkv file. I am taking the .mkv file, then using convertxtodvd to first encode the .mkv into proper DVD files (VIDEO_TS with VOB files, etc...) and then, burning the encoded files onto a DVD disc. This disc plays on a DVD player.
I am making multiple DVDs this way for personal use.
My question is this: How could a DVD made by myself have encryption on it? I am making the DVD, it shouldn't have any.
Does this make sense?

LigH
15th November 2012, 09:27
That's what I'm talking about for weeks now... ;)

You made it. You burned it. Burned DVDs don't support encryption. You cannot have burned an encrypted DVD. Therefore, AnyDVD cannot be of any help – because there is neither encryption nor IFO corruption it has to circumvent.

Yoshi8765
15th November 2012, 09:29
That's what I'm talking about for weeks now... ;)

You made it. You burned it. Burned DVDs don't support encryption. You cannot have burned an encrypted DVD. Therefore, AnyDVD cannot be of any help – because there is neither encryption nor IFO corruption it has to circumvent.

Ah... I see.
But then, what could be my problem?

Armada
16th November 2012, 21:44
The Windows 8 file association problem is known, we will address the problem soon.

betaking
17th November 2012, 12:14
S.Chinese update
http://www.mediafire.com/?5b45ly14cpubej1

Lincoln Burrows
17th November 2012, 20:36
I am trying to save MPC settings by selecting save INI file but everytime I open MPC-HC that setting is unchecked. How do I fix that?

I am using Windows 8, 32 bit, final version.

LigH
17th November 2012, 20:54
Saving settings to an INI file is extremely unrecommended. It wastes a lot of time. Furthermore, it is possible that the application doesn't have write-file permissions in the Program Files area if not executed as administrator...

Lincoln Burrows
17th November 2012, 20:59
The idea was to export such settings to Windows XP, installed in the same computer. I am installing MPC-HC again in this Windows version.

Furthermore, it is possible that the application doesn't have write-file permissions in the Program Files area if not executed as administrator...Thank you, now it's working.

That's a really annoying thing in Windows 8.

DragonQ
18th November 2012, 14:41
Thank you, now it's working.

That's a really annoying thing in Windows 8.
Programs shouldn't have write permissions to the Program Files folder. This has been the case since Vista.

Armada
18th November 2012, 15:55
The idea was to export such settings to Windows XP, installed in the same computer. I am installing MPC-HC again in this Windows version.

Thank you, now it's working.

That's a really annoying thing in Windows 8.
You should use the Export function in the Miscellaneous options for that.

Octo-puss
18th November 2012, 23:09
Saving settings to an INI file is extremely unrecommended. It wastes a lot of time. Furthermore, it is possible that the application doesn't have write-file permissions in the Program Files area if not executed as administrator...
I assume you mean under Win8, or are you talking in general?
Considering the portability of MPC-HC is one of the things I like about it the most, saving settings to a file is extremely important and useful feature to me.
What do you mean by "wastes lot of time"?

LigH
19th November 2012, 10:17
I mean it in general. Even under Windows XP, writing such a long and complex INI file can take several seconds, I know a PC where it took about 20. So do you want to wait each time after closing MPC-HC, before you can start another instance for the next media file? Maybe activate writing the INI file once; but don't keep it enabled!

And since Vista, the regular "Program Files" directory branch is protected by Windows in a way that only administrative user accounts have write permission there, to avoid the installation of "potentially unwanted programs" (PUPs) there. If you want to use INI files regularly, consider installing MPC-HC outside this directory branch.

manolito
19th November 2012, 13:17
I mean it in general. Even under Windows XP, writing such a long and complex INI file can take several seconds, I know a PC where it took about 20. So do you want to wait each time after closing MPC-HC, before you can start another instance for the next media file? Maybe activate writing the INI file once; but don't keep it enabled!
On my machine (WinXP SP3) the MPC-HC INI file has a size of 32 KB. This PC where you experienced a saving time of 20 sec for this kind of file certainly has some serious problems... Whenever I close MPC-HC (and I do have an extremely slow computer), I cannot feel any delay caused by saving the INI file.

And since Vista, the regular "Program Files" directory branch is protected by Windows in a way that only administrative user accounts have write permission there, to avoid the installation of "potentially unwanted programs" (PUPs) there. If you want to use INI files regularly, consider installing MPC-HC outside this directory branch.
You can call me hopelessly nostalgic, but I still curse Microsoft for creating this install / uninstall mess. In my view any software should not need a specific installation process. Just extracting the archive to a folder should be enough. All settings for this software should be saved in its own folder. If the software needs specific versions of system DLLs then these DLLs should also be stored in the software folder so Windows will ignore another DLL with the same name which might reside in the system32 folder. Uninstalling would be as simple as deleting a folder.

Have you tried uninstalling Antivirus software or maybe Acronis True Image recently? You will be lucky if your machine is still half way usable after this uninstall.

Luckily there still is software which works like I pointed out. Mostly it is stuff which has been ported from Linux, but I also remember some other software where the author proudly made a point in the readme that his software needs no installation, will not screw up the registry and will not modify any global operating system files or settings.


Alright, enough ranting...:devil:

Cheers
manolito

Octo-puss
19th November 2012, 14:13
I wouldn't call 64kB ( in my case) file huge, and I woudln't call a text file complex either :P

v0lt
19th November 2012, 15:46
Improving Audio Switcher.
mpc-hc_6230.x86_AudioSwitcher_1.7z (http://www.mediafire.com/?22p1efce1c70b1h)

(there are some problems when using ffdshow)

http://s60.radikal.ru/i168/1211/f4/a323f22c5a0ft.jpg (http://s60.radikal.ru/i168/1211/f4/a323f22c5a0f.png) http://s017.radikal.ru/i412/1211/29/424583443690t.jpg (http://s017.radikal.ru/i412/1211/29/424583443690.png)

nevcairiel
19th November 2012, 15:50
Does that work in combination with external audio files?

v0lt
19th November 2012, 17:07
Does that work in combination with external audio files?
Yes, it works.

LigH
20th November 2012, 08:00
@ manolito:

It is the last active process of MPC-HC which already closed the window, but remains in memory until the INI is written. This delays the next MPC-HC process from appearing and playing the video until the previous one finally quit. You will notice that probably only when you let a task manager run in parallel and watch the process list. Writing INI files is rather inefficient, it feels as if the file is re-parsed for each section being added or changed. At least that was the case when I had this option enabled, that was certainly years ago. Could be that MPC-HC changed the code to create the INI (e.g. buffered writing a simple text file, instead of using Windows' INIFile functions).

Snowknight26
20th November 2012, 14:55
At least that was the case when I had this option enabled, that was certainly years ago.

MPC-HC's INI writing is still terribly inefficient. If anything was changed it was negligible.

madshi
21st November 2012, 16:22
Just to make sure it's not overlooked: Here's a patch to make custom shaders work with the latest madVR build:

https://sourceforge.net/apps/trac/mpc-hc/ticket/2739

vBm
21st November 2012, 23:05
Just to inform everyone else, being that madshi already knows xD.

Patch has landed at 983e8d4bbb8401c9e265465788481e5d509d15f6 (https://github.com/mpc-hc/mpc-hc/commit/983e8d4bbb8401c9e265465788481e5d509d15f6).

Wait another ~90 mins to get new nightly with that patch.

Aleksoid1978
22nd November 2012, 05:25
2 latest ffmpeg update broken VC1-I DXVA decode and MPEG2 with second field DXVA decode :)

madshi
22nd November 2012, 08:20
Just to inform everyone else, being that madshi already knows xD.

Patch has landed at 983e8d4bbb8401c9e265465788481e5d509d15f6 (https://github.com/mpc-hc/mpc-hc/commit/983e8d4bbb8401c9e265465788481e5d509d15f6).

Wait another ~90 mins to get new nightly with that patch.
Thanks... :)

Armada
22nd November 2012, 13:17
2 latest ffmpeg update broken VC1-I DXVA decode and MPEG2 with second field DXVA decode :)
I've had no problem with VC1-I DXVA or MPEG2 bottom-field first DXVA with the latest nightly. Could you upload samples of where it goes wrong so we can reproduce it?

vBm
22nd November 2012, 13:23
No problems for VC1-I DXVA here either.

Aleksoid1978
22nd November 2012, 13:54
Here - http://www.mediafire.com/?f74o6i90f9zap

v0lt
24th November 2012, 08:40
MPC-HC v1.6.5.6244 (http://www.mediafire.com/?xfgh33iws56bh)
AudioSwitcher: can control the MPEGSplitter, LAV Splitter and others.

Armada
24th November 2012, 11:15
Here - http://www.mediafire.com/?f74o6i90f9zap
Thank you for the samples, they indeed have problems. It's a regression from version 1.6.4.6052 which is the only stable version where these samples work, though FirstField.mpg seems to have problems in all versions.

Aleksoid1978
24th November 2012, 13:13
Thank you for the samples, they indeed have problems. It's a regression from version 1.6.4.6052 which is the only stable version where these samples work, though FirstField.mpg seems to have problems in all versions.

FirstField.mpg - work fine after i made support DXVA MPEG2 decoding mpeg2 stream like this.

mindbomb
24th November 2012, 14:59
Hey, I was wondering if there was anything I could do about the size of image based subtitles with the subtitle renderer in mpc hc?

clsid
24th November 2012, 17:16
@v0lt

Bug:
Get a file with multiple embedded audio streams. Put an audio file with same name in the same folder. MPC-HC will then load that audio file as a dub. Play>Audio will correctly show all embedded plus the external audio track. The bug is that Navigate>AudioLanguage only shows the external audio track.

Feature request:
Play>Audio should show all embedded audio tracks even when the internal stream switcher is disabled.
Listing the external one (if any) is not needed in this case, since that one can't be deselected anyway with stream switcher disabled.

Feature request:
Play>Subtitles should show both external and embedded subtitle tracks. (since most people don't know about the options in the Navigate menu)

v0lt
24th November 2012, 20:20
@clsid
Bug:
Get a file with multiple embedded audio streams. Put an audio file with same name in the same folder. MPC-HC will then load that audio file as a dub. Play>Audio will correctly show all embedded plus the external audio track. The bug is that Navigate>AudioLanguage only shows the external audio track.
I think we should leave only one choice of tracks. Something needs to be removed.

Feature request:
Play>Audio should show all embedded audio tracks even when the internal stream switcher is disabled.
Listing the external one (if any) is not needed in this case, since that one can't be deselected anyway with stream switcher disabled.
Audio Switcher need to switch. Why do we need a list where not select anything? I think the audio switch must be enabled at all times.

kasper93
24th November 2012, 20:43
Yeah, I would like to see that "fixed" too :) Here is the ticket https://sourceforge.net/apps/trac/mpc-hc/ticket/1394 and here https://sourceforge.net/apps/trac/mpc-hc/changeset/4235 is reverted Aleksoid's attempt to improve that. There were problem with external track when using LAV splitter IIRC.



Bug:
Get a file with multiple embedded audio streams. Put an audio file with same name in the same folder. MPC-HC will then load that audio file as a dub. Play>Audio will correctly show all embedded plus the external audio track. The bug is that Navigate>AudioLanguage only shows the external audio track.

I guess you test mkv file. MKV splitter(internal) add everything audio/subtitles to play menu (or maybe only subtitles...). And external track are also there. For any other splitter internal track are added to navigate menu, and only current track is shown in play menu and all external track are also in play menu.

We should leave one track selection dialog. For example:
embedded streams
/separator/
external streams (if any)
Of course separate menus for audio and subtitles.

clsid
24th November 2012, 21:47
I think we should leave only one choice of tracks. Something needs to be removed.

Audio Switcher need to switch. Why do we need a list where not select anything? I think the audio switch must be enabled at all times.
Yes, one place would be enough.

The audio switcher is not needed when using LAV or Haali splitter.

kasper93
24th November 2012, 22:02
The audio switcher is not needed when using LAV or Haali splitter.
It is needed for external tracks...

clsid
24th November 2012, 22:24
Yes, but not for embedded tracks. My reply was to v0lt who claimed it was always needed.

v0lt
24th November 2012, 23:00
I think the audio switcher must be enabled at all times. Why disable it?

If there is no sound processing (normalize, boost, ...), audio switcher only copies the data.

clsid
24th November 2012, 23:13
People may choose to disable it because they don't need it, and avoid that data copy.

The point is that Play>Audio should also show the tracks from IAMStreamSelect when the audio switcher is disabled. That functionality does not depend on the switcher, so it should be irrelevant whether it is enabled or not.

betaking
25th November 2012, 06:55
S.Chinese update
http://www.mediafire.com/?w8pu9xtalt2ezk9

73ChargerFan
25th November 2012, 09:41
On my machine (WinXP SP3) the MPC-HC INI file has a size of 32 KB.
MPC-HC's ini files are wacko oversized - they should be 10% that size.

I wouldn't call 64kB ( in my case) file huge, and I woudln't call a text file complex either :P
Is this a some scary power of two implementation?

madshi
25th November 2012, 12:04
@devs:

Could you please visit this thread (discussion about custom pixel shader "specs") and post your opinion:

http://forum.doom9.org/showthread.php?t=166548

Thanks!

hayan
25th November 2012, 14:54
play video file, Display Stats(Ctrl+J), plays next video file (PgDn or drag file), no response in 10 sec.

HD video file (High probability)
SD video file (Low probability)

Affect Version: Rev 48xx → 4902 (1.6.2 stable) → 5190 (lastest)

MPC-HC + 1080P + next video file
http://thumbsnap.com/i/tDLenmjS.pngProcess Monitor

MPC-HC + 1080P + Ctrl+J + next video file
http://thumbsnap.com/i/i2XNAXdQ.pngProcess Monitor

tasi
25th November 2012, 15:21
hello

I have the following problem maybe bug
when I play a avi file with mp3 audio,
it shuttering.
After testing I found that the problem is
when audio is mp3 with constant bitrate
and sample rate different of 48000.

Also when I disable all filters from player leaving splitters
MPC-HC try to play audio with default MP3
codec of windows although I have LAV filters
enable, and then it freeze in first frame,
but player doesn't crash, you can close it.
with all filters disabling including splitters
play normally with LAV filters

Aleksoid1978
26th November 2012, 02:41
hello

I have the following problem maybe bug
when I play a avi file with mp3 audio,
it shuttering.
After testing I found that the problem is
when audio is mp3 with constant bitrate
and sample rate different of 48000.

Also when I disable all filters from player leaving splitters
MPC-HC try to play audio with default MP3
codec of windows although I have LAV filters
enable, and then it freeze in first frame,
but player doesn't crash, you can close it.
with all filters disabling including splitters
play normally with LAV filters

Upload a sample of .avi like this for test.

Pomegranate
26th November 2012, 16:02
Hi, I have a simple cosmetic request.

When using LAV Video Decoder, is it possible to have the status bar show "Playing [CUVID]" or "Playing [QuickSync]" if either those hardware acceleration methods is being used by the LAV video decoder? It already shows DXVA, even when using external filters, Like Cyberlink's video decoder, so maybe this can be done?

tasi
26th November 2012, 17:59
Upload a sample of .avi like this for test.

here is a sample
http://www.mediafire.com/?9etgci76v0mf3v5
i don't know if is good.

with avi splitter you hear the shutter.
without play with lav splitter and has no problem.

in the sample with avi splitter and all decoder filters of mpchc disabled doesn't play audio.
in "bug" file freeze in 0:00 but not crash.

after search the file i found that audio is actually mp2 audio file but somehow in avi appears as mp3,
so i produce this sample.

So the bug is in the avi file, its not a normal file.

v0lt
26th November 2012, 19:56
here is a sample
http://www.mediafire.com/?9etgci76v0mf3v5
i don't know if is good.
MPC AVI Splitter - bad sound
AVI Splitter (system) - bad sound
VirtualDub - no sound
LAV Splitter - no problem (wtf?)

1. Inside MP2 audio marked as MP3.
2. AVI does not support MP2 audio.
File is broken.
LAV Splitter is broken too. :)

nevcairiel
26th November 2012, 20:00
Playing a file properly is "broken" now? :p

filler56789
26th November 2012, 20:54
1. Inside MP2 audio marked as MP3.

Surely that's a borked .AVI.

2. AVI does not support MP2 audio.

Don't ever let Alexander Noe hear that. :sly:
BTW, I can even store RealAudio ATRAC3 :devil: in AVI @48kHz. :D

LigH
27th November 2012, 08:36
Oh yes, AVI does support MP2. Technically. Easily. AVI likes audio streams with a constant frame size.

There are just so few ACM codecs or DS decoders recognizing and supporting the 2CC 0x0050 for MPEG1 Audio Layer 1 and 2 (Layer 3 has 0x0055). I remember there were commercial MP1/MP2 ACM codecs by QDesign; they have probably no use today.

Sony ATRAC3 has 2CC 0x0270; its ACM codec (with rather low quality) has been traveling through the web as well...

filler56789
27th November 2012, 16:25
Correct. However no one needs ACM for playing MP2 or ATRAC3 stored in AVI, right?
Besides, when I said "RealAudio ATRAC3", I didn't mean that low-quality ACM encoder, which cannot go above 132kbps, I was talking about RealProducer 8, which can use up to 352kbps. And even though the encoder doesn't support other sampling frequencies than 44.1kHz, one may apply a couple of workarounds in order to get proper playback @48kHz.

Now, going back to the topic, ... :)

dansrfe
29th November 2012, 05:01
Bug report:

When entering: 03:08:43.176 into the "Go To..." window it goes to: 00:08:47.159 instead. Also when dragging window to different screen the subtitles become stretched until I resize a little bit to fix the aspect ratio of the subtitles.

Thanks.

Lebowsky
29th November 2012, 19:27
Bug report:
in the last official build, when a video is deoced using DXVA and the Overlay Mixer (I'm on XP), the little [DXVA] text does not appear in the status bar, although DXVA is used (confirmed by looking under Play->Filters->MPC Video Decoder). It appears in the status bar when using a VMR renderer.

betaking
30th November 2012, 07:20
S.Chinese update
http://www.mediafire.com/?c0cwd1u8xlh77aa

vBm
1st December 2012, 08:12
S.Chinese update
http://www.mediafire.com/?c0cwd1u8xlh77aa

Thanks. Landed at 2fcb2bbac7 (https://github.com/mpc-hc/mpc-hc/commit/2fcb2bbac74b788cf9902b5ec0e7766fd5ad39ba)

v0lt
1st December 2012, 12:05
Audio switch has a serious bug. It loses part of the data, if data is large. It crash on large data if processing is enabled.

Aleksoid1978
1st December 2012, 12:57
Audio switch has a serious bug. It loses part of the data, if data is large. It crash on large data if processing is enabled.

Fix this :)

betaking
1st December 2012, 13:47
S.Chinese update
http://www.mediafire.com/?l39f79wuy625xmv

v0lt
1st December 2012, 15:28
@Aleksoid1978
Fixed in 6272. Look here (https://github.com/mpc-hc/mpc-hc/commit/eba3aa1951b5fa11e951f30116b6ec8cc6c6ed63).

betaking
2nd December 2012, 07:24
a2998fe81e Updated Traditional Chinese translation. :p
Should be Updated Simplified Chinese translation. :D

vBm
2nd December 2012, 13:00
a2998fe81e Updated Traditional Chinese translation. :p
Should be Updated Simplified Chinese translation. :D

Yeah, silly mistake at commit log only :P
Sorry about that.

Reino
2nd December 2012, 19:28
Is there any way to lock the position (aspect ratio) of PGS subtitles in MPC-HC?
The subtitle's position while playing a 1280x720 video at 100% is perfectly fine, but the moment you go full-screen, the subtitle layer gets stretched over the entire desktop. And in my case the stretching is especially noticeable, because I'm using a 4:3 monitor.

Joniii
3rd December 2012, 21:26
Is there anything that can be done about the REW/FWD? On fastest (4x) it's really slow, or is there some limitation on why it is left like that?

dansrfe
3rd December 2012, 21:45
Is there a way to override PGS subtitle positioning? The subs go over the video portion when the aspect of the file is 2:35:1 and I would like it to go on top of the black bars or if the file has been cropped and encoded then it should position relative to the frame and be positioned inside the black bars when the video goes fullscreen.

Joniii
3rd December 2012, 23:45
Wouldn't this be possible to do and quite easy to code.

Option to automatically change display refresh rate to match content when MPC-HC goes full screen, and back to normal when it exits full screen?

Atleast it's easy to write an app to check current refresh rate, supported refresh rates and make it switch when you want but is there some limitation why this is not on MPC-HC yet? I think it would be an awesome feature to watch Blu-rays at 24p.

Joniii
4th December 2012, 09:19
Is MPC-HC still actively developed or just bugfixes?

ryrynz
4th December 2012, 11:13
Still actively developed but it is mostly bug fixes and minor changes at the moment.

judelaw
4th December 2012, 11:30
Wouldn't this be possible to do and quite easy to code.

Option to automatically change display refresh rate to match content when MPC-HC goes full screen, and back to normal when it exits full screen?

Atleast it's easy to write an app to check current refresh rate, supported refresh rates and make it switch when you want but is there some limitation why this is not on MPC-HC yet? I think it would be an awesome feature to watch Blu-rays at 24p.

http://jpegshare.net/thumbs/70/4f/704fc07197244c4376a04f9cf9123ebb.jpg (http://jpegshare.net/70/4f/704fc07197244c4376a04f9cf9123ebb.jpg.html)

Joniii
4th December 2012, 14:11
http://jpegshare.net/thumbs/70/4f/704fc07197244c4376a04f9cf9123ebb.jpg (http://jpegshare.net/70/4f/704fc07197244c4376a04f9cf9123ebb.jpg.html)

Wow, I've been using MPC for years and never noticed that before. Thanks for the info.

Btw, it has the same problem as madVR. If I have another application on background (WMC) that goes automatically full screen when mpc exits from full screen @24p, the display refresh rate is not restored. As if mpc and madvr would still think that mpc is fullscreen and running.

Skibicki
4th December 2012, 19:48
updates in Catalyst 12.11 beta 11
http://support.amd.com/us/kbarticles/Pages/AMDCatalyst1211betadriver.aspx-Resolves no video issue found in Media Player Classic Home Cinema when using full or half floating point processing
-Resolve missing fonts issue in XBMC
-Resolves a sporadic system hang encountered with a single AMD Radeon HD 7000 Series GPU seen on X58 and X79 chipsets.

sneaker_ger
4th December 2012, 20:53
Great, seems to have fixed a madVR DXVA2 decoding seeking issue I was having with the older betas.

/edit:
May be the cause of other problems. Be careful with the 12.11 betas.

jmac698
5th December 2012, 07:17
Is there a guide to using mpc? When I play a dvd it's running at like 8fps. I don't know what's wrong! Even the first time I ran it, it wasn't working well, the motion was bad, and there was ghosting. It's a film dvd, win7, current build.

LigH
5th December 2012, 12:49
Right-click into the running video, look in the "Filters" submenu, check which filters (splitter, decoder, renderer) are used. Tell us about your video related hardware (e.g. graphic card chipset).

jmac698
6th December 2012, 05:01
MPC-HC Tests

Version:
1.6.5.6293 (e624b79)
Specs:
Intel G45 video


Settings 1:
filters:
-splitter MPC MPEG Source

-decoder MPC Video Decoder

-renderer MadVR

Result:
23.95fps, choppy, no dropped frames. video pauses twice a second. Is there any log to show this?

output:
direct3d no video at all

jmac698
6th December 2012, 05:16
I tried every combination on VLC it worked fine, but I keep hearing mpc-hc and madvr is the best so I wanna try it.

madshi
6th December 2012, 09:43
@jmac698, the madVR debug OSD (Ctrl+J) does not report any dropped frames? Try activating "overlay" in the madVR settings. That could help getting a smoother result with your Intel GPU. Does the choppy playback occur with all 23.976p movies? Or just with the one you've been testing with? I'd suggest to test with a Blu-Ray movie, just to be sure that the source is really 23.976p. Also I'd suggest installing LAV Filters because frankly, the built in MPC-HC splitters and decoders aren't all that good (IMHO). I usually recommend to disable them all. Or you can download MPC-HC "lite" (which already has all internal filters removed) from here:

http://xhmikosr.1f0.de/mpc-hc/lite/

FarQueue
6th December 2012, 10:21
Is it possible to disable chapter markers?

THX-UltraII
6th December 2012, 10:23
Maybe this question has been asked a few times before but I cannot find it with the search function:

Does MPC-HC support 3D yet and if not, is someone working on 3D for MPC-HC?

jmac698
6th December 2012, 10:52
ok, I used ctrl-j, it doesn't show dropped frames but present max 5s sometimes says 48ms which could be bad. I'll try lavf

vBm
6th December 2012, 14:58
Is it possible to disable chapter markers?

Yes it is, if you're using nightly (being that stable hasn't been released yet).

Go to Options -> Tweaks -> "Show chapter marks in seek bar" and untick it.

Maybe this question has been asked a few times before but I cannot find it with the search function:

Does MPC-HC support 3D yet and if not, is someone working on 3D for MPC-HC?

No, at the moment there's no 3D support as far as i know, and no one is working on it.

dukestravels07
6th December 2012, 17:26
Does anyone have a recent tutorial for getting dxva working with an older dxva card?

wanezhiling
6th December 2012, 17:45
What's your old video card? and OS?

MPC-HC's default setting is using DXVA, but its DXVA decoders only support bitstream mode (full acceleration), which means your card must support ModeH264(MPEG2/VC1)_VLD.

Post your DXVA Checker info.

betaking
10th December 2012, 07:32
S.Chinese update
http://www.mediafire.com/?5zu9tcj6kyy2l13

vBm
11th December 2012, 00:22
S.Chinese update
http://www.mediafire.com/?5zu9tcj6kyy2l13

Thanks, pushed as 330defbd (https://github.com/mpc-hc/mpc-hc/commit/330defbde8fefcd33c8096bdcffed2cc2d0970ac)

Amour
11th December 2012, 22:05
enhancement request:
could you make all windows stretchable in MPC-HC, especially the Options and Properties ones?
thank you
http://i.imgur.com/MHD9u.png

wozio
12th December 2012, 08:34
Hi,

Does internal MPC MPEG splitter support push filters? I've made some filter basing on UDP source which is pull filter but I have problems with it since splitters doesn't work good with source filters where there is no real known length of the media file.

Any clues how to build graph with such a filter? Just putting it into graph manually or by known protocol extension is enough? How splitter will know what streams to demux and use? From stream? Any way to hint it to not waste time since I know from the server which streams shall I use from stream?

Regards
Piotr

vBm
12th December 2012, 20:53
This thread will be closed in favor of NEW ONE (http://forum.doom9.org/showthread.php?t=166689) of which we're in control. (we can edit first post to add valuable info.)
Swede approved this. Thanks again.