X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fgallium%2Fauxiliary%2Fvl%2Fvl_mpeg12_decoder.h;h=2a6040543874a079716ce274aeaa00a71b09a87d;hb=9df2c4956b6fc4fff1497923d42011c16e777322;hp=9d5768816fb77c8a58d7caa703e4b5dc63acfa69;hpb=2e6274fc3b123e7de695038054b5cbd20b11559a;p=mesa.git diff --git a/src/gallium/auxiliary/vl/vl_mpeg12_decoder.h b/src/gallium/auxiliary/vl/vl_mpeg12_decoder.h index 9d5768816fb..2a604054387 100644 --- a/src/gallium/auxiliary/vl/vl_mpeg12_decoder.h +++ b/src/gallium/auxiliary/vl/vl_mpeg12_decoder.h @@ -18,7 +18,7 @@ * 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. @@ -28,8 +28,9 @@ #ifndef vl_mpeg12_decoder_h #define vl_mpeg12_decoder_h -#include +#include "pipe/p_video_codec.h" +#include "vl_mpeg12_bitstream.h" #include "vl_zscan.h" #include "vl_idct.h" #include "vl_mc.h" @@ -42,19 +43,16 @@ struct pipe_context; struct vl_mpeg12_decoder { - struct pipe_video_decoder base; - struct pipe_context *pipe; + struct pipe_video_codec base; + struct pipe_context *context; unsigned chroma_width, chroma_height; unsigned blocks_per_line; - unsigned max_blocks; - unsigned nr_of_idct_render_targets; + unsigned num_blocks; + unsigned width_in_macroblocks; enum pipe_format zscan_source_format; - enum pipe_format idct_source_format; - enum pipe_format idct_intermediate_format; - enum pipe_format mc_source_format; struct pipe_vertex_buffer quads; struct pipe_vertex_buffer pos; @@ -62,40 +60,51 @@ struct vl_mpeg12_decoder void *ves_ycbcr; void *ves_mv; + void *sampler_ycbcr; + + struct pipe_sampler_view *zscan_linear; + struct pipe_sampler_view *zscan_normal; + struct pipe_sampler_view *zscan_alternate; + + struct pipe_video_buffer *idct_source; + struct pipe_video_buffer *mc_source; + struct vl_zscan zscan_y, zscan_c; struct vl_idct idct_y, idct_c; 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; - struct pipe_video_buffer *idct_source; - struct pipe_video_buffer *idct_intermediate; - struct pipe_video_buffer *mc_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_NUM_COMPONENTS]; + struct vl_idct_buffer idct[VL_NUM_COMPONENTS]; + struct vl_mc_buffer mc[VL_NUM_COMPONENTS]; - 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 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]; }; -/* drivers can call this function in their pipe_video_context constructors and pass it - an accelerated pipe_context along with suitable buffering modes, etc */ -struct pipe_video_decoder * -vl_create_mpeg12_decoder(struct pipe_video_context *context, - 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); +/** + * creates a shader based mpeg12 decoder + */ +struct pipe_video_codec * +vl_create_mpeg12_decoder(struct pipe_context *pipe, + const struct pipe_video_codec *templat); #endif /* vl_mpeg12_decoder_h */