Skip to content

Commit

Permalink
Split ProgramInfo::m_properties into three variables.
Browse files Browse the repository at this point in the history
The m_properties variable contains flags relating to video, audio, and
subtitles. Split this information out into three separate variables,
instead of munging it together into and splitting out of a single
variable.

Fixes #338
  • Loading branch information
linuxdude42 committed Mar 17, 2021
1 parent 93b4aaf commit aa38ce3
Show file tree
Hide file tree
Showing 4 changed files with 44 additions and 51 deletions.
57 changes: 29 additions & 28 deletions mythtv/libs/libmyth/programinfo.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -201,7 +201,9 @@ ProgramInfo::ProgramInfo(const ProgramInfo &other) :

m_findId(other.m_findId),
m_programFlags(other.m_programFlags),
m_properties(other.m_properties),
m_videoProperties(other.m_videoProperties),
m_audioProperties(other.m_audioProperties),
m_subtitleProperties(other.m_subtitleProperties),
m_year(other.m_year),
m_partNumber(other.m_partNumber),
m_partTotal(other.m_partTotal),
Expand Down Expand Up @@ -384,9 +386,9 @@ ProgramInfo::ProgramInfo(
m_findId(_findid),

m_programFlags(_programflags),
m_properties((_subtitleType << kSubtitlePropertyOffset) |
(_videoproperties << kVideoPropertyOffset) |
(_audioproperties << kAudioPropertyOffset)),
m_videoProperties(_videoproperties),
m_audioProperties(_audioproperties),
m_subtitleProperties(_subtitleType),
m_year(_year),
m_partNumber(_partnumber),
m_partTotal(_parttotal),
Expand Down Expand Up @@ -566,9 +568,9 @@ ProgramInfo::ProgramInfo(
m_recordId(_recordid),
m_findId(_findid),

m_properties((_subtitleType << kSubtitlePropertyOffset) |
(_videoproperties << kVideoPropertyOffset) |
(_audioproperties << kAudioPropertyOffset)),
m_videoProperties(_videoproperties),
m_audioProperties(_audioproperties),
m_subtitleProperties(_subtitleType),
m_year(_year),
m_partNumber(_partnumber),
m_partTotal(_parttotal),
Expand Down Expand Up @@ -912,7 +914,9 @@ void ProgramInfo::clone(const ProgramInfo &other,

m_findId = other.m_findId;
m_programFlags = other.m_programFlags;
m_properties = other.m_properties;
m_videoProperties = other.m_videoProperties;
m_audioProperties = other.m_audioProperties;
m_subtitleProperties= other.m_subtitleProperties;

if (!ignore_non_serialized_data)
{
Expand Down Expand Up @@ -997,7 +1001,9 @@ void ProgramInfo::clear(void)
m_findId = 0;

m_programFlags = FL_NONE;
m_properties = 0;
m_videoProperties = VID_UNKNOWN;
m_audioProperties = AUD_UNKNOWN;
m_subtitleProperties = SUB_UNKNOWN;

// everything below this line is not serialized
m_spread = -1;
Expand Down Expand Up @@ -1109,7 +1115,9 @@ bool ProgramInfo::operator==(const ProgramInfo& rhs)
return false;

if ((m_programFlags != rhs.m_programFlags) ||
(m_properties != rhs.m_properties) ||
(m_videoProperties != rhs.m_videoProperties) ||
(m_audioProperties != rhs.m_audioProperties) ||
(m_subtitleProperties != rhs.m_subtitleProperties) ||
(m_year != rhs.m_year) ||
(m_partNumber != rhs.m_partNumber) ||
(m_partTotal != rhs.m_partTotal))
Expand Down Expand Up @@ -1314,9 +1322,9 @@ void ProgramInfo::ToStringList(QStringList &list) const
INT_TO_LIST(m_recPriority2); // 39
INT_TO_LIST(m_parentId); // 40
STR_TO_LIST((!m_storageGroup.isEmpty()) ? m_storageGroup : "Default"); // 41
INT_TO_LIST(GetAudioProperties()); // 42
INT_TO_LIST(GetVideoProperties()); // 43
INT_TO_LIST(GetSubtitleType()); // 44
INT_TO_LIST(m_audioProperties); // 42
INT_TO_LIST(m_videoProperties); // 43
INT_TO_LIST(m_subtitleProperties); // 44

INT_TO_LIST(m_year); // 45
INT_TO_LIST(m_partNumber); // 46
Expand Down Expand Up @@ -1424,15 +1432,9 @@ bool ProgramInfo::FromStringList(QStringList::const_iterator &it,
INT_FROM_LIST(m_recPriority2); // 39
INT_FROM_LIST(m_parentId); // 40
STR_FROM_LIST(m_storageGroup); // 41
uint audioproperties = 0;
uint videoproperties = 0;
uint subtitleType = 0;
INT_FROM_LIST(audioproperties); // 42
INT_FROM_LIST(videoproperties); // 43
INT_FROM_LIST(subtitleType); // 44
m_properties = ((subtitleType << kSubtitlePropertyOffset) |
(videoproperties << kVideoPropertyOffset) |
(audioproperties << kAudioPropertyOffset));
INT_FROM_LIST(m_audioProperties); // 42
INT_FROM_LIST(m_videoProperties); // 43
INT_FROM_LIST(m_subtitleProperties);// 44

INT_FROM_LIST(m_year); // 45
INT_FROM_LIST(m_partNumber); // 46
Expand Down Expand Up @@ -2044,9 +2046,9 @@ bool ProgramInfo::LoadProgramFromRecorded(
((m_programFlags & FL_REALLYEDITING) != 0U) ||
((m_programFlags & FL_COMMPROCESSING) != 0U));

m_properties = ((query.value(44).toUInt() << kSubtitlePropertyOffset) |
(query.value(43).toUInt() << kVideoPropertyOffset) |
(query.value(42).toUInt() << kAudioPropertyOffset));
m_audioProperties = query.value(42).toUInt();
m_videoProperties = query.value(43).toUInt();
m_subtitleProperties = query.value(44).toUInt();
// ancillary data -- end

if (m_originalAirDate.isValid() && m_originalAirDate < QDate(1895, 12, 28))
Expand Down Expand Up @@ -4672,11 +4674,10 @@ void ProgramInfo::SaveVideoProperties(uint mask, uint video_property_flags)
return;
}

uint videoproperties = GetVideoProperties();
uint videoproperties = m_videoProperties;
videoproperties &= ~mask;
videoproperties |= video_property_flags;
m_properties &= ~kVideoPropertyMask;
m_properties |= videoproperties << kVideoPropertyOffset;
m_videoProperties = videoproperties;

SendUpdateEvent();
}
Expand Down
14 changes: 6 additions & 8 deletions mythtv/libs/libmyth/programinfo.h
Original file line number Diff line number Diff line change
Expand Up @@ -487,12 +487,9 @@ class MPUBLIC ProgramInfo
bool IsDeletePending(void) const
{ return (m_programFlags & FL_DELETEPENDING) != 0U; }

uint GetSubtitleType(void) const
{ return (m_properties&kSubtitlePropertyMask)>>kSubtitlePropertyOffset; }
uint GetVideoProperties(void) const
{ return (m_properties & kVideoPropertyMask) >> kVideoPropertyOffset; }
uint GetAudioProperties(void) const
{ return (m_properties & kAudioPropertyMask) >> kAudioPropertyOffset; }
uint GetSubtitleType(void) const { return m_subtitleProperties; }
uint GetVideoProperties(void) const { return m_videoProperties; }
uint GetAudioProperties(void) const { return m_audioProperties; }

enum Verbosity
{
Expand Down Expand Up @@ -795,8 +792,9 @@ class MPUBLIC ProgramInfo
uint32_t m_findId {0};

uint32_t m_programFlags {FL_NONE}; ///< ProgramFlag
/// SubtitleType,VideoProperty,AudioProperty
uint16_t m_properties {0};
VideoPropsType m_videoProperties {VID_UNKNOWN};
AudioPropsType m_audioProperties {AUD_UNKNOWN};
SubtitlePropsType m_subtitleProperties {SUB_UNKNOWN};
uint16_t m_year {0};
uint16_t m_partNumber {0};
uint16_t m_partTotal {0};
Expand Down
18 changes: 6 additions & 12 deletions mythtv/libs/libmyth/programtypes.h
Original file line number Diff line number Diff line change
Expand Up @@ -174,10 +174,8 @@ enum AudioProps {
AUD_DOLBY = 0x08,
AUD_HARDHEAR = 0x10,
AUD_VISUALIMPAIR = 0x20,
}; // has 6 bits in ProgramInfo::properties
#define kAudioPropertyBits 6
#define kAudioPropertyOffset 0
#define kAudioPropertyMask (0x3f<<kAudioPropertyOffset)
};
using AudioPropsType = uint8_t;

/// if VideoProps changes, the videoprop column in program and
/// recordedprogram has to changed accordingly
Expand All @@ -195,10 +193,8 @@ enum VideoProps {
VID_3DTV = 0x100,
VID_PROGRESSIVE = 0x200,
VID_DAMAGED = 0x400,
}; // has 11 bits in ProgramInfo::properties
#define kVideoPropertyBits 11
#define kVideoPropertyOffset kAudioPropertyBits
#define kVideoPropertyMask (0x7ff<<kVideoPropertyOffset)
};
using VideoPropsType = uint16_t;

/// if SubtitleTypes changes, the subtitletypes column in program and
/// recordedprogram has to changed accordingly
Expand All @@ -209,10 +205,8 @@ enum SubtitleType {
SUB_NORMAL = 0x02,
SUB_ONSCREEN = 0x04,
SUB_SIGNED = 0x08
}; // has 4 bits in ProgramInfo::properties
#define kSubtitlePropertyBits 4
#define kSubtitlePropertyOffset (kAudioPropertyBits+kVideoPropertyBits)
#define kSubtitlePropertyMask (0x0f<<kSubtitlePropertyOffset)
};
using SubtitlePropsType = uint8_t;


enum AvailableStatusType {
Expand Down
6 changes: 3 additions & 3 deletions mythtv/libs/libmythtv/recordinginfo.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -150,9 +150,9 @@ RecordingInfo::RecordingInfo(
m_inputId = _inputid;
m_findId = _findid;

m_properties = ((_subtitleType << kSubtitlePropertyOffset) |
(_videoproperties << kVideoPropertyOffset) |
_audioproperties);
m_videoProperties = _videoproperties;
m_audioProperties = _audioproperties;
m_subtitleProperties = _subtitleType;

if (m_recStartTs >= m_recEndTs)
{
Expand Down

0 comments on commit aa38ce3

Please sign in to comment.