Skip to content

Commit

Permalink
libmythtv: Rename Bluray classes
Browse files Browse the repository at this point in the history
  • Loading branch information
mark-kendall committed Apr 12, 2020
1 parent f74c588 commit b12d20b
Show file tree
Hide file tree
Showing 12 changed files with 207 additions and 222 deletions.
83 changes: 38 additions & 45 deletions mythtv/libs/libmythtv/Bluray/avformatdecoderbd.cpp
@@ -1,63 +1,62 @@
#include "bdringbuffer.h"
// MythTV
#include "iso639.h"
#include "mythbdplayer.h"
#include "bdringbuffer.h"
#include "avformatdecoderbd.h"

#include "iso639.h"

#define LOC QString("AFD_BD: ")
#define LOC QString("BDDecoder: ")

AvFormatDecoderBD::AvFormatDecoderBD(
MythPlayer *parent, const ProgramInfo &pginfo, PlayerFlags flags)
: AvFormatDecoder(parent, pginfo, flags)
MythBDDecoder::MythBDDecoder(MythPlayer *Parent, const ProgramInfo &PGInfo, PlayerFlags Flags)
: AvFormatDecoder(Parent, PGInfo, Flags)
{
}

bool AvFormatDecoderBD::IsValidStream(int streamid)
bool MythBDDecoder::IsValidStream(int StreamId)
{
if (m_ringBuffer && m_ringBuffer->IsBD())
return m_ringBuffer->BD()->IsValidStream(streamid);
return AvFormatDecoder::IsValidStream(streamid);
return m_ringBuffer->BD()->IsValidStream(static_cast<uint>(StreamId));
return AvFormatDecoder::IsValidStream(StreamId);
}

void AvFormatDecoderBD::Reset(bool reset_video_data, bool seek_reset, bool reset_file)
void MythBDDecoder::Reset(bool ResetVideoData, bool SeekReset, bool ResetFile)
{
AvFormatDecoder::Reset(reset_video_data, seek_reset, reset_file);
AvFormatDecoder::Reset(ResetVideoData, SeekReset, ResetFile);
SyncPositionMap();
}

void AvFormatDecoderBD::UpdateFramesPlayed(void)
void MythBDDecoder::UpdateFramesPlayed(void)
{
if (!m_ringBuffer->IsBD())
return;

auto currentpos = (long long)(m_ringBuffer->BD()->GetCurrentTime() * m_fps);
auto currentpos = static_cast<long long>(m_ringBuffer->BD()->GetCurrentTime() * m_fps);
m_framesPlayed = m_framesRead = currentpos ;
m_parent->SetFramesPlayed(currentpos + 1);
m_parent->SetFramesPlayed(static_cast<uint64_t>(currentpos + 1));
}

bool AvFormatDecoderBD::DoRewindSeek(long long desiredFrame)
bool MythBDDecoder::DoRewindSeek(long long DesiredFrame)
{
if (!m_ringBuffer->IsBD())
return false;

m_ringBuffer->Seek(BDFindPosition(desiredFrame), SEEK_SET);
m_framesPlayed = m_framesRead = m_lastKey = desiredFrame + 1;
m_ringBuffer->Seek(BDFindPosition(DesiredFrame), SEEK_SET);
m_framesPlayed = m_framesRead = m_lastKey = DesiredFrame + 1;
m_frameCounter += 100;
return true;
}

void AvFormatDecoderBD::DoFastForwardSeek(long long desiredFrame, bool &needflush)
void MythBDDecoder::DoFastForwardSeek(long long DesiredFrame, bool &Needflush)
{
if (!m_ringBuffer->IsBD())
return;

m_ringBuffer->Seek(BDFindPosition(desiredFrame), SEEK_SET);
needflush = true;
m_framesPlayed = m_framesRead = m_lastKey = desiredFrame + 1;
m_ringBuffer->Seek(BDFindPosition(DesiredFrame), SEEK_SET);
Needflush = true;
m_framesPlayed = m_framesRead = m_lastKey = DesiredFrame + 1;
m_frameCounter += 100;
}

void AvFormatDecoderBD::StreamChangeCheck(void)
void MythBDDecoder::StreamChangeCheck(void)
{
if (!m_ringBuffer->IsBD())
return;
Expand All @@ -82,36 +81,31 @@ void AvFormatDecoderBD::StreamChangeCheck(void)
}
}

int AvFormatDecoderBD::GetSubtitleLanguage(uint subtitle_index,
uint stream_index)
int MythBDDecoder::GetSubtitleLanguage(uint /*SubtitleIndex*/, uint StreamIndex)
{
(void)subtitle_index;
if (m_ringBuffer && m_ringBuffer->IsBD() &&
stream_index < m_ic->nb_streams &&
m_ic->streams[stream_index] != nullptr)
if (m_ringBuffer && m_ringBuffer->IsBD() && (StreamIndex < m_ic->nb_streams) &&
(m_ic->streams[StreamIndex] != nullptr))
{
return m_ringBuffer->BD()->GetSubtitleLanguage(m_ic->streams[stream_index]->id);
return m_ringBuffer->BD()->GetSubtitleLanguage(static_cast<uint>(m_ic->streams[StreamIndex]->id));
}

return iso639_str3_to_key("und");
}

