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