2011-12-07 15:05:38 +01:00
|
|
|
///
|
|
|
|
/// @file video.h @brief Video module header file
|
|
|
|
///
|
2012-01-05 17:20:44 +01:00
|
|
|
/// Copyright (c) 2009 - 2012 by Johns. All Rights Reserved.
|
2011-12-07 15:05:38 +01:00
|
|
|
///
|
|
|
|
/// Contributor(s):
|
|
|
|
///
|
|
|
|
/// License: AGPLv3
|
|
|
|
///
|
|
|
|
/// This program is free software: you can redistribute it and/or modify
|
|
|
|
/// it under the terms of the GNU Affero General Public License as
|
|
|
|
/// published by the Free Software Foundation, either version 3 of the
|
|
|
|
/// License.
|
|
|
|
///
|
|
|
|
/// This program is distributed in the hope that it will be useful,
|
|
|
|
/// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
/// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
/// GNU Affero General Public License for more details.
|
|
|
|
///
|
|
|
|
/// $Id$
|
|
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
|
|
/// @addtogroup Video
|
|
|
|
/// @{
|
|
|
|
|
|
|
|
//----------------------------------------------------------------------------
|
|
|
|
// Typedefs
|
|
|
|
//----------------------------------------------------------------------------
|
|
|
|
|
|
|
|
/// Video hardware decoder typedef
|
|
|
|
typedef struct _video_hw_decoder_ VideoHwDecoder;
|
|
|
|
|
2012-02-16 21:55:14 +01:00
|
|
|
//----------------------------------------------------------------------------
|
|
|
|
// Variables
|
|
|
|
//----------------------------------------------------------------------------
|
|
|
|
|
|
|
|
extern char VideoIgnoreRepeatPict; ///< disable repeat pict warning
|
|
|
|
|
2011-12-07 15:05:38 +01:00
|
|
|
//----------------------------------------------------------------------------
|
|
|
|
// Prototypes
|
|
|
|
//----------------------------------------------------------------------------
|
|
|
|
|
|
|
|
/// Allocate new video hardware decoder.
|
|
|
|
extern VideoHwDecoder *VideoNewHwDecoder(void);
|
|
|
|
|
2012-01-19 00:16:15 +01:00
|
|
|
/// Deallocate video hardware decoder.
|
|
|
|
extern void VideoDelHwDecoder(VideoHwDecoder *);
|
|
|
|
|
2011-12-07 15:05:38 +01:00
|
|
|
/// Get and allocate a video hardware surface.
|
|
|
|
extern unsigned VideoGetSurface(VideoHwDecoder *);
|
|
|
|
|
2012-01-07 22:36:06 +01:00
|
|
|
/// Release a video hardware surface
|
2011-12-07 15:05:38 +01:00
|
|
|
extern void VideoReleaseSurface(VideoHwDecoder *, unsigned);
|
|
|
|
|
|
|
|
#ifdef LIBAVCODEC_VERSION
|
2012-01-30 15:58:21 +01:00
|
|
|
/// Callback to negotiate the PixelFormat.
|
|
|
|
extern enum PixelFormat Video_get_format(VideoHwDecoder *, AVCodecContext *,
|
|
|
|
const enum PixelFormat *);
|
|
|
|
|
2012-01-07 22:36:06 +01:00
|
|
|
/// Render a ffmpeg frame.
|
2012-01-30 15:58:21 +01:00
|
|
|
extern void VideoRenderFrame(VideoHwDecoder *, const AVCodecContext *,
|
|
|
|
const AVFrame *);
|
2011-12-07 15:05:38 +01:00
|
|
|
|
2012-01-07 22:36:06 +01:00
|
|
|
/// Get ffmpeg vaapi context.
|
2011-12-07 15:05:38 +01:00
|
|
|
extern struct vaapi_context *VideoGetVaapiContext(VideoHwDecoder *);
|
|
|
|
|
2011-12-23 19:33:30 +01:00
|
|
|
#ifdef AVCODEC_VDPAU_H
|
2012-01-07 22:36:06 +01:00
|
|
|
/// Draw vdpau render state.
|
2011-12-23 19:33:30 +01:00
|
|
|
extern void VideoDrawRenderState(VideoHwDecoder *,
|
|
|
|
struct vdpau_render_state *);
|
|
|
|
#endif
|
2011-12-07 15:05:38 +01:00
|
|
|
#endif
|
|
|
|
|
2012-01-07 22:36:06 +01:00
|
|
|
/// Poll video events.
|
2011-12-19 17:03:40 +01:00
|
|
|
extern void VideoPollEvent(void);
|
|
|
|
|
2012-01-07 22:36:06 +01:00
|
|
|
/// Wakeup display handler.
|
|
|
|
extern void VideoDisplayWakeup(void);
|
|
|
|
|
|
|
|
/// Set video geometry.
|
2011-12-07 15:05:38 +01:00
|
|
|
extern int VideoSetGeometry(const char *);
|
|
|
|
|
2012-02-22 15:06:05 +01:00
|
|
|
/// Set 60Hz display mode.
|
|
|
|
extern void VideoSet60HzMode(int);
|
|
|
|
|
2012-01-07 22:36:06 +01:00
|
|
|
/// Set video output position.
|
|
|
|
extern void VideoSetOutputPosition(int, int, int, int);
|
|
|
|
|
2012-01-10 15:53:54 +01:00
|
|
|
/// Set video mode.
|
|
|
|
extern void VideoSetVideoMode(int, int, int, int);
|
|
|
|
|
2012-02-01 16:50:48 +01:00
|
|
|
/// Set display format.
|
|
|
|
extern void VideoSetDisplayFormat(int);
|
|
|
|
|
2012-01-13 16:31:29 +01:00
|
|
|
/// Set video fullscreen mode.
|
|
|
|
extern void VideoSetFullscreen(int);
|
|
|
|
|
2012-01-07 22:36:06 +01:00
|
|
|
/// Set deinterlace.
|
2012-01-09 17:03:04 +01:00
|
|
|
extern void VideoSetDeinterlace(int[]);
|
2011-12-12 17:06:05 +01:00
|
|
|
|
2012-01-07 22:36:06 +01:00
|
|
|
/// Set skip chroma deinterlace.
|
2012-01-09 17:03:04 +01:00
|
|
|
extern void VideoSetSkipChromaDeinterlace(int[]);
|
2012-01-05 17:20:44 +01:00
|
|
|
|
2012-02-14 22:29:17 +01:00
|
|
|
/// Set inverse telecine.
|
|
|
|
extern void VideoSetInverseTelecine(int[]);
|
|
|
|
|
2012-01-07 22:36:06 +01:00
|
|
|
/// Set scaling.
|
2012-01-09 17:03:04 +01:00
|
|
|
extern void VideoSetScaling(int[]);
|
2011-12-12 17:06:05 +01:00
|
|
|
|
2012-01-07 22:36:06 +01:00
|
|
|
/// Set denoise.
|
2012-01-09 17:03:04 +01:00
|
|
|
extern void VideoSetDenoise(int[]);
|
2012-01-05 17:20:44 +01:00
|
|
|
|
2012-01-07 22:36:06 +01:00
|
|
|
/// Set sharpen.
|
2012-01-09 17:03:04 +01:00
|
|
|
extern void VideoSetSharpen(int[]);
|
2012-01-05 17:20:44 +01:00
|
|
|
|
2012-01-28 01:44:50 +01:00
|
|
|
/// Set skip lines.
|
|
|
|
extern void VideoSetSkipLines(int);
|
|
|
|
|
2012-02-13 14:13:24 +01:00
|
|
|
/// Set studio levels.
|
|
|
|
extern void VideoSetStudioLevels(int);
|
|
|
|
|
2012-02-24 15:15:50 +01:00
|
|
|
/// Set background.
|
|
|
|
extern void VideoSetBackground(uint32_t);
|
|
|
|
|
2012-01-07 22:36:06 +01:00
|
|
|
/// Set audio delay.
|
2011-12-19 17:03:40 +01:00
|
|
|
extern void VideoSetAudioDelay(int);
|
|
|
|
|
2012-01-20 15:33:37 +01:00
|
|
|
/// Set auto-crop parameters.
|
2012-01-27 23:49:05 +01:00
|
|
|
extern void VideoSetAutoCrop(int, int, int);
|
2012-01-20 15:33:37 +01:00
|
|
|
|
2012-01-07 22:36:06 +01:00
|
|
|
/// Clear OSD.
|
2011-12-07 15:05:38 +01:00
|
|
|
extern void VideoOsdClear(void);
|
|
|
|
|
2012-01-07 22:36:06 +01:00
|
|
|
/// Draw an OSD ARGB image.
|
2011-12-07 15:05:38 +01:00
|
|
|
extern void VideoOsdDrawARGB(int, int, int, int, const uint8_t *);
|
|
|
|
|
2012-01-18 15:15:37 +01:00
|
|
|
/// Get OSD size.
|
|
|
|
extern void VideoGetOsdSize(int *, int *);
|
|
|
|
|
2012-01-07 22:36:06 +01:00
|
|
|
extern int64_t VideoGetClock(void); ///< Get video clock.
|
2011-12-14 18:01:03 +01:00
|
|
|
|
2012-01-20 21:46:22 +01:00
|
|
|
/// Grab screen.
|
2012-01-24 22:40:06 +01:00
|
|
|
extern uint8_t *VideoGrab(int *, int *, int *, int);
|
2012-01-20 21:46:22 +01:00
|
|
|
|
2012-01-07 22:36:06 +01:00
|
|
|
extern void VideoOsdInit(void); ///< Setup osd.
|
|
|
|
extern void VideoOsdExit(void); ///< Cleanup osd.
|
2011-12-07 15:05:38 +01:00
|
|
|
|
2012-01-07 22:36:06 +01:00
|
|
|
extern void VideoInit(const char *); ///< Setup video module.
|
|
|
|
extern void VideoExit(void); ///< Cleanup and exit video module.
|
2011-12-07 15:05:38 +01:00
|
|
|
|
2012-01-07 22:36:06 +01:00
|
|
|
extern void VideoFlushInput(void); ///< Flush video input buffers.
|
|
|
|
extern int VideoDecode(void); ///< Decode video input buffers.
|
2012-02-21 20:55:28 +01:00
|
|
|
extern int VideoGetBuffers(void); ///< Get number of input buffers.
|
2011-12-07 15:05:38 +01:00
|
|
|
|
|
|
|
/// @}
|