diff options
Diffstat (limited to 'src/gallium/state_trackers/vdpau/decode.c')
-rw-r--r-- | src/gallium/state_trackers/vdpau/decode.c | 39 |
1 files changed, 1 insertions, 38 deletions
diff --git a/src/gallium/state_trackers/vdpau/decode.c b/src/gallium/state_trackers/vdpau/decode.c index e9833b6c4c..7a51196c87 100644 --- a/src/gallium/state_trackers/vdpau/decode.c +++ b/src/gallium/state_trackers/vdpau/decode.c @@ -462,7 +462,7 @@ vlVdpDecoderRender(VdpDecoder decoder, struct pipe_screen *screen; struct pipe_video_decoder *dec; bool buffer_support[2]; - unsigned i, j; + unsigned i; union { struct pipe_picture_desc base; struct pipe_mpeg12_picture_desc mpeg12; @@ -557,43 +557,6 @@ vlVdpDecoderRender(VdpDecoder decoder, return ret; } - // Cleanup start_code (mandatory for some codec) from bitstream buffers - if (u_reduce_video_profile(dec->profile) == PIPE_VIDEO_CODEC_MPEG4_AVC || - u_reduce_video_profile(dec->profile) == PIPE_VIDEO_CODEC_VP8) { - int start_code_found = 0; - - for (i = 0, j = 0; i < bitstream_buffer_count; ++i) { - if (!start_code_found) { - const uint8_t *datab = (const uint8_t *)bitstream_buffers[i].bitstream; - - if ((datab[0] == 0x9D && datab[1] == 0x01 && datab[2] == 0x2A) || - (datab[0] == 0x00 && datab[1] == 0x00 && datab[2] == 0x01)) { - start_code_found = 1; - - if (bitstream_buffers[i].bitstream_bytes != 3) { - buffers[j] = bitstream_buffers[i].bitstream + 3; - sizes[j] = bitstream_buffers[i].bitstream_bytes - 3; - j++; - } - } else { - VDPAU_MSG(VDPAU_TRACE, "[VDPAU] Error : the first data buffer does not contain the mandatory start_code [0x9D012A]\n"); - return VDP_STATUS_ERROR; - } - } else { - buffers[j] = bitstream_buffers[i].bitstream; - sizes[j] = bitstream_buffers[i].bitstream_bytes; - j++; - } - } - - bitstream_buffer_count = j; - } else { - for (i = 0; i < bitstream_buffer_count; ++i) { - buffers[i] = bitstream_buffers[i].bitstream; - sizes[i] = bitstream_buffers[i].bitstream_bytes; - } - } - dec->begin_frame(dec, vlsurf->video_buffer, &desc.base); dec->decode_bitstream(dec, vlsurf->video_buffer, &desc.base, bitstream_buffer_count, buffers, sizes); dec->end_frame(dec, vlsurf->video_buffer, &desc.base); |