vl_mpeg12_decoder.h revision fcdf50f74befad8d89eb3f9cdfd88b82d1daa98c
1fcb595c04f9ee275eae49b7bb7c61246671f5ce2Younes Manton/************************************************************************** 2e60a8e4fcf2b4073a5fc2d9ec1de5a6ca6c7b9feYounes Manton * 3fcb595c04f9ee275eae49b7bb7c61246671f5ce2Younes Manton * Copyright 2009 Younes Manton. 4fcb595c04f9ee275eae49b7bb7c61246671f5ce2Younes Manton * All Rights Reserved. 5e60a8e4fcf2b4073a5fc2d9ec1de5a6ca6c7b9feYounes Manton * 6fcb595c04f9ee275eae49b7bb7c61246671f5ce2Younes Manton * Permission is hereby granted, free of charge, to any person obtaining a 7fcb595c04f9ee275eae49b7bb7c61246671f5ce2Younes Manton * copy of this software and associated documentation files (the 8fcb595c04f9ee275eae49b7bb7c61246671f5ce2Younes Manton * "Software"), to deal in the Software without restriction, including 9fcb595c04f9ee275eae49b7bb7c61246671f5ce2Younes Manton * without limitation the rights to use, copy, modify, merge, publish, 10fcb595c04f9ee275eae49b7bb7c61246671f5ce2Younes Manton * distribute, sub license, and/or sell copies of the Software, and to 11fcb595c04f9ee275eae49b7bb7c61246671f5ce2Younes Manton * permit persons to whom the Software is furnished to do so, subject to 12fcb595c04f9ee275eae49b7bb7c61246671f5ce2Younes Manton * the following conditions: 13e60a8e4fcf2b4073a5fc2d9ec1de5a6ca6c7b9feYounes Manton * 14fcb595c04f9ee275eae49b7bb7c61246671f5ce2Younes Manton * The above copyright notice and this permission notice (including the 15fcb595c04f9ee275eae49b7bb7c61246671f5ce2Younes Manton * next paragraph) shall be included in all copies or substantial portions 16fcb595c04f9ee275eae49b7bb7c61246671f5ce2Younes Manton * of the Software. 17e60a8e4fcf2b4073a5fc2d9ec1de5a6ca6c7b9feYounes Manton * 18fcb595c04f9ee275eae49b7bb7c61246671f5ce2Younes Manton * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 19fcb595c04f9ee275eae49b7bb7c61246671f5ce2Younes Manton * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 20fcb595c04f9ee275eae49b7bb7c61246671f5ce2Younes Manton * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. 21fcb595c04f9ee275eae49b7bb7c61246671f5ce2Younes Manton * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS BE LIABLE FOR 22fcb595c04f9ee275eae49b7bb7c61246671f5ce2Younes Manton * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 23fcb595c04f9ee275eae49b7bb7c61246671f5ce2Younes Manton * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 24fcb595c04f9ee275eae49b7bb7c61246671f5ce2Younes Manton * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 25e60a8e4fcf2b4073a5fc2d9ec1de5a6ca6c7b9feYounes Manton * 26fcb595c04f9ee275eae49b7bb7c61246671f5ce2Younes Manton **************************************************************************/ 27fcb595c04f9ee275eae49b7bb7c61246671f5ce2Younes Manton 28d9ad3aa3b9647f1ede2568600978af956ff32fffChristian König#ifndef VL_MPEG12_DECODER_H 29d9ad3aa3b9647f1ede2568600978af956ff32fffChristian König#define VL_MPEG12_DECODER_H 30f547472bfa0a797adacc2a7688b4c1ba65381a80Younes Manton 31f547472bfa0a797adacc2a7688b4c1ba65381a80Younes Manton#include <pipe/p_video_context.h> 32d9ad3aa3b9647f1ede2568600978af956ff32fffChristian König 33a1fecd09c2c5fdba3da5c38fce567b5bd2e6053dChristian König#include "vl_idct.h" 34a1fecd09c2c5fdba3da5c38fce567b5bd2e6053dChristian König#include "vl_mpeg12_mc_renderer.h" 35d9ad3aa3b9647f1ede2568600978af956ff32fffChristian König 363a2b906805985e0a4258bcbaed4cdff758875514Christian König#include "vl_vertex_buffers.h" 37d9ad3aa3b9647f1ede2568600978af956ff32fffChristian König#include "vl_video_buffer.h" 38f547472bfa0a797adacc2a7688b4c1ba65381a80Younes Manton 39f547472bfa0a797adacc2a7688b4c1ba65381a80Younes Mantonstruct pipe_screen; 40f547472bfa0a797adacc2a7688b4c1ba65381a80Younes Mantonstruct pipe_context; 41f547472bfa0a797adacc2a7688b4c1ba65381a80Younes Manton 42d9ad3aa3b9647f1ede2568600978af956ff32fffChristian Königstruct vl_mpeg12_decoder 43f547472bfa0a797adacc2a7688b4c1ba65381a80Younes Manton{ 44d9ad3aa3b9647f1ede2568600978af956ff32fffChristian König struct pipe_video_decoder base; 45d52d51ab8ae1240f77b6c18c3e99be4bf4868037Younes Manton struct pipe_context *pipe; 46dd6cd206a6395be651bc965580e17c0d63513c7bChristian König 471d72cf6986168a49fbadfa31e9d719ed0222836fChristian König const unsigned (*empty_block_mask)[3][2][2]; 4837a548c9d1db6bbf8712277f678d850f34d0e445Christian König 4937a548c9d1db6bbf8712277f678d850f34d0e445Christian König struct pipe_vertex_buffer quads; 503a2b906805985e0a4258bcbaed4cdff758875514Christian König void *ves[VL_MAX_PLANES]; 5137a548c9d1db6bbf8712277f678d850f34d0e445Christian König 52794cde3f5ef59cf603be284fbc8de33d2cda7d2cChristian König struct vl_idct idct_y, idct_c; 53794cde3f5ef59cf603be284fbc8de33d2cda7d2cChristian König struct vl_mpeg12_mc_renderer mc; 54f547472bfa0a797adacc2a7688b4c1ba65381a80Younes Manton 55d52d51ab8ae1240f77b6c18c3e99be4bf4868037Younes Manton void *rast; 56d52d51ab8ae1240f77b6c18c3e99be4bf4868037Younes Manton void *dsa; 57d52d51ab8ae1240f77b6c18c3e99be4bf4868037Younes Manton void *blend; 58f547472bfa0a797adacc2a7688b4c1ba65381a80Younes Manton}; 59f547472bfa0a797adacc2a7688b4c1ba65381a80Younes Manton 60a1fecd09c2c5fdba3da5c38fce567b5bd2e6053dChristian Königstruct vl_mpeg12_buffer 61e87bd8c9578dee384ff03039aa792e1a8dae7f36Christian König{ 62d9ad3aa3b9647f1ede2568600978af956ff32fffChristian König struct pipe_video_decode_buffer base; 63ba0bff85307c9b107cf432da05b39fd4ab242579Christian König 64e87bd8c9578dee384ff03039aa792e1a8dae7f36Christian König struct vl_vertex_buffer vertex_stream; 65e87bd8c9578dee384ff03039aa792e1a8dae7f36Christian König 66d9ad3aa3b9647f1ede2568600978af956ff32fffChristian König struct pipe_video_buffer *idct_source; 67fcdf50f74befad8d89eb3f9cdfd88b82d1daa98cChristian König struct pipe_video_buffer *mc_source; 68d9ad3aa3b9647f1ede2568600978af956ff32fffChristian König 69e87bd8c9578dee384ff03039aa792e1a8dae7f36Christian König union 70e87bd8c9578dee384ff03039aa792e1a8dae7f36Christian König { 71e87bd8c9578dee384ff03039aa792e1a8dae7f36Christian König struct pipe_vertex_buffer all[2]; 72e87bd8c9578dee384ff03039aa792e1a8dae7f36Christian König struct { 73e87bd8c9578dee384ff03039aa792e1a8dae7f36Christian König struct pipe_vertex_buffer quad, stream; 74e87bd8c9578dee384ff03039aa792e1a8dae7f36Christian König } individual; 75e87bd8c9578dee384ff03039aa792e1a8dae7f36Christian König } vertex_bufs; 76e87bd8c9578dee384ff03039aa792e1a8dae7f36Christian König 773a2b906805985e0a4258bcbaed4cdff758875514Christian König struct vl_idct_buffer idct[VL_MAX_PLANES]; 783a2b906805985e0a4258bcbaed4cdff758875514Christian König struct vl_mpeg12_mc_buffer mc[VL_MAX_PLANES]; 799d2e630cd02362bfa8f090640a55cf2dea9d64b3Christian König 809d2e630cd02362bfa8f090640a55cf2dea9d64b3Christian König struct pipe_transfer *tex_transfer[VL_MAX_PLANES]; 819d2e630cd02362bfa8f090640a55cf2dea9d64b3Christian König short *texels[VL_MAX_PLANES]; 82e87bd8c9578dee384ff03039aa792e1a8dae7f36Christian König}; 83e87bd8c9578dee384ff03039aa792e1a8dae7f36Christian König 84a1fecd09c2c5fdba3da5c38fce567b5bd2e6053dChristian König/* drivers can call this function in their pipe_video_context constructors and pass it 85e60a8e4fcf2b4073a5fc2d9ec1de5a6ca6c7b9feYounes Manton an accelerated pipe_context along with suitable buffering modes, etc */ 86d9ad3aa3b9647f1ede2568600978af956ff32fffChristian Königstruct pipe_video_decoder * 87d9ad3aa3b9647f1ede2568600978af956ff32fffChristian Königvl_create_mpeg12_decoder(struct pipe_video_context *context, 88d9ad3aa3b9647f1ede2568600978af956ff32fffChristian König struct pipe_context *pipe, 89a1fecd09c2c5fdba3da5c38fce567b5bd2e6053dChristian König enum pipe_video_profile profile, 90fcdf50f74befad8d89eb3f9cdfd88b82d1daa98cChristian König enum pipe_video_entrypoint entrypoint, 91a1fecd09c2c5fdba3da5c38fce567b5bd2e6053dChristian König enum pipe_video_chroma_format chroma_format, 92d9ad3aa3b9647f1ede2568600978af956ff32fffChristian König unsigned width, unsigned height); 93a1fecd09c2c5fdba3da5c38fce567b5bd2e6053dChristian König 94d9ad3aa3b9647f1ede2568600978af956ff32fffChristian König#endif /* VL_MPEG12_DECODER_H */ 95