vdpau: enable mpeg1 hw decoding, using the exact same code path as mpeg2
authorEmeric <emeric.grange@gmail.com>
Mon, 18 Jul 2011 15:17:25 +0000 (15:17 +0000)
committerChristian König <deathsimple@vodafone.de>
Mon, 25 Jul 2011 17:22:35 +0000 (19:22 +0200)
Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=39307
Signed-off-by: Christian König <deathsimple@vodafone.de>
src/gallium/state_trackers/vdpau/decode.c

index 269c7a4baf8e115ea2377ba80cfcb73c07597e0a..96542f874d98acc1b82afc45f69477a71b9f6f6f 100644 (file)
@@ -161,12 +161,12 @@ vlVdpDecoderGetParameters(VdpDecoder decoder,
 }
 
 static VdpStatus
-vlVdpDecoderRenderMpeg2(struct pipe_video_decoder *decoder,
-                        struct pipe_video_decode_buffer *buffer,
-                        struct pipe_video_buffer *target,
-                        VdpPictureInfoMPEG1Or2 *picture_info,
-                        uint32_t bitstream_buffer_count,
-                        VdpBitstreamBuffer const *bitstream_buffers)
+vlVdpDecoderRenderMpeg12(struct pipe_video_decoder *decoder,
+                         struct pipe_video_decode_buffer *buffer,
+                         struct pipe_video_buffer *target,
+                         VdpPictureInfoMPEG1Or2 *picture_info,
+                         uint32_t bitstream_buffer_count,
+                         VdpBitstreamBuffer const *bitstream_buffers)
 {
    struct pipe_mpeg12_picture_desc picture;
    struct pipe_video_buffer *ref_frames[2];
@@ -254,17 +254,18 @@ vlVdpDecoderRender(VdpDecoder decoder,
       // TODO: Recreate decoder with correct chroma
       return VDP_STATUS_INVALID_CHROMA_TYPE;
 
-   // TODO: Right now only mpeg2 is supported.
+   // TODO: Right now only mpeg 1 & 2 is supported.
    switch (vldecoder->decoder->profile)   {
+   case PIPE_VIDEO_PROFILE_MPEG1:
    case PIPE_VIDEO_PROFILE_MPEG2_SIMPLE:
    case PIPE_VIDEO_PROFILE_MPEG2_MAIN:
       ++vldecoder->cur_buffer;
       vldecoder->cur_buffer %= VL_NUM_DECODE_BUFFERS;
-      return vlVdpDecoderRenderMpeg2(vldecoder->decoder,
-                                     vldecoder->buffer[vldecoder->cur_buffer],
-                                     vlsurf->video_buffer,
-                                     (VdpPictureInfoMPEG1Or2 *)picture_info,
-                                     bitstream_buffer_count,bitstream_buffers);
+      return vlVdpDecoderRenderMpeg12(vldecoder->decoder,
+                                      vldecoder->buffer[vldecoder->cur_buffer],
+                                      vlsurf->video_buffer,
+                                      (VdpPictureInfoMPEG1Or2 *)picture_info,
+                                      bitstream_buffer_count,bitstream_buffers);
       break;
 
    default: