[SPARK] cVideo::ShowPicture: add optional argument for destination m2v

This commit is contained in:
martii
2013-09-06 22:23:22 +02:00
parent 938a6c4491
commit 1756351a36
4 changed files with 23 additions and 19 deletions

View File

@@ -211,7 +211,7 @@ void cVideo::SetVideoMode(analog_mode_t)
{ {
} }
void cVideo::ShowPicture(const char *fname) void cVideo::ShowPicture(const char *fname, const char *)
{ {
lt_info("%s(%s)\n", __func__, fname); lt_info("%s(%s)\n", __func__, fname);
if (access(fname, R_OK)) if (access(fname, R_OK))

View File

@@ -180,7 +180,7 @@ class cVideo : public OpenThreads::Thread
bool SetCECMode(VIDEO_HDMI_CEC_MODE) { return true; }; bool SetCECMode(VIDEO_HDMI_CEC_MODE) { return true; };
void SetCECAutoView(bool) { return; }; void SetCECAutoView(bool) { return; };
void SetCECAutoStandby(bool) { return; }; void SetCECAutoStandby(bool) { return; };
void ShowPicture(const char * fname); void ShowPicture(const char * fname, const char *);
void StopPicture(); void StopPicture();
void Standby(unsigned int bOn); void Standby(unsigned int bOn);
void Pig(int x, int y, int w, int h, int osd_w = 1064, int osd_h = 600, int startx = 0, int starty = 0, int endx = 1279, int endy = 719); void Pig(int x, int y, int w, int h, int osd_w = 1064, int osd_h = 600, int startx = 0, int starty = 0, int endx = 1279, int endy = 719);

View File

@@ -380,7 +380,7 @@ void cVideo::SetVideoMode(analog_mode_t mode)
proc_put("/proc/stb/avs/0/colorformat", m, strlen(m)); proc_put("/proc/stb/avs/0/colorformat", m, strlen(m));
} }
void cVideo::ShowPicture(const char * fname) void cVideo::ShowPicture(const char * fname, const char *_destname)
{ {
lt_debug("%s(%s)\n", __func__, fname); lt_debug("%s(%s)\n", __func__, fname);
char destname[512]; char destname[512];
@@ -398,22 +398,26 @@ void cVideo::ShowPicture(const char * fname)
if (lastDot && !strcasecmp(lastDot + 1, "m2v")) if (lastDot && !strcasecmp(lastDot + 1, "m2v"))
strncpy(destname, fname, sizeof(destname)); strncpy(destname, fname, sizeof(destname));
else { else {
strcpy(destname, "/var/cache"); if (_destname)
if (stat(fname, &st2)) strncpy(destname, _destname, sizeof(destname));
{ else {
lt_info("%s: could not stat %s (%m)\n", __func__, fname); strcpy(destname, "/var/cache");
return; if (stat(fname, &st2))
{
lt_info("%s: could not stat %s (%m)\n", __func__, fname);
return;
}
mkdir(destname, 0755);
/* the cache filename is (example for /share/tuxbox/neutrino/icons/radiomode.jpg):
/var/cache/share.tuxbox.neutrino.icons.radiomode.jpg.m2v
build that filename first...
TODO: this could cause name clashes, use a hashing function instead... */
strcat(destname, fname);
p = &destname[strlen("/var/cache/")];
while ((p = strchr(p, '/')) != NULL)
*p = '.';
strcat(destname, ".m2v");
} }
mkdir(destname, 0755);
/* the cache filename is (example for /share/tuxbox/neutrino/icons/radiomode.jpg):
/var/cache/share.tuxbox.neutrino.icons.radiomode.jpg.m2v
build that filename first...
TODO: this could cause name clashes, use a hashing function instead... */
strcat(destname, fname);
p = &destname[strlen("/var/cache/")];
while ((p = strchr(p, '/')) != NULL)
*p = '.';
strcat(destname, ".m2v");
/* ...then check if it exists already... */ /* ...then check if it exists already... */
if (stat(destname, &st) || (st.st_mtime != st2.st_mtime) || (st.st_size == 0)) if (stat(destname, &st) || (st.st_mtime != st2.st_mtime) || (st.st_size == 0))
{ {

View File

@@ -186,7 +186,7 @@ class cVideo
bool SetCECMode(VIDEO_HDMI_CEC_MODE) { return true; }; bool SetCECMode(VIDEO_HDMI_CEC_MODE) { return true; };
void SetCECAutoView(bool) { return; }; void SetCECAutoView(bool) { return; };
void SetCECAutoStandby(bool) { return; }; void SetCECAutoStandby(bool) { return; };
void ShowPicture(const char * fname); void ShowPicture(const char * fname, const char *_destname = NULL);
void StopPicture(); void StopPicture();
void Standby(unsigned int bOn); void Standby(unsigned int bOn);
void Pig(int x, int y, int w, int h, int osd_w = 1064, int osd_h = 600, int startx = 0, int starty = 0, int endx = 1279, int endy = 719); void Pig(int x, int y, int w, int h, int osd_w = 1064, int osd_h = 600, int startx = 0, int starty = 0, int endx = 1279, int endy = 719);