vdr-plugin-softhddevice-drm-gles 1.7.3-98a2ef7
videorender.cpp File Reference

Video Renderer (Display) More...

#include <cerrno>
#include <chrono>
#include <cinttypes>
#include <cstdint>
#include <mutex>
#include <vector>
#include <assert.h>
#include <gbm.h>
#include <EGL/egl.h>
#include <libavcodec/avcodec.h>
#include <libavutil/hwcontext_drm.h>
#include <drm_fourcc.h>
#include <vdr/osd.h>
#include <vdr/remux.h>
#include <vdr/thread.h>
#include <xf86drmMode.h>
#include "audio.h"
#include "config.h"
#include "drmdevice.h"
#include "drmhdr.h"
#include "grab.h"
#include "logger.h"
#include "misc.h"
#include "queue.h"
#include "softhddevice.h"
#include "statemachine.h"
#include "videorender.h"
#include "videostream.h"

Go to the source code of this file.

Classes

struct  sRect
 

Functions

static sRect ComputeFittedRect (AVFrame *frame, uint64_t dispX, uint64_t dispY, uint64_t dispWidth, uint64_t dispHeight)
 Fits the video frame into a given area.
 
static void ClearSoftOsd (cDrmBuffer *buf)
 Internal function to clear the software OSD.
 
static void DrawSoftOsd (cDrmBuffer *buf, int xi, int yi, int width, int height, int pitch, const uint8_t *argb, int x, int y)
 Internal function to draw an OSD ARGB image in software.
 
static void ReleaseFrame (__attribute__((unused)) void *opaque, uint8_t *data)
 Callback free primedata if av_buffer is unreferenced.
 

Detailed Description

Video Renderer (Display)

This file defines cVideoRender, which includes all methods to bring the video and osd to display.

Definition in file videorender.cpp.

Function Documentation

◆ ClearSoftOsd()

static void ClearSoftOsd ( cDrmBuffer *  buf)
static

Internal function to clear the software OSD.

Parameters
bufdrm buffer which holds the OSD

Definition at line 884 of file videorender.cpp.

Referenced by cVideoRender::OsdClear().

◆ ComputeFittedRect()

static sRect ComputeFittedRect ( AVFrame *  frame,
uint64_t  dispX,
uint64_t  dispY,
uint64_t  dispWidth,
uint64_t  dispHeight 
)
static

Fits the video frame into a given area.

Parameters
frameAVFrame with frame dimensions and aspect ratio information
dispXx offset of video area
dispYy offset of video area
dispWidthwidth of video area
dispHeightheight of video area
Returns
the new computed video area or the given area if no frame was given

Definition at line 135 of file videorender.cpp.

Referenced by cVideoRender::SetPipBuffer(), and cVideoRender::SetVideoBuffer().

◆ DrawSoftOsd()

static void DrawSoftOsd ( cDrmBuffer *  buf,
int  xi,
int  yi,
int  width,
int  height,
int  pitch,
const uint8_t *  argb,
int  x,
int  y 
)
static

Internal function to draw an OSD ARGB image in software.

Definition at line 892 of file videorender.cpp.

References L_OSD, and LOGDEBUG2.

Referenced by cVideoRender::OsdDraw().

◆ ReleaseFrame()

static void ReleaseFrame ( __attribute__((unused)) void *  opaque,
uint8_t *  data 
)
static

Callback free primedata if av_buffer is unreferenced.

Definition at line 990 of file videorender.cpp.

Referenced by cDecodingStrategySoftware::PrepareDrmBuffer().