* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS BE LIABLE FOR
+ * IN NO EVENT SHALL VMWARE AND/OR ITS SUPPLIERS BE LIABLE FOR
* ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#ifndef vl_mpeg12_decoder_h
#define vl_mpeg12_decoder_h
-#include "pipe/p_video_decoder.h"
+#include "pipe/p_video_codec.h"
+
+#include "util/list.h"
#include "vl_mpeg12_bitstream.h"
#include "vl_zscan.h"
struct vl_mpeg12_decoder
{
- struct pipe_video_decoder base;
+ struct pipe_video_codec base;
+ struct pipe_context *context;
unsigned chroma_width, chroma_height;
void *dsa;
- struct vl_mpeg12_buffer *current_buffer;
- struct pipe_mpeg12_picture_desc picture_desc;
- uint8_t intra_matrix[64];
- uint8_t non_intra_matrix[64];
- struct pipe_sampler_view *ref_frames[VL_MAX_REF_FRAMES][VL_MAX_PLANES];
- struct pipe_surface *target_surfaces[VL_MAX_PLANES];
+ unsigned current_buffer;
+ struct vl_mpeg12_buffer *dec_buffers[4];
+
+ struct list_head buffer_privates;
};
struct vl_mpeg12_buffer
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 vl_ycbcr_block *ycbcr_stream[VL_MAX_PLANES];
+ struct vl_ycbcr_block *ycbcr_stream[VL_NUM_COMPONENTS];
struct vl_motionvector *mv_stream[VL_MAX_REF_FRAMES];
};
/**
* creates a shader based mpeg12 decoder
*/
-struct pipe_video_decoder *
+struct pipe_video_codec *
vl_create_mpeg12_decoder(struct pipe_context *pipe,
- enum pipe_video_profile profile,
- enum pipe_video_entrypoint entrypoint,
- enum pipe_video_chroma_format chroma_format,
- unsigned width, unsigned height, unsigned max_references);
+ const struct pipe_video_codec *templat);
#endif /* vl_mpeg12_decoder_h */