|
|
#1 | |
|
Registered User
|
Do any of the codecs as implemented by VDPAU allow RGB encoding? I need to re-encode movies for playback on VDPAU, but I'd like to keep the 8-bit RGB ones in RGB throughout.
Until a magical way to convert VideoSurfaces to OpenGL textures appears, I'll probably be pulling the pixels back to the CPU side. Thanks, Bruce |
|
|
|
|
|
|
#2 | ||
|
Registered User
Join Date: Feb 2009
Posts: 138
|
Quote:
Quote:
|
||
|
|
|
|
|
#3 | |
|
Registered User
|
Quote:
I'm aware of texture_from_pixmap, but I think sync is hard in that path, and I think it only delivers RGB frames - I need the raw pixels so I can go through the same path as non-VDPAU codecs. Bruce |
|
|
|
|
|
|
#4 | |
|
Registered User
Join Date: Feb 2009
Posts: 138
|
Well, the point is, VideoSurfaces cannot be RGB at the moment anyway...
and yes RGB frames are delivered that way but I think that is what you wanted? |
|
|
|
|
|
|
#5 | |
|
Registered User
|
Quote:
And no, I want native frames - be they yuv or RGB. I'll make my own RGB, as I do with non-VDPAU codecs (using GLSL shaders). Bruce |
|
|
|
|
|
|
#6 | |
|
Registered User
Join Date: Feb 2009
Posts: 138
|
No, I was thinking of VideoSurfaces. The functions to handle these have 'YCbCr' in them which implies that it's YUV only (YCbCr is the technically correct term for YUV). OTOH, ChromaTypes also have RGB. I'm not sure what to think about that.
|
|
|
|
|
|
|
#7 |
|
Registered User
Join Date: Dec 2008
Posts: 173
|
Quoting the doc (http://http.download.nvidia.com/XFre...o_surface.html) :
"A VdpVideoSurface stores YCbCr data ..." |
|
|
|
|
|
#8 | |
|
Registered User
Join Date: Dec 2008
Posts: 173
|
Quote:
#define VDP_CHROMA_TYPE_420 #define VDP_CHROMA_TYPE_422 #define VDP_CHROMA_TYPE_444 Also note that nvidia's decoders only support 4:2:0 |
|
|
|
|
|
|
#9 | |
|
Registered User
|
Quote:
#define VDP_RGBA_FORMAT_B8G8R8A8 I cant' find where it says they only do 4:2:0. Maybe I can re-phrase my question. I am a native English speaker and can operate a web browser (I have also heard of Google). I have read through the current VDPAU API documents as closely as I can. I notice that, although many methods refer primarily to YCbCr (which, being English, I refer to correctly in EBU terms as YUV), the possible formats also refer to RGB types. I notice there is a 4:4:4 chroma sub-sampling type, which of course can refer to RGB or YUV data. So I wonder if, although the main VDPAU rendering path is YCbCr, there is anyone watching the list with *specific knowledge* of whether the VDPAU codecs, as implemented currently, will decode any color spaces other than YCbCr if requested. I understand that, in that case, I would probably only be able to get the raw pixel data back, not pass them through the whole VDPAU pipeline. I have tried looking through MPEG, H.264 and WMV docs, but there's so much information I can be sure I wouldn't have missed it. For instance, I know that H.264 can support YCoCg, but that's rarely mentioned. Thank you, Bruce Wheaton |
|
|
|
|
|
|
#10 |
|
Registered User
|
Ok, having stopped by grumpy, I found the following in the 190.36 read me (please could we add the 'Implementation Limits' section to the API reference?).
VdpVideoSurfaceand VdpDecoderI guess that covers it, thanks. Sometimes it's tough on a list when people try to help but don't quote where the info comes from - sometimes a definitive answer is what people need, and the developers/company reps on this list don't have time to provide specific answers to everyone. I'm going to have to try to be aware of this myself. I got quite the catty smack-down on the decklink list a while back... Bruce |
|
|
|
|
|
#11 |
|
Registered User
Join Date: Dec 2008
Posts: 173
|
Have a look at nvidia's driver README, Appendix-H :
"In all cases, VdpDecoder objects solely support 8-bit 4:2:0 streams, and only support writing to VDP_CHROMA_TYPE_420 surfaces." "The following surface formats and get-/put-bits combinations are supported:
|
|
|
|
|
|
#12 |
|
NVIDIA Corporation
Join Date: Mar 2005
Posts: 2,487
|
It doesn't really belong in the API reference because it's an NVIDIA-specific limitation and the API is designed to work with other vendors' products that may not have these limitations.
|
|
|
|
![]() |
| Thread Tools | |
|
|