#ifndef vl_mpeg12_decoder_h
#define vl_mpeg12_decoder_h
-#include <pipe/p_video_decoder.h>
+#include "pipe/p_video_decoder.h"
#include "vl_mpeg12_bitstream.h"
#include "vl_zscan.h"
unsigned blocks_per_line;
unsigned num_blocks;
+ unsigned width_in_macroblocks;
+ bool expect_chunked_decode;
enum pipe_format zscan_source_format;
struct pipe_vertex_buffer quads;
struct pipe_vertex_buffer pos;
- struct pipe_vertex_buffer block_num;
void *ves_ycbcr;
void *ves_mv;
struct vl_mc mc_y, mc_c;
void *dsa;
+
+ unsigned current_buffer;
+ struct vl_mpeg12_buffer *dec_buffers[4];
};
struct vl_mpeg12_buffer
{
- struct pipe_video_decode_buffer base;
-
struct vl_vertex_buffer vertex_stream;
- struct pipe_video_buffer *zscan_source;
+ unsigned block_num;
+ unsigned num_ycbcr_blocks[3];
+
+ struct pipe_sampler_view *zscan_source;
struct vl_mpg12_bs bs;
- struct vl_zscan_buffer zscan[VL_MAX_PLANES];
- struct vl_idct_buffer idct[VL_MAX_PLANES];
- struct vl_mc_buffer mc[VL_MAX_PLANES];
+ struct vl_zscan_buffer zscan[VL_NUM_COMPONENTS];
+ struct vl_idct_buffer idct[VL_NUM_COMPONENTS];
+ struct vl_mc_buffer mc[VL_NUM_COMPONENTS];
+
+ struct pipe_transfer *tex_transfer;
+ short *texels;
- struct pipe_transfer *tex_transfer[VL_MAX_PLANES];
- short *texels[VL_MAX_PLANES];
+ struct vl_ycbcr_block *ycbcr_stream[VL_NUM_COMPONENTS];
+ struct vl_motionvector *mv_stream[VL_MAX_REF_FRAMES];
};
/**
enum pipe_video_profile profile,
enum pipe_video_entrypoint entrypoint,
enum pipe_video_chroma_format chroma_format,
- unsigned width, unsigned height);
+ unsigned width, unsigned height, unsigned max_references,
+ bool expect_chunked_decode);
#endif /* vl_mpeg12_decoder_h */