Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Blame | Last modification | View Log | RSS feed

  1. /*
  2.  * Video Decode and Presentation API for UNIX (VDPAU) is used for
  3.  * HW decode acceleration for MPEG-1/2, H.264 and VC-1.
  4.  *
  5.  * Copyright (C) 2008 NVIDIA
  6.  *
  7.  * This file is part of FFmpeg.
  8.  *
  9.  * FFmpeg is free software; you can redistribute it and/or
  10.  * modify it under the terms of the GNU Lesser General Public
  11.  * License as published by the Free Software Foundation; either
  12.  * version 2.1 of the License, or (at your option) any later version.
  13.  *
  14.  * FFmpeg is distributed in the hope that it will be useful,
  15.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  16.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  17.  * Lesser General Public License for more details.
  18.  *
  19.  * You should have received a copy of the GNU Lesser General Public
  20.  * License along with FFmpeg; if not, write to the Free Software
  21.  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  22.  */
  23.  
  24. #ifndef AVCODEC_VDPAU_INTERNAL_H
  25. #define AVCODEC_VDPAU_INTERNAL_H
  26.  
  27. #include "config.h"
  28. #include <stdint.h>
  29. #if CONFIG_VDPAU
  30. #include <vdpau/vdpau.h>
  31. #include "vdpau.h"
  32. #endif
  33. #include "h264.h"
  34. #include "mpegvideo.h"
  35.  
  36. /** Extract VdpVideoSurface from a Picture */
  37. static inline uintptr_t ff_vdpau_get_surface_id(Picture *pic)
  38. {
  39.     return (uintptr_t)pic->f.data[3];
  40. }
  41.  
  42. #if CONFIG_VDPAU
  43. #if !FF_API_BUFS_VDPAU
  44. union AVVDPAUPictureInfo {
  45.     VdpPictureInfoH264        h264;
  46.     VdpPictureInfoMPEG1Or2    mpeg;
  47.     VdpPictureInfoVC1          vc1;
  48.     VdpPictureInfoMPEG4Part2 mpeg4;
  49. };
  50. #endif
  51.  
  52. struct vdpau_picture_context {
  53.     /**
  54.      * VDPAU picture information.
  55.      */
  56.     union AVVDPAUPictureInfo info;
  57.  
  58.     /**
  59.      * Allocated size of the bitstream_buffers table.
  60.      */
  61.     int bitstream_buffers_allocated;
  62.  
  63.     /**
  64.      * Useful bitstream buffers in the bitstream buffers table.
  65.      */
  66.     int bitstream_buffers_used;
  67.  
  68.    /**
  69.      * Table of bitstream buffers.
  70.      */
  71.     VdpBitstreamBuffer *bitstream_buffers;
  72. };
  73. #endif
  74.  
  75. int ff_vdpau_common_start_frame(Picture *pic,
  76.                                 const uint8_t *buffer, uint32_t size);
  77. int ff_vdpau_mpeg_end_frame(AVCodecContext *avctx);
  78. int ff_vdpau_add_buffer(Picture *pic, const uint8_t *buf, uint32_t buf_size);
  79.  
  80.  
  81. void ff_vdpau_add_data_chunk(uint8_t *data, const uint8_t *buf,
  82.                              int buf_size);
  83.  
  84. void ff_vdpau_mpeg_picture_complete(MpegEncContext *s, const uint8_t *buf,
  85.                                     int buf_size, int slice_count);
  86.  
  87. void ff_vdpau_h264_picture_start(H264Context *h);
  88. void ff_vdpau_h264_set_reference_frames(H264Context *h);
  89. void ff_vdpau_h264_picture_complete(H264Context *h);
  90.  
  91. void ff_vdpau_vc1_decode_picture(MpegEncContext *s, const uint8_t *buf,
  92.                                  int buf_size);
  93.  
  94. void ff_vdpau_mpeg4_decode_picture(MpegEncContext *s, const uint8_t *buf,
  95.                                    int buf_size);
  96.  
  97. #endif /* AVCODEC_VDPAU_INTERNAL_H */
  98.