vdr-plugin-softhddevice-drm-gles 1.6.7
grab.h
Go to the documentation of this file.
1// SPDX-License-Identifier: AGPL-3.0-or-later
2
12#ifndef __GRAB_H
13#define __GRAB_H
14
15#include <atomic>
16#include <cstdint>
17
18#include <vdr/osd.h>
19
20class cDrmBuffer;
21class cVideoRender;
22
33public:
35
36 void FreeInput(void);
37 void Clear(void);
38 void Set(cDrmBuffer *);
39 bool IsSet(void) { return !m_outputRect.IsEmpty(); };
40 uint8_t *ConvertToRgb(int *);
41
42 // setters and getters
45 void SetOutputSize(int size) { m_outputSize = size; };
46 int GetOutputSize(void) { return m_outputSize; };
47 int GetOutputX(void) { return m_outputRect.X(); };
48 int GetOutputY(void) { return m_outputRect.Y(); };
49 int GetOutputWidth(void) { return m_outputRect.Width(); };
50 int GetOutputHeight(void) { return m_outputRect.Height(); };
51
52private:
53 // output
55 int m_outputSize = 0;
57
58 // input (copied from original cDrmBuffer)
63 int m_numPlanes = 0;
64 uint8_t *m_pPlane[4] = {};
68
69 const char *m_identifier;
70};
71
80public:
81 cSoftHdGrab(cVideoRender *render) : m_pRender(render) {};
82
83 bool IsActive(void) { return m_active; };
84 bool Start(bool, int, int, int, int, int);
85 uint8_t *Image(void) { return m_grabbedImage; };
86 int Size(void) { return m_grabbedSize; };
87 bool ProcessGrab(void);
88 void Finish(void);
89
90private:
94 std::atomic<bool> m_active = false;
95
96 bool m_isJpeg = true;
102
103 uint8_t *GetGrabbedVideoData(int *, int *, int *, int *, int *);
104 uint8_t *GetGrabbedPipData(int *, int *, int *, int *, int *);
105 uint8_t *GetGrabbedOsdData(int *, int *, int *, int *, int *);
106 uint8_t *GetGrabbedData(int *, int *, int *, int *, int *, cGrabBuffer *);
107};
108
109#endif
DRM Buffer.
Definition drmbuffer.h:48
Grabbing Buffer.
Definition grab.h:32
int m_outputSize
size of grabbed data
Definition grab.h:55
int GetOutputWidth(void)
Definition grab.h:49
cGrabBuffer(const char *identifier)
Definition grab.h:34
const char * m_identifier
Definition grab.h:69
int m_numPlanes
Definition grab.h:63
uint32_t m_width
Definition grab.h:59
void SetOutputData(uint8_t *result)
Definition grab.h:43
uint8_t * GetOutputData(void)
Definition grab.h:44
uint32_t m_pitch[4]
Definition grab.h:66
uint32_t m_offset[4]
Definition grab.h:65
void Clear(void)
Clear the grab buffer (input and output data)
Definition grab.cpp:429
bool IsSet(void)
Definition grab.h:39
uint8_t * m_pOutputData
pointer to grabbed image
Definition grab.h:54
void Set(cDrmBuffer *)
Set the grab buffer and the dimensions how it is presented on the screen.
Definition grab.cpp:443
uint64_t m_modifier
Definition grab.h:62
void FreeInput(void)
Free the grab input buffer.
Definition grab.cpp:397
cRect m_outputRect
rect of the grabbed data
Definition grab.h:56
uint32_t m_pixFmt
Definition grab.h:61
uint32_t m_size[4]
Definition grab.h:67
uint8_t * m_pPlane[4]
Definition grab.h:64
uint8_t * ConvertToRgb(int *)
Convert a grabbed buffer to rgb format image.
Definition grab.cpp:523
int GetOutputX(void)
Definition grab.h:47
uint32_t m_height
Definition grab.h:60
int GetOutputHeight(void)
Definition grab.h:50
int GetOutputSize(void)
Definition grab.h:46
void SetOutputSize(int size)
Definition grab.h:45
int GetOutputY(void)
Definition grab.h:48
Grabbing Processor.
Definition grab.h:79
int m_screenWidth
pixel screenwidth
Definition grab.h:100
uint8_t * GetGrabbedOsdData(int *, int *, int *, int *, int *)
Definition grab.cpp:713
int m_quality
quality of the jpeg image
Definition grab.h:97
uint8_t * m_grabbedImage
pointer to the finished grabbed image
Definition grab.h:92
std::atomic< bool > m_active
true, if a grab process is currently running
Definition grab.h:94
int m_grabbedWidth
pixel width of the grabbed image
Definition grab.h:98
bool IsActive(void)
Definition grab.h:83
int m_screenHeight
pixel screenheight
Definition grab.h:101
uint8_t * GetGrabbedData(int *, int *, int *, int *, int *, cGrabBuffer *)
Convert the cloned drm buffer data to RGB(void, pip) or ARGB (osd) and return a pointer to the raw da...
Definition grab.cpp:733
bool Start(bool, int, int, int, int, int)
Start a grab in the video renderer.
Definition grab.cpp:661
uint8_t * GetGrabbedVideoData(int *, int *, int *, int *, int *)
Definition grab.cpp:701
uint8_t * GetGrabbedPipData(int *, int *, int *, int *, int *)
Definition grab.cpp:707
int m_grabbedSize
data size of the grabbed image
Definition grab.h:93
uint8_t * Image(void)
Definition grab.h:85
bool m_isJpeg
true, if a jpeg image was requested
Definition grab.h:96
bool ProcessGrab(void)
Start the conversion.
Definition grab.cpp:780
int m_grabbedHeight
pixel height of the grabbed image
Definition grab.h:99
cVideoRender * m_pRender
pointer to cVideoRender object
Definition grab.h:91
int Size(void)
Definition grab.h:86
cSoftHdGrab(cVideoRender *render)
Definition grab.h:81
void Finish(void)
Clean up.
Definition grab.cpp:695
Video Renderer.