Skip to content

Commit

Permalink
Merge pull request #23 from ua0lnj/master
Browse files Browse the repository at this point in the history
Version 1.2.4.
  • Loading branch information
ua0lnj authored Feb 5, 2022
2 parents 6b5fd09 + cb80f02 commit ec5770e
Show file tree
Hide file tree
Showing 5 changed files with 33 additions and 33 deletions.
2 changes: 1 addition & 1 deletion README
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,7 @@ Command line arguments

-g geometry
You can set X11 geometry with this parameter [W[xH]][+-x+-y][/WS] or x:y.
Resolution of OSD get from softhddevice settings. OSD is scaled to video size.
Resolution of OSD get from settings of output plugin (softhd*). OSD is scaled to video size.

Plugin setup options
--------------------
Expand Down
4 changes: 3 additions & 1 deletion control.c
Original file line number Diff line number Diff line change
Expand Up @@ -61,14 +61,16 @@ void cMpvControl::ShowProgress(int playlist)
{
if (!Player->IsPaused() && LastPlayerCurrent == Player->CurrentPlayTime() && Player->TotalPlayTime() > 0 && !Player->NetworkPlay())
return;

LastPlayerCurrent = Player->CurrentPlayTime();

if (!DisplayReplay)
DisplayReplay = Skins.Current()->DisplayReplay(false);

if (!infoVisible)
{
UpdateMarks();
if (!Player->NetworkPlay())
UpdateMarks();
infoVisible = true;
timeoutShow = Setup.ProgressDisplayTime ? (time(0) + Setup.ProgressDisplayTime) : 0;
}
Expand Down
2 changes: 1 addition & 1 deletion mpv.c
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
#include "menu_options.h"
#include "mpv_service.h"

static const char *VERSION = "1.2.3"
static const char *VERSION = "1.2.4"
#ifdef GIT_REV
"-GIT" GIT_REV
#endif
Expand Down
31 changes: 9 additions & 22 deletions osd.c
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,6 @@ cMpvOsd::~cMpvOsd()
dsyslog("[mpv] %s\n", __FUNCTION__);
#endif
SetActive(false);

if (cMpvPlayer::PlayerIsRunning())
Player->OsdClose();

Expand Down Expand Up @@ -95,6 +94,7 @@ void cMpvOsd::WriteToMpv(int sw, int sh, int x, int y, int w, int h, const uint8
int osdWidth = 0;
int osdHeight = 0;
double Aspect;
int a;

cDevice::PrimaryDevice()->GetOsdSize(osdWidth, osdHeight, Aspect);
winWidth = Player->WindowWidth();
Expand All @@ -112,30 +112,17 @@ void cMpvOsd::WriteToMpv(int sw, int sh, int x, int y, int w, int h, const uint8
pos = pos + 4 * (int)(scalew *(sx + x));

if ((pos + 3) > (winWidth * winHeight * 4)) break; //memory overflow prevention
pOsd[pos + 0] = argb[(w * sy + sx) * 4 + 0];
pOsd[pos + 1] = argb[(w * sy + sx) * 4 + 1];
pOsd[pos + 2] = argb[(w * sy + sx) * 4 + 2];
pOsd[pos + 3] = argb[(w * sy + sx) * 4 + 3];
for (a = 0; a < 4; ++a)
pOsd[pos + a] = argb[(w * sy + sx) * 4 + a];

//upscale
if (scalew > 1.0) {
if ((pos + 7) > (winWidth * winHeight * 4)) break; //memory overflow prevention
pOsd[pos + 4] = argb[(w * sy + sx) * 4 + 0];
pOsd[pos + 5] = argb[(w * sy + sx) * 4 + 1];
pOsd[pos + 6] = argb[(w * sy + sx) * 4 + 2];
pOsd[pos + 7] = argb[(w * sy + sx) * 4 + 3];

if ((pos + 3 + 4 * winWidth) > (winWidth * winHeight * 4)) break; //memory overflow prevention
pOsd[pos + 0 + 4 * winWidth] = argb[(w * sy + sx) * 4 + 0];
pOsd[pos + 1 + 4 * winWidth] = argb[(w * sy + sx) * 4 + 1];
pOsd[pos + 2 + 4 * winWidth] = argb[(w * sy + sx) * 4 + 2];
pOsd[pos + 3 + 4 * winWidth] = argb[(w * sy + sx) * 4 + 3];

if ((pos + 7 + 4 * winWidth) > (winWidth * winHeight * 4)) break; //memory overflow prevention
pOsd[pos + 4 + 4 * winWidth] = argb[(w * sy + sx) * 4 + 0];
pOsd[pos + 5 + 4 * winWidth] = argb[(w * sy + sx) * 4 + 1];
pOsd[pos + 6 + 4 * winWidth] = argb[(w * sy + sx) * 4 + 2];
pOsd[pos + 7 + 4 * winWidth] = argb[(w * sy + sx) * 4 + 3];
if ((pos + 7 + 4 + winWidth) > (winWidth * winHeight * 4)) break; //memory overflow prevention
for (a = 0; a < 4; ++a) {
pOsd[pos + a + 4] = argb[(w * sy + sx) * 4 + a];
pOsd[pos + a + 4 * winWidth] = argb[(w * sy + sx) * 4 + a];
pOsd[pos + a + 4 + 4 * winWidth] = argb[(w * sy + sx) * 4 + a];
}
}
}
}
Expand Down
27 changes: 19 additions & 8 deletions player.c
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ using std::vector;
#define MPV_OBSERVE_LIST_POS 11
#define MPV_OBSERVE_LIST_COUNT 12
#define MPV_OBSERVE_VIA_NET 13
#define MPV_OBSERVE_TRACK_LIST 14

volatile int cMpvPlayer::running = 0;
cMpvPlayer *cMpvPlayer::PlayerHandle = NULL;
Expand Down Expand Up @@ -145,6 +146,7 @@ void *cMpvPlayer::ObserverThread(void *handle)
mpv_observe_property(Player->hMpv, MPV_OBSERVE_LIST_POS, "playlist-pos-1", MPV_FORMAT_INT64);
mpv_observe_property(Player->hMpv, MPV_OBSERVE_LIST_COUNT, "playlist-count", MPV_FORMAT_INT64);
mpv_observe_property(Player->hMpv, MPV_OBSERVE_VIA_NET, "demuxer-via-network", MPV_FORMAT_FLAG);
mpv_observe_property(Player->hMpv, MPV_OBSERVE_TRACK_LIST, "track-list", MPV_FORMAT_NODE);

while (Player->PlayerIsRunning())
{
Expand Down Expand Up @@ -172,11 +174,11 @@ void *cMpvPlayer::ObserverThread(void *handle)
esyslog("[mpv]: %s\n", msg->text);
#endif
break;

#if MPV_CLIENT_API_VERSION < MPV_MAKE_VERSION(2,0)
case MPV_EVENT_TRACKS_CHANGED :
Player->HandleTracksChange();
break;

#endif
case MPV_EVENT_VIDEO_RECONFIG :
if(!drm_ctx)
Player->PlayerHideCursor();
Expand All @@ -188,22 +190,24 @@ void *cMpvPlayer::ObserverThread(void *handle)

case MPV_EVENT_NONE :
case MPV_EVENT_END_FILE :
#if MPV_CLIENT_API_VERSION < MPV_MAKE_VERSION(2,0)
case MPV_EVENT_PAUSE :
case MPV_EVENT_UNPAUSE :
case MPV_EVENT_TRACK_SWITCHED :
case MPV_EVENT_SCRIPT_INPUT_DISPATCH :
case MPV_EVENT_METADATA_UPDATE :
case MPV_EVENT_CHAPTER_CHANGE :
#endif
case MPV_EVENT_FILE_LOADED :
case MPV_EVENT_GET_PROPERTY_REPLY :
case MPV_EVENT_SET_PROPERTY_REPLY :
case MPV_EVENT_COMMAND_REPLY :
case MPV_EVENT_START_FILE :
case MPV_EVENT_TRACK_SWITCHED :
case MPV_EVENT_IDLE :
case MPV_EVENT_TICK :
case MPV_EVENT_SCRIPT_INPUT_DISPATCH :
case MPV_EVENT_CLIENT_MESSAGE :
case MPV_EVENT_AUDIO_RECONFIG :
case MPV_EVENT_METADATA_UPDATE :
case MPV_EVENT_SEEK :
case MPV_EVENT_CHAPTER_CHANGE :
default :
dsyslog("[mpv]: event: %d %s\n", event->event_id, mpv_event_name(event->event_id));
break;
Expand Down Expand Up @@ -619,7 +623,11 @@ void cMpvPlayer::HandlePropertyChange(mpv_event *event)
case MPV_OBSERVE_CHAPTER :
PlayerChapter = (int)*(int64_t*)property->data;
break;

#if MPV_CLIENT_API_VERSION >= MPV_MAKE_VERSION(2,0)
case MPV_OBSERVE_TRACK_LIST :
HandleTracksChange();
break;
#endif
case MPV_OBSERVE_PAUSE :
PlayerPaused = (int)*(int64_t*)property->data;
break;
Expand Down Expand Up @@ -767,6 +775,7 @@ void cMpvPlayer::Shutdown()
Dpy = NULL;
}
}

