void VDPAUContext::getDecoderCaps() { queryDecoderCaps( VDP_DECODER_PROFILE_MPEG2_MAIN, "MPEG2_MAIN", ProfileMPEG2Main ); queryDecoderCaps( VDP_DECODER_PROFILE_H264_MAIN, "H264_MAIN", ProfileH264Main ); queryDecoderCaps( VDP_DECODER_PROFILE_H264_HIGH, "H264_HIGH", ProfileH264High ); queryDecoderCaps( VDP_DECODER_PROFILE_VC1_MAIN, "VC1_MAIN", ProfileVC1Main ); #ifdef VDP_DECODER_PROFILE_MPEG4_PART2_ASP queryDecoderCaps( VDP_DECODER_PROFILE_MPEG4_PART2_ASP, "MPEG4_ASP", ProfileMPEG4ASP ); #endif }
int main(int argc, char **argv) { /* Parse options */ struct Options o = parse_options(argc, argv); /* Create an X Display */ Display *display = XOpenDisplay(o.display_name); if(!display) { fprintf(stderr,"%s: cannot connect to X server %s\n", argv[0], o.display_name); exit(-1); } int screen = (o.screen == -1) ? DefaultScreen(display) : o.screen; if(screen >= ScreenCount(display)) invalid_argument(argv[0], "screen %d requested but X server only has %d screen%s\n", screen, ScreenCount(display), ScreenCount(display) == 1 ? "" : "s"); printf("display: %s screen: %i\n", o.display_name, screen); /* Create device */ VdpDevice device; VdpGetProcAddress *get_proc_address; VdpStatus rv; rv = vdp_device_create_x11(display, screen, &device, &get_proc_address); if(rv != VDP_STATUS_OK) { fprintf(stderr, "Error creating VDPAU device: %i\n", rv); /* cannot use GetErrorString here */ exit(-1); } VDPDeviceImpl *impl = new VDPDeviceImpl(device, get_proc_address); queryBaseInfo(impl); queryVideoSurface(impl); queryDecoderCaps(impl); queryOutputSurface(impl); queryBitmapSurface(impl); queryVideoMixer(impl); printf("\n"); }