Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- diff --git a/mythtv/external/FFmpeg/libavcodec/mpeg12.c b/mythtv/external/FFmpeg/libavcodec/mpeg12.c
- index 805890d..4d8a5e7 100644
- --- a/mythtv/external/FFmpeg/libavcodec/mpeg12.c
- +++ b/mythtv/external/FFmpeg/libavcodec/mpeg12.c
- @@ -1202,6 +1202,7 @@ static const enum AVPixelFormat mpeg1_hwaccel_pixfmt_list_420[] = {
- #endif
- #if CONFIG_MPEG1_VDPAU_HWACCEL
- AV_PIX_FMT_VDPAU_MPEG1,
- + AV_PIX_FMT_VDPAU,
- #endif
- AV_PIX_FMT_YUV420P,
- AV_PIX_FMT_NONE
- @@ -1214,6 +1215,7 @@ static const enum AVPixelFormat mpeg2_hwaccel_pixfmt_list_420[] = {
- #endif
- #if CONFIG_MPEG2_VDPAU_HWACCEL
- AV_PIX_FMT_VDPAU_MPEG2,
- + AV_PIX_FMT_VDPAU,
- #endif
- #if CONFIG_MPEG2_DXVA2_HWACCEL
- AV_PIX_FMT_DXVA2_VLD,
- diff --git a/mythtv/libs/libmythtv/avformatdecoder.cpp b/mythtv/libs/libmythtv/avformatdecoder.cpp
- index 8f3fc70..37c7e49 100644
- --- a/mythtv/libs/libmythtv/avformatdecoder.cpp
- +++ b/mythtv/libs/libmythtv/avformatdecoder.cpp
- @@ -46,6 +46,7 @@ using namespace std;
- #include "videoout_vdpau.h"
- extern "C" {
- #include "libavcodec/vdpau.h"
- +#include "libavutil/pixdesc.h"
- }
- #endif // USING_VDPAU
- @@ -222,19 +223,19 @@ static int has_codec_parameters(AVStream *st)
- return 1;
- }
- -static AVCodec *find_vdpau_decoder(AVCodec *c, enum CodecID id)
- -{
- - AVCodec *codec = c;
- - while (codec)
- - {
- - if (codec->id == id && CODEC_IS_VDPAU(codec))
- - return codec;
- -
- - codec = codec->next;
- - }
- -
- - return c;
- -}
- +//static AVCodec *find_vdpau_decoder(AVCodec *c, enum CodecID id)
- +//{
- +// AVCodec *codec = c;
- +// while (codec)
- +// {
- +// if (codec->id == id && CODEC_IS_VDPAU(codec))
- +// return codec;
- +//
- +// codec = codec->next;
- +// }
- +//
- +// return c;
- +//}
- static bool force_sw_decode(AVCodecContext *avctx)
- {
- @@ -1430,13 +1431,23 @@ static bool IS_VDPAU_PIX_FMT(enum PixelFormat fmt)
- static enum PixelFormat get_format_vdpau(struct AVCodecContext *avctx,
- const enum PixelFormat *fmt)
- {
- - int i = 0;
- + LOG(VB_PLAYBACK, LOG_DEBUG, LOC + QString("Format = %1 (%2)")
- + .arg((int)*fmt).arg(av_get_pix_fmt_name(*fmt)));
- +
- + return AV_PIX_FMT_VDPAU;
- +
- + const PixelFormat * cur = fmt;
- - for(i=0; fmt[i]!=PIX_FMT_NONE; i++)
- - if (IS_VDPAU_PIX_FMT(fmt[i]))
- - break;
- + while(*cur != PIX_FMT_NONE)
- + {
- + if (*cur == AV_PIX_FMT_VDPAU)
- + return *cur;
- + cur++;
- + }
- + LOG(VB_PLAYBACK, LOG_INFO, LOC + QString("cur=%1 ori:%2 (FMT_NONE:%3)")
- + .arg(*cur).arg(*fmt).arg(*cur == PIX_FMT_NONE));
- - return fmt[i];
- + return avcodec_default_get_format(avctx, fmt);
- }
- // Declared seperately to allow attribute
- @@ -1517,8 +1528,8 @@ void AvFormatDecoder::InitVideoCodec(AVStream *stream, AVCodecContext *enc,
- AVCodec *codec = avcodec_find_decoder(enc->codec_id);
- // look for a vdpau capable codec
- - if (codec_is_vdpau(video_codec_id) && !CODEC_IS_VDPAU(codec))
- - codec = find_vdpau_decoder(codec, enc->codec_id);
- + //if (codec_is_vdpau(video_codec_id) && !CODEC_IS_VDPAU(codec))
- + // codec = find_vdpau_decoder(codec, enc->codec_id);
- if (selectedStream)
- {
- @@ -1535,7 +1546,7 @@ void AvFormatDecoder::InitVideoCodec(AVStream *stream, AVCodecContext *enc,
- if (metatag && metatag->value && QString("180") == metatag->value)
- video_inverted = true;
- - if (CODEC_IS_VDPAU(codec))
- + if (1) //CODEC_IS_VDPAU(codec, enc))
- {
- enc->get_buffer = get_avf_buffer_vdpau;
- enc->get_format = get_format_vdpau;
- @@ -2450,10 +2461,10 @@ int AvFormatDecoder::ScanStreams(bool novideo)
- QString("Using %1 for video decoding")
- .arg(GetCodecDecoderName()));
- - if (codec_is_vdpau(video_codec_id) && !CODEC_IS_VDPAU(codec))
- - {
- - codec = find_vdpau_decoder(codec, enc->codec_id);
- - }
- +// if (codec_is_vdpau(video_codec_id) && !CODEC_IS_VDPAU(codec, enc))
- +// {
- +// codec = find_vdpau_decoder(codec, enc->codec_id);
- +// }
- if (!enc->codec)
- {
- @@ -2815,8 +2826,7 @@ int get_avf_buffer_vdpau(struct AVCodecContext *c, AVFrame *pic)
- VideoFrame *frame = nd->GetPlayer()->GetNextVideoFrame();
- pic->data[0] = frame->buf;
- - pic->data[1] = frame->priv[0];
- - pic->data[2] = frame->priv[1];
- + pic->data[1] = pic->data[2] = NULL;
- pic->linesize[0] = 0;
- pic->linesize[1] = 0;
- @@ -2830,6 +2840,12 @@ int get_avf_buffer_vdpau(struct AVCodecContext *c, AVFrame *pic)
- #ifdef USING_VDPAU
- struct vdpau_render_state *render = (struct vdpau_render_state *)frame->buf;
- render->state |= FF_VDPAU_STATE_USED_FOR_REFERENCE;
- + pic->data[3] = (uint8_t*)(uintptr_t)render->surface;
- + static uint8_t *dummy[1] = { 0 };
- + if (nd->GetPlayer())
- + {
- + c->hwaccel_context = nd->GetPlayer()->GetDecoderContext(NULL, dummy[0]);
- + }
- #endif
- pic->reordered_opaque = c->reordered_opaque;
- diff --git a/mythtv/libs/libmythtv/mythcodecid.h b/mythtv/libs/libmythtv/mythcodecid.h
- index 0f28bfd..0fedfed 100644
- --- a/mythtv/libs/libmythtv/mythcodecid.h
- +++ b/mythtv/libs/libmythtv/mythcodecid.h
- @@ -103,11 +103,10 @@ int mpeg_version(int codec_id);
- #define CODEC_IS_H264(id) (mpeg_version(id) == 5)
- #define CODEC_IS_MPEG(id) (mpeg_version(id) && mpeg_version(id) <= 2)
- #define CODEC_IS_FFMPEG_MPEG(id) (CODEC_IS_MPEG(id))
- -#define CODEC_IS_VDPAU(codec) (codec &&\
- - codec->capabilities & CODEC_CAP_HWACCEL_VDPAU)
- +#define CODEC_IS_VDPAU(codec, enc) (codec && IS_VDPAU_PIX_FMT(enc->pix_fmt))
- #define CODEC_IS_VAAPI(codec, enc) (codec && IS_VAAPI_PIX_FMT(enc->pix_fmt))
- #define CODEC_IS_DXVA2(codec, enc) (codec && (enc->pix_fmt == PIX_FMT_DXVA2_VLD))
- -#define CODEC_IS_HWACCEL(codec, enc) (CODEC_IS_VDPAU(codec) ||\
- +#define CODEC_IS_HWACCEL(codec, enc) (CODEC_IS_VDPAU(codec, enc) || \
- CODEC_IS_VAAPI(codec, enc) ||\
- CODEC_IS_DXVA2(codec, enc))
- diff --git a/mythtv/libs/libmythtv/videoout_nullvdpau.cpp b/mythtv/libs/libmythtv/videoout_nullvdpau.cpp
- index 3f23cef..26febf4 100644
- --- a/mythtv/libs/libmythtv/videoout_nullvdpau.cpp
- +++ b/mythtv/libs/libmythtv/videoout_nullvdpau.cpp
- @@ -29,6 +29,7 @@ VideoOutputNullVDPAU::VideoOutputNullVDPAU()
- m_checked_surface_ownership(false), m_shadowBuffers(NULL),
- m_surfaceSize(QSize(0,0))
- {
- + m_context.bitstream_buffers_allocated = 0;
- }
- VideoOutputNullVDPAU::~VideoOutputNullVDPAU()
- @@ -72,8 +73,16 @@ bool VideoOutputNullVDPAU::Init(const QSize &video_dim_buf,
- bool VideoOutputNullVDPAU::InitRender(void)
- {
- QMutexLocker locker(&m_lock);
- +
- + if (m_context.bitstream_buffers_allocated)
- + {
- + av_freep(&m_context.bitstream_buffers);
- + }
- + memset(&m_context, 0, sizeof(AVVDPAUContext));
- + m_context.render = Render;
- +
- m_render = new MythRenderVDPAU();
- - if (m_render && m_render->CreateDecodeOnly())
- + if (m_render->CreateDecodeOnly())
- return true;
- LOG(VB_GENERAL, LOG_ERR, LOC + "Failed to initialise VDPAU");
- return false;
- @@ -90,8 +99,13 @@ void VideoOutputNullVDPAU::DeleteRender(void)
- }
- m_decoder = 0;
- - m_render = NULL;
- + m_render = NULL;
- m_pix_fmt = -1;
- + if (m_context.bitstream_buffers_allocated)
- + {
- + av_freep(&m_context.bitstream_buffers);
- + m_context.bitstream_buffers_allocated = 0;
- + }
- }
- bool VideoOutputNullVDPAU::InitBuffers(void)
- @@ -269,9 +283,9 @@ void VideoOutputNullVDPAU::DrawSlice(VideoFrame *frame, int x, int y, int w, int
- }
- uint max_refs = MIN_REFERENCE_FRAMES;
- - if (frame->pix_fmt == PIX_FMT_VDPAU_H264)
- + if (video_codec_id == kCodec_H264_VDPAU)
- {
- - max_refs = render->info.h264.num_ref_frames;
- + max_refs = m_context.info.h264.num_ref_frames;
- if (max_refs < 1 || max_refs > MAX_REFERENCE_FRAMES)
- {
- uint32_t round_width = (frame->width + 15) & ~15;
- @@ -321,29 +335,29 @@ void VideoOutputNullVDPAU::DrawSlice(VideoFrame *frame, int x, int y, int w, int
- }
- VdpDecoderProfile vdp_decoder_profile;
- - switch (frame->pix_fmt)
- + switch (video_codec_id)
- {
- - case PIX_FMT_VDPAU_MPEG1:
- + case kCodec_MPEG1_VDPAU:
- vdp_decoder_profile = VDP_DECODER_PROFILE_MPEG1;
- break;
- - case PIX_FMT_VDPAU_MPEG2:
- + case kCodec_MPEG2_VDPAU:
- vdp_decoder_profile = VDP_DECODER_PROFILE_MPEG2_MAIN;
- break;
- - case PIX_FMT_VDPAU_MPEG4:
- + case kCodec_MPEG4_VDPAU:
- vdp_decoder_profile = VDP_DECODER_PROFILE_MPEG4_PART2_ASP;
- break;
- - case PIX_FMT_VDPAU_H264:
- + case kCodec_H264_VDPAU:
- vdp_decoder_profile = VDP_DECODER_PROFILE_H264_HIGH;
- break;
- - case PIX_FMT_VDPAU_WMV3:
- + case kCodec_WMV3_VDPAU:
- vdp_decoder_profile = VDP_DECODER_PROFILE_VC1_MAIN;
- break;
- - case PIX_FMT_VDPAU_VC1:
- + case kCodec_VC1_VDPAU:
- vdp_decoder_profile = VDP_DECODER_PROFILE_VC1_ADVANCED;
- break;
- default:
- LOG(VB_GENERAL, LOG_ERR, LOC +
- - "Picture format is not supported.");
- + "Codec is not supported.");
- errorState = kError_Unknown;
- return;
- }
- @@ -372,7 +386,7 @@ void VideoOutputNullVDPAU::DrawSlice(VideoFrame *frame, int x, int y, int w, int
- return;
- }
- - m_render->Decode(m_decoder, render);
- + m_render->Decode(m_decoder, render, &m_context);
- }
- void VideoOutputNullVDPAU::ClearAfterSeek(void)
- @@ -613,3 +627,17 @@ bool VideoOutputNullVDPAU::BufferSizeCheck(void)
- }
- return true;
- }
- +
- +
- +void* VideoOutputNullVDPAU::GetDecoderContext(unsigned char* buf, uint8_t*& id)
- +{
- + return &m_context;
- +}
- +
- +VdpStatus VideoOutputNullVDPAU::Render(VdpDecoder decoder, VdpVideoSurface target,
- + VdpPictureInfo const *picture_info,
- + uint32_t bitstream_buffer_count,
- + VdpBitstreamBuffer const *bitstream_buffers)
- +{
- + return VDP_STATUS_OK;
- +}
- diff --git a/mythtv/libs/libmythtv/videoout_nullvdpau.h b/mythtv/libs/libmythtv/videoout_nullvdpau.h
- index e6776a1..e128846 100644
- --- a/mythtv/libs/libmythtv/videoout_nullvdpau.h
- +++ b/mythtv/libs/libmythtv/videoout_nullvdpau.h
- @@ -39,6 +39,7 @@ class VideoOutputNullVDPAU : public VideoOutput
- const QSize &video_dim_disp,
- float aspect, WId winid,
- const QRect &win_rect, MythCodecID codec_id);
- + virtual void* GetDecoderContext(unsigned char* buf, uint8_t*& id);
- virtual bool InputChanged(const QSize &video_dim_buf,
- const QSize &video_dim_disp,
- float aspect,
- @@ -70,6 +71,10 @@ class VideoOutputNullVDPAU : public VideoOutput
- const QString &name) { return false; }
- virtual MythPainter *GetOSDPainter(void) { return NULL; }
- virtual void DrawSlice(VideoFrame *frame, int x, int y, int w, int h);
- + static VdpStatus Render(VdpDecoder decoder, VdpVideoSurface target,
- + VdpPictureInfo const *picture_info,
- + uint32_t bitstream_buffer_count,
- + VdpBitstreamBuffer const *bitstream_buffers);
- virtual VideoFrame *GetLastDecodedFrame(void);
- virtual VideoFrame *GetLastShownFrame(void);
- @@ -93,6 +98,7 @@ class VideoOutputNullVDPAU : public VideoOutput
- private:
- MythRenderVDPAU *m_render;
- + AVVDPAUContext m_context;
- QMutex m_lock;
- uint m_decoder;
- int m_pix_fmt;
- diff --git a/mythtv/libs/libmythtv/videoout_vdpau.cpp b/mythtv/libs/libmythtv/videoout_vdpau.cpp
- index 17f1282..fb14790 100644
- --- a/mythtv/libs/libmythtv/videoout_vdpau.cpp
- +++ b/mythtv/libs/libmythtv/videoout_vdpau.cpp
- @@ -67,6 +67,7 @@ VideoOutputVDPAU::VideoOutputVDPAU()
- {
- if (gCoreContext->GetNumSetting("UseVideoModes", 0))
- display_res = DisplayRes::GetDisplayRes(true);
- + m_context.bitstream_buffers_allocated = 0;
- }
- VideoOutputVDPAU::~VideoOutputVDPAU()
- @@ -83,6 +84,11 @@ void VideoOutputVDPAU::TearDown(void)
- DeleteBuffers();
- RestoreDisplay();
- DeleteRender();
- + if (m_context.bitstream_buffers_allocated)
- + {
- + av_freep(&m_context.bitstream_buffers);
- + m_context.bitstream_buffers_allocated = 0;
- + }
- }
- bool VideoOutputVDPAU::Init(const QSize &video_dim_buf,
- @@ -101,7 +107,7 @@ bool VideoOutputVDPAU::Init(const QSize &video_dim_buf,
- QMutexLocker locker(&m_lock);
- window.SetNeedRepaint(true);
- bool ok = VideoOutput::Init(video_dim_buf, video_dim_disp,
- - aspect, winid, win_rect,codec_id);
- + aspect, winid, win_rect, codec_id);
- if (db_vdisp_profile)
- db_vdisp_profile->SetVideoRenderer("vdpau");
- @@ -130,9 +136,16 @@ bool VideoOutputVDPAU::InitRender(void)
- QMutexLocker locker(&m_lock);
- const QSize size = window.GetDisplayVisibleRect().size();
- - m_render = new MythRenderVDPAU();
- - if (m_render && m_render->Create(size, m_win))
- + if (m_context.bitstream_buffers_allocated)
- + {
- + av_freep(&m_context.bitstream_buffers);
- + }
- + memset(&m_context, 0, sizeof(AVVDPAUContext));
- + m_context.render = Render;
- +
- + m_render = new MythRenderVDPAU();
- + if (m_render->Create(size, m_win))
- {
- m_osd_painter = new MythVDPAUPainter(m_render);
- if (m_osd_painter)
- @@ -587,9 +600,9 @@ void VideoOutputVDPAU::DrawSlice(VideoFrame *frame, int x, int y, int w, int h)
- }
- uint max_refs = MIN_REFERENCE_FRAMES;
- - if (frame->pix_fmt == PIX_FMT_VDPAU_H264)
- + if (video_codec_id == kCodec_H264_VDPAU)
- {
- - max_refs = render->info.h264.num_ref_frames;
- + max_refs = m_context.info.h264.num_ref_frames;
- if (max_refs < 1 || max_refs > MAX_REFERENCE_FRAMES)
- {
- uint32_t round_width = (frame->width + 15) & ~15;
- @@ -633,29 +646,29 @@ void VideoOutputVDPAU::DrawSlice(VideoFrame *frame, int x, int y, int w, int h)
- }
- VdpDecoderProfile vdp_decoder_profile;
- - switch (frame->pix_fmt)
- + switch (video_codec_id)
- {
- - case PIX_FMT_VDPAU_MPEG1:
- + case kCodec_MPEG1_VDPAU:
- vdp_decoder_profile = VDP_DECODER_PROFILE_MPEG1;
- break;
- - case PIX_FMT_VDPAU_MPEG2:
- + case kCodec_MPEG2_VDPAU:
- vdp_decoder_profile = VDP_DECODER_PROFILE_MPEG2_MAIN;
- break;
- - case PIX_FMT_VDPAU_MPEG4:
- + case kCodec_MPEG4_VDPAU:
- vdp_decoder_profile = VDP_DECODER_PROFILE_MPEG4_PART2_ASP;
- break;
- - case PIX_FMT_VDPAU_H264:
- + case kCodec_H264_VDPAU:
- vdp_decoder_profile = VDP_DECODER_PROFILE_H264_HIGH;
- break;
- - case PIX_FMT_VDPAU_WMV3:
- + case kCodec_WMV3_VDPAU:
- vdp_decoder_profile = VDP_DECODER_PROFILE_VC1_MAIN;
- break;
- - case PIX_FMT_VDPAU_VC1:
- + case kCodec_VC1_VDPAU:
- vdp_decoder_profile = VDP_DECODER_PROFILE_VC1_ADVANCED;
- break;
- default:
- LOG(VB_GENERAL, LOG_ERR, LOC +
- - "Picture format is not supported.");
- + "Codec is not supported.");
- errorState = kError_Unknown;
- return;
- }
- @@ -684,7 +697,7 @@ void VideoOutputVDPAU::DrawSlice(VideoFrame *frame, int x, int y, int w, int h)
- return;
- }
- - m_render->Decode(m_decoder, render);
- + m_render->Decode(m_decoder, render, &m_context);
- }
- void VideoOutputVDPAU::Show(FrameScanType scan)
- @@ -1327,3 +1340,16 @@ void VideoOutputVDPAU::SetVideoFlip(void)
- }
- m_render->SetVideoFlip();
- }
- +
- +void* VideoOutputVDPAU::GetDecoderContext(unsigned char* buf, uint8_t*& id)
- +{
- + return &m_context;
- +}
- +
- +VdpStatus VideoOutputVDPAU::Render(VdpDecoder decoder, VdpVideoSurface target,
- + VdpPictureInfo const *picture_info,
- + uint32_t bitstream_buffer_count,
- + VdpBitstreamBuffer const *bitstream_buffers)
- +{
- + return VDP_STATUS_OK;
- +}
- diff --git a/mythtv/libs/libmythtv/videoout_vdpau.h b/mythtv/libs/libmythtv/videoout_vdpau.h
- index 0511ab4..cead864 100644
- --- a/mythtv/libs/libmythtv/videoout_vdpau.h
- +++ b/mythtv/libs/libmythtv/videoout_vdpau.h
- @@ -25,6 +25,7 @@ class VideoOutputVDPAU : public VideoOutput
- const QSize &video_dim_disp,
- float aspect,
- WId winid, const QRect &win_rect, MythCodecID codec_id);
- + virtual void* GetDecoderContext(unsigned char* buf, uint8_t*& id);
- bool SetDeinterlacingEnabled(bool interlaced);
- bool SetupDeinterlace(bool interlaced, const QString& ovrf="");
- bool ApproveDeintFilter(const QString& filtername) const;
- @@ -34,6 +35,10 @@ class VideoOutputVDPAU : public VideoOutput
- FrameScanType scan);
- void PrepareFrame(VideoFrame*, FrameScanType, OSD *osd);
- void DrawSlice(VideoFrame*, int x, int y, int w, int h);
- + static VdpStatus Render(VdpDecoder decoder, VdpVideoSurface target,
- + VdpPictureInfo const *picture_info,
- + uint32_t bitstream_buffer_count,
- + VdpBitstreamBuffer const *bitstream_buffers);
- void Show(FrameScanType);
- void ClearAfterSeek(void);
- bool InputChanged(const QSize &video_dim_buf,
- @@ -105,6 +110,7 @@ class VideoOutputVDPAU : public VideoOutput
- Window m_win;
- MythRenderVDPAU *m_render;
- + AVVDPAUContext m_context;
- uint m_decoder_buffer_size;
- uint m_process_buffer_size;
- @@ -136,5 +142,3 @@ class VideoOutputVDPAU : public VideoOutput
- };
- #endif // VIDEOOUT_VDPAU_H
- -
- -
- diff --git a/mythtv/libs/libmythui/mythrender_vdpau.cpp b/mythtv/libs/libmythui/mythrender_vdpau.cpp
- index 1161355..3bbfcd8 100644
- --- a/mythtv/libs/libmythui/mythrender_vdpau.cpp
- +++ b/mythtv/libs/libmythui/mythrender_vdpau.cpp
- @@ -1515,7 +1515,8 @@ void MythRenderVDPAU::ChangeVideoSurfaceOwner(uint id)
- m_videoSurfaces[id].m_owner = QThread::currentThread();
- }
- -void MythRenderVDPAU::Decode(uint id, struct vdpau_render_state *render)
- +void MythRenderVDPAU::Decode(uint id, struct vdpau_render_state *render,
- + AVVDPAUContext *context)
- {
- CHECK_VIDEO_SURFACES()
- @@ -1528,9 +1529,9 @@ void MythRenderVDPAU::Decode(uint id, struct vdpau_render_state *render)
- INIT_ST
- vdp_st = vdp_decoder_render(m_decoders[id].m_id, render->surface,
- - (VdpPictureInfo const *)&(render->info),
- - render->bitstream_buffers_used,
- - render->bitstream_buffers);
- + (VdpPictureInfo const *)&(context->info),
- + context->bitstream_buffers_used,
- + context->bitstream_buffers);
- CHECK_ST
- }
- diff --git a/mythtv/libs/libmythui/mythrender_vdpau.h b/mythtv/libs/libmythui/mythrender_vdpau.h
- index c14baab..7b924f4 100644
- --- a/mythtv/libs/libmythui/mythrender_vdpau.h
- +++ b/mythtv/libs/libmythui/mythrender_vdpau.h
- @@ -134,7 +134,8 @@ class MUI_PUBLIC MythRenderVDPAU : public MythRender
- void ClearVideoSurface(uint id);
- void ChangeVideoSurfaceOwner(uint id);
- - void Decode(uint id, struct vdpau_render_state *render);
- + void Decode(uint id, struct vdpau_render_state *render,
- + AVVDPAUContext *context);
- void SetVideoFlip(void) { m_flipFrames = true; }
- private:
Advertisement
Add Comment
Please, Sign In to add comment