* 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.
#define vl_video_buffer_h
#include "pipe/p_context.h"
-#include "pipe/p_video_decoder.h"
+#include "pipe/p_video_codec.h"
#include "vl_defines.h"
struct pipe_surface *surfaces[VL_MAX_SURFACES];
};
+static inline void
+vl_video_buffer_adjust_size(unsigned *width, unsigned *height, unsigned plane,
+ enum pipe_video_chroma_format chroma_format,
+ bool interlaced)
+{
+ if (interlaced) {
+ *height /= 2;
+ }
+ if (plane > 0) {
+ if (chroma_format == PIPE_VIDEO_CHROMA_FORMAT_420) {
+ *width /= 2;
+ *height /= 2;
+ } else if (chroma_format == PIPE_VIDEO_CHROMA_FORMAT_422) {
+ *width /= 2;
+ }
+ }
+}
+
/**
* get subformats for each plane
*/
boolean
vl_video_buffer_is_format_supported(struct pipe_screen *screen,
enum pipe_format format,
- enum pipe_video_profile profile);
+ enum pipe_video_profile profile,
+ enum pipe_video_entrypoint entrypoint);
/*
* set the associated data for the given video buffer
*/
void
vl_video_buffer_set_associated_data(struct pipe_video_buffer *vbuf,
- struct pipe_video_decoder *vdec,
+ struct pipe_video_codec *vcodec,
void *associated_data,
void (*destroy_associated_data)(void *));
*/
void *
vl_video_buffer_get_associated_data(struct pipe_video_buffer *vbuf,
- struct pipe_video_decoder *vdec);
+ struct pipe_video_codec *vcodec);
/**
* fill a resource template for the given plane
*/
void
-vl_vide_buffer_template(struct pipe_resource *templ,
- const struct pipe_video_buffer *templat,
- enum pipe_format resource_format,
- unsigned array_size, unsigned usage,
- unsigned plane);
+vl_video_buffer_template(struct pipe_resource *templ,
+ const struct pipe_video_buffer *templat,
+ enum pipe_format resource_format,
+ unsigned depth, unsigned array_size,
+ unsigned usage, unsigned plane);
/**
* creates a video buffer, can be used as a standard implementation for pipe->create_video_buffer
const struct pipe_video_buffer *templat);
/**
- * extended create function, gets array_size, usage and formats for each plane seperately
+ * extended create function, gets depth, array_size, usage and formats for each plane seperately
*/
struct pipe_video_buffer *
vl_video_buffer_create_ex(struct pipe_context *pipe,
const struct pipe_video_buffer *templat,
const enum pipe_format resource_formats[VL_NUM_COMPONENTS],
- unsigned array_size, unsigned usage);
+ unsigned depth, unsigned array_size, unsigned usage);
/**
* even more extended create function, provide the pipe_resource for each plane