Jump to content

ffdshow H.264 decoder with DVBViewer


CiNcH

Recommended Posts

Next step:

Next step is to take this idea to MPC Video Decoder which is also based on ffdshow code but uses the DXVA/DXVA 2.0 capabilities of the graphics unit for decoding H.264 which will lead to a CPU usage going towards zero. My goal is to finally have a replacement for the CyberLink decoder when it comes to DXVA.

 

Does this mean we can hope using ffdshow filters (sharpening, logo-killing etc.) when using hardware decoding ? (by using ffdshow raw after mpc video decoder)

Link to comment
Does this mean we can hope using ffdshow filters (sharpening, logo-killing etc.) when using hardware decoding ? (by using ffdshow raw after mpc video decoder)

When using DXVA it is not possible to read back the raw video data into main memory and thus providing the possibility to perform post processing within CPU. So no, this won't be possible.

 

But it may be possible with future CoreAVC versions (>= 2.0?) taking advantage of the nVIDIA CUDA Video API. With this API it is possible to read back the video.

Edited by CiNcH
Link to comment
When using DXVA it is not possible to read back the raw video data into main memory and thus providing the possibility to perform post processing within CPU. So no, this won't be possible.

 

But it may be possible with future CoreAVC versions (>= 2.0?) taking advantage of the nVIDIA CUDA Video API. With this API it is possible to read back the video.

 

That would be great :biggrin:

 

Let's hope there is a plan for something with ATI's GPGPU technology too (if it also provides an API that allows to read back the video).

According to betaboy on coreavc forum, he wants to support all gpus (but robUx4 said nvidia and ati were reluctant to provide infos on how to use their technologies... so, it may take time to come. Hopefully he said that in Feb 2008. Devs may have more doc available now).

Link to comment

I wouldn't expect to much from it. Both ATi and nVidia don't really want this, as it breaks the trusted video path thing. Unless the data between the video-card/post-processor and post-processor/video-card is encrypted too.

Link to comment

I don't understand, why you need to read the data back... wasn't it the idea to do the post processing on the GPU instead of CPU? So you don't need the decoded data in main memory, but in graphics memory... no need to do a (very slow!!) data read back.

Link to comment

I have got interesting results using ffdshow 2338 (non mt build) - disabling all colorspaces except NV12 in output and setting interlaced flag is allowing me to use hardware deinterlacing and thus doing without the ffdshow deinterlace and resize options - this is allowing me to drop to about 48% CPU usage with BBC HD (1080i h.264 16.2Mbps), which is about a 20% drop over what I was getting with 2307 mt using the ffdshow deinterlace and resize! Apparently normal ffdshow also does multithreading but the method it uses it not quite as efficient as that in the mt builds, but I think the advantage with mt can probably only be seen with tri or quad core CPUs.

Edited by dvbrewer
Link to comment
Apparently normal ffdshow also does multithreading but the method it uses it not quite as efficient as that in the mt builds.

Depends. Non-mt ffdshow performs multithreading on a slice basis, so if the encoder did not use slices... ffmpeg-mt performs multithreading on a frame basis, so it works for all content...

Link to comment
Depends. Non-mt ffdshow performs multithreading on a slice basis, so if the encoder did not use slices... ffmpeg-mt performs multithreading on a frame basis, so it works for all content...

Thanks for the explanation- can you give an example of something that is not encoded using slices? Everything I have tried seems to give less CPU usage using normal ffdshow (vs mt).

Edited by dvbrewer
Link to comment

Well for multi-core CPU's it is better not to watch the total usage but the load on both cores separately. Anixe HD or Astra HD+ are IMHO decoded in one thread.

Link to comment
Well for multi-core CPU's it is better not to watch the total usage but the load on both cores separately. Anixe HD or Astra HD+ are IMHO decoded in one thread.

OK- I use proxexp- is the red line the 2nd core? Is most HDTV encoded in one thread only, therefore it cannot take advantage of multithreading?

Link to comment

I've tried last generic revision from cslid with for livetv with some dvbapp but unfortunately it's too heavy for my dual core operon 175 @2,2 Ghz (only 11 fps).

Next I will try some ts with ffdshow on MPC HC but thing won't go better.

Good results obtained instead with ts with Divx h264 beta3. Really fast.

 

Next step is to take this idea to MPC Video Decoder which is also based on ffdshow code but uses the DXVA/DXVA 2.0 capabilities of the graphics unit for decoding H.264 which will lead to a CPU usage going towards zero. My goal is to finally have a replacement for the CyberLink decoder when it comes to DXVA.

 

I use cyberlink h264 codec (v. 6..... bundled with my dvb-s2 card) but unfortunately on my ATi hd 3850 AGP Hardware acceleration is buggy (goes in a continuos loop of corrupted video of some seconds but the audio goes on) also with nero 8 HD.

By the way is it working on your PC?

Edited by Diego
Link to comment

For h264 channels, can MPC Video Decoder use DXVA under VMR9 ?? Cyberlink's can't do that.

 

I've Vista 32bits SP1 where the only renderer that seems to use DXVA gor h264 files is EVR.

 

