MythTV master
mythdrmencoder.cpp
Go to the documentation of this file.
1// MythTV
3
4#include <algorithm>
5
12DRMEnc MythDRMEncoder::Create(int FD, uint32_t Id)
13{
14 if (FD && Id)
15 if (auto e = std::shared_ptr<MythDRMEncoder>(new MythDRMEncoder(FD, Id)); e.get() && e->m_id)
16 return e;
17
18 return nullptr;
19}
20
22{
24 if (found != Encoders.end())
25 return *found;
26 return nullptr;
27}
28
30{
31 DRMEncs result;
32 if (auto resources = MythDRMResources(FD); *resources)
33 {
34 for (auto i = 0; i < resources->count_encoders; ++i)
35 if (auto encoder = Create(FD, resources->encoders[i]); encoder.get())
36 result.emplace_back(encoder);
37 }
38 return result;
39}
40
42{
43 if (auto * encoder = drmModeGetEncoder(FD, Id); encoder)
44 {
45 m_id = encoder->encoder_id;
46 m_type = encoder->encoder_type;
47 m_crtcId = encoder->crtc_id;
48 m_possibleCrtcs = encoder->possible_crtcs;
49 drmModeFreeEncoder(encoder);
50 }
51}
52
static DRMEncs GetEncoders(int FD)
uint32_t m_possibleCrtcs
MythDRMEncoder(int FD, uint32_t Id)
static DRMEnc Create(int FD, uint32_t Id)
static DRMEnc GetEncoder(const DRMEncs &Encoders, uint32_t Id)
uint32_t m_crtcId
A simple wrapper around a drmModeResPtr that ensures proper cleanup.
static pid_list_t::iterator find(const PIDInfoMap &map, pid_list_t &list, pid_list_t::iterator begin, pid_list_t::iterator end, bool find_open)
std::vector< uint32_t > Encoders
std::vector< DRMEnc > DRMEncs
Definition: mythdrmencoder.h:8
std::shared_ptr< class MythDRMEncoder > DRMEnc
Definition: mythdrmencoder.h:7