vdpau: implement VDPAU_DUMP option

This commit is contained in:
Christian König 2011-04-16 12:57:45 +02:00
parent c87b83d4b2
commit ffcf287aa2

View file

@ -25,6 +25,8 @@
*
**************************************************************************/
#include <stdio.h>
#include "vdpau_private.h"
#include <vdpau/vdpau.h>
#include <util/u_debug.h>
@ -131,6 +133,8 @@ vlVdpPresentationQueueDisplay(VdpPresentationQueue presentation_queue,
uint32_t clip_height,
VdpTime earliest_presentation_time)
{
static int dump_window = -1;
vlVdpPresentationQueue *pq;
vlVdpOutputSurface *surf;
struct pipe_surface *drawable_surface;
@ -160,6 +164,19 @@ vlVdpPresentationQueueDisplay(VdpPresentationQueue presentation_queue,
vl_contextprivate_get(pq->device->context, drawable_surface)
);
if(dump_window == -1) {
dump_window = debug_get_num_option("VDPAU_DUMP", 0);
}
if(dump_window) {
static unsigned int framenum = 0;
char cmd[256];
sprintf(cmd, "xwd -id %d -out vdpau_frame_%08d.xwd", (int)pq->drawable, ++framenum);
if (system(cmd) != 0)
_debug_printf("[XvMC] Dumping surface %d failed.\n", surface);
}
return VDP_STATUS_OK;
}