I don't like EVR colors (faces too red), VMR9 looks more natural.

 

Thanks.

Edited by ramonchin
Link to comment
For h264 channels, can MPC Video Decoder use DXVA under VMR9 ?? Cyberlink's can't do that.

 

If you use MPC decoder probably you could turn on DXVA. I say probably because some days ago I could turn it on or off, but now (many codec pack installed and unistalled) it is turned on but I can't disable it (instead of seeing the check box, i see the name of my graphic board)

Link to comment
ffmpeg-mt performs multithreading on a frame basis, so it works for all content

 

Hello, maybe the answer is in the thread, but for this technicals my english is.....

 

I installed ffdshow mt (rev 2392) and with yadif deinterlacing and resizing to 1920x1080 i have 100% on one core and almost no work on the other core. Is that normal for mt?

 

Only aktivating a OSD Window creates work on the other core.

Edited by Devastation
Link to comment
If you use MPC decoder probably you could turn on DXVA. I say probably because some days ago I could turn it on or off, but now (many codec pack installed and unistalled) it is turned on but I can't disable it (instead of seeing the check box, i see the name of my graphic board)

 

Are you getting DXVA1 (VMR9) for h264 in Vista??

Link to comment
Are you getting DXVA1 (VMR9) for h264 in Vista??

 

No I use winxp that with .net framework 3 support EVR.

why don't you use evr and change saturation settings?

Have you installed the DX9 onto Vista?

Tonight I see a friend that have vista and ask him if it is possible Then I let you know.

Link to comment
No I use winxp that with .net framework 3 support EVR.

why don't you use evr and change saturation settings?

Have you installed the DX9 onto Vista?

Tonight I see a friend that have vista and ask him if it is possible Then I let you know.

 

Gracias.

Link to comment

It's sure you can install DX9 onto vista also if DX10 are altready isntalled.

It's unsure DX9 are already installed by default on vista system.

So just try to install them with the Microsoft installer, it download the last components you need. ;)

Link to comment
It's sure you can install DX9 onto vista also if DX10 are altready isntalled.

It's unsure DX9 are already installed by default on vista system.

So just try to install them with the Microsoft installer, it download the last components you need. :biggrin:

 

Do you think it will fix this issue? ;)

 

Did you ask your friend about DXVA1 for h264 in Vista?

Link to comment
Do you think it will fix this issue? B)

 

Did you ask your friend about DXVA1 for h264 in Vista?

 

Just try it. This could be a good thing to use DX9 instead of EVR.

As told before, now I see that I can't chech the hw accel in MPC and also my friend have the same problem.

But it could be a problem of the MPC version istalled with some codec pack.

Just try it and then let us know how it goes. :blush:

Link to comment
Just try it. This could be a good thing to use DX9 instead of EVR.

As told before, now I see that I can't chech the hw accel in MPC and also my friend have the same problem.

But it could be a problem of the MPC version istalled with some codec pack.

Just try it and then let us know how it goes. :blush:

 

Checked, only EVR works for DXVA on h264.

 

B)

 

Thanks!

Link to comment
Are you saying MPC now works for h.264 Digital TV?

 

No we' d all like it.

 

to Ramonchin

I managed to make cyberlink Hw accel working with DVBViewer and overlay as render.

But I use the cyberlink codec of my dvb-s card that is a Twinhan.

If I use codec from pvd8 and cyberlink for ati the system freeze and then BSOD

Edited by Diego
Link to comment
No we' d all like it.

QUOTE(dvbrewer @ Dec 5 2008, 02:34) *

Are you saying MPC now works for h.264 Digital T

Diego

MPC works good with DXVA only on recorded h264 ts files. But on some breaks up the video goes on a continuos loop of some seconds. But if there aren't breaks up it goes good.

Edited by Diego
Link to comment
  • 1 year later...
Doesn't work with DVBSource. The DXVA decoder filter lacks Access Unit parsing..

That's a bit of a bummer. I take it DXVA with TV is something pretty hard to do since only Cyberlink/Arcsoft seem to have managed it?

Edited by dvbrewer
Link to comment

Until recently, the whole DXVA thing was pretty much closed. MPC reverse engineered the whole stuff, and then it was opened up by MS. CoreAVC will soon have DXVA. They wanted to add that years ago, but could not. I don't know why only big players got access to the information needed. ffdshow is getting there too now.

 

The problem with open source solutions is that they are all based on ffmpeg, lacking the Access Unit parser. It has only been added for the ffdshow software H.264 decoder so far, see initial post of this thread.

Edited by CiNcH
Link to comment
  • 7 months later...
The problem with open source solutions is that they are all based on ffmpeg, lacking the Access Unit parser. It has only been added for the ffdshow software H.264 decoder so far, see initial post of this thread.

 

As the work has been done for the "classical" ffdshow already, do you think it would be hard to make the same changes for the DXVA version?

Link to comment

As the work has been done for the "classical" ffdshow already, do you think it would be hard to make the same changes for the DXVA version?

But if they did that it would damage a certain commercial H.264 decoder provider that does work with acceleration & TV....

Link to comment

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...