diff --git a/HISTORY b/HISTORY index f94cccd..5acb744 100644 --- a/HISTORY +++ b/HISTORY @@ -377,7 +377,7 @@ VDR Plugin 'femon' Revision History - Added a mutex to receiver class. - Added 1080/720/576/480 format symbols into status window. -2009-09-26: Version 1.7.5 +2009-10-01: Version 1.7.5 - Changed H.264 parser to show display aspect ratio. - Removed error logging from unimplemented ioctl functions. diff --git a/femon.c b/femon.c index cd6f5b0..dd3852e 100644 --- a/femon.c +++ b/femon.c @@ -50,13 +50,13 @@ cPluginFemon::cPluginFemon() // Initialize any member variables here. // DON'T DO ANYTHING ELSE THAT MAY HAVE SIDE EFFECTS, REQUIRE GLOBAL // VDR OBJECTS TO EXIST OR PRODUCE ANY OUTPUT! - Dprintf("%s()\n", __PRETTY_FUNCTION__); + debug("%s()\n", __PRETTY_FUNCTION__); } cPluginFemon::~cPluginFemon() { // Clean up after yourself! - Dprintf("%s()\n", __PRETTY_FUNCTION__); + debug("%s()\n", __PRETTY_FUNCTION__); } const char *cPluginFemon::CommandLineHelp(void) @@ -96,7 +96,7 @@ void cPluginFemon::Housekeeping(void) cOsdObject *cPluginFemon::MainMenuAction(void) { // Perform the action when selected from the main VDR menu. - Dprintf("%s()\n", __PRETTY_FUNCTION__); + debug("%s()\n", __PRETTY_FUNCTION__); if (cReplayControl::NowReplaying() || (Channels.Count() <= 0)) Skins.Message(mtInfo, tr("Femon not available")); else @@ -274,7 +274,7 @@ public: cMenuFemonSetup::cMenuFemonSetup(void) { - Dprintf("%s()\n", __PRETTY_FUNCTION__); + debug("%s()\n", __PRETTY_FUNCTION__); dispmodes[eFemonModeBasic] = tr("basic"); dispmodes[eFemonModeTransponder] = tr("transponder"); dispmodes[eFemonModeStream] = tr("stream"); @@ -353,7 +353,7 @@ void cMenuFemonSetup::Setup(void) void cMenuFemonSetup::Store(void) { - Dprintf("%s()\n", __PRETTY_FUNCTION__); + debug("%s()\n", __PRETTY_FUNCTION__); femonConfig = data; SetupStore("HideMenu", femonConfig.hidemenu); SetupStore("DisplayMode", femonConfig.displaymode); diff --git a/femonh264.c b/femonh264.c index e91cfd1..a55226e 100644 --- a/femonh264.c +++ b/femonh264.c @@ -119,7 +119,7 @@ bool cFemonH264::processVideo(const uint8_t *buf, int len) if (!aud_found) { switch (buf[4] >> 5) { case 0: case 3: case 5: // I_FRAME - //Dprintf("H.264: Found NAL AUD at offset %d/%d\n", int(buf - start), len); + //debug("H.264: Found NAL AUD at offset %d/%d\n", int(buf - start), len); aud_found = true; break; case 1: case 4: case 6: // P_FRAME; @@ -132,7 +132,7 @@ bool cFemonH264::processVideo(const uint8_t *buf, int len) case NAL_SPS: if (!sps_found) { - //Dprintf("H.264: Found NAL SPS at offset %d/%d\n", int(buf - start), len); + //debug("H.264: Found NAL SPS at offset %d/%d\n", int(buf - start), len); int nal_len = nalUnescape(nal_data, buf + 4, int(end - buf - 4)); consumed = parseSPS(nal_data, nal_len); if (consumed > 0) @@ -142,7 +142,7 @@ bool cFemonH264::processVideo(const uint8_t *buf, int len) case NAL_SEI: if (!sei_found) { - //Dprintf("H.264: Found NAL SEI at offset %d/%d\n", iny(buf - start), len); + //debug("H.264: Found NAL SEI at offset %d/%d\n", iny(buf - start), len); int nal_len = nalUnescape(nal_data, buf + 4, int(end - buf - 4)); consumed = parseSEI(nal_data, nal_len); if (consumed > 0) @@ -163,7 +163,7 @@ bool cFemonH264::processVideo(const uint8_t *buf, int len) if (aud_found) { m_VideoHandler->SetVideoCodec(VIDEO_CODEC_H264); if (sps_found) { - //Dprintf("H.264 SPS: size %dx%d, aspect %d format %d framerate %.2f bitrate %.0f\n", m_Width, m_Height, m_AspectRatio, m_Format, m_FrameRate, m_BitRate); + //debug("H.264 SPS: size %dx%d, aspect %d format %d framerate %.2f bitrate %.0f\n", m_Width, m_Height, m_AspectRatio, m_Format, m_FrameRate, m_BitRate); m_VideoHandler->SetVideoFormat(m_Format); m_VideoHandler->SetVideoSize(m_Width, m_Height); m_VideoHandler->SetVideoAspectRatio(m_AspectRatio); @@ -171,7 +171,7 @@ bool cFemonH264::processVideo(const uint8_t *buf, int len) m_VideoHandler->SetVideoBitrate(m_BitRate); } if (sei_found) { - //Dprintf("H.264 SEI: scan %d\n", m_Scan); + //debug("H.264 SEI: scan %d\n", m_Scan); m_VideoHandler->SetVideoScan(m_Scan); } } @@ -244,7 +244,7 @@ int cFemonH264::parseSPS(const uint8_t *buf, int len) bs.skipBits(4); // reserved_zero_4bits level_idc = bs.getU8(); // level_idc bs.skipUeGolomb(); // seq_parameter_set_id - //Dprintf("H.264 SPS: profile_idc %d level_idc %d\n", profile_idc, level_idc); + //debug("H.264 SPS: profile_idc %d level_idc %d\n", profile_idc, level_idc); switch (profile_idc) { case 66: // baseline profile case 77: // main profile @@ -492,9 +492,9 @@ int cFemonH264::parseSPS(const uint8_t *buf, int len) width = bs.getUeGolomb() + 1; // pic_width_in_mbs_minus1 height = bs.getUeGolomb() + 1; // pic_height_in_mbs_minus1 frame_mbs_only_flag = bs.getBit(); // frame_mbs_only_flag - //Dprintf("H.264 SPS: pic_width: %u mbs\n", width); - //Dprintf("H.264 SPS: pic_height: %u mbs\n", height); - //Dprintf("H.264 SPS: frame only flag: %d\n", frame_mbs_only_flag); + //debug("H.264 SPS: pic_width: %u mbs\n", width); + //debug("H.264 SPS: pic_height: %u mbs\n", height); + //debug("H.264 SPS: frame only flag: %d\n", frame_mbs_only_flag); width *= 16; height *= 16 * (frame_mbs_only_flag ? 1 : 2); if (!frame_mbs_only_flag) @@ -506,7 +506,7 @@ int cFemonH264::parseSPS(const uint8_t *buf, int len) crop_right = bs.getUeGolomb(); // frame_crop_rigth_offset crop_top = bs.getUeGolomb(); // frame_crop_top_offset crop_bottom = bs.getUeGolomb(); // frame_crop_bottom_offset - //Dprintf("H.264 SPS: cropping %d %d %d %d\n", crop_left, crop_top, crop_right, crop_bottom); + //debug("H.264 SPS: cropping %d %d %d %d\n", crop_left, crop_top, crop_right, crop_bottom); width -= 2 * (crop_left + crop_right); if (frame_mbs_only_flag) height -= 2 * (crop_top + crop_bottom); @@ -518,7 +518,7 @@ int cFemonH264::parseSPS(const uint8_t *buf, int len) if (bs.getBit()) { // aspect_ratio_info_present uint32_t aspect_ratio_idc, sar_width = 0, sar_height = 0; aspect_ratio_idc = bs.getU8(); // aspect_ratio_idc - //Dprintf("H.264 SPS: aspect_ratio_idc %d\n", aspect_ratio_idc); + //debug("H.264 SPS: aspect_ratio_idc %d\n", aspect_ratio_idc); if (aspect_ratio_idc == 255) { // extended sar sar_width = bs.getU16(); // sar_width sar_height = bs.getU16(); // sar_height @@ -543,7 +543,7 @@ int cFemonH264::parseSPS(const uint8_t *buf, int len) } else aspect_ratio = s_DAR[index].dar; - //Dprintf("H.264 SPS: DAR %dx%d (%d)\n", sar_width, sar_height, aspect_ratio); + //debug("H.264 SPS: DAR %dx%d (%d)\n", sar_width, sar_height, aspect_ratio); } } if (bs.getBit()) // overscan_info_present_flag @@ -553,7 +553,7 @@ int cFemonH264::parseSPS(const uint8_t *buf, int len) video_format = bs.getBits(3); // video_format if (video_format < sizeof(s_VideoFormats) / sizeof(s_VideoFormats[0])) { format = s_VideoFormats[video_format]; - //Dprintf("H.264 SPS: video format %d\n", format); + //debug("H.264 SPS: video format %d\n", format); } bs.skipBit(); // video_full_range_flag if (bs.getBit()) { // colour_description_present_flag @@ -689,7 +689,7 @@ int cFemonH264::parseSEI(const uint8_t *buf, int len) break; } } - //Dprintf("H.264 SEI: pic struct %d scan type %d\n", pic_struct, scan); + //debug("H.264 SEI: pic struct %d scan type %d\n", pic_struct, scan); for (int i = 0; i < s_SeiNumClockTsTable[pic_struct]; ++i) { if (bs.getBit()) { // clock_timestamp_flag[i] int full_timestamp_flag; @@ -707,7 +707,7 @@ int cFemonH264::parseSEI(const uint8_t *buf, int len) scan = VIDEO_SCAN_RESERVED; break; } - //Dprintf("H.264 SEI: scan type %d\n", scan); + //debug("H.264 SEI: scan type %d\n", scan); bs.skipBit(); // nuit_field_based_flag bs.skipBits(5); // counting_type full_timestamp_flag = bs.getBit(); // full_timestamp_flag diff --git a/femonosd.c b/femonosd.c index fe88f7d..379e739 100644 --- a/femonosd.c +++ b/femonosd.c @@ -150,7 +150,7 @@ cFemonOsd *cFemonOsd::pInstance = NULL; cFemonOsd *cFemonOsd::Instance(bool create) { - Dprintf("%s()\n", __PRETTY_FUNCTION__); + debug("%s()\n", __PRETTY_FUNCTION__); if ((pInstance == NULL) && create) { pInstance = new cFemonOsd(); @@ -186,30 +186,30 @@ cFemonOsd::cFemonOsd() m_Mutex() { int tmp; - Dprintf("%s()\n", __PRETTY_FUNCTION__); + debug("%s()\n", __PRETTY_FUNCTION__); memset(&m_FrontendStatus, 0, sizeof(m_FrontendStatus)); memset(&m_FrontendInfo, 0, sizeof(m_FrontendInfo)); m_SvdrpConnection.handle = -1; m_Font = cFont::CreateFont(Setup.FontSml, min(max(Setup.FontSmlSize, MINFONTSIZE), MAXFONTSIZE)); if (!m_Font || !m_Font->Height()) { m_Font = new cFemonDummyFont; - esyslog("ERROR: cFemonOsd::cFemonOsd() cannot create required font."); + error("cFemonOsd::cFemonOsd() cannot create required font."); } tmp = 5 * bmSymbol[SYMBOL_LOCK].Width() + 6 * OSDSPACING; if (OSDWIDTH < tmp) { - esyslog("ERROR: cFemonOsd::cFemonOsd() OSD width (%d) smaller than required (%d).", OSDWIDTH, tmp); + error("cFemonOsd::cFemonOsd() OSD width (%d) smaller than required (%d).", OSDWIDTH, tmp); OSDWIDTH = tmp; } tmp = OSDINFOHEIGHT + OSDROWHEIGHT + OSDSTATUSHEIGHT; if (OSDHEIGHT < tmp) { - esyslog("ERROR: cFemonOsd::cFemonOsd() OSD height (%d) smaller than required (%d).", OSDHEIGHT, tmp); + error("cFemonOsd::cFemonOsd() OSD height (%d) smaller than required (%d).", OSDHEIGHT, tmp); OSDHEIGHT = tmp; } } cFemonOsd::~cFemonOsd(void) { - Dprintf("%s()\n", __PRETTY_FUNCTION__); + debug("%s()\n", __PRETTY_FUNCTION__); m_Sleep.Signal(); if (Running()) Cancel(3); @@ -503,7 +503,7 @@ void cFemonOsd::DrawInfoWindow(void) void cFemonOsd::Action(void) { - Dprintf("%s()\n", __PRETTY_FUNCTION__); + debug("%s()\n", __PRETTY_FUNCTION__); cTimeMs t; SvdrpCommand_v1_0 cmd; cmd.command = cString::sprintf("PLUG %s INFO\r\n", PLUGIN_NAME_I18N); @@ -574,7 +574,7 @@ void cFemonOsd::Action(void) void cFemonOsd::Show(void) { - Dprintf("%s()\n", __PRETTY_FUNCTION__); + debug("%s()\n", __PRETTY_FUNCTION__); int apid[2] = {0, 0}; int dpid[2] = {0, 0}; eTrackType track = cDevice::PrimaryDevice()->GetCurrentAudioTrack(); @@ -583,7 +583,7 @@ void cFemonOsd::Show(void) if (m_Frontend >= 0) { if (ioctl(m_Frontend, FE_GET_INFO, &m_FrontendInfo) < 0) { if (!femonConfig.usesvdrp) - esyslog("ERROR: cFemonOsd::Show() cannot read frontend info."); + error("cFemonOsd::Show() cannot read frontend info."); close(m_Frontend); m_Frontend = -1; memset(&m_FrontendInfo, 0, sizeof(m_FrontendInfo)); @@ -595,7 +595,7 @@ void cFemonOsd::Show(void) return; } else { - esyslog("ERROR: cFemonOsd::Show() cannot open frontend device."); + error("cFemonOsd::Show() cannot open frontend device."); return; } @@ -633,7 +633,7 @@ void cFemonOsd::Show(void) void cFemonOsd::ChannelSwitch(const cDevice * device, int channelNumber) { - Dprintf("%s(%d,%d)\n", __PRETTY_FUNCTION__, device->DeviceNumber(), channelNumber); + debug("%s(%d,%d)\n", __PRETTY_FUNCTION__, device->DeviceNumber(), channelNumber); int apid[2] = {0, 0}; int dpid[2] = {0, 0}; eTrackType track = cDevice::PrimaryDevice()->GetCurrentAudioTrack(); @@ -645,7 +645,7 @@ void cFemonOsd::ChannelSwitch(const cDevice * device, int channelNumber) if (m_Frontend >= 0) { if (ioctl(m_Frontend, FE_GET_INFO, &m_FrontendInfo) < 0) { if (!femonConfig.usesvdrp) - esyslog("ERROR: cFemonOsd::ChannelSwitch() cannot read frontend info."); + error("cFemonOsd::ChannelSwitch() cannot read frontend info."); close(m_Frontend); m_Frontend = -1; memset(&m_FrontendInfo, 0, sizeof(m_FrontendInfo)); @@ -657,7 +657,7 @@ void cFemonOsd::ChannelSwitch(const cDevice * device, int channelNumber) return; } else { - esyslog("ERROR: cFemonOsd::ChannelSwitch() cannot open frontend device."); + error("cFemonOsd::ChannelSwitch() cannot open frontend device."); return; } @@ -678,7 +678,7 @@ void cFemonOsd::ChannelSwitch(const cDevice * device, int channelNumber) void cFemonOsd::SetAudioTrack(int Index, const char * const *Tracks) { - Dprintf("%s()\n", __PRETTY_FUNCTION__); + debug("%s()\n", __PRETTY_FUNCTION__); int apid[2] = {0, 0}; int dpid[2] = {0, 0}; eTrackType track = cDevice::PrimaryDevice()->GetCurrentAudioTrack(); @@ -699,7 +699,7 @@ void cFemonOsd::SetAudioTrack(int Index, const char * const *Tracks) bool cFemonOsd::DeviceSwitch(int direction) { - Dprintf("%s()\n", __PRETTY_FUNCTION__); + debug("%s()\n", __PRETTY_FUNCTION__); int device = cDevice::ActualDevice()->DeviceNumber(); direction = sgn(direction); if (device >= 0) { @@ -715,7 +715,7 @@ bool cFemonOsd::DeviceSwitch(int direction) device = cDevice::NumDevices() - 1; } if (cDevice::GetDevice(device)->ProvidesChannel(channel, 0)) { - Dprintf("%s(%d) device(%d)\n", __PRETTY_FUNCTION__, direction, device); + debug("%s(%d) device(%d)\n", __PRETTY_FUNCTION__, direction, device); cStatus::MsgChannelSwitch(cDevice::PrimaryDevice(), 0); cControl::Shutdown(); cDevice::GetDevice(device)->SwitchChannel(channel, true); @@ -747,14 +747,14 @@ bool cFemonOsd::SvdrpConnect(void) m_SvdrpPlugin->Service("SvdrpCommand-v1.0", &cmd); if (cmd.responseCode != 214) { m_SvdrpPlugin->Service("SvdrpConnection-v1.0", &m_SvdrpConnection); // close connection - esyslog("ERROR: cFemonOsd::SvdrpConnect() cannot find plugin '%s' on server %s.", PLUGIN_NAME_I18N, *m_SvdrpConnection.serverIp); + error("cFemonOsd::SvdrpConnect() cannot find plugin '%s' on server %s.", PLUGIN_NAME_I18N, *m_SvdrpConnection.serverIp); } } else - esyslog("ERROR: cFemonOsd::SvdrpConnect() cannot connect to SVDRP server."); + error("cFemonOsd::SvdrpConnect() cannot connect to SVDRP server."); } else - esyslog("ERROR: cFemonOsd::SvdrpConnect() cannot find plugin '%s'.", SVDRPPLUGIN); + error("cFemonOsd::SvdrpConnect() cannot find plugin '%s'.", SVDRPPLUGIN); } return m_SvdrpConnection.handle >= 0; } @@ -770,19 +770,19 @@ bool cFemonOsd::SvdrpTune(void) m_SvdrpPlugin->Service("SvdrpCommand-v1.0", &cmd); if (cmd.responseCode == 250) return true; - esyslog("ERROR: cFemonOsd::SvdrpTune() cannot tune server channel."); + error("cFemonOsd::SvdrpTune() cannot tune server channel."); } else - esyslog("ERROR: cFemonOsd::SvdrpTune() invalid channel."); + error("cFemonOsd::SvdrpTune() invalid channel."); } else - esyslog("ERROR: cFemonOsd::SvdrpTune() unexpected connection state."); + error("cFemonOsd::SvdrpTune() unexpected connection state."); return false; } double cFemonOsd::GetVideoBitrate(void) { - Dprintf("%s()\n", __PRETTY_FUNCTION__); + debug("%s()\n", __PRETTY_FUNCTION__); double value = 0.0; if (m_Receiver) @@ -793,7 +793,7 @@ double cFemonOsd::GetVideoBitrate(void) double cFemonOsd::GetAudioBitrate(void) { - Dprintf("%s()\n", __PRETTY_FUNCTION__); + debug("%s()\n", __PRETTY_FUNCTION__); double value = 0.0; if (m_Receiver) @@ -804,7 +804,7 @@ double cFemonOsd::GetAudioBitrate(void) double cFemonOsd::GetDolbyBitrate(void) { - Dprintf("%s()\n", __PRETTY_FUNCTION__); + debug("%s()\n", __PRETTY_FUNCTION__); double value = 0.0; if (m_Receiver) diff --git a/femonreceiver.c b/femonreceiver.c index f6d2a4f..ce9b9dc 100644 --- a/femonreceiver.c +++ b/femonreceiver.c @@ -37,7 +37,7 @@ cFemonReceiver::cFemonReceiver(tChannelID ChannelID, int Ca, int Vtype, int Vpid m_AC3Bitrate(0), m_AC3Valid(false) { - Dprintf("%s()\n", __PRETTY_FUNCTION__); + debug("%s()\n", __PRETTY_FUNCTION__); m_VideoBuffer.SetTimeouts(0, 100); m_AudioBuffer.SetTimeouts(0, 100); @@ -68,13 +68,13 @@ cFemonReceiver::cFemonReceiver(tChannelID ChannelID, int Ca, int Vtype, int Vpid cFemonReceiver::~cFemonReceiver(void) { - Dprintf("%s()\n", __PRETTY_FUNCTION__); + debug("%s()\n", __PRETTY_FUNCTION__); Deactivate(); } void cFemonReceiver::Deactivate(void) { - Dprintf("%s()\n", __PRETTY_FUNCTION__); + debug("%s()\n", __PRETTY_FUNCTION__); if (m_Active) { m_Active = false; m_Sleep.Signal(); @@ -86,7 +86,7 @@ void cFemonReceiver::Deactivate(void) void cFemonReceiver::Activate(bool On) { - Dprintf("%s(%d)\n", __PRETTY_FUNCTION__, On); + debug("%s(%d)\n", __PRETTY_FUNCTION__, On); if (On) Start(); else @@ -127,7 +127,7 @@ void cFemonReceiver::Receive(uchar *Data, int Length) void cFemonReceiver::Action(void) { - Dprintf("%s()\n", __PRETTY_FUNCTION__); + debug("%s()\n", __PRETTY_FUNCTION__); cTimeMs calcPeriod(0); m_Active = true; diff --git a/femontools.h b/femontools.h index eed6ca0..e865c34 100644 --- a/femontools.h +++ b/femontools.h @@ -14,9 +14,11 @@ #include #ifdef DEBUG -#define Dprintf(x...) printf(x); +#define debug(x...) dsyslog("FEMON: " x); +#define error(x...) esyslog("ERROR: " x); #else -#define Dprintf(x...) ; +#define debug(x...) ; +#define error(x...) esyslog("ERROR: " x); #endif #define ELEMENTS(x) (sizeof(x) / sizeof(x[0]))