int AvFormatDecoderBD::GetAudioLanguage(uint audio_index, uint stream_index)
int MythBDDecoder::GetAudioLanguage(uint /*AudioIndex*/, uint StreamIndex)
{
(void)audio_index;
if (m_ringBuffer && m_ringBuffer->IsBD() &&
stream_index < m_ic->nb_streams &&
m_ic->streams[stream_index] != nullptr)
if (m_ringBuffer && m_ringBuffer->IsBD() && (StreamIndex < m_ic->nb_streams) &&
(m_ic->streams[StreamIndex] != nullptr))
{
return m_ringBuffer->BD()->GetAudioLanguage(m_ic->streams[stream_index]->id);
return m_ringBuffer->BD()->GetAudioLanguage(static_cast<uint>(m_ic->streams[StreamIndex]->id));
}

return iso639_str3_to_key("und");
}

int AvFormatDecoderBD::ReadPacket(AVFormatContext *ctx, AVPacket* pkt, bool& /*storePacket*/)
int MythBDDecoder::ReadPacket(AVFormatContext *Ctx, AVPacket* Pkt, bool& /*StorePacket*/)
{
int result = av_read_frame(ctx, pkt);
int result = av_read_frame(Ctx, Pkt);

/* If we seem to have hit the end of the file, the ringbuffer may
* just be blocked in order to drain the ffmpeg buffers, so try
Expand All @@ -123,20 +117,19 @@ int AvFormatDecoderBD::ReadPacket(AVFormatContext *ctx, AVPacket* pkt, bool& /*s
{
if (m_ringBuffer->BD()->IsReadingBlocked())
m_ringBuffer->BD()->UnblockReading();

result = av_read_frame(ctx, pkt);
result = av_read_frame(Ctx, Pkt);
}

if (result >= 0)
{
pkt->dts = m_ringBuffer->BD()->AdjustTimestamp(pkt->dts);
pkt->pts = m_ringBuffer->BD()->AdjustTimestamp(pkt->pts);
Pkt->dts = m_ringBuffer->BD()->AdjustTimestamp(Pkt->dts);
Pkt->pts = m_ringBuffer->BD()->AdjustTimestamp(Pkt->pts);
}

return result;
}

long long AvFormatDecoderBD::BDFindPosition(long long desiredFrame)
long long MythBDDecoder::BDFindPosition(long long DesiredFrame)
{
if (!m_ringBuffer->IsBD())
return 0;
Expand All @@ -146,7 +139,7 @@ long long AvFormatDecoderBD::BDFindPosition(long long desiredFrame)
if (m_parent)
{
ffrewSkip = m_parent->GetFFRewSkip();
current_speed = (int)m_parent->GetNextPlaySpeed();
current_speed = static_cast<int>(m_parent->GetNextPlaySpeed());
}

if (ffrewSkip == 1 || ffrewSkip == 0)
Expand All @@ -163,7 +156,7 @@ long long AvFormatDecoderBD::BDFindPosition(long long desiredFrame)
if (desiredTimePos < 0)
desiredTimePos = 0;
#endif
return (desiredFrame * 90000LL / m_fps);
return static_cast<long long>(DesiredFrame * 90000.0F / m_fps);
}
return current_speed;
}
29 changes: 15 additions & 14 deletions mythtv/libs/libmythtv/Bluray/avformatdecoderbd.h
@@ -1,28 +1,29 @@
#ifndef AVFORMATDECODERBD_H
#define AVFORMATDECODERBD_H

// MythTV
#include "avformatdecoder.h"

class AvFormatDecoderBD : public AvFormatDecoder
class MythBDDecoder : public AvFormatDecoder
{
public:
AvFormatDecoderBD(MythPlayer *parent, const ProgramInfo &pginfo,
PlayerFlags flags);
void Reset(bool reset_video_data, bool seek_reset, bool reset_file) override; // AvFormatDecoder
void UpdateFramesPlayed(void) override; // AvFormatDecoder
int ReadPacket(AVFormatContext *ctx, AVPacket* pkt, bool& storePacket) override; // AvFormatDecoder
MythBDDecoder(MythPlayer *Parent, const ProgramInfo &PGInfo, PlayerFlags Flags);

void Reset (bool ResetVideoData, bool SeekReset, bool ResetFile) override;
void UpdateFramesPlayed (void) override;
int ReadPacket (AVFormatContext *Ctx, AVPacket* Pkt, bool& StorePacket) override;

protected:
bool IsValidStream(int streamid) override; // AvFormatDecoder
bool IsValidStream (int StreamId) override;

private:
bool DoRewindSeek(long long desiredFrame) override; // AvFormatDecoder
void DoFastForwardSeek(long long desiredFrame, bool &needflush) override; // AvFormatDecoder
void StreamChangeCheck(void) override; // AvFormatDecoder
int GetSubtitleLanguage(uint subtitle_index, uint stream_index) override; // AvFormatDecoder
int GetAudioLanguage(uint audio_index, uint stream_index) override; // AvFormatDecoder
bool DoRewindSeek (long long DesiredFrame) override;
void DoFastForwardSeek (long long DesiredFrame, bool &Needflush) override;
void StreamChangeCheck (void) override;
int GetSubtitleLanguage (uint SubtitleIndex, uint StreamIndex) override;
int GetAudioLanguage (uint AudioIndex, uint StreamIndex) override;

long long BDFindPosition(long long desiredFrame);
long long BDFindPosition (long long DesiredFrame);
};

#endif // AVFORMATDECODERBD_H
#endif
49 changes: 22 additions & 27 deletions mythtv/libs/libmythtv/Bluray/bdoverlayscreen.cpp
@@ -1,66 +1,61 @@
// Qt
#include <QPainter>

// MythTV
#include "mythuiimage.h"
#include "mythpainter.h"

#include "bdringbuffer.h"
#include "bdoverlayscreen.h"

#define LOC QString("BDScreen: ")

BDOverlayScreen::BDOverlayScreen(MythPlayer *player, const QString &name)
: MythScreenType((MythScreenType*)nullptr, name),
m_player(player)
MythBDOverlayScreen::MythBDOverlayScreen(MythPlayer *Player, const QString &Name)
: MythScreenType(static_cast<MythScreenType*>(nullptr), Name),
m_player(Player)
{
}

BDOverlayScreen::~BDOverlayScreen()
MythBDOverlayScreen::~MythBDOverlayScreen()
{
LOG(VB_PLAYBACK, LOG_DEBUG, LOC + "dtor");
}

void BDOverlayScreen::DisplayBDOverlay(BDOverlay *overlay)
void MythBDOverlayScreen::DisplayBDOverlay(MythBDOverlay *Overlay)
{
if (!overlay || !m_player)
if (!Overlay || !m_player)
return;

MythRect rect(overlay->m_x, overlay->m_y,
overlay->m_image.width(), overlay->m_image.height());
MythRect rect(Overlay->m_x, Overlay->m_y, Overlay->m_image.width(), Overlay->m_image.height());
SetArea(rect);
DeleteAllChildren();

MythVideoOutput *vo = m_player->GetVideoOutput();
if (!vo)
return;

QImage& img = overlay->m_image;
QImage& img = Overlay->m_image;

// add to screen
QRect scaled = vo->GetImageRect(rect);
if (scaled.size() != rect.size())
{
img = img.scaled(scaled.width(), scaled.height(),
Qt::IgnoreAspectRatio, Qt::SmoothTransformation);
}
img = img.scaled(scaled.width(), scaled.height(), Qt::IgnoreAspectRatio, Qt::SmoothTransformation);

MythPainter *osd_painter = vo->GetOSDPainter();
MythImage* image = nullptr;
if (osd_painter)
image = osd_painter->GetFormatImage();

if (image)
{
image->Assign(img);
auto *uiimage = new MythUIImage(this, "bdoverlay");
if (uiimage)
MythImage* image = osd_painter->GetFormatImage();
if (image)
{
uiimage->SetImage(image);
uiimage->SetArea(MythRect(scaled));
image->Assign(img);
auto *uiimage = new MythUIImage(this, "bdoverlay");
if (uiimage)
{
uiimage->SetImage(image);
uiimage->SetArea(MythRect(scaled));
}
image->DecrRef();
}
image->DecrRef();
}

SetRedraw();

delete overlay;
delete Overlay;
}
13 changes: 7 additions & 6 deletions mythtv/libs/libmythtv/Bluray/bdoverlayscreen.h
@@ -1,21 +1,22 @@
#ifndef BDOVERLAYSCREEN_H
#define BDOVERLAYSCREEN_H

// MythTV
#include "mythscreentype.h"
#include "mythplayer.h"

class BDOverlay;
class MythBDOverlay;

class BDOverlayScreen : public MythScreenType
class MythBDOverlayScreen : public MythScreenType
{
public:
BDOverlayScreen(MythPlayer *player, const QString &name);
~BDOverlayScreen() override;
MythBDOverlayScreen(MythPlayer *Player, const QString &Name);
~MythBDOverlayScreen() override;

void DisplayBDOverlay(BDOverlay *overlay);
void DisplayBDOverlay(MythBDOverlay *Overlay);

private:
MythPlayer *m_player {nullptr};
MythPlayer *m_player { nullptr };
};

#endif // BDOVERLAYSCREEN_H

0 comments on commit b12d20b

Please sign in to comment.