gallium/auxiliary/vl: Fix compute shader scale_y for interlaced videos
[mesa.git] / src / gallium / auxiliary / vl / vl_mpeg12_decoder.h
index 817c1ffd110d3b45cf3a4b87ba9899ffceece3b8..505dd675f663ff522e4b84845033e949828f1b98 100644 (file)
@@ -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,7 +28,9 @@
 #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"
@@ -43,7 +45,8 @@ struct pipe_context;
 
 struct vl_mpeg12_decoder
 {
-   struct pipe_video_decoder base;
+   struct pipe_video_codec base;
+   struct pipe_context *context;
 
    unsigned chroma_width, chroma_height;
 
@@ -74,12 +77,10 @@ struct vl_mpeg12_decoder
 
    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
@@ -92,25 +93,22 @@ 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 */