#if MPV_CLIENT_API_VERSION >= MPV_MAKE_VERSION(1,29)
mpv_destroy(hMpv);
#else
Expand Down Expand Up @@ -862,6 +871,8 @@ void cMpvPlayer::ScaleVideo(int x, int y, int width, int height)
int osdWidth, osdHeight;
double Aspect;
cDevice::PrimaryDevice()->GetOsdSize(osdWidth, osdHeight, Aspect);
mpv_get_property(hMpv, "video-params/aspect", MPV_FORMAT_DOUBLE, &Aspect);
if (Aspect > 1.77) Aspect = 1.77;

if(!x && !y && !width && !height)
{
Expand All @@ -878,7 +889,7 @@ void cMpvPlayer::ScaleVideo(int x, int y, int width, int height)
err = snprintf (buffer, sizeof(buffer), "%d:%d", height, osdHeight);
if (err > 0)
mpv_set_property_string(hMpv, "video-scale-y", buffer);
err = snprintf (buffer, sizeof(buffer), "%d:%d", x - (osdWidth - width) / 2, width);
err = snprintf (buffer, sizeof(buffer), "%d:%d", x - (int)((osdWidth - width) * Aspect / 3.54), width);
if (err > 0)
mpv_set_property_string(hMpv, "video-pan-x", buffer);
err = snprintf (buffer, sizeof(buffer), "%d:%d", y - (osdHeight - height) / 2,height);
Expand Down

0 comments on commit ec5770e

Please sign in to comment.